1
그래서 나는 부 골목에 거짓 가설을 가지고 있습니다. 서로 다른 생성자 사이의 평등입니다. 부목을 어떻게 끝내나요?Coq에서 거짓 가설로 증명 완료
H: List.Not_Empty Bit.Bit Bit.Zero (List.Empty Bit.Bit) = List.Empty Bit.Bit
그래서 나는 부 골목에 거짓 가설을 가지고 있습니다. 서로 다른 생성자 사이의 평등입니다. 부목을 어떻게 끝내나요?Coq에서 거짓 가설로 증명 완료
H: List.Not_Empty Bit.Bit Bit.Zero (List.Empty Bit.Bit) = List.Empty Bit.Bit
이 내가 표준 라이브러리에서 사용하고있어 COQ 목록처럼 보이지 않는, 그래서 List.Not_Empty 및 List.Empty의 정의를 모른 채 당신을 도울 힘들 것입니다. List.Empty
이 nil
을 나타내고 List.Not_empty
을 나타내는 것이 정확히 cons
을 나타내는 것으로 추측된다면 두 생성자가 동일하지 않다는 것을 보여주는 것입니다. 당신은 예를 들어 수행 할 수 있습니다 단순히
congruence.
또는 :
inversion H.
을하지만, 뭔가 더 복잡하다면,이 두 가지가 실패 할 수 있습니다.
unfold List.Not_Empty, List.Empty in H.
이 정의를 전개하고 아마도 보조 정리 것처럼이 subproof 저장 (세부 사항을 작업 :
SearchAbout List.Not_Empty.
이 보조 정리 그것에 대해 존재, 또는에 있는지 : 그래서 당신이 중 하나 싶어 유용하게 보이므로 존재하지 않습니다).
'반전 H '가 트릭을 만들었습니다. 'Empty'와'Not_Empty'는 제 List의 생성자입니다. – user1494846