src/Pure/logic.ML
changeset 77730 4a174bea55e2
parent 76785 9e5a27486ca2
child 77869 1156aa9db7f5
equal deleted inserted replaced
77729:0ad86d5b3bc3 77730:4a174bea55e2
    64     constraints_map: (sort * typ) list,
    64     constraints_map: (sort * typ) list,
    65     atyp_map: typ -> typ,
    65     atyp_map: typ -> typ,
    66     map_atyps: typ -> typ,
    66     map_atyps: typ -> typ,
    67     constraints: ((typ * class) * term) list,
    67     constraints: ((typ * class) * term) list,
    68     outer_constraints: (typ * class) list};
    68     outer_constraints: (typ * class) list};
    69   val unconstrainT: sort list -> term -> unconstrain_context * term
    69   val unconstrainT: Sortset.T -> term -> unconstrain_context * term
    70   val protectC: term
    70   val protectC: term
    71   val protect: term -> term
    71   val protect: term -> term
    72   val unprotect: term -> term
    72   val unprotect: term -> term
    73   val mk_term: term -> term
    73   val mk_term: term -> term
    74   val dest_term: term -> term
    74   val dest_term: term -> term
   363   outer_constraints: (typ * class) list};
   363   outer_constraints: (typ * class) list};
   364 
   364 
   365 fun unconstrainT shyps prop =
   365 fun unconstrainT shyps prop =
   366   let
   366   let
   367     val present = rev ((fold_types o fold_atyps_sorts) (insert (eq_fst op =)) prop []);
   367     val present = rev ((fold_types o fold_atyps_sorts) (insert (eq_fst op =)) prop []);
   368     val extra = fold (Sorts.remove_sort o #2) present shyps;
   368     val extra = Sortset.dest (fold (Sortset.remove o #2) present shyps);
   369 
   369 
   370     val n = length present;
   370     val n = length present;
   371     val (names1, names2) = Name.invent Name.context Name.aT (n + length extra) |> chop n;
   371     val (names1, names2) = Name.invent Name.context Name.aT (n + length extra) |> chop n;
   372 
   372 
   373     val present_map =
   373     val present_map =