Quot/QuotMain.thy
changeset 639 820c64273ce0
parent 633 2e51e1315839
child 640 5cb44fe9ae8e
equal deleted inserted replaced
635:793c3ff4bc2a 639:820c64273ce0
  1054   let
  1054   let
  1055     val thy = ProofContext.theory_of lthy;
  1055     val thy = ProofContext.theory_of lthy;
  1056     val defs = map (Thm.varifyT o symmetric o #def) (qconsts_dest thy)
  1056     val defs = map (Thm.varifyT o symmetric o #def) (qconsts_dest thy)
  1057       (* FIXME: why is the Thm.varifyT needed: example where it fails is LamEx *)
  1057       (* FIXME: why is the Thm.varifyT needed: example where it fails is LamEx *)
  1058     val thms1 = @{thms all_prs ex_prs} @ defs
  1058     val thms1 = @{thms all_prs ex_prs} @ defs
  1059     val thms2 = @{thms eq_reflection[OF fun_map.simps]} @ (id_simps_get lthy)
  1059     val thms2 = @{thms fun_map.simps Quotient_abs_rep Quotient_rel_rep} @ (id_simps_get lthy)
  1060                 @ @{thms Quotient_abs_rep Quotient_rel_rep} 
       
  1061     fun simps thms = (mk_minimal_ss lthy) addsimps thms addSolver quotient_solver
  1060     fun simps thms = (mk_minimal_ss lthy) addsimps thms addSolver quotient_solver
  1062   in
  1061   in
  1063     EVERY' [lambda_prs_tac lthy,
  1062     EVERY' [lambda_prs_tac lthy,
  1064             simp_tac (simps thms1),
  1063             simp_tac (simps thms1),
  1065             simp_tac (simps thms2),
  1064             simp_tac (simps thms2),