QuotMain.thy
changeset 198 ff4425e000db
parent 197 c0f2db9a243b
child 200 d6a24dad5882
equal deleted inserted replaced
197:c0f2db9a243b 198:ff4425e000db
   849       (simp_allex_prs lthy quot (eqsubst_thm lthy [rwfs, rwes] thm))
   849       (simp_allex_prs lthy quot (eqsubst_thm lthy [rwfs, rwes] thm))
   850     end
   850     end
   851     handle _ => thm
   851     handle _ => thm
   852 *}
   852 *}
   853 
   853 
       
   854 ML {*
       
   855 fun lift_thm lthy consts rty qty rel rel_eqv rel_refl quot rsp_thms trans2 reps_same t_defs t = let
       
   856   val t_a = atomize_thm t;
       
   857   val t_r = regularize t_a rty rel rel_eqv lthy;
       
   858   val t_t1 = repabs_eq lthy t_r consts rty qty quot rel_refl trans2 rsp_thms;
       
   859   val t_t2 = repabs_eq2 lthy t_t1;
       
   860   val abs = findabs rty (prop_of t_a);
       
   861   val simp_lam_prs_thms = map (make_simp_lam_prs_thm lthy quot) abs;
       
   862   fun simp_lam_prs lthy thm =
       
   863     simp_lam_prs lthy (eqsubst_thm lthy simp_lam_prs_thms thm)
       
   864     handle _ => thm
       
   865   val t_l = simp_lam_prs lthy t_t2;
       
   866   val t_a = simp_allex_prs lthy quot t_l;
       
   867   val t_defs_sym = add_lower_defs lthy t_defs;
       
   868   val t_d = MetaSimplifier.rewrite_rule t_defs_sym t_a;
       
   869   val t_r = MetaSimplifier.rewrite_rule [reps_same] t_d;
       
   870 in
       
   871   ObjectLogic.rulify t_r
   854 end
   872 end
       
   873 *}
       
   874 
       
   875 end