[英]The induction proof in Isabelle: given a subgoal, how to create the right auxiliary lemma
我已经定义了一个带标签的转换系统,以及 function,它接受了系统可以到达的列表。 为了方便起见,我定义了另一个用于收集可达状态的函数。 我想证明这两个函数之间的关系。
type_synonym ('q,'a) LTS = "('q * 'a set * 'q) set"
primrec LTS_is_reachable :: "('q, 'a) LTS \<Rightarrow> 'q \<Rightarrow> 'a list \<Rightarrow> 'q \<Rightarrow> bool" where
"LTS_is_reachable \<Delta> q [] q' = (q = q')"|
"LTS_is_reachable \<Delta> q (a # w) q' =
(\<exists>q'' \<sigma>. a \<in> \<sigma> \<and> (q, \<sigma>, q'') \<in> \<Delta> \<and> LTS_is_reachable \<Delta> q'' w q')"
primrec LTS_is_reachable_set :: "('q, 'a) LTS ⇒ 'q ⇒ 'a list ⇒ 'q set" where
"LTS_is_reachable_set Δ q [] = {q}"|
"LTS_is_reachable_set Δ q (a # w) = \<Union> ((λ(q, σ, q''). if a \<in> σ then LTS_is_reachable_set Δ q'' w else {}) ` Δ)"
lemma "LTS_is_reachable Δ q1 w q2 \<Longrightarrow> q2\<in>(LTS_is_reachable_set Δ q1 w)"
apply (induct w)
apply simp
有这样一个引理,不知如何证明。
子目标在这里:
⋀a w. (LTS_is_reachable Δ q1 w q2 ⟹ q2 ∈ LTS_is_reachable_set Δ q1 w) ⟹
∃q'' σ. a ∈ σ ∧ (q1, σ, q'') ∈ Δ ∧ LTS_is_reachable Δ q'' w q2 ⟹
∃x∈Δ. q2 ∈ (case x of (q, σ, q'') ⇒ if a ∈ σ then LTS_is_reachable_set Δ q'' w else {})
除了如何证明引理之外,您的示例还有一个问题:您对LTS_is_reachable_set
的定义存在错误。 考虑这个定义的第二个等式:
"LTS_is_reachable_set Δ q (a # w) = ⋃ ((λ(q, σ, q''). ...
这里的问题是λ(q, σ, q'')
中的变量q
与左侧的参数q
不同。 因此,您应该将右侧的q
重命名为例如q'
并明确检查q
和q'
是否相等,如下所示:
"LTS_is_reachable_set Δ q (a # w) = ⋃ ((λ(q', σ, q''). if a ∈ σ ∧ q' = q then ...
现在,您可以按照您的意愿通过对w
的归纳来证明您的引理。 但是,您需要通过使q1
为任意值来削弱归纳假设,以便您可以在证明中有效地应用它。 这是一个如何证明引理的例子:
lemma "LTS_is_reachable Δ q1 w q2 ⟹ q2 ∈ LTS_is_reachable_set Δ q1 w"
proof (induction w arbitrary: q1)
case Nil
then show ?case
by simp
next
case (Cons a w)
from `LTS_is_reachable Δ q1 (a # w) q2`
obtain q'' and σ
where "a ∈ σ" and "(q1, σ, q'') ∈ Δ" and "LTS_is_reachable Δ q'' w q2"
by auto
moreover from `LTS_is_reachable Δ q'' w q2` and Cons.IH
have "q2 ∈ LTS_is_reachable_set Δ q'' w"
by simp
ultimately show ?case
by fastforce
qed
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.