Я бы хотел использовать тактику Ltac для этих простых правил вывода.
В Modus Ponens, если у меня есть H:P->Q
и H1:P
, Ltac mp H H1
добавит Q
к контексту как H2 : Q
.
В Модус Толленс, если у меня есть H:P->Q
и H1:~Q
, то Ltac mt H H1
добавит H2:~P
к контексту.
Я написал один для модусаponens, но это не работает в сложных случаях, когда прецедент также является следствием.
Ltac mp H0 H1 :=
let H := fresh "H" in
apply H0 in H1 as H.
Редактировать: я нашел ответ на Modus Ponens в другом, казалось бы, не связанном вопросе ( Перепишите гипотезу в Coq, сохраняя смысл ), где "10" * "10"
. *1025*
Ltac mp H H0 :=
let H1 := fresh "H" in
generalize (H H0); intros H1.
Iвсе равно буду благодарен за ответ Модуса Толленса.