--- a/src/ZF/UNITY/MultisetSum.ML Mon Jul 07 17:58:21 2003 +0200
+++ b/src/ZF/UNITY/MultisetSum.ML Tue Jul 08 11:44:30 2003 +0200
@@ -1,5 +1,5 @@
(* Title: ZF/UNITY/MultusetSum.thy
- ID: $Id$
+ ID: $Id \\<in> MultisetSum.ML,v 1.2 2003/06/24 14:33:00 paulson Exp $
Author: Sidi O Ehmety
Copyright: 2002 University of Cambridge
Setsum for multisets.
@@ -16,7 +16,7 @@
Addsimps [general_setsum_0];
Goalw [general_setsum_def]
-"[| C:Fin(A); a:A; a~:C; e:B; ALL x:A. g(x):B; lcomm(B, B, f) |] ==> \
+"[| C \\<in> Fin(A); a \\<in> A; a\\<notin>C; e \\<in> B; \\<forall>x \\<in> A. g(x):B; lcomm(B, B, f) |] ==> \
\ general_setsum(cons(a, C), B, e, f, g) = \
\ f(g(a), general_setsum(C, B, e, f,g))";
by (auto_tac (claset(), simpset() addsimps [Fin_into_Finite RS Finite_cons,
@@ -45,7 +45,7 @@
(** msetsum **)
Goal
-"[| C:Fin(A); ALL x:A. multiset(g(x))& mset_of(g(x))<=B |] \
+"[| C \\<in> Fin(A); \\<forall>x \\<in> A. multiset(g(x))& mset_of(g(x))<=B |] \
\ ==> multiset(general_setsum(C, B -||> nat - {0}, 0, \\<lambda>u v. u +# v, g))";
by (etac Fin_induct 1);
by Auto_tac;
@@ -59,7 +59,7 @@
Addsimps [msetsum_0];
Goalw [msetsum_def]
-"[| C:Fin(A); a~:C; a:A; ALL x:A. multiset(g(x)) & mset_of(g(x))<=B |] \
+"[| C \\<in> Fin(A); a\\<notin>C; a \\<in> A; \\<forall>x \\<in> A. multiset(g(x)) & mset_of(g(x))<=B |] \
\ ==> msetsum(g, cons(a, C), B) = g(a) +# msetsum(g, C, B)";
by (stac general_setsum_cons 1);
by (auto_tac (claset(), simpset() addsimps [multiset_general_setsum, Mult_iff_multiset]));
@@ -73,7 +73,7 @@
qed "msetsum_multiset";
Goal
-"[| C:Fin(A); ALL x:A. multiset(g(x)) & mset_of(g(x))<=B |] \
+"[| C \\<in> Fin(A); \\<forall>x \\<in> A. multiset(g(x)) & mset_of(g(x))<=B |] \
\ ==> mset_of(msetsum(g, C, B))<=B";
by (etac Fin_induct 1);
by Auto_tac;
@@ -83,15 +83,15 @@
(*The reversed orientation looks more natural, but LOOPS as a simprule!*)
Goal
-"[| C:Fin(A); D:Fin(A); ALL x:A. multiset(g(x)) & mset_of(g(x))<=B |] \
+"[| C \\<in> Fin(A); D \\<in> Fin(A); \\<forall>x \\<in> A. multiset(g(x)) & mset_of(g(x))<=B |] \
\ ==> msetsum(g, C Un D, B) +# msetsum(g, C Int D, B) \
\ = msetsum(g, C, B) +# msetsum(g, D, B)";
by (etac Fin_induct 1);
by (subgoal_tac "cons(x, y) Un D = cons(x, y Un D)" 2);
by (auto_tac (claset(), simpset() addsimps [msetsum_multiset]));
-by (subgoal_tac "y Un D:Fin(A) & y Int D : Fin(A)" 1);
+by (subgoal_tac "y Un D \\<in> Fin(A) & y Int D \\<in> Fin(A)" 1);
by (Clarify_tac 1);
-by (case_tac "x:D" 1);
+by (case_tac "x \\<in> D" 1);
by (subgoal_tac "cons(x, y) Int D = y Int D" 2);
by (subgoal_tac "cons(x, y) Int D = cons(x, y Int D)" 1);
by (ALLGOALS(asm_simp_tac (simpset() addsimps [cons_absorb,
@@ -101,34 +101,34 @@
qed "msetsum_Un_Int";
-Goal "[| C:Fin(A); D:Fin(A); C Int D = 0; \
-\ ALL x:A. multiset(g(x)) & mset_of(g(x))<=B |] \
+Goal "[| C \\<in> Fin(A); D \\<in> Fin(A); C Int D = 0; \
+\ \\<forall>x \\<in> A. multiset(g(x)) & mset_of(g(x))<=B |] \
\ ==> msetsum(g, C Un D, B) = msetsum(g, C, B) +# msetsum(g,D, B)";
by (stac (msetsum_Un_Int RS sym) 1);
by (auto_tac (claset(), simpset() addsimps [msetsum_multiset]));
qed "msetsum_Un_disjoint";
-Goal "I:Fin(A) ==> (ALL i:I. C(i):Fin(B)) --> (UN i:I. C(i)):Fin(B)";
+Goal "I \\<in> Fin(A) ==> (\\<forall>i \\<in> I. C(i):Fin(B)) --> (\\<Union>i \\<in> I. C(i)):Fin(B)";
by (etac Fin_induct 1);
by Auto_tac;
qed_spec_mp "UN_Fin_lemma";
-Goal "!!I. [| I:Fin(K); ALL i:K. C(i):Fin(A) |] ==> \
-\ (ALL x:A. multiset(f(x)) & mset_of(f(x))<=B) --> \
-\ (ALL i:I. ALL j:I. i~=j --> C(i) Int C(j) = 0) --> \
-\ msetsum(f, UN i:I. C(i), B) = msetsum (%i. msetsum(f, C(i),B), I, B)";
+Goal "!!I. [| I \\<in> Fin(K); \\<forall>i \\<in> K. C(i):Fin(A) |] ==> \
+\ (\\<forall>x \\<in> A. multiset(f(x)) & mset_of(f(x))<=B) --> \
+\ (\\<forall>i \\<in> I. \\<forall>j \\<in> I. i\\<noteq>j --> C(i) Int C(j) = 0) --> \
+\ msetsum(f, \\<Union>i \\<in> I. C(i), B) = msetsum (%i. msetsum(f, C(i),B), I, B)";
by (etac Fin_induct 1);
by (ALLGOALS(Clarify_tac));
by Auto_tac;
-by (subgoal_tac "ALL i:y. x ~= i" 1);
+by (subgoal_tac "\\<forall>i \\<in> y. x \\<noteq> i" 1);
by (Blast_tac 2);
-by (subgoal_tac "C(x) Int (UN i:y. C(i)) = 0" 1);
+by (subgoal_tac "C(x) Int (\\<Union>i \\<in> y. C(i)) = 0" 1);
by (Blast_tac 2);
-by (subgoal_tac " (UN i:y. C(i)):Fin(A) & C(x):Fin(A)" 1);
+by (subgoal_tac " (\\<Union>i \\<in> y. C(i)):Fin(A) & C(x):Fin(A)" 1);
by (blast_tac (claset() addIs [UN_Fin_lemma] addDs [FinD]) 2);
by (Clarify_tac 1);
by (asm_simp_tac (simpset() addsimps [msetsum_Un_disjoint]) 1);
-by (subgoal_tac "ALL x:K. multiset(msetsum(f, C(x), B)) &\
+by (subgoal_tac "\\<forall>x \\<in> K. multiset(msetsum(f, C(x), B)) &\
\ mset_of(msetsum(f, C(x), B)) <= B" 1);
by (Asm_simp_tac 1);
by (Clarify_tac 1);
@@ -137,11 +137,11 @@
qed_spec_mp "msetsum_UN_disjoint";
Goal
-"[| C:Fin(A); \
-\ ALL x:A. multiset(f(x)) & mset_of(f(x))<=B; \
-\ ALL x:A. multiset(g(x)) & mset_of(g(x))<=B |] ==>\
+"[| C \\<in> Fin(A); \
+\ \\<forall>x \\<in> A. multiset(f(x)) & mset_of(f(x))<=B; \
+\ \\<forall>x \\<in> A. multiset(g(x)) & mset_of(g(x))<=B |] ==>\
\ msetsum(%x. f(x) +# g(x), C, B) = msetsum(f, C, B) +# msetsum(g, C, B)";
-by (subgoal_tac "ALL x:A. multiset(f(x) +# g(x)) & mset_of(f(x) +# g(x))<=B" 1);
+by (subgoal_tac "\\<forall>x \\<in> A. multiset(f(x) +# g(x)) & mset_of(f(x) +# g(x))<=B" 1);
by (etac Fin_induct 1);
by (ALLGOALS(Asm_simp_tac));
by (resolve_tac [trans] 1);
@@ -153,7 +153,7 @@
val prems = Goal
- "[| C=D; !!x. x:D ==> f(x) = g(x) |] ==> \
+ "[| C=D; !!x. x \\<in> D ==> f(x) = g(x) |] ==> \
\ msetsum(f, C, B) = msetsum(g, D, B)";
by (asm_full_simp_tac (simpset() addsimps [msetsum_def, general_setsum_def]@prems addcongs [fold_cong]) 1);
qed "msetsum_cong";
@@ -163,11 +163,11 @@
qed "multiset_union_diff";
-Goal "[| C:Fin(A); D:Fin(A); \
-\ ALL x:A. multiset(f(x)) & mset_of(f(x))<=B |] \
+Goal "[| C \\<in> Fin(A); D \\<in> Fin(A); \
+\ \\<forall>x \\<in> A. multiset(f(x)) & mset_of(f(x))<=B |] \
\ ==> msetsum(f, C Un D, B) = \
\ msetsum(f, C, B) +# msetsum(f, D, B) -# msetsum(f, C Int D, B)";
-by (subgoal_tac "C Un D:Fin(A) & C Int D:Fin(A)" 1);
+by (subgoal_tac "C Un D \\<in> Fin(A) & C Int D \\<in> Fin(A)" 1);
by (Clarify_tac 1);
by (stac (msetsum_Un_Int RS sym) 1);
by (ALLGOALS(asm_simp_tac (simpset() addsimps
@@ -182,7 +182,7 @@
Addsimps [nsetsum_0];
Goalw [nsetsum_def, general_setsum_def]
-"[| Finite(C); x~:C |] \
+"[| Finite(C); x\\<notin>C |] \
\ ==> nsetsum(g, cons(x, C))= g(x) #+ nsetsum(g, C)";
by (auto_tac (claset(), simpset() addsimps [Finite_cons]));
by (res_inst_tac [("A", "cons(x, C)")] (thm"fold_typing.fold_cons") 1);