Coq 非零项效应

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将解决整数或自然数的等式问题,但这里使用的是布尔等式。 因此,我宁愿

我是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 (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
能解决这个问题