Coq에서 Set과 Type의 차이점은 무엇입니까? [닫은]


13

AFAIU 유형은 Set요소가 프로그램이거나 proposition요소가 증명 인 것일 수 있습니다 . 따라서이 이해를 바탕으로 :

Inductive prod (X Y: Type) : Set := 
| pair: X -> Y -> prod X Y.

다음 코드는 컴파일되어야하지만 다음 오류로 인한 것은 아닙니다. 내가 변경하는 경우 SetType또는 다른 TypeSet가 벌금을 컴파일합니다. 누군가 다음 오류의 의미를 이해하도록 도와 줄 수 있습니까? Software Foundations 책을 사용하여 Coq를 가르치려고합니다.

오류:

Error: Large non-propositional inductive types must be in Type.

2
정리 프로 버는 CS.SE에서 항상 회색 영역 이었지만 이것이 Mod가 StackOverflow로 마이그레이션하기에 좋은 후보라고 생각합니다.
jmite

이 질문에는 몇 가지 답변이 있습니다 .
Anton Trunov

@jmite이 질문은 Coq을 구체적인 구문으로 사용하는 건축의 미적분학에 관한 것이므로 여기서는 주제에 관한 것 같습니다.
Gilles 'SO- 악마 그만

답변:


12

Coq에는 3 가지 "큰"유형이 있습니다.

  • Prop제안을위한 것입니다. 즉, 다형성 함수를 사용하여 다형성 함수를 인스턴스화 할 수 있습니다. 이면 경우에도 증거 관련성이 없습니다 . 이를 통해 Coq에서 생성 한 모든 코드에서 증거 용으로 만 사용 된 용어를 지울 수 있습니다.1,2:1=2
  • Set계산을위한 것입니다. 그것은 예측 적이며 증거와 관련이 없기 때문에 가정하지 않는 것과 같은 좋은 일을 할 수 있습니다 . 부분은 코드를 추출하는 동안 남아 있습니다.1=2Set
  • Type 이 두 가지 모두의 상위 유형이므로 한 번만 작동하는 코드를 한 번 작성할 수 있습니다

나는 Set매개 변수가 될 수있는 매개 변수를 정의하고 있기 때문에 오류가 발생 Type했다고 확신합니다 Prop. 이것을 변경하면 :

Inductive prod (X Y: Set) : Set := 
| pair: X -> Y -> prod X Y. 

코드가 작동합니다.


3
Coq는 Prop공리로 추가하지 않는 한 증거 관련성이 없습니다 .
Geoff
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.