저는 생성자가 무엇이며 어떻게 작동하는지에 대한 원칙을 이해하는 데 어려움을 겪고 있습니다. 예를 들어, COQ, 우리는이 같은 자연수 정의 해왔 던 : Inductive nat : Type :=
| O : nat
| S : nat -> nat.
을 그리고 S 생성자입니다,하지만 정확히 무엇을 의미 않음을 말씀 드리 지요? 그때 할 경
필자는 매우 이상한 문법을 보았습니다 : (name : type1) type2는 type이고 expr은 [name : type]입니다. Pi와 Lambda의 대체 구문처럼 보이지만 몇 시간 후에 문서에서 아무 것도 발견하지 못했습니다 검색, 헛된. 의미가 무엇이며 어디에 정의되어 있습니까? (죄송합니다. 예제 사용법에 대한 링크를 잃어 버렸습니다)
destruct 전술을 사용하여 사례별로 사례를 증명할 수 있습니다. 온라인에서 몇 가지 예를 읽고 혼란 스럽습니다. 누군가 더 잘 설명 할 수 있을까요? Inductive three := zero
| one
| two.
Lemma has2b2: forall a:three, a<>zero /\ a<>one -> a=two.
초급 문법 : 목표 (X FORALL : X를, P (X)/\의 Q (X)) -> ((FORALL X : X, P (x))/\ (forall x : X, Q (x))). 누군가 도와 드릴 수 있습니까? , 목표를 분리하는 분할 나는 당신이 당신의 가설의 이름을 인트로를 사용하는 운영자 추천 : 나는 완전한 멍청한 놈
저는 Coq에서 코드를 작성하고이 코드를 추출하여 대형 하스켈 프로젝트에서 사용하려고합니다. Coq에서 하나의 모듈을 만들고 속성을 증명 한 다음 Haskell의 모듈 시스템을 사용하여 스마트 생성자를 통해 이러한 속성의 위반을 방지합니다. 명백한 내보내기 목록이있는 Haskell 모듈에 Coq 코드를 추출 할 수 있다는 어떠한 징후도 발견 할 수 없습니다
나는 Coq 증명에 문제가있어 도움이 필요합니다. 내가 말하고자하는 Inductive Architecture : Set :=
| Create_Architecture (Arch_Name: string)(MyComponents: list Component)
(MyConnections: list Connector)
with
...
with
어떻게하면 co.kr에서 bool true|false을 받아들이고 bool true|false (아래 그림 참조)를 반환하는 함수 f가 하나의 bool에 두 번 적용될 때 true|false가 항상 같은 값을 반환하는지 증명할 수 있습니다. (f:bool -> bool)
예를 들어 함수 f은 4 가지만 수행 할 수 있습니다. b 함수의 입력을 호출 할
내가하려고 해요 (고전) COQ에서 ~ (forall t : U, phi) -> exists t: U, ~phi
을 증명한다. 난 할 노력하고있어 contrapositively 그것을 증명입니다 : 1. Assume there is no such t (so ~(exists t: U, ~phi))
2. Choose arbitrary t0:U
3.