Coq 非零项效应
我是Coq的新手,我有f1和f2两个函数,它们的输入和输出参数都是自然数。我想问f1和f2的输出值是多少。由于非零数相加,结果不应为零,因此应使用eauto或lia进行求解Coq 非零项效应,coq,Coq,我是Coq的新手,我有f1和f2两个函数,它们的输入和输出参数都是自然数。我想问f1和f2的输出值是多少。由于非零数相加,结果不应为零,因此应使用eauto或lia进行求解 Theorem not_0:forall (n a b:nat), n=?0= false -> 0=? (f1(a) + n) = false-> 0=? (f2 (f1(a)+n)) = false. lia将解决整数或自然数的等式问题,但这里使用的是布尔等式。 因此,我宁愿
Theorem not_0:forall (n a b:nat),
n=?0= false ->
0=? (f1(a) + n) = false->
0=? (f2 (f1(a)+n)) = false.
lia
将解决整数或自然数的等式问题,但这里使用的是布尔等式。
因此,我宁愿说:
Theorem not_0 :
forall (f1 f2 : nat -> nat) (n a b : nat),
n <> 0 ->
0 <> (f1(a) + n) ->
0 <> (f2 (f1(a)+n)).
Proof.
定理非0:
forall(f1 f2:nat->nat)(n a b:nat),
n 0->
0(f1(a)+n)->
0(f2(f1(a)+n))。
证明。
但是,lia
仍将失败,因为该定理不成立。你需要先了解一些关于f2的知识。
所以我看不出
lia
或eauto
有任何方法可以解决这个问题。lia
可以解决整数或自然数的等式问题,但在这里,您使用的是布尔等式。
因此,我宁愿说:
Theorem not_0 :
forall (f1 f2 : nat -> nat) (n a b : nat),
n <> 0 ->
0 <> (f1(a) + n) ->
0 <> (f2 (f1(a)+n)).
Proof.
定理非0:
forall(f1 f2:nat->nat)(n a b:nat),
n 0->
0(f1(a)+n)->
0(f2(f1(a)+n))。
证明。
但是,lia
仍将失败,因为该定理不成立。你需要先了解一些关于f2的知识。
所以我看不出任何lia
或eauto
能解决这个问题