Чи є спосіб довести наступну теорему в Coq?
Theorem bool_pirrel : forall (b : bool) (p1 p2 : b = true), p1 = p2.
EDIT : Спроба дати коротке пояснення щодо того, "що є доказовою невідповідністю" (виправте мене хтось, якщо я помиляюся чи неточний)
Основна ідея полягає в тому, що у світі пропозицій (або Prop
роду у Coq) те, про що ви (і вам слід) насправді переймаєтесь, - це доцільність пропозиції, а не докази цього, їх може бути багато (або їх немає). Якщо у вас є кілька доказів, з точки зору доказовості, вони рівні, в тому сенсі, що вони доводять те саме твердження . Тож їх відмінність просто не має значення. Це відрізняється від обчислювальної точки зору, коли ви дійсно дбаєте про розрізнення двох термінів, наприклад, в основному, ви не хочете, щоб два мешканці bool
типу (або Set
, кажучи словами Кока), а саме true
і false
були рівними. Але якщо покласти їх Prop
, вони ставляться до рівних.