Coq에는 왜 Prop이 있습니까?


35

Coq에는 추출 중에 폐기 된 증거 ​​관련 증거 제안 유형이 있습니다. 증거 용으로 만 Coq를 사용하는 경우이를 갖는 이유는 무엇입니까? Prop은 비현실적 이므로 Prop : Prop 는 Coq가 자동으로 유니버스 인덱스를 유추하므로 모든 곳에서 Type (i)을 대신 사용할 수 있습니다. Prop이 모든 것을 복잡하게 만드는 것 같습니다.

Luo의 책에서 Set과 Prop를 분리 해야하는 철학적 이유가 있지만 책에서 찾지 못했습니다. 그들은 무엇인가?


6
“증거 목적으로 만 Coq를 사용하는 경우”: 여기서 핵심 요점을 파악한 것 같습니다. Coq는 증거 용으로 만 사용되지 않습니다.
Gilles 'SO- 악의를 그만두십시오'

답변:


34

는 쓸모없는 코드 부분을 삭제할 수 있기 때문에 프로그램 추출에 매우 유용합니다. 예를 들어, 정렬 알고리즘을 추출하기 위해 "모든 목록 마다 k 가 정렬되고 k 의 순열과같은목록 k 가 있습니다"라는 진술을 증명할 수있습니다. 이것을 Coq에 기록하고 P r o p 를 사용하지 않고 추출하면 다음과 같이됩니다.PropkkkProp

  1. "모든 k가있다 " 는 목록을 목록으로 가져 오는지도 를 제공 합니다.ksort
  2. " 가 정렬되도록"은 k를 통과하여 정렬되어 있는지 확인 하는 기능 을 제공합니다.kverifyk
  3. " 의 순열입니다 " 는 에서 k 까지 의 순열 을 제공합니다 . 이것은 단지 매핑 일뿐만 아니라, 두 개의 맵이 실제로 역인지 검증하는 프로그램과 함께 역 매핑입니다.kpikpi

여분의 것들이 완전히 쓸모없는 것은 아니지만 많은 응용 프로그램에서 우리는 그것을 없애고 유지하려고 sort합니다. 이것은 우리가 사용하는 경우 수행 할 수 있습니다 상태 " k는 "주문한 "와 k는 의 순열이다 "하지만, 하지 "모든 K ".Propkkk

일반적으로 코드를 추출하는 일반적인 방법은 x : A 형식의 문장을 고려하는 것입니다 . 여기서 X , 입력되는 Y를 출력하고, φ ( X , Y는 ) 을 위해 의미 설명 Y는 정확한 출력한다. (위의 예에서및 B는 목록과의 종류 φ ( , K하는 ) "이고 K는 정렬되고, k는 의 순열 .")하는 경우 φ이 되어 P의 R O를 P는 다음 추출지도 제공 F를 :x:A.y:B.ϕ(x,y)xyϕ(x,y)yABϕ(,k)kkϕProp 되도록 φ ( X , F ( X는 ) ) 모두 보유 X . 경우 φ가 S의 전자 t 우리는 또한 함수 얻을 g 되도록 g ( x는 ) 증거가있다 φ ( X , F ( x는 ) ) 모두 보유 X f:ABϕ(x,f(x))xAϕSetgg(x)ϕ(x,f(x))xA. 종종 증명은 계산 상 쓸모가 없으며, 특히 다른 명령문에 깊이 중첩되어있는 경우이를 제거하는 것을 선호합니다. 우리에게 그렇게 할 수있는 가능성을 제공합니다.Prop

2015년 7월 29일 추가 : 우리가 피할 수 있는지 질문이 자동으로 "쓸모 추출 된 코드를"멀리 최적화하여 모두가. 예를 들어, 논리의 부정적 조각 (빈 유형, 단위 유형, 제품으로 작성된 것)에서 추출 된 모든 코드는 단위를 뒤섞는 것처럼 쓸모가 없습니다. 그러나 P r o p 를 사용할 때 반드시 설계 결정을 내려야 합니다. 다음은 간단한 예입니다. Σ 는 우리가 T y p e에 있고 는 우리가 P r o p 에 있음을 의미 합니다. 우리가 추출하면 PropPropΣTypeProp 우리는 n 을 가장 낮은 비트 b 와 나머지 비트 k 로분해하는 프로그램을 얻습니다. 즉, 모든 것을 계산합니다. Π n : N Σ b : { 0 , 1 }k : N 에서 추출하면

Πn:NΣb:{0,1}Σk:Nn=2k+b
nbk 이면 프로그램은 가장 낮은 비트 b 만 계산합니다. 기계는 어느 것이 올바른지 알 수 없으므로 사용자는 원하는 것을 알려야합니다.
Πn:NΣb:{0,1}k:Nn=2k+b
b

1
Propg(x)

1
k

1
kPropProp

2
(1)

3
Prop

19

Prop

impredicative Prop+large elimination+excluded middle

일관성이 없습니다. 일반적으로 제외 된 중간을 추가 할 가능성을 유지하려고하므로 한 가지 해결책은 대규모 제거를 유지하고 Prop를 예측하는 것입니다. 다른 하나는 큰 제거를 억제하는 것입니다.

Coq는 둘 다했습니다! 그들은 추정 적 Prop의 이름을 Set로 바꾸고 Prop에서 큰 제거를 비활성화했습니다.

즉흥적으로 얻은 표현력은 "합리적"수학의 99 %가 공식화 될 수 있다는 의미에서 "안심 적"이며, 이론 설정과 관련하여 일관된 것으로 알려져 있습니다. 이로 인해 그들은 예측 우주 만있는 아그 다 (Agda)와 같은 것으로 약화되지 않을 것입니다.


8
아 그리고 나는 언급하는 것을 잊었다 : 그것은 일관성이없는 경우 가 아니다Prop : Prop . 오히려의 정량화 모든 제안을 통해 다시 명제이다.
cody

이것에 대해 더 많은 자료를 알려 주시겠습니까? 내가 찾을 수있는 모든 것이 매우 흩어져있는 것 같습니다.
user833970

1
@ user833970 포인터를 원하는 특정 사항이 있습니까? 종속 유형의 메타 이론에 대한 모든 참조가 실제로 존재하지는 않습니다. 이 토론 (여기서 다시 설명합니다!)이 유용 할 수 있습니다. github.com/FStarLang/FStar/issues/360
cody

고맙습니다, 나는 Berardi 역설 논문을 지금 연구하고 있습니다.
user833970

14

프로그램 추출에 관심 Prop이 없더라도, 즉석 적이 라는 사실 은 예측 가능한 우주 탑을 사용하여 만들 수없는 일부 모델을 만들 수있게합니다. IIRC Thorsten Altenkirch는 Coq의 불확실성을 사용하는 시스템 F 모델을 가지고 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.