다음을 증명하기 위해 노력하고 있으며 b
및 모든 단일 인수 부울 함수에 대한 모든 사례를 열거하여 해결할 수있는 올바른 접근 방법이 있다고 생각합니다. f
4 개의 함수가 2 개의 부울 값보다 많음) 모든 것을 철저히 파괴함으로써 그 점을 증명합니다. 그러나Coq true = false 차별 실패, 원시 동등하지 않음
Theorem example :
forall (f : bool -> bool) (b : bool),
f (f b) = b.
Proof.
intros.
destruct (f (f b)).
- destruct b.
+ reflexivity.
+ Fail discriminate. admit.
- destruct b eqn:Hqebb.
+ Fail discriminate. admit.
+ reflexivity.
Qed.
, 나는 다음과 같은 오류 얻을 false = true
에, 2 층과 3 단계 차별하려고하면 내가 유도 유형 전에 차별을 사용했습니다
Ltac call to "discriminate" failed.
No primitive equality found.
을하고 일을 예상대로 , 그래서 나는 그것이 불리언 타입으로 여기에서 작동하지 않는다는 것에 놀랐다. 어떤 아이디어?
[이] (https://stackoverflow.com/q/1674018/2747511) 같은 질문은 : 여기 대부분이 거짓 인 경우를 제외하고, 귀하의 정리를 증명하는 증거 스크립트입니다. [이 댓글 (https://stackoverflow.com/questions/1674018/proving-f-f-bool-bool#comment1547967_1674018)에 따르면, 다음과 같이 증명할 수 있습니다. 'f (f (f b)) = f b'. –