Следующий пример основан на коде, представленном в этом ответе .
Предположим, у нас есть тип T
и двоичное отношение R
для элементов типа T
,Для целей этого примера мы можем определить их следующим образом.
Variable T : Type.
Variable R : T -> T -> Prop.
Докажем следующую простую теорему.
Theorem test : forall x y, R x y -> exists t, R x t.
Вот возможное решение.
Proof.
intros. exists y. apply H.
Qed.
Вместо того, чтобы явно указать, что y
- это элемент, который мы ищем, мы можем положиться на мощные механизмы автоматического доказательства Coq, чтобы автоматически определить, какая переменная удовлетворяет R x t
:
Proof.
intros.
eexists. (* Introduce a temporary placeholder of the form ?t *)
apply H. (* Coq can deduce from the hypothesis H that ?t must be y *)
Qed.
Существует множество тактик, которые используют одни и те же автоматические механизмы вывода, такие как eexists
, eapply
, eauto
и т. Д.
Обратите внимание, что их имена часто соответствуют обычной тактике с префиксом e
.