如何创建适当的引理来证明Isabelle中的这个引理? 有趣的穿插::“一张清单⇒ 'A.⇒ '一份清单 散布xyxs a=XA散布yxs a| 散布xs_uxs=xs 引理目标:映射f散布xs a=散布映射f散布xs f a

如何创建适当的引理来证明Isabelle中的这个引理? 有趣的穿插::“一张清单⇒ 'A.⇒ '一份清单 散布xyxs a=XA散布yxs a| 散布xs_uxs=xs 引理目标:映射f散布xs a=散布映射f散布xs f a,isabelle,Isabelle,这个引理似乎很直观,但我无法让伊莎贝尔证明这个引理。我试着在xs上归纳,但大锤仍然找不到证据。然后我尝试添加辅助引理,它们都很容易证明,但对证明目标没有多大帮助。不过,我将在下面列出我的尝试: 引理intersp_1:interspserse xs@[y,x]a=intersperse xs@[y]a@[a,x] …完成 引理intersp_2:map f intersperse xs@[b,x]a=map f intersperse xs@[b]a@[fa,fx] …完成 引理intersp_

这个引理似乎很直观,但我无法让伊莎贝尔证明这个引理。我试着在xs上归纳,但大锤仍然找不到证据。然后我尝试添加辅助引理,它们都很容易证明,但对证明目标没有多大帮助。不过,我将在下面列出我的尝试:

引理intersp_1:interspserse xs@[y,x]a=intersperse xs@[y]a@[a,x] …完成 引理intersp_2:map f intersperse xs@[b,x]a=map f intersperse xs@[b]a@[fa,fx] …完成 引理intersp_3:map f intersperse xyxs a=f xf amap f intersperse yxs a …完成 作为伊莎贝尔的新学员,我被困在这里了。我目前能想到的唯一解决办法是提出一个适当的引理,为解算器提供足够的提示。然而,我不知道在将xs的归纳应用到一个补充引理之后,如何恰当地划分目标的归纳步骤。诱导步骤是

目标1次级目标: 1.⋀aa-xs。 映射f交错xs a=交错映射f交错xs f a⟹ 映射f穿插aa xs a=穿插映射f aa xs f a 感谢您的帮助

这里有一个证明:

lemma target: "map f (intersperse xs a) = intersperse (map f xs) (f a)"
proof (induct xs)
  case Nil
  then show ?case by simp
next
  case (Cons x xs)
  consider "xs = []" | "∃y ys. xs = y # ys" by (meson list.exhaust)
  then show ?case using Cons by (cases; auto)
qed
这里的关键是穿插x[]a和穿插x y ys a匹配不同的模式,因此通过分别考虑每个案例,sledgehammer可以很容易地找到证据。

这里有一个证据:

lemma target: "map f (intersperse xs a) = intersperse (map f xs) (f a)"
proof (induct xs)
  case Nil
  then show ?case by simp
next
  case (Cons x xs)
  consider "xs = []" | "∃y ys. xs = y # ys" by (meson list.exhaust)
  then show ?case using Cons by (cases; auto)
qed

这里的关键是,intersperse x[]a和intersperse x y ys a匹配不同的模式,因此通过分别考虑每种情况,sledgehammer可以很容易地找到证据。

这里有另一个选项:使用专门的归纳规则进行intersperse:

规则intersiste.induct包含三种情况:

xyxs [] [v] 然后可以通过自动解决这些问题,因为它们符合函数可用的简化规则


由于引理中的散布参数不是变量,因此有必要将它们显式地提供给归纳法,并使用“任意”来说明变量部分是什么。

这里还有另一个选项:使用散布的专门归纳规则:

规则intersiste.induct包含三种情况:

xyxs [] [v] 然后可以通过自动解决这些问题,因为它们符合函数可用的简化规则


由于引理中散布的参数不是变量,因此有必要将它们显式地提供给归纳法,并使用“任意”来说明变量部分是什么。

除了手动区分外,您还可以执行“按案例xs自动”。除了手动区分外,您还可以执行“按案例xs自动”。