이 집합을 정의한다고 가정합니다. Inductive Set_1 : Set :=
| Constr_1 : Set_1
| Constr_2 : Set_1.
이 문장을 증명할 수 있습니까? (Constr_1 = Constr_2) = False
그렇다면, 내가 어떤 전술을 사용합니까? 이것은 autorewrite에 유용 할 수 있습니다.
저는 Coq을 처음 접했고 Ruth와 Ryan의 샘플 보조 정리를 시험 중입니다. 자연 공제를 사용한 증명은 매우 사소한 것이며, 이것이 내가 Coq를 사용하여 증명하고자하는 것입니다. assume p -> q.
assume ~q.
assume p.
q.
False.
therefore ~p.
ther
이미 coq에서 정리를 증명했으며, 나중에 다른 정리의 증명에서 가설로 소개하고자한다고 가정합니다. 이 작업을 수행하는 간결한 방법이 있습니까? 사례에 대한 증명과 같은 것을하고 싶을 때 일반적으로이 문제에 대한 필요성이 제기됩니다. 그리고 이것을 수행하는 한 가지 방법은 assert에 정리의 진술을하고 즉시 증명하는 것이지만, 성가신 것 같습니다. 예를
Coq와 내가 배운 책을 배우고 있는데, (CPDT)은 auto을 많이 사용합니다. 나는 배울 것이기 때문에 나는 auto이 후드 아래에서 무엇을하는지 정확하게 보는 것이 도움이 될 것이라고 생각한다. 증거를 계산할 때 사용하는 기법이나 기술을 정확히 표시 할 수있는 방법이 있습니까? 정확히 일치하지 않는 경우 정확히 auto이 수행하는 장소가 있습니까?
내 증거로 다음과 비슷한 목표에 도달했습니다. (실제 유형이 다릅니다 (zm : StringMap.string String.string, key 및 elt는 String.string)). 내 코드에서 환경에 H: z1k <> z2k이있는 경우 intuition congruence으로 쉽게 처리 할 수 있지만 그런 가설이 없다면 내 목표를 증명할 수 없습
나는 하나 개의 파일 모듈 형 내가 예를 들어 WeakPairProps에 Lemma를 사용할 수있는 또 다른 파일 B.v을 정의하려면 다음 Module Type WeakPair.
...
End WeakPair.
Module WeakPairProps (Import WP : WeakPair).
Lemma Weak_A ....
End WeakPa
강한 형식 인 pigeon_hole 원리를 증명하기 위해 다음 보조 정리를 사용하고 싶습니다. Parameter A:Type.
Parameter var_dec : forall (x y : A),{x=y}+{~x=y}.
Definition included (l1 l2:list A):Prop :=
forall x:A,In x l1 -> In