給定一個函數的規範,例如specification_of_sum
,我如何在Coq中證明只有一個這樣的函數存在?如何在給定規範的Coq中證明函數的唯一性?
我正在學習數學,我可以證明這一點,但我的Coq技能是有限的(使用rewrite
和apply
證明)。
我發現下面的代碼片段,我一直在努力一段時間。
我嘗試展開證明中的規範,但使用我的老朋友rewrite
似乎沒有讓我走得更遠。
有人可以解釋如何使用簡單的語法來解決這個問題嗎?
Definition specification_of_sum (sum : (nat -> nat) -> nat -> nat) :=
forall f : nat -> nat,
sum f 0 = f 0
/\
forall n' : nat,
sum f (S n') = sum f n' + f (S n').
(* ********** *)
Theorem there_is_only_one_sum :
forall sum1 sum2 : (nat -> nat) -> nat -> nat,
specification_of_sum sum1 ->
specification_of_sum sum2 ->
forall (f : nat -> nat)
(n : nat),
sum1 f n = sum2 f n.
Proof.
Abort.
謝謝,這是需要啓動我的證明:-) – Shuzheng
是否有可能用「簡單」的東西替代inversion_clear? – Shuzheng
事實上,倒置清晰並不是處理假設的正確方法,您在我的答案中使用了正確的方式(介紹模式)。 – ejgallego