src/Tools/coherent.ML
changeset 32199 82c4c570310a
parent 32091 30e2ffbba718
child 32734 06c13b2e562e
equal deleted inserted replaced
32198:9bdd47909ea8 32199:82c4c570310a
   213 (** external interface **)
   213 (** external interface **)
   214 
   214 
   215 fun coherent_tac ctxt rules = SUBPROOF (fn {prems, concl, params, context, ...} =>
   215 fun coherent_tac ctxt rules = SUBPROOF (fn {prems, concl, params, context, ...} =>
   216   rtac (rulify_elim_conv concl RS equal_elim_rule2) 1 THEN
   216   rtac (rulify_elim_conv concl RS equal_elim_rule2) 1 THEN
   217   SUBPROOF (fn {prems = prems', concl, context, ...} =>
   217   SUBPROOF (fn {prems = prems', concl, context, ...} =>
   218     let val xs = map term_of params @
   218     let val xs = map (term_of o #2) params @
   219       map (fn (_, s) => Free (s, the (Variable.default_type context s)))
   219       map (fn (_, s) => Free (s, the (Variable.default_type context s)))
   220         (Variable.fixes_of context)
   220         (Variable.fixes_of context)
   221     in
   221     in
   222       case valid context (map mk_rule (prems' @ prems @ rules)) (term_of concl)
   222       case valid context (map mk_rule (prems' @ prems @ rules)) (term_of concl)
   223            (mk_dom xs) Net.empty 0 0 of
   223            (mk_dom xs) Net.empty 0 0 of