293 |
293 |
294 print_quotients |
294 print_quotients |
295 |
295 |
296 ML {* val qty = @{typ "'a fset"} *} |
296 ML {* val qty = @{typ "'a fset"} *} |
297 ML {* val rsp_thms = |
297 ML {* val rsp_thms = |
298 @{thms ho_memb_rsp ho_cons_rsp ho_card1_rsp ho_map_rsp ho_append_rsp ho_fold_rsp} |
298 @{thms ho_memb_rsp ho_cons_rsp ho_card1_rsp ho_map_rsp ho_append_rsp ho_fold_rsp} *} |
299 @ @{thms ho_all_prs ho_ex_prs} *} |
|
300 |
299 |
301 ML {* val (rty, rel, rel_refl, rel_eqv) = lookup_quot_data @{context} qty *} |
300 ML {* val (rty, rel, rel_refl, rel_eqv) = lookup_quot_data @{context} qty *} |
302 ML {* val (trans2, reps_same, absrep, quot) = lookup_quot_thms @{context} "fset"; *} |
301 ML {* val (trans2, reps_same, absrep, quot) = lookup_quot_thms @{context} "fset"; *} |
303 ML {* val consts = lookup_quot_consts defs *} |
302 ML {* val consts = lookup_quot_consts defs *} |
304 ML {* fun lift_tac_fset lthy t = lift_tac lthy t [rel_eqv] rty [quot] defs *} |
303 ML {* fun lift_tac_fset lthy t = lift_tac lthy t [rel_eqv] rty [quot] defs *} |
504 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
503 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
505 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
504 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
506 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
505 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
507 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
506 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
508 apply (tactic {* instantiate_tac @{thm APPLY_RSP2} @{context} 1 *}) |
507 apply (tactic {* instantiate_tac @{thm APPLY_RSP2} @{context} 1 *}) |
509 apply (tactic {* (instantiate_tac @{thm REP_ABS_RSP(1)} @{context} THEN' (RANGE [quotient_tac [quot]])) 1 *}) |
508 apply (tactic {* (instantiate_tac @{thm REP_ABS_RSP} @{context} THEN' (RANGE [quotient_tac [quot]])) 1 *}) |
510 apply assumption |
509 apply assumption |
511 apply (rule refl) |
510 apply (rule refl) |
512 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
511 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
513 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
512 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
514 apply (tactic {* instantiate_tac @{thm APPLY_RSP2} @{context} 1 *}) |
513 apply (tactic {* instantiate_tac @{thm APPLY_RSP2} @{context} 1 *}) |
515 apply (tactic {* instantiate_tac @{thm APPLY_RSP2} @{context} 1 *}) |
514 apply (tactic {* instantiate_tac @{thm APPLY_RSP2} @{context} 1 *}) |
516 apply (tactic {* (instantiate_tac @{thm REP_ABS_RSP(1)} @{context} THEN' (RANGE [quotient_tac [quot]])) 1 *}) |
515 apply (tactic {* (instantiate_tac @{thm REP_ABS_RSP} @{context} THEN' (RANGE [quotient_tac [quot]])) 1 *}) |
517 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
516 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
518 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
517 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
519 apply (tactic {* REPEAT_ALL_NEW (inj_repabs_tac_fset @{context}) 1 *}) |
518 apply (tactic {* REPEAT_ALL_NEW (inj_repabs_tac_fset @{context}) 1 *}) |
520 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
519 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
521 apply (tactic {* instantiate_tac @{thm APPLY_RSP2} @{context} 1 *}) |
520 apply (tactic {* instantiate_tac @{thm APPLY_RSP2} @{context} 1 *}) |
522 apply (tactic {* (instantiate_tac @{thm REP_ABS_RSP(1)} @{context} THEN' (RANGE [quotient_tac [quot]])) 1 *}) |
521 apply (tactic {* (instantiate_tac @{thm REP_ABS_RSP} @{context} THEN' (RANGE [quotient_tac [quot]])) 1 *}) |
523 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
522 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
524 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
523 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
525 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
524 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
526 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
525 apply (tactic {* (inj_repabs_tac_fset @{context}) 1 *}) |
527 apply (tactic {* clean_tac @{context} [quot] defs [(@{typ "('a list \<Rightarrow> 'c list \<Rightarrow> bool)"},@{typ "('a list \<Rightarrow> 'c fset \<Rightarrow> bool)"})] 1 *}) |
526 apply (tactic {* clean_tac @{context} [quot] defs [(@{typ "('a list \<Rightarrow> 'c list \<Rightarrow> bool)"},@{typ "('a list \<Rightarrow> 'c fset \<Rightarrow> bool)"})] 1 *}) |