Commented clean-tac
authorCezary Kaliszyk <kaliszyk@in.tum.de>
Mon, 30 Nov 2009 10:16:10 +0100
changeset 457 48042bacdce2
parent 456 d925d9fa43dd
child 458 44a70e69ef92
Commented clean-tac
QuotMain.thy
--- a/QuotMain.thy	Mon Nov 30 02:05:22 2009 +0100
+++ b/QuotMain.thy	Mon Nov 30 10:16:10 2009 +0100
@@ -1102,6 +1102,25 @@
           Conv.concl_conv ~1 (lambda_prs_conv ctxt quot))) ctxt) i)
 *}
 
+(*
+ Cleaning the theorem consists of 5 kinds of rewrites.
+ These rewrites can be done independently and in any order.
+
+ - LAMBDA_PRS:
+     (Rep1 ---> Abs2) (\<lambda>x. Rep2 (?f (Abs1 x)))       \<equiv>   ?f
+ - Rewriting with definitions from the argument defs
+     (Abs) OldConst (Rep Args)                       \<equiv>   NewConst Args
+ - QUOTIENT_REL_REP:
+     Rel (Rep x) (Rep y)                             \<equiv>   x = y
+ - FORALL_PRS (and the same for exists: EXISTS_PRS)
+     \<forall>x\<in>Respects R. (abs ---> id) ?f                 \<equiv>   \<forall>x. ?f
+ - applic_prs
+     Abs1 ((Abs2 --> Rep1) f (Rep2 args))            \<equiv>   f args
+
+ The first one is implemented as a conversion (fast).
+ The second and third one are a simp_tac (fast).
+ The last two are EqSubst (slow).
+*)
 ML {*
 fun clean_tac lthy quot defs aps =
   let