Как использовать тактику с гипотезой в 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),

Другие вопросы по тегам