diff -r d925d9fa43dd -r 48042bacdce2 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) (\x. Rep2 (?f (Abs1 x))) \ ?f + - Rewriting with definitions from the argument defs + (Abs) OldConst (Rep Args) \ NewConst Args + - QUOTIENT_REL_REP: + Rel (Rep x) (Rep y) \ x = y + - FORALL_PRS (and the same for exists: EXISTS_PRS) + \x\Respects R. (abs ---> id) ?f \ \x. ?f + - applic_prs + Abs1 ((Abs2 --> Rep1) f (Rep2 args)) \ 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