종속 유형이있는 프로그래밍 언어로 coq를 사용하려고합니다. 비어 있지 있다는 증거가있다 제공coq에 암시 적 증명 객체를 쓰는 데있어 불가능한 패턴
Inductive Good : list nat -> Set :=
| GoodNonEmpty : forall h t, Good (h :: t).
Definition get_first(l : list nat)(good : Good l) : nat :=
match l with
| h :: t => h
| nil =>
match good with
end
end.
내가 비어 있지 않은 목록의 유형을 정의하고 이러한 목록의 첫 번째 요소를 가져 오는 함수를 만들 : 나는 다음과 같은 작은 프로그램을 만들었습니다. 헤드 항목이 두 항목으로 구성된 경우를 잘 처리하지만 빈 목록의 불가능한 경우는 처리 할 수 없습니다. 내가 coq에서 이것을 어떻게 할 수 있습니까? 당신의 시도보다 간단하다 그것을 할 수