70 of SOME (c_ts as ((c, _), _)) => if is_none (const_syntax c) |
70 of SOME (c_ts as ((c, _), _)) => if is_none (const_syntax c) |
71 then print_case tyvars some_thm vars fxy cases |
71 then print_case tyvars some_thm vars fxy cases |
72 else print_app tyvars is_pat some_thm vars fxy c_ts |
72 else print_app tyvars is_pat some_thm vars fxy c_ts |
73 | NONE => print_case tyvars some_thm vars fxy cases) |
73 | NONE => print_case tyvars some_thm vars fxy cases) |
74 and print_app tyvars is_pat some_thm vars fxy |
74 and print_app tyvars is_pat some_thm vars fxy |
75 (app as ((c, ((arg_typs, _), function_typs)), ts)) = |
75 (app as ((c, (((arg_typs, _), function_typs), _)), ts)) = |
76 let |
76 let |
77 val k = length ts; |
77 val k = length ts; |
78 val arg_typs' = if is_pat orelse |
78 val arg_typs' = if is_pat orelse |
79 (is_none (const_syntax c) andalso is_singleton_constr c) then [] else arg_typs; |
79 (is_none (const_syntax c) andalso is_singleton_constr c) then [] else arg_typs; |
80 val (l, print') = case const_syntax c |
80 val (l, print') = case const_syntax c |
263 | print_stmt (name, Code_Thingol.Classinst ((class, (tyco, vs)), |
263 | print_stmt (name, Code_Thingol.Classinst ((class, (tyco, vs)), |
264 (super_instances, (classparam_instances, further_classparam_instances)))) = |
264 (super_instances, (classparam_instances, further_classparam_instances)))) = |
265 let |
265 let |
266 val tyvars = intro_tyvars vs reserved; |
266 val tyvars = intro_tyvars vs reserved; |
267 val classtyp = (class, tyco `%% map (ITyVar o fst) vs); |
267 val classtyp = (class, tyco `%% map (ITyVar o fst) vs); |
268 fun print_classparam_instance ((classparam, const as (_, (_, tys))), (thm, _)) = |
268 fun print_classparam_instance ((classparam, const as (_, ((_, tys), _))), (thm, _)) = |
269 let |
269 let |
270 val aux_tys = Name.invent_names (snd reserved) "a" tys; |
270 val aux_tys = Name.invent_names (snd reserved) "a" tys; |
271 val auxs = map fst aux_tys; |
271 val auxs = map fst aux_tys; |
272 val vars = intro_vars auxs reserved; |
272 val vars = intro_vars auxs reserved; |
273 val aux_abstr = if null auxs then [] else [enum "," "(" ")" |
273 val aux_abstr = if null auxs then [] else [enum "," "(" ")" |