Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Isabelle/ZF-nat不等式_Isabelle - Fatal编程技术网

Isabelle/ZF-nat不等式

Isabelle/ZF-nat不等式,isabelle,Isabelle,我是伊莎贝尔的新手,我试图证明这样的事情: lemma refl_add_help: "[| n:nat; m:nat |] ==> 0 #+ n \<le> m #+ n" by(rule add_le_mono1, simp) theorem mult_le_self: "[| 0 < m; n:nat; m:nat |] ==> n \<le> n #* m" apply(case_tac m, auto

我是伊莎贝尔的新手,我试图证明这样的事情:

lemma refl_add_help: "[| n:nat; m:nat |] ==> 0 #+ n \<le> m #+ n" 
by(rule add_le_mono1, simp)

theorem mult_le_self: "[| 0 < m; n:nat; m:nat |] ==> n \<le> n #* m"
apply(case_tac m, auto)
apply(simp add: refl_add_help)
oops
theory mytheory
imports ZF.Arith

我对伊莎贝尔/采埃孚不太熟悉。也就是说,您可以通过以下方式证明您的结果:

  theorem mult_le_self: "⟦ 0 < m; n:nat; m:nat ⟧ ⟹ n ≤ n #* m"
    apply (case_tac m, simp)
    apply (frule_tac ?m="n #* x" in refl_add_help)
    apply (auto simp add: add_commute)
    done

  lemma "⟦ n:nat; m:nat ⟧ ⟹ n ≤ m #+ n"
    by (frule refl_add_help, auto)
lemma "⟦ n:nat; m:nat ⟧ ⟹ n ≤ m #+ n"
proof -
  assume "n:nat" and "m:nat"
  then show ?thesis using refl_add_help by simp
qed
lemma
  assumes "n:nat" and "m:nat"
  shows "n ≤ m #+ n"
  using assms and refl_add_help by simp
或者,更简洁地说,如下所示:

  theorem mult_le_self: "⟦ 0 < m; n:nat; m:nat ⟧ ⟹ n ≤ n #* m"
    apply (case_tac m, simp)
    apply (frule_tac ?m="n #* x" in refl_add_help)
    apply (auto simp add: add_commute)
    done

  lemma "⟦ n:nat; m:nat ⟧ ⟹ n ≤ m #+ n"
    by (frule refl_add_help, auto)
lemma "⟦ n:nat; m:nat ⟧ ⟹ n ≤ m #+ n"
proof -
  assume "n:nat" and "m:nat"
  then show ?thesis using refl_add_help by simp
qed
lemma
  assumes "n:nat" and "m:nat"
  shows "n ≤ m #+ n"
  using assms and refl_add_help by simp

关于
value
命令,我认为它在Isabelle/ZF中不起作用。

非常感谢。这对我帮助很大。我可以知道你是如何发现它需要使用圆台的吗?我理解,与德鲁尔相比,弗鲁尔保留了这个假设。如果我使用drule,我得到了natify,但是为什么它需要假设呢?@kaiboy05:为了让简化程序使用
natify ident
引理将
natify(n)
重写为
n
(参见
Arith.thy
),你需要假设
n:nat
,如果你不使用
frule
,它就会丢失。