# HG changeset patch # User haftmann # Date 1234960745 -3600 # Node ID 27e29256e9f1c8eeb62b3f26240655e39eb9496d # Parent 9d5c6f376768cd377f011507e2caa560a8b7b4bc reverted to previous version of Finite_Set.thy diff -r 9d5c6f376768 -r 27e29256e9f1 src/HOL/Finite_Set.thy --- a/src/HOL/Finite_Set.thy Wed Feb 18 11:18:01 2009 +0000 +++ b/src/HOL/Finite_Set.thy Wed Feb 18 13:39:05 2009 +0100 @@ -489,7 +489,7 @@ subsection {* A fold functional for finite sets *} text {* The intended behaviour is -@{text "fold f z {x1, ..., xn} = f x1 (\ (f xn z)\)"} +@{text "fold f z {x\<^isub>1, ..., x\<^isub>n} = f x\<^isub>1 (\ (f x\<^isub>n z)\)"} if @{text f} is ``left-commutative'': *} @@ -2486,16 +2486,16 @@ begin definition - Inf_fin :: "'a set \ 'a" ("\fin_" [900] 900) + Inf_fin :: "'a set \ 'a" ("\\<^bsub>fin\<^esub>_" [900] 900) where "Inf_fin = fold1 inf" definition - Sup_fin :: "'a set \ 'a" ("\fin_" [900] 900) + Sup_fin :: "'a set \ 'a" ("\\<^bsub>fin\<^esub>_" [900] 900) where "Sup_fin = fold1 sup" -lemma Inf_le_Sup [simp]: "\ finite A; A \ {} \ \ \finA \ \finA" +lemma Inf_le_Sup [simp]: "\ finite A; A \ {} \ \ \\<^bsub>fin\<^esub>A \ \\<^bsub>fin\<^esub>A" apply(unfold Sup_fin_def Inf_fin_def) apply(subgoal_tac "EX a. a:A") prefer 2 apply blast @@ -2506,13 +2506,13 @@ done lemma sup_Inf_absorb [simp]: - "finite A \ a \ A \ sup a (\finA) = a" + "finite A \ a \ A \ sup a (\\<^bsub>fin\<^esub>A) = a" apply(subst sup_commute) apply(simp add: Inf_fin_def sup_absorb2 fold1_belowI) done lemma inf_Sup_absorb [simp]: - "finite A \ a \ A \ inf a (\finA) = a" + "finite A \ a \ A \ inf a (\\<^bsub>fin\<^esub>A) = a" by (simp add: Sup_fin_def inf_absorb1 lower_semilattice.fold1_belowI [OF dual_lattice]) @@ -2524,7 +2524,7 @@ lemma sup_Inf1_distrib: assumes "finite A" and "A \ {}" - shows "sup x (\finA) = \fin{sup x a|a. a \ A}" + shows "sup x (\\<^bsub>fin\<^esub>A) = \\<^bsub>fin\<^esub>{sup x a|a. a \ A}" proof - interpret ab_semigroup_idem_mult inf by (rule ab_semigroup_idem_mult_inf) @@ -2536,7 +2536,7 @@ lemma sup_Inf2_distrib: assumes A: "finite A" "A \ {}" and B: "finite B" "B \ {}" - shows "sup (\finA) (\finB) = \fin{sup a b|a b. a \ A \ b \ B}" + shows "sup (\\<^bsub>fin\<^esub>A) (\\<^bsub>fin\<^esub>B) = \\<^bsub>fin\<^esub>{sup a b|a b. a \ A \ b \ B}" using A proof (induct rule: finite_ne_induct) case singleton thus ?case by (simp add: sup_Inf1_distrib [OF B] fold1_singleton_def [OF Inf_fin_def]) @@ -2553,13 +2553,13 @@ thus ?thesis by(simp add: insert(1) B(1)) qed have ne: "{sup a b |a b. a \ A \ b \ B} \ {}" using insert B by blast - have "sup (\fin(insert x A)) (\finB) = sup (inf x (\finA)) (\finB)" + have "sup (\\<^bsub>fin\<^esub>(insert x A)) (\\<^bsub>fin\<^esub>B) = sup (inf x (\\<^bsub>fin\<^esub>A)) (\\<^bsub>fin\<^esub>B)" using insert by (simp add: fold1_insert_idem_def [OF Inf_fin_def]) - also have "\ = inf (sup x (\finB)) (sup (\finA) (\finB))" by(rule sup_inf_distrib2) - also have "\ = inf (\fin{sup x b|b. b \ B}) (\fin{sup a b|a b. a \ A \ b \ B})" + also have "\ = inf (sup x (\\<^bsub>fin\<^esub>B)) (sup (\\<^bsub>fin\<^esub>A) (\\<^bsub>fin\<^esub>B))" by(rule sup_inf_distrib2) + also have "\ = inf (\\<^bsub>fin\<^esub>{sup x b|b. b \ B}) (\\<^bsub>fin\<^esub>{sup a b|a b. a \ A \ b \ B})" using insert by(simp add:sup_Inf1_distrib[OF B]) - also have "\ = \fin({sup x b |b. b \ B} \ {sup a b |a b. a \ A \ b \ B})" - (is "_ = \fin?M") + also have "\ = \\<^bsub>fin\<^esub>({sup x b |b. b \ B} \ {sup a b |a b. a \ A \ b \ B})" + (is "_ = \\<^bsub>fin\<^esub>?M") using B insert by (simp add: Inf_fin_def fold1_Un2 [OF finB _ finAB ne]) also have "?M = {sup a b |a b. a \ insert x A \ b \ B}" @@ -2569,7 +2569,7 @@ lemma inf_Sup1_distrib: assumes "finite A" and "A \ {}" - shows "inf x (\finA) = \fin{inf x a|a. a \ A}" + shows "inf x (\\<^bsub>fin\<^esub>A) = \\<^bsub>fin\<^esub>{inf x a|a. a \ A}" proof - interpret ab_semigroup_idem_mult sup by (rule ab_semigroup_idem_mult_sup) @@ -2580,7 +2580,7 @@ lemma inf_Sup2_distrib: assumes A: "finite A" "A \ {}" and B: "finite B" "B \ {}" - shows "inf (\finA) (\finB) = \fin{inf a b|a b. a \ A \ b \ B}" + shows "inf (\\<^bsub>fin\<^esub>A) (\\<^bsub>fin\<^esub>B) = \\<^bsub>fin\<^esub>{inf a b|a b. a \ A \ b \ B}" using A proof (induct rule: finite_ne_induct) case singleton thus ?case by(simp add: inf_Sup1_distrib [OF B] fold1_singleton_def [OF Sup_fin_def]) @@ -2597,13 +2597,13 @@ have ne: "{inf a b |a b. a \ A \ b \ B} \ {}" using insert B by blast interpret ab_semigroup_idem_mult sup by (rule ab_semigroup_idem_mult_sup) - have "inf (\fin(insert x A)) (\finB) = inf (sup x (\finA)) (\finB)" + have "inf (\\<^bsub>fin\<^esub>(insert x A)) (\\<^bsub>fin\<^esub>B) = inf (sup x (\\<^bsub>fin\<^esub>A)) (\\<^bsub>fin\<^esub>B)" using insert by (simp add: fold1_insert_idem_def [OF Sup_fin_def]) - also have "\ = sup (inf x (\finB)) (inf (\finA) (\finB))" by(rule inf_sup_distrib2) - also have "\ = sup (\fin{inf x b|b. b \ B}) (\fin{inf a b|a b. a \ A \ b \ B})" + also have "\ = sup (inf x (\\<^bsub>fin\<^esub>B)) (inf (\\<^bsub>fin\<^esub>A) (\\<^bsub>fin\<^esub>B))" by(rule inf_sup_distrib2) + also have "\ = sup (\\<^bsub>fin\<^esub>{inf x b|b. b \ B}) (\\<^bsub>fin\<^esub>{inf a b|a b. a \ A \ b \ B})" using insert by(simp add:inf_Sup1_distrib[OF B]) - also have "\ = \fin({inf x b |b. b \ B} \ {inf a b |a b. a \ A \ b \ B})" - (is "_ = \fin?M") + also have "\ = \\<^bsub>fin\<^esub>({inf x b |b. b \ B} \ {inf a b |a b. a \ A \ b \ B})" + (is "_ = \\<^bsub>fin\<^esub>?M") using B insert by (simp add: Sup_fin_def fold1_Un2 [OF finB _ finAB ne]) also have "?M = {inf a b |a b. a \ insert x A \ b \ B}" @@ -2622,7 +2622,7 @@ lemma Inf_fin_Inf: assumes "finite A" and "A \ {}" - shows "\finA = Inf A" + shows "\\<^bsub>fin\<^esub>A = Inf A" proof - interpret ab_semigroup_idem_mult inf by (rule ab_semigroup_idem_mult_inf) @@ -2633,7 +2633,7 @@ lemma Sup_fin_Sup: assumes "finite A" and "A \ {}" - shows "\finA = Sup A" + shows "\\<^bsub>fin\<^esub>A = Sup A" proof - interpret ab_semigroup_idem_mult sup by (rule ab_semigroup_idem_mult_sup)