265 let |
265 let |
266 val (head, args) = strip_combterm_comb u |
266 val (head, args) = strip_combterm_comb u |
267 val (x, ty_args) = |
267 val (x, ty_args) = |
268 case head of |
268 case head of |
269 CombConst (name as (s, s'), _, ty_args) => |
269 CombConst (name as (s, s'), _, ty_args) => |
270 if s = "equal" then |
270 let val ty_args = if full_types then [] else ty_args in |
271 (if top_level andalso length args = 2 then name |
271 if s = "equal" then |
272 else ("c_fequal", @{const_name fequal}), []) |
272 if top_level andalso length args = 2 then (name, []) |
273 else if top_level then |
273 else (("c_fequal", @{const_name fequal}), ty_args) |
274 case s of |
274 else if top_level then |
275 "c_False" => (("$false", s'), []) |
275 case s of |
276 | "c_True" => (("$true", s'), []) |
276 "c_False" => (("$false", s'), []) |
277 | _ => (name, if full_types then [] else ty_args) |
277 | "c_True" => (("$true", s'), []) |
278 else |
278 | _ => (name, ty_args) |
279 (name, if full_types then [] else ty_args) |
279 else |
|
280 (name, ty_args) |
|
281 end |
280 | CombVar (name, _) => (name, []) |
282 | CombVar (name, _) => (name, []) |
281 | CombApp _ => raise Fail "impossible \"CombApp\"" |
283 | CombApp _ => raise Fail "impossible \"CombApp\"" |
282 val t = ATerm (x, map fo_term_for_combtyp ty_args @ |
284 val t = ATerm (x, map fo_term_for_combtyp ty_args @ |
283 map (aux false) args) |
285 map (aux false) args) |
284 in |
286 in |