
diff -r fe2a37cfecd3 -r 830b58c2fa94 Quot/QuotMain.thy
--- a/Quot/QuotMain.thy	Tue Dec 08 22:02:14 2009 +0100
+++ b/Quot/QuotMain.thy	Tue Dec 08 22:24:24 2009 +0100
@@ -1,5 +1,5 @@
 theory QuotMain
-imports QuotScript QuotProd Prove
+imports QuotScript Prove
 uses ("quotient_info.ML")
      ("quotient.ML")
      ("quotient_def.ML")
@@ -142,22 +142,19 @@
 (* the auxiliary data for the quotient types *)
 use "quotient_info.ML"
 
-declare [[map * = (prod_fun, prod_rel)]]
+
 declare [[map "fun" = (fun_map, fun_rel)]]
 
 (* Throws now an exception:              *)
 (* declare [[map "option" = (bla, blu)]] *)
 
-lemmas [quot_thm] =
-  fun_quotient prod_quotient
+lemmas [quot_thm] = fun_quotient 
 
-lemmas [quot_respect] =
-  quot_rel_rsp pair_rsp
+lemmas [quot_respect] = quot_rel_rsp
 
 (* fun_map is not here since equivp is not true *)
 (* TODO: option, ... *)
-lemmas [quot_equiv] =
-  identity_equivp prod_equivp
+lemmas [quot_equiv] = identity_equivp
 
 (* definition of the quotient types *)
 (* FIXME: should be called quotient_typ.ML *)
@@ -1056,12 +1053,13 @@
     val thy = ProofContext.theory_of lthy;
     val defs = map (Thm.varifyT o symmetric o #def) (qconsts_dest thy)
       (* FIXME: why is the Thm.varifyT needed: example where it fails is LamEx *)
-    val thms1 = @{thms all_prs ex_prs} @ defs
-    val thms2 = @{thms fun_map.simps Quotient_abs_rep Quotient_rel_rep} @ (id_simps_get lthy)
+    val thms1 = defs @ (prs_rules_get lthy)
+    val thms2 = @{thms fun_map.simps Quotient_abs_rep Quotient_rel_rep babs_prs all_prs ex_prs} 
+                @ (id_simps_get lthy)
     fun simps thms = (mk_minimal_ss lthy) addsimps thms addSolver quotient_solver
   in
-    EVERY' [lambda_prs_tac lthy,
-            simp_tac (simps thms1),
+    EVERY' [simp_tac (simps thms1),
+            lambda_prs_tac lthy,
             simp_tac (simps thms2),
             lambda_prs_tac lthy,
             TRY o rtac refl]




