equal
deleted
inserted
replaced
53 |
53 |
54 fun equiv_tac ctxt = |
54 fun equiv_tac ctxt = |
55 REPEAT_ALL_NEW (resolve_tac (Quotient_Info.equiv_rules_get ctxt)) |
55 REPEAT_ALL_NEW (resolve_tac (Quotient_Info.equiv_rules_get ctxt)) |
56 |
56 |
57 fun equiv_solver_tac ss = equiv_tac (Simplifier.the_context ss) |
57 fun equiv_solver_tac ss = equiv_tac (Simplifier.the_context ss) |
58 val equiv_solver = Simplifier.mk_solver' "Equivalence goal solver" equiv_solver_tac |
58 val equiv_solver = mk_solver "Equivalence goal solver" equiv_solver_tac |
59 |
59 |
60 fun quotient_tac ctxt = |
60 fun quotient_tac ctxt = |
61 (REPEAT_ALL_NEW (FIRST' |
61 (REPEAT_ALL_NEW (FIRST' |
62 [rtac @{thm identity_quotient}, |
62 [rtac @{thm identity_quotient}, |
63 resolve_tac (Quotient_Info.quotient_rules_get ctxt)])) |
63 resolve_tac (Quotient_Info.quotient_rules_get ctxt)])) |
64 |
64 |
65 fun quotient_solver_tac ss = quotient_tac (Simplifier.the_context ss) |
65 fun quotient_solver_tac ss = quotient_tac (Simplifier.the_context ss) |
66 val quotient_solver = |
66 val quotient_solver = mk_solver "Quotient goal solver" quotient_solver_tac |
67 Simplifier.mk_solver' "Quotient goal solver" quotient_solver_tac |
|
68 |
67 |
69 fun solve_quotient_assm ctxt thm = |
68 fun solve_quotient_assm ctxt thm = |
70 case Seq.pull (quotient_tac ctxt 1 thm) of |
69 case Seq.pull (quotient_tac ctxt 1 thm) of |
71 SOME (t, _) => t |
70 SOME (t, _) => t |
72 | _ => error "Solve_quotient_assm failed. Possibly a quotient theorem is missing." |
71 | _ => error "Solve_quotient_assm failed. Possibly a quotient theorem is missing." |