| author | wenzelm | 
| Tue, 12 Mar 2013 22:24:01 +0100 | |
| changeset 51405 | 2aea76fe9c73 | 
| parent 50301 | 56b4c9afd7be | 
| child 51509 | 22fd3605c7a2 | 
| permissions | -rw-r--r-- | 
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 1 | (* Title: Pure/display.ML | 
| 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 2 | Author: Lawrence C Paulson, Cambridge University Computer Laboratory | 
| 32089 
568a23753e3a
moved pretty_goals etc. to Display_Goal (required by tracing tacticals);
 wenzelm parents: 
30723diff
changeset | 3 | Author: Makarius | 
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 4 | |
| 32089 
568a23753e3a
moved pretty_goals etc. to Display_Goal (required by tracing tacticals);
 wenzelm parents: 
30723diff
changeset | 5 | Printing of theorems, results etc. | 
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 6 | *) | 
| 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 7 | |
| 11883 | 8 | signature BASIC_DISPLAY = | 
| 9 | sig | |
| 39050 
600de0485859
turned show_consts into proper configuration option;
 wenzelm parents: 
37248diff
changeset | 10 | val show_consts_default: bool Unsynchronized.ref | 
| 
600de0485859
turned show_consts into proper configuration option;
 wenzelm parents: 
37248diff
changeset | 11 | val show_consts: bool Config.T | 
| 39166 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 12 | val show_hyps_raw: Config.raw | 
| 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 13 | val show_hyps: bool Config.T | 
| 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 14 | val show_tags_raw: Config.raw | 
| 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 15 | val show_tags: bool Config.T | 
| 11883 | 16 | end; | 
| 17 | ||
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 18 | signature DISPLAY = | 
| 4950 | 19 | sig | 
| 11883 | 20 | include BASIC_DISPLAY | 
| 50126 
3dec88149176
theorem status about oracles/futures is no longer printed by default;
 wenzelm parents: 
49560diff
changeset | 21 |   val pretty_thm_raw: Proof.context -> {quote: bool, show_hyps: bool} -> thm -> Pretty.T
 | 
| 32090 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 22 | val pretty_thm: Proof.context -> thm -> Pretty.T | 
| 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 23 | val pretty_thm_global: theory -> thm -> Pretty.T | 
| 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 24 | val pretty_thm_without_context: thm -> Pretty.T | 
| 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 25 | val string_of_thm: Proof.context -> thm -> string | 
| 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 26 | val string_of_thm_global: theory -> thm -> string | 
| 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 27 | val string_of_thm_without_context: thm -> string | 
| 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 28 | val pretty_thms: Proof.context -> thm list -> Pretty.T | 
| 26928 | 29 | val print_syntax: theory -> unit | 
| 20629 
8f6cc81ba4a3
pretty_full_theory: suppress internal entities by default;
 wenzelm parents: 
20226diff
changeset | 30 | val pretty_full_theory: bool -> theory -> Pretty.T list | 
| 4950 | 31 | end; | 
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 32 | |
| 4950 | 33 | structure Display: DISPLAY = | 
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 34 | struct | 
| 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 35 | |
| 32089 
568a23753e3a
moved pretty_goals etc. to Display_Goal (required by tracing tacticals);
 wenzelm parents: 
30723diff
changeset | 36 | (** options **) | 
| 
568a23753e3a
moved pretty_goals etc. to Display_Goal (required by tracing tacticals);
 wenzelm parents: 
30723diff
changeset | 37 | |
| 39050 
600de0485859
turned show_consts into proper configuration option;
 wenzelm parents: 
37248diff
changeset | 38 | val show_consts_default = Goal_Display.show_consts_default; | 
| 32187 | 39 | val show_consts = Goal_Display.show_consts; | 
| 32089 
568a23753e3a
moved pretty_goals etc. to Display_Goal (required by tracing tacticals);
 wenzelm parents: 
30723diff
changeset | 40 | |
| 39166 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 41 | val show_hyps_raw = Config.declare "show_hyps" (fn _ => Config.Bool false); | 
| 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 42 | val show_hyps = Config.bool show_hyps_raw; | 
| 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 43 | |
| 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 44 | val show_tags_raw = Config.declare "show_tags" (fn _ => Config.Bool false); | 
| 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 45 | val show_tags = Config.bool show_tags_raw; | 
| 32089 
568a23753e3a
moved pretty_goals etc. to Display_Goal (required by tracing tacticals);
 wenzelm parents: 
30723diff
changeset | 46 | |
| 
568a23753e3a
moved pretty_goals etc. to Display_Goal (required by tracing tacticals);
 wenzelm parents: 
30723diff
changeset | 47 | |
| 11883 | 48 | |
| 6087 | 49 | (** print thm **) | 
| 50 | ||
| 28840 | 51 | fun pretty_tag (name, arg) = Pretty.strs [name, quote arg]; | 
| 6087 | 52 | val pretty_tags = Pretty.list "[" "]" o map pretty_tag; | 
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 53 | |
| 50126 
3dec88149176
theorem status about oracles/futures is no longer printed by default;
 wenzelm parents: 
49560diff
changeset | 54 | fun pretty_thm_raw ctxt {quote, show_hyps = show_hyps'} raw_th =
 | 
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 55 | let | 
| 39166 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 56 | val show_tags = Config.get ctxt show_tags; | 
| 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 57 | val show_hyps = Config.get ctxt show_hyps; | 
| 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 58 | |
| 17447 | 59 | val th = Thm.strip_shyps raw_th; | 
| 28316 
b17d863a050f
type thm: fully internal derivation, no longer exported;
 wenzelm parents: 
28290diff
changeset | 60 |     val {hyps, tpairs, prop, ...} = Thm.rep_thm th;
 | 
| 6087 | 61 | val xshyps = Thm.extra_shyps th; | 
| 21646 
c07b5b0e8492
thm/prf: separate official name vs. additional tags;
 wenzelm parents: 
20629diff
changeset | 62 | val tags = Thm.get_tags th; | 
| 6087 | 63 | |
| 13658 
c9ad3e64ddcf
Changed handling of flex-flex constraints: now stored in separate
 berghofe parents: 
12831diff
changeset | 64 | val q = if quote then Pretty.quote else I; | 
| 32145 
220c9e439d39
clarified pretty_goals, pretty_thm_aux: plain context;
 wenzelm parents: 
32090diff
changeset | 65 | val prt_term = q o Syntax.pretty_term ctxt; | 
| 6279 | 66 | |
| 32145 
220c9e439d39
clarified pretty_goals, pretty_thm_aux: plain context;
 wenzelm parents: 
32090diff
changeset | 67 | val asms = map Thm.term_of (Assumption.all_assms_of ctxt); | 
| 39166 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 68 | val hyps' = if show_hyps then hyps else subtract (op aconv) asms hyps; | 
| 28802 
9ba30eeec7ce
pretty_thm: oracle flag is always false for now (would require detailed check wrt. promises);
 wenzelm parents: 
28316diff
changeset | 69 | |
| 17447 | 70 | val hlen = length xshyps + length hyps' + length tpairs; | 
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 71 | val hsymbs = | 
| 50126 
3dec88149176
theorem status about oracles/futures is no longer printed by default;
 wenzelm parents: 
49560diff
changeset | 72 | if hlen = 0 then [] | 
| 39166 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 73 | else if show_hyps orelse show_hyps' then | 
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 74 | [Pretty.brk 2, Pretty.list "[" "]" | 
| 32187 | 75 | (map (q o Goal_Display.pretty_flexpair ctxt) tpairs @ map prt_term hyps' @ | 
| 50126 
3dec88149176
theorem status about oracles/futures is no longer printed by default;
 wenzelm parents: 
49560diff
changeset | 76 | map (Syntax.pretty_sort ctxt) xshyps)] | 
| 
3dec88149176
theorem status about oracles/futures is no longer printed by default;
 wenzelm parents: 
49560diff
changeset | 77 |       else [Pretty.brk 2, Pretty.str ("[" ^ replicate_string hlen "." ^ "]")];
 | 
| 6087 | 78 | val tsymbs = | 
| 39166 
19efc2af3e6c
turned show_hyps and show_tags into proper configuration option;
 wenzelm parents: 
39125diff
changeset | 79 | if null tags orelse not show_tags then [] | 
| 6087 | 80 | else [Pretty.brk 1, pretty_tags tags]; | 
| 6279 | 81 | in Pretty.block (prt_term prop :: (hsymbs @ tsymbs)) end; | 
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 82 | |
| 50126 
3dec88149176
theorem status about oracles/futures is no longer printed by default;
 wenzelm parents: 
49560diff
changeset | 83 | fun pretty_thm ctxt = pretty_thm_raw ctxt {quote = false, show_hyps = true};
 | 
| 32090 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 84 | |
| 32145 
220c9e439d39
clarified pretty_goals, pretty_thm_aux: plain context;
 wenzelm parents: 
32090diff
changeset | 85 | fun pretty_thm_global thy = | 
| 50126 
3dec88149176
theorem status about oracles/futures is no longer printed by default;
 wenzelm parents: 
49560diff
changeset | 86 |   pretty_thm_raw (Syntax.init_pretty_global thy) {quote = false, show_hyps = false};
 | 
| 32090 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 87 | |
| 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 88 | fun pretty_thm_without_context th = pretty_thm_global (Thm.theory_of_thm th) th; | 
| 6087 | 89 | |
| 32090 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 90 | val string_of_thm = Pretty.string_of oo pretty_thm; | 
| 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 91 | val string_of_thm_global = Pretty.string_of oo pretty_thm_global; | 
| 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 92 | val string_of_thm_without_context = Pretty.string_of o pretty_thm_without_context; | 
| 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 93 | |
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 94 | |
| 32090 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 95 | (* multiple theorems *) | 
| 
39acf19e9f3a
moved ProofContext.pretty_thm to Display.pretty_thm etc.;
 wenzelm parents: 
32089diff
changeset | 96 | |
| 50126 
3dec88149176
theorem status about oracles/futures is no longer printed by default;
 wenzelm parents: 
49560diff
changeset | 97 | fun pretty_thms ctxt [th] = pretty_thm ctxt th | 
| 
3dec88149176
theorem status about oracles/futures is no longer printed by default;
 wenzelm parents: 
49560diff
changeset | 98 | | pretty_thms ctxt ths = Pretty.blk (0, Pretty.fbreaks (map (pretty_thm ctxt) ths)); | 
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 99 | |
| 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 100 | |
| 4250 | 101 | |
| 102 | (** print theory **) | |
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 103 | |
| 16437 
aa87badf7a3c
removed pretty_theory, pprint_theory (see context.ML or thy_info.ML);
 wenzelm parents: 
16364diff
changeset | 104 | val print_syntax = Syntax.print_syntax o Sign.syn_of; | 
| 4498 | 105 | |
| 106 | ||
| 11883 | 107 | (* pretty_full_theory *) | 
| 4250 | 108 | |
| 20629 
8f6cc81ba4a3
pretty_full_theory: suppress internal entities by default;
 wenzelm parents: 
20226diff
changeset | 109 | fun pretty_full_theory verbose thy = | 
| 4250 | 110 | let | 
| 35199 
2e37cdae7b9c
pretty_full_theory: proper Syntax.init_pretty_global;
 wenzelm parents: 
33173diff
changeset | 111 | val ctxt = Syntax.init_pretty_global thy; | 
| 24920 | 112 | |
| 113 | fun prt_cls c = Syntax.pretty_sort ctxt [c]; | |
| 114 | fun prt_sort S = Syntax.pretty_sort ctxt S; | |
| 37248 
8e8e5f9d1441
arities: no need to maintain original codomain (cf. f795c1164708) -- completion happens in axclass.ML;
 wenzelm parents: 
36328diff
changeset | 115 | fun prt_arity t (c, Ss) = Syntax.pretty_arity ctxt (t, Ss, [c]); | 
| 24920 | 116 | fun prt_typ ty = Pretty.quote (Syntax.pretty_typ ctxt ty); | 
| 35845 
e5980f0ad025
renamed varify/unvarify operations to varify_global/unvarify_global to emphasize that these only work in a global situation;
 wenzelm parents: 
35199diff
changeset | 117 | val prt_typ_no_tvars = prt_typ o Logic.unvarifyT_global; | 
| 24920 | 118 | fun prt_term t = Pretty.quote (Syntax.pretty_term ctxt t); | 
| 35845 
e5980f0ad025
renamed varify/unvarify operations to varify_global/unvarify_global to emphasize that these only work in a global situation;
 wenzelm parents: 
35199diff
changeset | 119 | val prt_term_no_vars = prt_term o Logic.unvarify_global; | 
| 50301 | 120 | fun prt_const (c, ty) = [Pretty.mark_str c, Pretty.str " ::", Pretty.brk 1, prt_typ_no_tvars ty]; | 
| 42384 | 121 | val prt_const' = Defs.pretty_const ctxt; | 
| 4250 | 122 | |
| 14794 | 123 | fun pretty_classrel (c, []) = prt_cls c | 
| 124 | | pretty_classrel (c, cs) = Pretty.block | |
| 125 | (prt_cls c :: Pretty.str " <" :: Pretty.brk 1 :: | |
| 126 | Pretty.commas (map prt_cls cs)); | |
| 4250 | 127 | |
| 128 | fun pretty_default S = Pretty.block | |
| 14794 | 129 | [Pretty.str "default sort:", Pretty.brk 1, prt_sort S]; | 
| 4250 | 130 | |
| 14996 | 131 | val tfrees = map (fn v => TFree (v, [])); | 
| 33173 
b8ca12f6681a
eliminated obsolete tags for types/consts -- now handled via name space, in strongly typed fashion;
 wenzelm parents: 
33158diff
changeset | 132 | fun pretty_type syn (t, (Type.LogicalType n)) = | 
| 15531 | 133 | if syn then NONE | 
| 43329 
84472e198515
tuned signature: Name.invent and Name.invent_names;
 wenzelm parents: 
42384diff
changeset | 134 | else SOME (prt_typ (Type (t, tfrees (Name.invent Name.context Name.aT n)))) | 
| 33173 
b8ca12f6681a
eliminated obsolete tags for types/consts -- now handled via name space, in strongly typed fashion;
 wenzelm parents: 
33158diff
changeset | 135 | | pretty_type syn (t, (Type.Abbreviation (vs, U, syn'))) = | 
| 15531 | 136 | if syn <> syn' then NONE | 
| 137 | else SOME (Pretty.block | |
| 14996 | 138 | [prt_typ (Type (t, tfrees vs)), Pretty.str " =", Pretty.brk 1, prt_typ U]) | 
| 33173 
b8ca12f6681a
eliminated obsolete tags for types/consts -- now handled via name space, in strongly typed fashion;
 wenzelm parents: 
33158diff
changeset | 139 | | pretty_type syn (t, Type.Nonterminal) = | 
| 15531 | 140 | if not syn then NONE | 
| 141 | else SOME (prt_typ (Type (t, []))); | |
| 4250 | 142 | |
| 19482 
9f11af8f7ef9
tuned basic list operators (flat, maps, map_filter);
 wenzelm parents: 
19420diff
changeset | 143 | val pretty_arities = maps (fn (t, ars) => map (prt_arity t) ars); | 
| 14223 
0ee05eef881b
Added support for making constants final, that is, ensuring that no
 skalberg parents: 
14178diff
changeset | 144 | |
| 19698 | 145 | fun pretty_abbrev (c, (ty, t)) = Pretty.block | 
| 146 | (prt_const (c, ty) @ [Pretty.str " ==", Pretty.brk 1, prt_term_no_vars t]); | |
| 147 | ||
| 50301 | 148 | fun pretty_axm (a, t) = | 
| 149 | Pretty.block [Pretty.mark_str a, Pretty.str ":", Pretty.brk 1, prt_term_no_vars t]; | |
| 19365 | 150 | |
| 19702 | 151 | fun pretty_finals reds = Pretty.block | 
| 19703 | 152 | (Pretty.str "final:" :: Pretty.brk 1 :: Pretty.commas (map (prt_const' o fst) reds)); | 
| 19702 | 153 | |
| 19698 | 154 | fun pretty_reduct (lhs, rhs) = Pretty.block | 
| 19702 | 155 | ([prt_const' lhs, Pretty.str " ->", Pretty.brk 2] @ | 
| 156 | Pretty.commas (map prt_const' (sort_wrt #1 rhs))); | |
| 4250 | 157 | |
| 19698 | 158 | fun pretty_restrict (const, name) = | 
| 159 |       Pretty.block ([prt_const' const, Pretty.brk 2, Pretty.str ("(from " ^ quote name ^ ")")]);
 | |
| 8720 | 160 | |
| 24665 | 161 | val axioms = (Theory.axiom_space thy, Theory.axiom_table thy); | 
| 162 | val defs = Theory.defs_of thy; | |
| 19698 | 163 |     val {restricts, reducts} = Defs.dest defs;
 | 
| 47005 
421760a1efe7
maintain generic context naming in structure Name_Space (NB: empty = default_naming, init = local_naming);
 wenzelm parents: 
43329diff
changeset | 164 | val tsig = Sign.tsig_of thy; | 
| 
421760a1efe7
maintain generic context naming in structure Name_Space (NB: empty = default_naming, init = local_naming);
 wenzelm parents: 
43329diff
changeset | 165 | val consts = Sign.consts_of thy; | 
| 18936 | 166 |     val {constants, constraints} = Consts.dest consts;
 | 
| 42358 
b47d41d9f4b5
Name_Space: proper configuration options long_names, short_names, unique_names instead of former unsynchronized references;
 wenzelm parents: 
39166diff
changeset | 167 | val extern_const = Name_Space.extern ctxt (#1 constants); | 
| 26637 | 168 |     val {classes, default, types, ...} = Type.rep_tsig tsig;
 | 
| 19698 | 169 | val (class_space, class_algebra) = classes; | 
| 36328 
4d9deabf6474
replaced Sorts.rep_algebra by slightly more abstract selectors classes_of/arities_of;
 wenzelm parents: 
35845diff
changeset | 170 | val classes = Sorts.classes_of class_algebra; | 
| 
4d9deabf6474
replaced Sorts.rep_algebra by slightly more abstract selectors classes_of/arities_of;
 wenzelm parents: 
35845diff
changeset | 171 | val arities = Sorts.arities_of class_algebra; | 
| 14996 | 172 | |
| 49560 | 173 | val clsses = | 
| 174 | Name_Space.dest_table ctxt (class_space, Symtab.make (map (apfst fst) (Graph.dest classes))); | |
| 42358 
b47d41d9f4b5
Name_Space: proper configuration options long_names, short_names, unique_names instead of former unsynchronized references;
 wenzelm parents: 
39166diff
changeset | 175 | val tdecls = Name_Space.dest_table ctxt types; | 
| 42359 | 176 | val arties = Name_Space.dest_table ctxt (Type.type_space tsig, arities); | 
| 20629 
8f6cc81ba4a3
pretty_full_theory: suppress internal entities by default;
 wenzelm parents: 
20226diff
changeset | 177 | |
| 33158 | 178 | fun prune_const c = not verbose andalso Consts.is_concealed consts c; | 
| 42358 
b47d41d9f4b5
Name_Space: proper configuration options long_names, short_names, unique_names instead of former unsynchronized references;
 wenzelm parents: 
39166diff
changeset | 179 | val cnsts = Name_Space.extern_table ctxt (#1 constants, | 
| 24774 
bc31c318e673
print_theory: observe Markup.internal_property of consts, discontinued special treatment of internal names elsewhere;
 wenzelm parents: 
24665diff
changeset | 180 | Symtab.make (filter_out (prune_const o fst) (Symtab.dest (#2 constants)))); | 
| 
bc31c318e673
print_theory: observe Markup.internal_property of consts, discontinued special treatment of internal names elsewhere;
 wenzelm parents: 
24665diff
changeset | 181 | |
| 19482 
9f11af8f7ef9
tuned basic list operators (flat, maps, map_filter);
 wenzelm parents: 
19420diff
changeset | 182 | val log_cnsts = map_filter (fn (c, (ty, NONE)) => SOME (c, ty) | _ => NONE) cnsts; | 
| 25405 | 183 | val abbrevs = map_filter (fn (c, (ty, SOME t)) => SOME (c, (ty, t)) | _ => NONE) cnsts; | 
| 42358 
b47d41d9f4b5
Name_Space: proper configuration options long_names, short_names, unique_names instead of former unsynchronized references;
 wenzelm parents: 
39166diff
changeset | 184 | val cnstrs = Name_Space.extern_table ctxt constraints; | 
| 19698 | 185 | |
| 42358 
b47d41d9f4b5
Name_Space: proper configuration options long_names, short_names, unique_names instead of former unsynchronized references;
 wenzelm parents: 
39166diff
changeset | 186 | val axms = Name_Space.extern_table ctxt axioms; | 
| 24774 
bc31c318e673
print_theory: observe Markup.internal_property of consts, discontinued special treatment of internal names elsewhere;
 wenzelm parents: 
24665diff
changeset | 187 | |
| 
bc31c318e673
print_theory: observe Markup.internal_property of consts, discontinued special treatment of internal names elsewhere;
 wenzelm parents: 
24665diff
changeset | 188 | val (reds0, (reds1, reds2)) = filter_out (prune_const o fst o fst) reducts | 
| 
bc31c318e673
print_theory: observe Markup.internal_property of consts, discontinued special treatment of internal names elsewhere;
 wenzelm parents: 
24665diff
changeset | 189 | |> map (fn (lhs, rhs) => | 
| 
bc31c318e673
print_theory: observe Markup.internal_property of consts, discontinued special treatment of internal names elsewhere;
 wenzelm parents: 
24665diff
changeset | 190 | (apfst extern_const lhs, map (apfst extern_const) (filter_out (prune_const o fst) rhs))) | 
| 19702 | 191 | |> sort_wrt (#1 o #1) | 
| 192 | |> List.partition (null o #2) | |
| 193 | ||> List.partition (Defs.plain_args o #2 o #1); | |
| 19698 | 194 | val rests = restricts |> map (apfst (apfst extern_const)) |> sort_wrt (#1 o #1); | 
| 4250 | 195 | in | 
| 29091 | 196 |     [Pretty.strs ("names:" :: Context.display_names thy)] @
 | 
| 30409 
6037cac149a1
pretty_full_theory: no longer display name prefix -- naming is far more complex now;
 wenzelm parents: 
30186diff
changeset | 197 | [Pretty.big_list "classes:" (map pretty_classrel clsses), | 
| 8720 | 198 | pretty_default default, | 
| 19482 
9f11af8f7ef9
tuned basic list operators (flat, maps, map_filter);
 wenzelm parents: 
19420diff
changeset | 199 | Pretty.big_list "syntactic types:" (map_filter (pretty_type true) tdecls), | 
| 
9f11af8f7ef9
tuned basic list operators (flat, maps, map_filter);
 wenzelm parents: 
19420diff
changeset | 200 | Pretty.big_list "logical types:" (map_filter (pretty_type false) tdecls), | 
| 16534 | 201 | Pretty.big_list "type arities:" (pretty_arities arties), | 
| 19698 | 202 | Pretty.big_list "logical consts:" (map (Pretty.block o prt_const) log_cnsts), | 
| 19365 | 203 | Pretty.big_list "abbreviations:" (map pretty_abbrev abbrevs), | 
| 19698 | 204 | Pretty.big_list "constraints:" (map (Pretty.block o prt_const) cnstrs), | 
| 205 | Pretty.big_list "axioms:" (map pretty_axm axms), | |
| 50301 | 206 | Pretty.block | 
| 207 | (Pretty.breaks (Pretty.str "oracles:" :: map Pretty.mark_str (Thm.extern_oracles ctxt))), | |
| 19698 | 208 | Pretty.big_list "definitions:" | 
| 19702 | 209 | [pretty_finals reds0, | 
| 210 | Pretty.big_list "non-overloaded:" (map pretty_reduct reds1), | |
| 211 | Pretty.big_list "overloaded:" (map pretty_reduct reds2), | |
| 212 | Pretty.big_list "pattern restrictions:" (map pretty_restrict rests)]] | |
| 4250 | 213 | end; | 
| 214 | ||
| 1591 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 215 | end; | 
| 
7fa0265dcd13
New module for display/printing operations, taken from drule.ML
 paulson parents: diff
changeset | 216 | |
| 32089 
568a23753e3a
moved pretty_goals etc. to Display_Goal (required by tracing tacticals);
 wenzelm parents: 
30723diff
changeset | 217 | structure Basic_Display: BASIC_DISPLAY = Display; | 
| 
568a23753e3a
moved pretty_goals etc. to Display_Goal (required by tracing tacticals);
 wenzelm parents: 
30723diff
changeset | 218 | open Basic_Display; |