equal
deleted
inserted
replaced
25 val alias: Name_Space.naming -> binding -> string -> T -> T |
25 val alias: Name_Space.naming -> binding -> string -> T -> T |
26 val is_concealed: T -> string -> bool |
26 val is_concealed: T -> string -> bool |
27 val intern: T -> xstring -> string |
27 val intern: T -> xstring -> string |
28 val intern_syntax: T -> xstring -> string |
28 val intern_syntax: T -> xstring -> string |
29 val check_const: Context.generic -> T -> xstring * Position.T list -> term * Position.report list |
29 val check_const: Context.generic -> T -> xstring * Position.T list -> term * Position.report list |
30 val certify: Context.pretty -> Type.tsig -> bool -> T -> term -> term (*exception TYPE*) |
30 val certify: Context.generic -> Type.tsig -> bool -> T -> term -> term (*exception TYPE*) |
31 val typargs: T -> string * typ -> typ list |
31 val typargs: T -> string * typ -> typ list |
32 val instance: T -> string * typ list -> typ |
32 val instance: T -> string * typ list -> typ |
33 val declare: Context.generic -> binding * typ -> T -> T |
33 val declare: Context.generic -> binding * typ -> T -> T |
34 val constrain: string * typ option -> T -> T |
34 val constrain: string * typ option -> T -> T |
35 val abbreviate: Context.generic -> Type.tsig -> string -> binding * term -> T -> (term * term) * T |
35 val abbreviate: Context.generic -> Type.tsig -> string -> binding * term -> T -> (term * term) * T |
153 in (Const (c, T), reports) end; |
153 in (Const (c, T), reports) end; |
154 |
154 |
155 |
155 |
156 (* certify *) |
156 (* certify *) |
157 |
157 |
158 fun certify pp tsig do_expand consts = |
158 fun certify context tsig do_expand consts = |
159 let |
159 let |
160 fun err msg (c, T) = |
160 fun err msg (c, T) = |
161 raise TYPE (msg ^ " " ^ quote c ^ " :: " ^ |
161 raise TYPE (msg ^ " " ^ quote c ^ " :: " ^ |
162 Syntax.string_of_typ (Syntax.init_pretty pp) T, [], []); |
162 Syntax.string_of_typ (Syntax.init_pretty context) T, [], []); |
163 val certT = Type.cert_typ tsig; |
163 val certT = Type.cert_typ tsig; |
164 fun cert tm = |
164 fun cert tm = |
165 let |
165 let |
166 val (head, args) = Term.strip_comb tm; |
166 val (head, args) = Term.strip_comb tm; |
167 val args' = map cert args; |
167 val args' = map cert args; |
270 |
270 |
271 in |
271 in |
272 |
272 |
273 fun abbreviate context tsig mode (b, raw_rhs) consts = |
273 fun abbreviate context tsig mode (b, raw_rhs) consts = |
274 let |
274 let |
275 val pp = Context.pretty_generic context; |
275 val cert_term = certify context tsig false consts; |
276 val cert_term = certify pp tsig false consts; |
276 val expand_term = certify context tsig true consts; |
277 val expand_term = certify pp tsig true consts; |
|
278 val force_expand = mode = Print_Mode.internal; |
277 val force_expand = mode = Print_Mode.internal; |
279 |
278 |
280 val _ = Term.exists_subterm Term.is_Var raw_rhs andalso |
279 val _ = Term.exists_subterm Term.is_Var raw_rhs andalso |
281 error ("Illegal schematic variables on rhs of abbreviation " ^ Binding.print b); |
280 error ("Illegal schematic variables on rhs of abbreviation " ^ Binding.print b); |
282 |
281 |