Existe uma maneira de provar o seguinte teorema em Coq?
Theorem bool_pirrel : forall (b : bool) (p1 p2 : b = true), p1 = p2.
EDIT : Uma tentativa de dar uma breve explicação sobre "o que é irrelevância para a prova" (corrija-me alguém se eu estiver errado ou impreciso)
A idéia básica é que, no mundo das proposições (ou do Prop
tipo Coq), o que você (e você deveria) realmente se importa é a provabilidade de uma proposição, não as provas dela, pode haver muitas (ou nenhuma). Caso você tenha várias provas, do ponto de vista da provabilidade, elas são iguais no sentido em que provam a mesma proposição . Portanto, a distinção deles é irrelevante. Isso difere do ponto de vista computacional, onde você realmente se preocupam com a distinção de dois termos, por exemplo, basicamente, você não quer que os dois habitantes do bool
tipo (ou Set
, nas palavras de Coq), ou seja, true
e false
para ser igual. Mas se você os colocar Prop
, eles serão tratados da mesma forma.