# HG changeset patch # User kleing # Date 1017931664 -7200 # Node ID c2e4d99901626e17ebc09350faf6de91dcf39b4c # Parent 70704dd48bd54afa16b7d3a6ae08f2ee65ffece3 tuned diff -r 70704dd48bd5 -r c2e4d9990162 src/HOL/MicroJava/BV/Semilat.thy --- a/src/HOL/MicroJava/BV/Semilat.thy Wed Apr 03 10:21:13 2002 +0200 +++ b/src/HOL/MicroJava/BV/Semilat.thy Thu Apr 04 16:47:44 2002 +0200 @@ -122,28 +122,52 @@ "closed A f" by (insert semilat) (simp add: semilat_Def) -lemma (in semilat) ub1 [simp]: +lemma closedD: + "\ closed A f; x:A; y:A \ \ x +_f y : A" + by (unfold closed_def) blast + +lemma closed_UNIV [simp]: "closed UNIV f" + by (simp add: closed_def) + + +lemma (in semilat) closed_f [simp, intro]: + "\x:A; y:A\ \ x +_f y : A" + by (simp add: closedD [OF closedI]) + +lemma (in semilat) refl_r [intro, simp]: + "x <=_r x" + by simp + +lemma (in semilat) antisym_r [intro?]: + "\ x <=_r y; y <=_r x \ \ x = y" + by (rule order_antisym) auto + +lemma (in semilat) trans_r [trans, intro?]: + "\x <=_r y; y <=_r z\ \ x <=_r z" + by (auto intro: order_trans) + + +lemma (in semilat) ub1 [simp, intro?]: "\ x:A; y:A \ \ x <=_r x +_f y" by (insert semilat) (unfold semilat_Def, simp) -lemma (in semilat) ub2 [simp]: +lemma (in semilat) ub2 [simp, intro?]: "\ x:A; y:A \ \ y <=_r x +_f y" by (insert semilat) (unfold semilat_Def, simp) -lemma (in semilat) lub [simp]: +lemma (in semilat) lub [simp, intro?]: "\ x <=_r z; y <=_r z; x:A; y:A; z:A \ \ x +_f y <=_r z"; by (insert semilat) (unfold semilat_Def, simp) lemma (in semilat) plus_le_conv [simp]: "\ x:A; y:A; z:A \ \ (x +_f y <=_r z) = (x <=_r z & y <=_r z)" -apply (blast intro: ub1 ub2 lub order_trans) -done + by (blast intro: ub1 ub2 lub order_trans) lemma (in semilat) le_iff_plus_unchanged: "\ x:A; y:A \ \ (x <=_r y) = (x +_f y = y)" apply (rule iffI) - apply (blast intro: order_antisym lub order_refl ub2); + apply (blast intro: antisym_r refl_r lub ub2) apply (erule subst) apply simp done @@ -157,34 +181,17 @@ done -lemma closedD: - "\ closed A f; x:A; y:A \ \ x +_f y : A" -apply (unfold closed_def) -apply blast -done - -lemma closed_UNIV [simp]: "closed UNIV f" - by (simp add: closed_def) - - lemma (in semilat) plus_assoc [simp]: assumes a: "a \ A" and b: "b \ A" and c: "c \ A" shows "a +_f (b +_f c) = a +_f b +_f c" proof - - have order: "order r" .. - note order_trans [OF order,trans] - note closedD [OF closedI, intro] - note ub1 [intro] - note ub2 [intro] - note lub [intro] - from a b have ab: "a +_f b \ A" .. from this c have abc: "(a +_f b) +_f c \ A" .. from b c have bc: "b +_f c \ A" .. from a this have abc': "a +_f (b +_f c) \ A" .. - from order show ?thesis - proof (rule order_antisym) + show ?thesis + proof show "a +_f (b +_f c) <=_r (a +_f b) +_f c" proof - from a b have "a <=_r a +_f b" .. @@ -216,15 +223,11 @@ "\a \ A; b \ A\ \ a +_f b <=_r b +_f a" proof - assume a: "a \ A" and b: "b \ A" - from b a have "a <=_r b +_f a" by (rule ub2) - moreover - from b a have "b <=_r b +_f a" by (rule ub1) - moreover - note a b - moreover - from b a have "b +_f a \ A" by (rule closedD [OF closedI]) - ultimately - show ?thesis by (rule lub) + from b a have "a <=_r b +_f a" .. + moreover from b a have "b <=_r b +_f a" .. + moreover note a b + moreover from b a have "b +_f a \ A" .. + ultimately show ?thesis .. qed lemma (in semilat) plus_commutative: diff -r 70704dd48bd5 -r c2e4d9990162 src/HOL/MicroJava/BV/SemilatAlg.thy --- a/src/HOL/MicroJava/BV/SemilatAlg.thy Wed Apr 03 10:21:13 2002 +0200 +++ b/src/HOL/MicroJava/BV/SemilatAlg.thy Thu Apr 04 16:47:44 2002 +0200 @@ -70,8 +70,8 @@ assume y: "y \ A" and xs: "set (x#xs) \ A" assume IH: "\y. \ set xs \ A; y \ A\ \ xs ++_f y \ A" from xs obtain x: "x \ A" and "set xs \ A" by simp - from semilat x y have "(x +_f y) \ A" by (simp add: closedD) - with semilat xs have "xs ++_f (x +_f y) \ A" by - (rule IH) + from x y have "(x +_f y) \ A" .. + with xs have "xs ++_f (x +_f y) \ A" by - (rule IH) thus "(x#xs) ++_f y \ A" by simp qed @@ -87,10 +87,8 @@ assume "\y. \set l \ A; y \ A\ \ y <=_r l ++_f y" hence IH: "\y. y \ A \ y <=_r l ++_f y" . - have "order r" .. note order_trans [OF this, trans] - - from a y have "y <=_r a +_f y" by (rule ub2) - also from a y have "a +_f y \ A" by (simp add: closedD) + from a y have "y <=_r a +_f y" .. + also from a y have "a +_f y \ A" .. hence "(a +_f y) <=_r l ++_f (a +_f y)" by (rule IH) finally have "y <=_r l ++_f (a +_f y)" . thus "y <=_r (a#l) ++_f y" by simp @@ -103,7 +101,6 @@ show "\y. x \ set [] \ x <=_r [] ++_f y" by simp fix y s ls - have "order r" .. note order_trans [OF this, trans] assume "set (s#ls) \ A" then obtain s: "s \ A" and ls: "set ls \ A" by simp assume y: "y \ A" @@ -116,8 +113,8 @@ then obtain xls: "x = s \ x \ set ls" by simp moreover { assume xs: "x = s" - from s y have "s <=_r s +_f y" by (rule ub1) - also from s y have "s +_f y \ A" by (simp add: closedD) + from s y have "s <=_r s +_f y" .. + also from s y have "s +_f y \ A" .. with ls have "(s +_f y) <=_r ls ++_f (s +_f y)" by (rule pp_ub2) finally have "s <=_r ls ++_f (s +_f y)" . with xs have "x <=_r ls ++_f (s +_f y)" by simp @@ -125,7 +122,7 @@ moreover { assume "x \ set ls" hence "\y. y \ A \ x <=_r ls ++_f y" by (rule IH) - moreover from s y have "s +_f y \ A" by (simp add: closedD) + moreover from s y have "s +_f y \ A" .. ultimately have "x <=_r ls ++_f (s +_f y)" . } ultimately @@ -145,14 +142,14 @@ then obtain l: "l \ A" and ls: "set ls \ A" by auto assume "\x \ set (l#ls). x <=_r z" then obtain "l <=_r z" and lsz: "\x \ set ls. x <=_r z" by auto - assume "y <=_r z" have "l +_f y <=_r z" by (rule lub) + assume "y <=_r z" have "l +_f y <=_r z" .. moreover - from l y have "l +_f y \ A" by (fast intro: closedD) + from l y have "l +_f y \ A" .. moreover assume "\y. y \ A \ set ls \ A \ \x \ set ls. x <=_r z \ y <=_r z \ ls ++_f y <=_r z" ultimately - have "ls ++_f (l +_f y) <=_r z" by - (insert ls lsz) + have "ls ++_f (l +_f y) <=_r z" using ls lsz by - thus "(l#ls) ++_f y <=_r z" by simp qed