public static void main(String[] args) // test x+1=1+x
{
Nat one = new Nat().suc();
Nat x = new Nat().suc().suc().suc().suc();
Nat ok = x.suc().eq(x.add(one));
System.out.println(ok != null);
}
lemma init_locs_Nat_add [simp]: "init_locs Nat add s = s" by (simp add: init_locs_def init_vars_def)
lemma init_locs_Nat_suc [simp]: "init_locs Nat suc s = s" by (simp add: init_locs_def init_vars_def)
lemma upd_obj_new_obj_Nat [simp]: "upd_obj a pred v (new_obj a Nat s) = hupd(a↦(Nat, Map.empty(pred↦v))) s" by (simp add: new_obj_def init_vars_def upd_obj_def Let_def)
subsection"``atleast'' relation for interpretation of Nat ``values''"
primrec Nat_atleast :: "state ==> val ==> nat ==> bool" (‹_:_ ≥ _› [51, 51, 51] 50) where "s:x≥0 = (x≠Null)"
| "s:x≥Suc n = (∃a. x=Addr a ∧ heap s a ≠ None ∧ s:get_field s a pred≥n)"
lemma Nat_atleast_lupd [rule_format, simp]: "∀s v::val. lupd(x↦y) s:v ≥ n = (s:v ≥ n)" apply (induct n) by auto
lemma Nat_atleast_set_locs [rule_format, simp]: "∀s v::val. set_locs l s:v ≥ n = (s:v ≥ n)" apply (induct n) by auto
lemma Nat_atleast_del_locs [rule_format, simp]: "∀s v::val. del_locs s:v ≥ n = (s:v ≥ n)" apply (induct n) by auto
lemma Nat_atleast_NullD [rule_format]: "s:Null ≥ n ⟶ False" apply (induct n) by auto
lemma Nat_atleast_pred_NullD [rule_format]: "Null = get_field s a pred ==> s:Addr a ≥ n ⟶ n = 0" apply (induct n) by (auto dest: Nat_atleast_NullD)
lemma Nat_atleast_mono [rule_format]: "∀a. s:get_field s a pred ≥ n ⟶ heap s a ≠ None ⟶ s:Addr a ≥ n" apply (induct n) by auto
lemma Nat_atleast_newC [rule_format]: "heap s aa = None ==>∀v::val. s:v ≥ n ⟶ hupd(aa↦obj) s:v ≥ n" apply (induct n) apply auto apply (case_tac "aa=a") apply auto apply (tactic "smp_tac 🍋 1 1") apply (case_tac "aa=a") apply auto done
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.