Часто, доказывая утверждение в режиме доказательства, я обнаруживаю, что мне нужны некоторые промежуточные утверждения, которые еще не сформулированы и не доказаны. Чтобы указать их, я обычно использую команду subgoal
, за которой следует proof-
, чтобы перейти в режим состояния. Однако в процессе все локальные допущения удаляются. Типичный пример может выглядеть так
lemma "0 < n ⟷ ((2::nat)^n < 3^n)"
apply(auto)
subgoal
proof-
have "0<n" sorry (* here I would like to refer to the assumption from the subgoal *)
then show ?thesis sorry
qed
subgoal sorry
done
Я знаю, что могу явно сформулировать предположения, используя assume
. Однако это быстро становится довольно утомительным, если задействовано несколько предположений. Есть ли более простой способ просто сослаться на все предположения? В качестве альтернативы, есть ли хороший способ реализовать утверждения с короткими доказательствами непосредственно в режиме доказательства?