removal of x-symbol syntax <Sigma> for dependent products
authorpaulson
Wed, 16 Jun 2004 14:56:39 +0200
changeset 14952 47455995693d
parent 14951 c98eb0d6615a
child 14953 27decf8d40ff
removal of x-symbol syntax <Sigma> for dependent products
src/HOL/Bali/Decl.thy
src/HOL/MicroJava/Comp/LemmasComp.thy
src/HOL/MicroJava/J/TypeRel.thy
src/HOL/NanoJava/TypeRel.thy
src/HOL/Product_Type.thy
--- a/src/HOL/Bali/Decl.thy	Tue Jun 15 13:24:19 2004 +0200
+++ b/src/HOL/Bali/Decl.thy	Wed Jun 16 14:56:39 2004 +0200
@@ -485,13 +485,14 @@
 done
 
 lemma subint1_def2:  
-   "subint1 G = (\<Sigma> I\<in>{I. is_iface G I}. set (isuperIfs (the (iface G I))))"
+  "subint1 G = (SIGMA I: {I. is_iface G I}. set (isuperIfs (the (iface G I))))"
 apply (unfold subint1_def)
 apply auto
 done
 
 lemma subcls1_def2: 
- "subcls1 G = (\<Sigma> C\<in>{C. is_class G C}. {D. C\<noteq>Object \<and> super (the(class G C))=D})"
+  "subcls1 G = 
+     (SIGMA C: {C. is_class G C}. {D. C\<noteq>Object \<and> super (the(class G C))=D})"
 apply (unfold subcls1_def)
 apply auto
 done
--- a/src/HOL/MicroJava/Comp/LemmasComp.thy	Tue Jun 15 13:24:19 2004 +0200
+++ b/src/HOL/MicroJava/Comp/LemmasComp.thy	Wed Jun 16 14:56:39 2004 +0200
@@ -105,21 +105,12 @@
 lemma comp_is_type: "is_type (comp G) T = is_type G T"
   by ((cases T),simp,(induct G)) ((simp),(simp only: comp_is_class),(simp add: comp_is_class),(simp only: comp_is_class))
 
-lemma SIGMA_cong: "\<lbrakk> A = B; !!x. x \<in> B \<Longrightarrow> C x = D x \<rbrakk> 
-  \<Longrightarrow> (\<Sigma> x \<in> A. C x) = (\<Sigma> x \<in> B. D x)"
-by auto
-
 lemma comp_classname: "is_class G C 
   \<Longrightarrow> fst (the (class G C)) = fst (the (class (comp G) C))"
 by (case_tac "class G C", auto simp: is_class_def dest: comp_class_imp)
 
-
 lemma comp_subcls1: "subcls1 (comp G) = subcls1 G"
-apply (simp add: subcls1_def2 comp_is_class)
-apply (rule SIGMA_cong, simp)
-apply (simp add: comp_is_class)
-apply (simp add: comp_classname)
-done
+by (auto simp add: subcls1_def2 comp_classname comp_is_class)
 
 lemma comp_widen: "((ty1,ty2) \<in> widen (comp G)) = ((ty1,ty2) \<in> widen G)"
   apply rule
--- a/src/HOL/MicroJava/J/TypeRel.thy	Tue Jun 15 13:24:19 2004 +0200
+++ b/src/HOL/MicroJava/J/TypeRel.thy	Wed Jun 16 14:56:39 2004 +0200
@@ -42,7 +42,8 @@
 done
 
 lemma subcls1_def2: 
-"subcls1 G = (\<Sigma> C\<in>{C. is_class G C} . {D. C\<noteq>Object \<and> fst (the (class G C))=D})"
+  "subcls1 G = 
+     (SIGMA C: {C. is_class G C} . {D. C\<noteq>Object \<and> fst (the (class G C))=D})"
   by (auto simp add: is_class_def dest: subcls1D intro: subcls1I)
 
 lemma finite_subcls1: "finite (subcls1 G)"
--- a/src/HOL/NanoJava/TypeRel.thy	Tue Jun 15 13:24:19 2004 +0200
+++ b/src/HOL/NanoJava/TypeRel.thy	Wed Jun 16 14:56:39 2004 +0200
@@ -55,7 +55,8 @@
 done
 
 lemma subcls1_def2: 
-"subcls1 = (\<Sigma> C\<in>{C. is_class C} . {D. C\<noteq>Object \<and> super (the (class C)) = D})"
+  "subcls1 = 
+    (SIGMA C: {C. is_class C} . {D. C\<noteq>Object \<and> super (the (class C)) = D})"
 apply (unfold subcls1_def is_class_def)
 apply auto
 done
--- a/src/HOL/Product_Type.thy	Tue Jun 15 13:24:19 2004 +0200
+++ b/src/HOL/Product_Type.thy	Wed Jun 16 14:56:39 2004 +0200
@@ -155,12 +155,11 @@
 end
 *}
 
+text{*Deleted x-symbol and html support using @{text"\<Sigma>"} (Sigma) because of the danger of confusion with Sum.*}
 syntax (xsymbols)
-  "@Sigma" :: "[pttrn, 'a set, 'b set] => ('a * 'b) set"  ("(3\<Sigma> _\<in>_./ _)"   10)
   "@Times" :: "['a set,  'a => 'b set] => ('a * 'b) set"  ("_ \<times> _" [81, 80] 80)
 
 syntax (HTML output)
-  "@Sigma" :: "[pttrn, 'a set, 'b set] => ('a * 'b) set"  ("(3\<Sigma> _\<in>_./ _)"   10)
   "@Times" :: "['a set,  'a => 'b set] => ('a * 'b) set"  ("_ \<times> _" [81, 80] 80)
 
 print_translation {* [("Sigma", dependent_tr' ("@Sigma", "@Times"))] *}
@@ -603,8 +602,7 @@
 lemma SigmaI [intro!]: "[| a:A;  b:B(a) |] ==> (a,b) : Sigma A B"
   by (unfold Sigma_def) blast
 
-
-lemma SigmaE:
+lemma SigmaE [elim!]:
     "[| c: Sigma A B;
         !!x y.[| x:A;  y:B(x);  c=(x,y) |] ==> P
      |] ==> P"
@@ -617,18 +615,21 @@
 *}
 
 lemma SigmaD1: "(a, b) : Sigma A B ==> a : A"
-by (erule SigmaE, blast)
+by blast
 
 lemma SigmaD2: "(a, b) : Sigma A B ==> b : B a"
-by (erule SigmaE, blast)
+by blast
 
 lemma SigmaE2:
     "[| (a, b) : Sigma A B;
         [| a:A;  b:B(a) |] ==> P
      |] ==> P"
-  by (blast dest: SigmaD1 SigmaD2)
+  by blast
 
-declare SigmaE [elim!] SigmaE2 [elim!]
+lemma Sigma_cong:
+     "\<lbrakk>A = B; !!x. x \<in> B \<Longrightarrow> C x = D x\<rbrakk>
+      \<Longrightarrow> (SIGMA x: A. C x) = (SIGMA x: B. D x)"
+by auto
 
 lemma Sigma_mono: "[| A <= C; !!x. x:A ==> B x <= D x |] ==> Sigma A B <= Sigma C D"
   by blast