src/HOL/Tools/Quotient/quotient_tacs.ML
changeset 43596 78211f66cf8d
parent 43333 2bdec7f430d3
child 43934 2108763f298d
equal deleted inserted replaced
43595:7ae4a23b5be6 43596:78211f66cf8d
    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."