equal
deleted
inserted
replaced
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 = |