함수가 Z
을 인수로 취하면 Z
의 하위 집합도 가져올 수 있어야합니다. 맞습니까? 예를 들어, Zmod
은 Z
2 개를 취하고 Z
을 반환합니다. 이 메소드를 구현하지 않고 부분 집합 유형으로 개선 할 수 있습니까? 하위 집합 유형에서 Z를 "추출하는 방법"{z : Z | z> 0}
Definition Z_gt0 := {z | z > 0}.
Definition mymod (n1 n2 : Z_gt0) :=
Zmod n1 n2.
을하지만 COQ는 n1 is expected to have type Z
물론 뿌려줍니다. Z_gt0
에서 어떻게 작동합니까? 강제? Random nat stream and subset types in Coq
편집 :
이 질문은 여기 내 다른 하나는 관련이 proj1_sig
트릭을 할 수 있습니다, 감사 COQ IRC 채널!