(** **** Exercise: 3 stars, standard, optional (ev_plus_plus)
This exercise just requires applying existing lemmas. No
induction or even case analysis is needed, though some of the
rewriting may be tedious. *)
Theorem ev_plus_plus : forall n m p,
even (n+m) -> even (n+p) -> even (m+p).
Proof.
intros n m p H1 H2.
Вот что я получил:
1 subgoal (ID 89)
n, m, p : nat
H1 : even (n + m)
H2 : even (n + p)
============================
even (m + p)
Я доказал предыдущую теорему:
Theorem ev_ev__ev : forall n m,
even (n+m) -> even n -> even m.
И хотел применить его к H1, но
apply ev_ev__ev in H1.
дает ошибку:
Error: Unable to find an instance for the variable m.
Почему он не может найти "m" в выражении even (n + m)
? Как исправить?
Обновить
apply ev_ev__ev with (m:=m) in H1.
дает очень странный результат:
2 subgoals (ID 90)
n, m, p : nat
H1 : even m
H2 : even (n + p)
============================
even (m + p)
subgoal 2 (ID 92) is:
even (n + m + m)
Я думал, что это превратит H1 в гипотезу 2:
H11 : even n
H12 : even m
Но вместо этого он дал 2 подцели, вторая, которую нам нужно доказать, сложнее, чем начальная:
even (n + m + m)
Что тут происходит?
H11
иH12
, применивev_ev__ev
. Вы можете получить только гипотезуeven n -> even m
. - person larsr   schedule 26.05.2019