diff -r f2094906e491 -r e44d86131648 src/ZF/Order.thy --- a/src/ZF/Order.thy Tue Sep 27 13:34:54 2022 +0200 +++ b/src/ZF/Order.thy Tue Sep 27 16:51:35 2022 +0100 @@ -17,15 +17,15 @@ definition part_ord :: "[i,i]=>o" (*Strict partial ordering*) where - "part_ord(A,r) == irrefl(A,r) & trans[A](r)" + "part_ord(A,r) \ irrefl(A,r) & trans[A](r)" definition linear :: "[i,i]=>o" (*Strict total ordering*) where - "linear(A,r) == (\x\A. \y\A. :r | x=y | :r)" + "linear(A,r) \ (\x\A. \y\A. :r | x=y | :r)" definition tot_ord :: "[i,i]=>o" (*Strict total ordering*) where - "tot_ord(A,r) == part_ord(A,r) & linear(A,r)" + "tot_ord(A,r) \ part_ord(A,r) & linear(A,r)" definition "preorder_on(A, r) \ refl(A, r) \ trans[A](r)" @@ -41,62 +41,62 @@ definition well_ord :: "[i,i]=>o" (*Well-ordering*) where - "well_ord(A,r) == tot_ord(A,r) & wf[A](r)" + "well_ord(A,r) \ tot_ord(A,r) & wf[A](r)" definition mono_map :: "[i,i,i,i]=>i" (*Order-preserving maps*) where - "mono_map(A,r,B,s) == + "mono_map(A,r,B,s) \ {f \ A->B. \x\A. \y\A. :r \ :s}" definition ord_iso :: "[i,i,i,i]=>i" (\(\_, _\ \/ \_, _\)\ 51) (*Order isomorphisms*) where - "\A,r\ \ \B,s\ == + "\A,r\ \ \B,s\ \ {f \ bij(A,B). \x\A. \y\A. :r \ :s}" definition pred :: "[i,i,i]=>i" (*Set of predecessors*) where - "pred(A,x,r) == {y \ A. :r}" + "pred(A,x,r) \ {y \ A. :r}" definition ord_iso_map :: "[i,i,i,i]=>i" (*Construction for linearity theorem*) where - "ord_iso_map(A,r,B,s) == + "ord_iso_map(A,r,B,s) \ \x\A. \y\B. \f \ ord_iso(pred(A,x,r), r, pred(B,y,s), s). {}" definition first :: "[i, i, i] => o" where - "first(u, X, R) == u \ X & (\v\X. v\u \ \ R)" + "first(u, X, R) \ u \ X & (\v\X. v\u \ \ R)" subsection\Immediate Consequences of the Definitions\ lemma part_ord_Imp_asym: - "part_ord(A,r) ==> asym(r \ A*A)" + "part_ord(A,r) \ asym(r \ A*A)" by (unfold part_ord_def irrefl_def trans_on_def asym_def, blast) lemma linearE: - "[| linear(A,r); x \ A; y \ A; - :r ==> P; x=y ==> P; :r ==> P |] - ==> P" + "\linear(A,r); x \ A; y \ A; + :r \ P; x=y \ P; :r \ P\ + \ P" by (simp add: linear_def, blast) (** General properties of well_ord **) lemma well_ordI: - "[| wf[A](r); linear(A,r) |] ==> well_ord(A,r)" + "\wf[A](r); linear(A,r)\ \ well_ord(A,r)" apply (simp add: irrefl_def part_ord_def tot_ord_def trans_on_def well_ord_def wf_on_not_refl) apply (fast elim: linearE wf_on_asym wf_on_chain3) done lemma well_ord_is_wf: - "well_ord(A,r) ==> wf[A](r)" + "well_ord(A,r) \ wf[A](r)" by (unfold well_ord_def, safe) lemma well_ord_is_trans_on: - "well_ord(A,r) ==> trans[A](r)" + "well_ord(A,r) \ trans[A](r)" by (unfold well_ord_def tot_ord_def part_ord_def, safe) -lemma well_ord_is_linear: "well_ord(A,r) ==> linear(A,r)" +lemma well_ord_is_linear: "well_ord(A,r) \ linear(A,r)" by (unfold well_ord_def tot_ord_def, blast) @@ -107,7 +107,7 @@ lemmas predI = conjI [THEN pred_iff [THEN iffD2]] -lemma predE: "[| y \ pred(A,x,r); [| y \ A; :r |] ==> P |] ==> P" +lemma predE: "\y \ pred(A,x,r); \y \ A; :r\ \ P\ \ P" by (simp add: pred_def) lemma pred_subset_under: "pred(A,x,r) \ r -`` {x}" @@ -121,8 +121,8 @@ by (simp add: pred_def, blast) lemma trans_pred_pred_eq: - "[| trans[A](r); :r; x \ A; y \ A |] - ==> pred(pred(A,x,r), y, r) = pred(A,y,r)" + "\trans[A](r); :r; x \ A; y \ A\ + \ pred(pred(A,x,r), y, r) = pred(A,y,r)" by (unfold trans_on_def pred_def, blast) @@ -133,21 +133,21 @@ (*Note: a relation s such that s<=r need not be a partial ordering*) lemma part_ord_subset: - "[| part_ord(A,r); B<=A |] ==> part_ord(B,r)" + "\part_ord(A,r); B<=A\ \ part_ord(B,r)" by (unfold part_ord_def irrefl_def trans_on_def, blast) lemma linear_subset: - "[| linear(A,r); B<=A |] ==> linear(B,r)" + "\linear(A,r); B<=A\ \ linear(B,r)" by (unfold linear_def, blast) lemma tot_ord_subset: - "[| tot_ord(A,r); B<=A |] ==> tot_ord(B,r)" + "\tot_ord(A,r); B<=A\ \ tot_ord(B,r)" apply (unfold tot_ord_def) apply (fast elim!: part_ord_subset linear_subset) done lemma well_ord_subset: - "[| well_ord(A,r); B<=A |] ==> well_ord(B,r)" + "\well_ord(A,r); B<=A\ \ well_ord(B,r)" apply (unfold well_ord_def) apply (fast elim!: tot_ord_subset wf_on_subset_A) done @@ -239,40 +239,40 @@ (** Order-preserving (monotone) maps **) -lemma mono_map_is_fun: "f \ mono_map(A,r,B,s) ==> f \ A->B" +lemma mono_map_is_fun: "f \ mono_map(A,r,B,s) \ f \ A->B" by (simp add: mono_map_def) lemma mono_map_is_inj: - "[| linear(A,r); wf[B](s); f \ mono_map(A,r,B,s) |] ==> f \ inj(A,B)" + "\linear(A,r); wf[B](s); f \ mono_map(A,r,B,s)\ \ f \ inj(A,B)" apply (unfold mono_map_def inj_def, clarify) apply (erule_tac x=w and y=x in linearE, assumption+) apply (force intro: apply_type dest: wf_on_not_refl)+ done lemma ord_isoI: - "[| f \ bij(A, B); - !!x y. [| x \ A; y \ A |] ==> \ r \ \ s |] - ==> f \ ord_iso(A,r,B,s)" + "\f \ bij(A, B); + \x y. \x \ A; y \ A\ \ \ r \ \ s\ + \ f \ ord_iso(A,r,B,s)" by (simp add: ord_iso_def) lemma ord_iso_is_mono_map: - "f \ ord_iso(A,r,B,s) ==> f \ mono_map(A,r,B,s)" + "f \ ord_iso(A,r,B,s) \ f \ mono_map(A,r,B,s)" apply (simp add: ord_iso_def mono_map_def) apply (blast dest!: bij_is_fun) done lemma ord_iso_is_bij: - "f \ ord_iso(A,r,B,s) ==> f \ bij(A,B)" + "f \ ord_iso(A,r,B,s) \ f \ bij(A,B)" by (simp add: ord_iso_def) (*Needed? But ord_iso_converse is!*) lemma ord_iso_apply: - "[| f \ ord_iso(A,r,B,s); : r; x \ A; y \ A |] ==> \ s" + "\f \ ord_iso(A,r,B,s); : r; x \ A; y \ A\ \ \ s" by (simp add: ord_iso_def) lemma ord_iso_converse: - "[| f \ ord_iso(A,r,B,s); : s; x \ B; y \ B |] - ==> \ r" + "\f \ ord_iso(A,r,B,s); : s; x \ B; y \ B\ + \ \ r" apply (simp add: ord_iso_def, clarify) apply (erule bspec [THEN bspec, THEN iffD2]) apply (erule asm_rl bij_converse_bij [THEN bij_is_fun, THEN apply_type])+ @@ -287,7 +287,7 @@ by (rule id_bij [THEN ord_isoI], simp) (*Symmetry of similarity*) -lemma ord_iso_sym: "f \ ord_iso(A,r,B,s) ==> converse(f): ord_iso(B,s,A,r)" +lemma ord_iso_sym: "f \ ord_iso(A,r,B,s) \ converse(f): ord_iso(B,s,A,r)" apply (simp add: ord_iso_def) apply (auto simp add: right_inverse_bij bij_converse_bij bij_is_fun [THEN apply_funtype]) @@ -295,16 +295,16 @@ (*Transitivity of similarity*) lemma mono_map_trans: - "[| g \ mono_map(A,r,B,s); f \ mono_map(B,s,C,t) |] - ==> (f O g): mono_map(A,r,C,t)" + "\g \ mono_map(A,r,B,s); f \ mono_map(B,s,C,t)\ + \ (f O g): mono_map(A,r,C,t)" apply (unfold mono_map_def) apply (auto simp add: comp_fun) done (*Transitivity of similarity: the order-isomorphism relation*) lemma ord_iso_trans: - "[| g \ ord_iso(A,r,B,s); f \ ord_iso(B,s,C,t) |] - ==> (f O g): ord_iso(A,r,C,t)" + "\g \ ord_iso(A,r,B,s); f \ ord_iso(B,s,C,t)\ + \ (f O g): ord_iso(A,r,C,t)" apply (unfold ord_iso_def, clarify) apply (frule bij_is_fun [of f]) apply (frule bij_is_fun [of g]) @@ -314,8 +314,8 @@ (** Two monotone maps can make an order-isomorphism **) lemma mono_ord_isoI: - "[| f \ mono_map(A,r,B,s); g \ mono_map(B,s,A,r); - f O g = id(B); g O f = id(A) |] ==> f \ ord_iso(A,r,B,s)" + "\f \ mono_map(A,r,B,s); g \ mono_map(B,s,A,r); + f O g = id(B); g O f = id(A)\ \ f \ ord_iso(A,r,B,s)" apply (simp add: ord_iso_def mono_map_def, safe) apply (intro fg_imp_bijective, auto) apply (subgoal_tac " \ r") @@ -324,9 +324,9 @@ done lemma well_ord_mono_ord_isoI: - "[| well_ord(A,r); well_ord(B,s); - f \ mono_map(A,r,B,s); converse(f): mono_map(B,s,A,r) |] - ==> f \ ord_iso(A,r,B,s)" + "\well_ord(A,r); well_ord(B,s); + f \ mono_map(A,r,B,s); converse(f): mono_map(B,s,A,r)\ + \ f \ ord_iso(A,r,B,s)" apply (intro mono_ord_isoI, auto) apply (frule mono_map_is_fun [THEN fun_is_rel]) apply (erule converse_converse [THEN subst], rule left_comp_inverse) @@ -338,13 +338,13 @@ (** Order-isomorphisms preserve the ordering's properties **) lemma part_ord_ord_iso: - "[| part_ord(B,s); f \ ord_iso(A,r,B,s) |] ==> part_ord(A,r)" + "\part_ord(B,s); f \ ord_iso(A,r,B,s)\ \ part_ord(A,r)" apply (simp add: part_ord_def irrefl_def trans_on_def ord_iso_def) apply (fast intro: bij_is_fun [THEN apply_type]) done lemma linear_ord_iso: - "[| linear(B,s); f \ ord_iso(A,r,B,s) |] ==> linear(A,r)" + "\linear(B,s); f \ ord_iso(A,r,B,s)\ \ linear(A,r)" apply (simp add: linear_def ord_iso_def, safe) apply (drule_tac x1 = "f`x" and x = "f`y" in bspec [THEN bspec]) apply (safe elim!: bij_is_fun [THEN apply_type]) @@ -353,7 +353,7 @@ done lemma wf_on_ord_iso: - "[| wf[B](s); f \ ord_iso(A,r,B,s) |] ==> wf[A](r)" + "\wf[B](s); f \ ord_iso(A,r,B,s)\ \ wf[A](r)" apply (simp add: wf_on_def wf_def ord_iso_def, safe) apply (drule_tac x = "{f`z. z \ Z \ A}" in spec) apply (safe intro!: equalityI) @@ -361,7 +361,7 @@ done lemma well_ord_ord_iso: - "[| well_ord(B,s); f \ ord_iso(A,r,B,s) |] ==> well_ord(A,r)" + "\well_ord(B,s); f \ ord_iso(A,r,B,s)\ \ well_ord(A,r)" apply (unfold well_ord_def tot_ord_def) apply (fast elim!: part_ord_ord_iso linear_ord_iso wf_on_ord_iso) done @@ -372,8 +372,8 @@ (*Inductive argument for Kunen's Lemma 6.1, etc. Simple proof from Halmos, page 72*) lemma well_ord_iso_subset_lemma: - "[| well_ord(A,r); f \ ord_iso(A,r, A',r); A'<= A; y \ A |] - ==> ~ : r" + "\well_ord(A,r); f \ ord_iso(A,r, A',r); A'<= A; y \ A\ + \ \ : r" apply (simp add: well_ord_def ord_iso_def) apply (elim conjE CollectE) apply (rule_tac a=y in wf_on_induct, assumption+) @@ -383,7 +383,7 @@ (*Kunen's Lemma 6.1 \ there's no order-isomorphism to an initial segment of a well-ordering*) lemma well_ord_iso_predE: - "[| well_ord(A,r); f \ ord_iso(A, r, pred(A,x,r), r); x \ A |] ==> P" + "\well_ord(A,r); f \ ord_iso(A, r, pred(A,x,r), r); x \ A\ \ P" apply (insert well_ord_iso_subset_lemma [of A r f "pred(A,x,r)" x]) apply (simp add: pred_subset) (*Now we know f`x < x *) @@ -394,8 +394,8 @@ (*Simple consequence of Lemma 6.1*) lemma well_ord_iso_pred_eq: - "[| well_ord(A,r); f \ ord_iso(pred(A,a,r), r, pred(A,c,r), r); - a \ A; c \ A |] ==> a=c" + "\well_ord(A,r); f \ ord_iso(pred(A,a,r), r, pred(A,c,r), r); + a \ A; c \ A\ \ a=c" apply (frule well_ord_is_trans_on) apply (frule well_ord_is_linear) apply (erule_tac x=a and y=c in linearE, assumption+) @@ -408,7 +408,7 @@ (*Does not assume r is a wellordering!*) lemma ord_iso_image_pred: - "[|f \ ord_iso(A,r,B,s); a \ A|] ==> f `` pred(A,a,r) = pred(B, f`a, s)" + "\f \ ord_iso(A,r,B,s); a \ A\ \ f `` pred(A,a,r) = pred(B, f`a, s)" apply (unfold ord_iso_def pred_def) apply (erule CollectE) apply (simp (no_asm_simp) add: image_fun [OF bij_is_fun Collect_subset]) @@ -420,8 +420,8 @@ done lemma ord_iso_restrict_image: - "[| f \ ord_iso(A,r,B,s); C<=A |] - ==> restrict(f,C) \ ord_iso(C, r, f``C, s)" + "\f \ ord_iso(A,r,B,s); C<=A\ + \ restrict(f,C) \ ord_iso(C, r, f``C, s)" apply (simp add: ord_iso_def) apply (blast intro: bij_is_inj restrict_bij) done @@ -429,18 +429,18 @@ (*But in use, A and B may themselves be initial segments. Then use trans_pred_pred_eq to simplify the pred(pred...) terms. See just below.*) lemma ord_iso_restrict_pred: - "[| f \ ord_iso(A,r,B,s); a \ A |] - ==> restrict(f, pred(A,a,r)) \ ord_iso(pred(A,a,r), r, pred(B, f`a, s), s)" + "\f \ ord_iso(A,r,B,s); a \ A\ + \ restrict(f, pred(A,a,r)) \ ord_iso(pred(A,a,r), r, pred(B, f`a, s), s)" apply (simp add: ord_iso_image_pred [symmetric]) apply (blast intro: ord_iso_restrict_image elim: predE) done (*Tricky; a lot of forward proof!*) lemma well_ord_iso_preserving: - "[| well_ord(A,r); well_ord(B,s); : r; + "\well_ord(A,r); well_ord(B,s); : r; f \ ord_iso(pred(A,a,r), r, pred(B,b,s), s); g \ ord_iso(pred(A,c,r), r, pred(B,d,s), s); - a \ A; c \ A; b \ B; d \ B |] ==> : s" + a \ A; c \ A; b \ B; d \ B\ \ : s" apply (frule ord_iso_is_bij [THEN bij_is_fun, THEN apply_type], (erule asm_rl predI predE)+) apply (subgoal_tac "b = g`a") apply (simp (no_asm_simp)) @@ -452,9 +452,9 @@ (*See Halmos, page 72*) lemma well_ord_iso_unique_lemma: - "[| well_ord(A,r); - f \ ord_iso(A,r, B,s); g \ ord_iso(A,r, B,s); y \ A |] - ==> ~ \ s" + "\well_ord(A,r); + f \ ord_iso(A,r, B,s); g \ ord_iso(A,r, B,s); y \ A\ + \ \ \ s" apply (frule well_ord_iso_subset_lemma) apply (rule_tac f = "converse (f) " and g = g in ord_iso_trans) apply auto @@ -470,8 +470,8 @@ (*Kunen's Lemma 6.2: Order-isomorphisms between well-orderings are unique*) -lemma well_ord_iso_unique: "[| well_ord(A,r); - f \ ord_iso(A,r, B,s); g \ ord_iso(A,r, B,s) |] ==> f = g" +lemma well_ord_iso_unique: "\well_ord(A,r); + f \ ord_iso(A,r, B,s); g \ ord_iso(A,r, B,s)\ \ f = g" apply (rule fun_extension) apply (erule ord_iso_is_bij [THEN bij_is_fun])+ apply (subgoal_tac "f`x \ B & g`x \ B & linear(B,s)") @@ -499,19 +499,19 @@ done lemma function_ord_iso_map: - "well_ord(B,s) ==> function(ord_iso_map(A,r,B,s))" + "well_ord(B,s) \ function(ord_iso_map(A,r,B,s))" apply (unfold ord_iso_map_def function_def) apply (blast intro: well_ord_iso_pred_eq ord_iso_sym ord_iso_trans) done -lemma ord_iso_map_fun: "well_ord(B,s) ==> ord_iso_map(A,r,B,s) +lemma ord_iso_map_fun: "well_ord(B,s) \ ord_iso_map(A,r,B,s) \ domain(ord_iso_map(A,r,B,s)) -> range(ord_iso_map(A,r,B,s))" by (simp add: Pi_iff function_ord_iso_map ord_iso_map_subset [THEN domain_times_range]) lemma ord_iso_map_mono_map: - "[| well_ord(A,r); well_ord(B,s) |] - ==> ord_iso_map(A,r,B,s) + "\well_ord(A,r); well_ord(B,s)\ + \ ord_iso_map(A,r,B,s) \ mono_map(domain(ord_iso_map(A,r,B,s)), r, range(ord_iso_map(A,r,B,s)), s)" apply (unfold mono_map_def) @@ -524,7 +524,7 @@ done lemma ord_iso_map_ord_iso: - "[| well_ord(A,r); well_ord(B,s) |] ==> ord_iso_map(A,r,B,s) + "\well_ord(A,r); well_ord(B,s)\ \ ord_iso_map(A,r,B,s) \ ord_iso(domain(ord_iso_map(A,r,B,s)), r, range(ord_iso_map(A,r,B,s)), s)" apply (rule well_ord_mono_ord_isoI) @@ -539,9 +539,9 @@ (*One way of saying that domain(ord_iso_map(A,r,B,s)) is downwards-closed*) lemma domain_ord_iso_map_subset: - "[| well_ord(A,r); well_ord(B,s); - a \ A; a \ domain(ord_iso_map(A,r,B,s)) |] - ==> domain(ord_iso_map(A,r,B,s)) \ pred(A, a, r)" + "\well_ord(A,r); well_ord(B,s); + a \ A; a \ domain(ord_iso_map(A,r,B,s))\ + \ domain(ord_iso_map(A,r,B,s)) \ pred(A, a, r)" apply (unfold ord_iso_map_def) apply (safe intro!: predI) (*Case analysis on xa vs a in r *) @@ -563,8 +563,8 @@ (*For the 4-way case analysis in the main result*) lemma domain_ord_iso_map_cases: - "[| well_ord(A,r); well_ord(B,s) |] - ==> domain(ord_iso_map(A,r,B,s)) = A | + "\well_ord(A,r); well_ord(B,s)\ + \ domain(ord_iso_map(A,r,B,s)) = A | (\x\A. domain(ord_iso_map(A,r,B,s)) = pred(A,x,r))" apply (frule well_ord_is_wf) apply (unfold wf_on_def wf_def) @@ -582,8 +582,8 @@ (*As above, by duality*) lemma range_ord_iso_map_cases: - "[| well_ord(A,r); well_ord(B,s) |] - ==> range(ord_iso_map(A,r,B,s)) = B | + "\well_ord(A,r); well_ord(B,s)\ + \ range(ord_iso_map(A,r,B,s)) = B | (\y\B. range(ord_iso_map(A,r,B,s)) = pred(B,y,s))" apply (rule converse_ord_iso_map [THEN subst]) apply (simp add: domain_ord_iso_map_cases) @@ -591,8 +591,8 @@ text\Kunen's Theorem 6.3: Fundamental Theorem for Well-Ordered Sets\ theorem well_ord_trichotomy: - "[| well_ord(A,r); well_ord(B,s) |] - ==> ord_iso_map(A,r,B,s) \ ord_iso(A, r, B, s) | + "\well_ord(A,r); well_ord(B,s)\ + \ ord_iso_map(A,r,B,s) \ ord_iso(A, r, B, s) | (\x\A. ord_iso_map(A,r,B,s) \ ord_iso(pred(A,x,r), r, B, s)) | (\y\B. ord_iso_map(A,r,B,s) \ ord_iso(A, r, pred(B,y,s), s))" apply (frule_tac B = B in domain_ord_iso_map_cases, assumption) @@ -614,21 +614,21 @@ (** Properties of converse(r) **) -lemma irrefl_converse: "irrefl(A,r) ==> irrefl(A,converse(r))" +lemma irrefl_converse: "irrefl(A,r) \ irrefl(A,converse(r))" by (unfold irrefl_def, blast) -lemma trans_on_converse: "trans[A](r) ==> trans[A](converse(r))" +lemma trans_on_converse: "trans[A](r) \ trans[A](converse(r))" by (unfold trans_on_def, blast) -lemma part_ord_converse: "part_ord(A,r) ==> part_ord(A,converse(r))" +lemma part_ord_converse: "part_ord(A,r) \ part_ord(A,converse(r))" apply (unfold part_ord_def) apply (blast intro!: irrefl_converse trans_on_converse) done -lemma linear_converse: "linear(A,r) ==> linear(A,converse(r))" +lemma linear_converse: "linear(A,r) \ linear(A,converse(r))" by (unfold linear_def, blast) -lemma tot_ord_converse: "tot_ord(A,r) ==> tot_ord(A,converse(r))" +lemma tot_ord_converse: "tot_ord(A,r) \ tot_ord(A,converse(r))" apply (unfold tot_ord_def) apply (blast intro!: part_ord_converse linear_converse) done @@ -637,11 +637,11 @@ (** By Krzysztof Grabczewski. Lemmas involving the first element of a well ordered set **) -lemma first_is_elem: "first(b,B,r) ==> b \ B" +lemma first_is_elem: "first(b,B,r) \ b \ B" by (unfold first_def, blast) lemma well_ord_imp_ex1_first: - "[| well_ord(A,r); B<=A; B\0 |] ==> (\!b. first(b,B,r))" + "\well_ord(A,r); B<=A; B\0\ \ (\!b. first(b,B,r))" apply (unfold well_ord_def wf_on_def wf_def first_def) apply (elim conjE allE disjE, blast) apply (erule bexE) @@ -650,7 +650,7 @@ done lemma the_first_in: - "[| well_ord(A,r); B<=A; B\0 |] ==> (THE b. first(b,B,r)) \ B" + "\well_ord(A,r); B<=A; B\0\ \ (THE b. first(b,B,r)) \ B" apply (drule well_ord_imp_ex1_first, assumption+) apply (rule first_is_elem) apply (erule theI) @@ -660,7 +660,7 @@ subsection \Lemmas for the Reflexive Orders\ lemma subset_vimage_vimage_iff: - "[| Preorder(r); A \ field(r); B \ field(r) |] ==> + "\Preorder(r); A \ field(r); B \ field(r)\ \ r -`` A \ r -`` B \ (\a\A. \b\B. \ r)" apply (auto simp: subset_def preorder_on_def refl_def vimage_def image_def) apply blast @@ -673,12 +673,12 @@ done lemma subset_vimage1_vimage1_iff: - "[| Preorder(r); a \ field(r); b \ field(r) |] ==> + "\Preorder(r); a \ field(r); b \ field(r)\ \ r -`` {a} \ r -`` {b} \ \ r" by (simp add: subset_vimage_vimage_iff) lemma Refl_antisym_eq_Image1_Image1_iff: - "[| refl(field(r), r); antisym(r); a \ field(r); b \ field(r) |] ==> + "\refl(field(r), r); antisym(r); a \ field(r); b \ field(r)\ \ r `` {a} = r `` {b} \ a = b" apply rule apply (frule equality_iffD) @@ -689,13 +689,13 @@ done lemma Partial_order_eq_Image1_Image1_iff: - "[| Partial_order(r); a \ field(r); b \ field(r) |] ==> + "\Partial_order(r); a \ field(r); b \ field(r)\ \ r `` {a} = r `` {b} \ a = b" by (simp add: partial_order_on_def preorder_on_def Refl_antisym_eq_Image1_Image1_iff) lemma Refl_antisym_eq_vimage1_vimage1_iff: - "[| refl(field(r), r); antisym(r); a \ field(r); b \ field(r) |] ==> + "\refl(field(r), r); antisym(r); a \ field(r); b \ field(r)\ \ r -`` {a} = r -`` {b} \ a = b" apply rule apply (frule equality_iffD) @@ -706,7 +706,7 @@ done lemma Partial_order_eq_vimage1_vimage1_iff: - "[| Partial_order(r); a \ field(r); b \ field(r) |] ==> + "\Partial_order(r); a \ field(r); b \ field(r)\ \ r -`` {a} = r -`` {b} \ a = b" by (simp add: partial_order_on_def preorder_on_def Refl_antisym_eq_vimage1_vimage1_iff)