我如何证明 4 甚至在使用 Isabelle

How do I prove that 4 is even using Isabelle

假设我对 Even 有这个归纳定义

inductive_set Even :: "Int.int set"
  where null: "0 ∈ Even"
  | plus: "x ∈ Even ⟹ x+2 ∈ Even" 
  | min: "x ∈ Even ⟹ x-2 ∈ Even"

如何证明这个引理 lemma four_is_even: "4 ∈ Even" ?

我对证​​明助手比较陌生

正如@Mathias Fleury 上面非正式解释的那样,有几种方法可以证明你的引理:

使用正向推理

您可以先使用 OF 事实组合子证明以下辅助引理:

lemma four_is_even_fwd': "0+2+2 ∈ Even"
  by (fact plus [OF plus [OF null]])

然后让简化器负责证明 0+2+2 = 4:

lemma four_is_even_fwd: "4 ∈ Even"
  using four_is_even_fwd' by simp

此外,您可以使用 Isabelle/Isar 证明语言来生成更加结构化和教学的证明:

lemma four_is_even_fwd_str: "4 ∈ Even"
proof -
  have "0 ∈ Even"
    by (fact null)
  then have "0+2 ∈ Even"
    by (fact plus)
  then have "0+2+2 ∈ Even"
    by (fact plus)
  then show ?thesis
    by simp
qed

使用反向推理

类似于上面第一个正向推理的例子,你可以使用apply-scripts证明下面的辅助引理:

lemma four_is_even_bwd': "0+2+2 ∈ Even"
  apply (rule plus) (* subgoal: 0+2 ∈ Even *)
  apply (rule plus) (* subgoal: 0 ∈ Even *)
  apply (rule null) (* no subgoals! *)
  done

然后再次让简化器负责证明 0+2+2 = 4:

lemma four_is_even_bwd: "4 ∈ Even"
  using four_is_even_bwd' by simp

当然,尝试使用 Even.min 来证明你的引理要复杂得多。