47 local |
47 local |
48 |
48 |
49 fun pretty_tag (name, args) = Pretty.strs (name :: map quote args); |
49 fun pretty_tag (name, args) = Pretty.strs (name :: map quote args); |
50 val pretty_tags = Pretty.list "[" "]" o map pretty_tag; |
50 val pretty_tags = Pretty.list "[" "]" o map pretty_tag; |
51 |
51 |
52 fun is_oracle (Thm.Oracle _) = true |
|
53 | is_oracle _ = false; |
|
54 |
|
55 fun ex_oracle (Join (der, ders)) = is_oracle der orelse exists ex_oracle ders; |
|
56 |
|
57 fun pretty_thm_aux quote th = |
52 fun pretty_thm_aux quote th = |
58 let |
53 let |
59 val {sign, hyps, prop, der, ...} = rep_thm th; |
54 val {sign, hyps, prop, der = (ora, _), ...} = rep_thm th; |
60 val xshyps = Thm.extra_shyps th; |
55 val xshyps = Thm.extra_shyps th; |
61 val (_, tags) = Thm.get_name_tags th; |
56 val (_, tags) = Thm.get_name_tags th; |
62 |
57 |
63 val prt_term = (if quote then Pretty.quote else I) o Sign.pretty_term sign; |
58 val prt_term = (if quote then Pretty.quote else I) o Sign.pretty_term sign; |
64 |
59 |
65 val hlen = length xshyps + length hyps; |
60 val hlen = length xshyps + length hyps; |
66 val ex_ora = ex_oracle der; |
|
67 val hsymbs = |
61 val hsymbs = |
68 if hlen = 0 andalso not ex_ora then [] |
62 if hlen = 0 andalso not ora then [] |
69 else if ! show_hyps then |
63 else if ! show_hyps then |
70 [Pretty.brk 2, Pretty.list "[" "]" |
64 [Pretty.brk 2, Pretty.list "[" "]" |
71 (map prt_term hyps @ map (Sign.pretty_sort sign) xshyps @ |
65 (map prt_term hyps @ map (Sign.pretty_sort sign) xshyps @ |
72 (if ex_ora then [Pretty.str "!"] else []))] |
66 (if ora then [Pretty.str "!"] else []))] |
73 else [Pretty.brk 2, Pretty.str ("[" ^ implode (replicate hlen ".") ^ |
67 else [Pretty.brk 2, Pretty.str ("[" ^ implode (replicate hlen ".") ^ |
74 (if ex_ora then "!" else "") ^ "]")]; |
68 (if ora then "!" else "") ^ "]")]; |
75 val tsymbs = |
69 val tsymbs = |
76 if null tags orelse not (! show_tags) then [] |
70 if null tags orelse not (! show_tags) then [] |
77 else [Pretty.brk 1, pretty_tags tags]; |
71 else [Pretty.brk 1, pretty_tags tags]; |
78 in Pretty.block (prt_term prop :: (hsymbs @ tsymbs)) end; |
72 in Pretty.block (prt_term prop :: (hsymbs @ tsymbs)) end; |
79 |
73 |