Как использовать тактику с гипотезой в Coq?
Я новичок в Coq, и я зашел в тупик. У меня есть индуктивное определение, которое выглядит примерно так (я определил принять индуктивно раньше):
Inductive fun : accepts -> Prop :=
| fn1 : fun True
| fn2 : forall (n : nat )(A : accepts), fun A -> fun (n A).
Что мне нужно доказать, так это:
Lemma lem_1 (A : formula) (n : nat) (h : fun (n A)) : fun A.
Конечно, при запуске доказательства я получаю
A : accepts
n : nat
h : fun (n A)
============================
fun A
Я провел много времени, читая о тактике, пытаясь найти какой-нибудь способ, чтобы подключить h к моему fn2 или что-то в этом роде, и я просто не могу найти способ сделать это. Может кто-нибудь, пожалуйста, направить меня сюда и дать мне некоторое представление?? Я также пытался сделать что-то, чтобы упростить удовольствие от А до А, но у меня там тоже не получилось. Большое спасибо за Вашу помощь!
1 ответ
Кажется, вы хотите утверждать, что ваш h
гипотеза была создана с использованием fn2
править. В Coq Jargon это требует перевернуть эту гипотезу. Для этого вы можете позвонить inversion h
, Применение является противоположным процессом: объединение fn2
править с гипотезой, которая утверждает, fun A
вывести fun (n A)
,