src/Pure/Isar/rule_insts.ML
changeset 20509 073a5ed7dd71
parent 20487 6ac7a4fc32a0
child 20548 8ef25fe585a8
equal deleted inserted replaced
20508:8182d961c7cc 20509:073a5ed7dd71
    38     Sign.typ_unify thy (T, U) (unifier, maxidx')
    38     Sign.typ_unify thy (T, U) (unifier, maxidx')
    39       handle Type.TUNIFY => error_var "Incompatible type for instantiation of " xi
    39       handle Type.TUNIFY => error_var "Incompatible type for instantiation of " xi
    40   end;
    40   end;
    41 
    41 
    42 fun instantiate inst =
    42 fun instantiate inst =
    43   Term.instantiate ([], map (fn (xi, t) => ((xi, Term.fastype_of t), t)) inst) #>
    43   TermSubst.instantiate ([], map (fn (xi, t) => ((xi, Term.fastype_of t), t)) inst) #>
    44   Envir.beta_norm;
    44   Envir.beta_norm;
    45 
    45 
    46 fun make_instT f v =
    46 fun make_instT f v =
    47   let
    47   let
    48     val T = TVar v;
    48     val T = TVar v;
    86         if Sign.of_sort thy (T, S) then ((xi, S), T)
    86         if Sign.of_sort thy (T, S) then ((xi, S), T)
    87         else error_var "Incompatible sort for typ instantiation of " xi
    87         else error_var "Incompatible sort for typ instantiation of " xi
    88       end;
    88       end;
    89 
    89 
    90     val type_insts1 = map readT type_insts;
    90     val type_insts1 = map readT type_insts;
    91     val instT1 = Term.instantiateT type_insts1;
    91     val instT1 = TermSubst.instantiateT type_insts1;
    92     val vars1 = map (apsnd instT1) vars;
    92     val vars1 = map (apsnd instT1) vars;
    93 
    93 
    94 
    94 
    95     (* internal term instantiations *)
    95     (* internal term instantiations *)
    96 
    96