有人知道mult在coq是怎么工作的吗?

有人知道mult在coq是怎么工作的吗?,coq,Coq,我现在正在学习基础部分。我发现mult函数包含plus,如下所示: Fixpoint mult (n m : nat) : nat := match n with | O ⇒ O | S n' ⇒ plus m (mult n' m) end. Example test_mult1: (mult 3 3) = 9. Proof. simpl. reflexivity. Qed. 我打开骡子,它就露了出来 1子目标 ____________________________

我现在正在学习基础部分。我发现mult函数包含plus,如下所示:

Fixpoint mult (n m : nat) : nat :=
  match n with
    | O ⇒ O
    | S n' ⇒ plus m (mult n' m)
  end.
Example test_mult1: (mult 3 3) = 9.
Proof. simpl. reflexivity. Qed.
我打开骡子,它就露了出来

1子目标

______________________________________(1/1)

3+(3+(3+0))=9

我知道BC+m,m是3,所以有3次加号。但是我很好奇0来自哪里。如果这3表示m,那么n在哪里


谢谢大家!

首先,您应该记住3是表示
S(S(so))

当你要求计算mult 3时,只有mult的一个步骤,你会得到:

mult 3 3 = mult (S 2) 3 = 3 + mult 2 3
现在,如果你计算mult 2 3,你会得到:

mult 2 3 = mult (S 1) 3 = 3 + mult 1 3
然后:

mult 1 3 = mult (S O) 3 = 3 + mult 0 3
和tnen:

mult 0 3 = 0

因此,计算
mult
时出现的
0
来自
mult03

0
不是来自“O⇒ O“?和
n
转化为展开中的步骤数?