手动向简化器添加假设 (Isabelle)

Manually adding an assumption to the simplifier (Isabelle)

我试图在 Isabelle 中完成一个现在有效的证明:

lemma axiom1: " x = y ⟹ Δ x y z = 0"
  proof -
    assume 1[simp]: "x = y"
    have 1: "Δ x y z = Δ y z x" by (rule axiom0_a)
    also have "… = Δ y z y" by simp
    also have "… = Δ z y y" by (rule axiom0_a)
    moreover have "Δ y y z  = - Δ z y y" by (rule axiom0_b)
    moreover have "⋀r. ((r::real) = - r ⟹ r = 0)" by simp
    ultimately show "Δ x y z = 0" by simp
  qed

但是,我不得不手动将假设添加到简化器中。我的问题是,简化器 x=y 中的附加规则是否会保留在这个证明中,还是会在其他证明中使用(这会导致一些问题)?另外,我认为这些假设是自动添加到简化器中的:为什么这个假设不是因为它会带来一些循环的危险?

  1. 假设将保留在本地。它只能用于名称 1 也有效的地方
  2. 简化器会自动使用假设,但是当您启动 proof 时,它不再是您当前子目标中的假设。

如果你做一个结构化的证明,用 assumesshows 以结构化的方式写下引理通常会更好:

lemma axiom1: 
assumes 1[simp]: "x = y"
shows "Δ x y z = 0"
...