Поведение применяемой тактики, когда цель и применяемый термин совпадают

Предположим, у нас есть A B C : Prop.
Учитывая контекст с H : A -> B -> C и единственной целью A -> B -> C,
почему можно apply H завершить доказательство, решив текущую и единственную цель?

Я думал, что тактика apply генерирует новую цель для каждого из аргументов применяемого термина, если его заключение совпадает (или может быть унифицировано) с текущей целью.


person ScarletAmaranth    schedule 16.11.2015    source источник


Ответы (1)


То, что вы описываете, произошло бы, если бы вашей целью было только C: чтобы доказать C от H: A -> B -> C, вам нужно будет предоставить свидетелей для A и B. Однако ваша текущая ситуация - всего лишь пример доказательства P знания P, какой бы формы P ни была. Следовательно, applying H, вы предоставляете достаточно информации, чтобы закрыть цель.

person Vinz    schedule 17.11.2015
comment
Но почему apply H работает? Применить попытки проверить вывод применяемого термина (согласно документации) - но в этом случае вывод будет C, а не A -> B -> C. Например, в этом сценарии я понимаю, почему assumption решает цель - я хочу доказать, что P знаю P. - person ScarletAmaranth; 17.11.2015
comment
(Я не уверен на 100% в том, что я собираюсь сказать, я немного забыл о внутренностях Coq) apply пытается объединить полную цель с H, а не только с последней частью импликации. Здесь соответствие точное, поэтому у вас нет конечных подцелей. - person Vinz; 17.11.2015
comment
Ну, конечно, полная цель попытка быть объединена, я удивлен, что также используется весь термин унифицирован - согласно coq docs, Применяемая тактика пытается сопоставить текущую цель с заключение типа срока. - person ScarletAmaranth; 17.11.2015
comment
Я не помню достаточно, чтобы точно сказать, что они подразумевают под заключением, но вы можете рассматривать H как нулевой предикат, возвращающий данные типа A -> B -> C;) - person Vinz; 17.11.2015
comment
Заключение - это лишь последователь последнего следствия. Я понимаю, что могу рассматривать его как предикат нулевого значения, но почему Coq считает его предикатом нулевого значения :)? - person ScarletAmaranth; 17.11.2015
comment
Потому что Coq старается сделать как можно больше, чтобы помочь вам, и его алгоритм унификации, кажется, очень хочет соответствовать как можно большему. Возможно, вам повезет больше, если вы получите более информативный ответ в списке рассылки Coq Coq-Club. - person Vinz; 18.11.2015