30 val immediate_proof: Toplevel.transition -> Toplevel.transition |
30 val immediate_proof: Toplevel.transition -> Toplevel.transition |
31 val done_proof: Toplevel.transition -> Toplevel.transition |
31 val done_proof: Toplevel.transition -> Toplevel.transition |
32 val skip_proof: Toplevel.transition -> Toplevel.transition |
32 val skip_proof: Toplevel.transition -> Toplevel.transition |
33 val init_theory: string * string list * (string * bool) list -> |
33 val init_theory: string * string list * (string * bool) list -> |
34 Toplevel.transition -> Toplevel.transition |
34 Toplevel.transition -> Toplevel.transition |
35 val welcome: Toplevel.transition -> Toplevel.transition |
|
36 val exit: Toplevel.transition -> Toplevel.transition |
35 val exit: Toplevel.transition -> Toplevel.transition |
37 val quit: Toplevel.transition -> Toplevel.transition |
36 val quit: Toplevel.transition -> Toplevel.transition |
38 val pr: string list * (int option * int option) -> Toplevel.transition -> Toplevel.transition |
37 val pr: string list * (int option * int option) -> Toplevel.transition -> Toplevel.transition |
39 val disable_pr: Toplevel.transition -> Toplevel.transition |
38 val disable_pr: Toplevel.transition -> Toplevel.transition |
40 val enable_pr: Toplevel.transition -> Toplevel.transition |
39 val enable_pr: Toplevel.transition -> Toplevel.transition |
60 val print_methods: Toplevel.transition -> Toplevel.transition |
59 val print_methods: Toplevel.transition -> Toplevel.transition |
61 val print_antiquotations: Toplevel.transition -> Toplevel.transition |
60 val print_antiquotations: Toplevel.transition -> Toplevel.transition |
62 val class_deps: Toplevel.transition -> Toplevel.transition |
61 val class_deps: Toplevel.transition -> Toplevel.transition |
63 val thy_deps: Toplevel.transition -> Toplevel.transition |
62 val thy_deps: Toplevel.transition -> Toplevel.transition |
64 val thm_deps: (Facts.ref * Attrib.src list) list -> Toplevel.transition -> Toplevel.transition |
63 val thm_deps: (Facts.ref * Attrib.src list) list -> Toplevel.transition -> Toplevel.transition |
65 val find_theorems: (int option * bool) * (bool * string FindTheorems.criterion) list |
|
66 -> Toplevel.transition -> Toplevel.transition |
|
67 val find_consts: (bool * FindConsts.criterion) list -> |
|
68 Toplevel.transition -> Toplevel.transition |
|
69 val unused_thms: (string list * string list option) option -> |
64 val unused_thms: (string list * string list option) option -> |
70 Toplevel.transition -> Toplevel.transition |
65 Toplevel.transition -> Toplevel.transition |
71 val print_binds: Toplevel.transition -> Toplevel.transition |
66 val print_binds: Toplevel.transition -> Toplevel.transition |
72 val print_cases: Toplevel.transition -> Toplevel.transition |
67 val print_cases: Toplevel.transition -> Toplevel.transition |
73 val print_stmts: string list * (Facts.ref * Attrib.src list) list |
68 val print_stmts: string list * (Facts.ref * Attrib.src list) list |
164 |
159 |
165 |
160 |
166 (* axioms *) |
161 (* axioms *) |
167 |
162 |
168 fun add_axms f args thy = |
163 fun add_axms f args thy = |
169 f (map (fn ((b, ax), srcs) => ((Binding.base_name b, ax), map (Attrib.attribute thy) srcs)) args) thy; |
164 f (map (fn ((b, ax), srcs) => ((Binding.name_of b, ax), map (Attrib.attribute thy) srcs)) args) thy; |
170 |
165 |
171 val add_axioms = add_axms (snd oo PureThy.add_axioms_cmd); |
166 val add_axioms = add_axms (snd oo PureThy.add_axioms_cmd); |
172 |
167 |
173 fun add_defs ((unchecked, overloaded), args) = |
168 fun add_defs ((unchecked, overloaded), args) = |
174 add_axms |
169 add_axms |
267 Toplevel.init_theory name (ThyInfo.begin_theory name imports (map (apfst Path.explode) uses)) |
262 Toplevel.init_theory name (ThyInfo.begin_theory name imports (map (apfst Path.explode) uses)) |
268 (fn thy => |
263 (fn thy => |
269 if ThyInfo.check_known_thy (Context.theory_name thy) |
264 if ThyInfo.check_known_thy (Context.theory_name thy) |
270 then ThyInfo.end_theory thy else ()); |
265 then ThyInfo.end_theory thy else ()); |
271 |
266 |
272 val welcome = Toplevel.imperative (writeln o Session.welcome); |
|
273 |
|
274 val exit = Toplevel.keep (fn state => |
267 val exit = Toplevel.keep (fn state => |
275 (Context.set_thread_data (try Toplevel.generic_theory_of state); |
268 (Context.set_thread_data (try Toplevel.generic_theory_of state); |
276 raise Toplevel.TERMINATE)); |
269 raise Toplevel.TERMINATE)); |
277 |
270 |
278 val quit = Toplevel.imperative quit; |
271 val quit = Toplevel.imperative quit; |
401 val gr = |
394 val gr = |
402 Graph.fold (cons o entry) classes [] |
395 Graph.fold (cons o entry) classes [] |
403 |> sort (int_ord o pairself #1) |> map #2; |
396 |> sort (int_ord o pairself #1) |> map #2; |
404 in Present.display_graph gr end); |
397 in Present.display_graph gr end); |
405 |
398 |
406 |
|
407 (* retrieve theorems *) |
|
408 |
|
409 fun thm_deps args = Toplevel.unknown_theory o Toplevel.keep (fn state => |
399 fun thm_deps args = Toplevel.unknown_theory o Toplevel.keep (fn state => |
410 ThmDeps.thm_deps (Proof.get_thmss (Toplevel.enter_proof_body state) args)); |
400 ThmDeps.thm_deps (Proof.get_thmss (Toplevel.enter_proof_body state) args)); |
411 |
|
412 fun find_theorems ((opt_lim, rem_dups), spec) = |
|
413 Toplevel.unknown_theory o Toplevel.keep (fn state => |
|
414 let |
|
415 val proof_state = Toplevel.enter_proof_body state; |
|
416 val ctxt = Proof.context_of proof_state; |
|
417 val opt_goal = try Proof.get_goal proof_state |> Option.map (#2 o #2); |
|
418 in FindTheorems.print_theorems ctxt opt_goal opt_lim rem_dups spec end); |
|
419 |
401 |
420 |
402 |
421 (* find unused theorems *) |
403 (* find unused theorems *) |
422 |
404 |
423 fun unused_thms opt_range = Toplevel.keep (fn state => |
405 fun unused_thms opt_range = Toplevel.keep (fn state => |
432 | SOME (xs, NONE) => (map ThyInfo.get_theory xs, [thy]) |
414 | SOME (xs, NONE) => (map ThyInfo.get_theory xs, [thy]) |
433 | SOME (xs, SOME ys) => (map ThyInfo.get_theory xs, map ThyInfo.get_theory ys)) |
415 | SOME (xs, SOME ys) => (map ThyInfo.get_theory xs, map ThyInfo.get_theory ys)) |
434 |> map pretty_thm |> Pretty.chunks |> Pretty.writeln |
416 |> map pretty_thm |> Pretty.chunks |> Pretty.writeln |
435 end); |
417 end); |
436 |
418 |
437 (* retrieve constants *) |
|
438 |
|
439 fun find_consts spec = |
|
440 Toplevel.unknown_theory o Toplevel.keep (fn state => |
|
441 let val ctxt = (Proof.context_of o Toplevel.enter_proof_body) state |
|
442 in FindConsts.find_consts ctxt spec end); |
|
443 |
419 |
444 (* print proof context contents *) |
420 (* print proof context contents *) |
445 |
421 |
446 val print_binds = Toplevel.unknown_context o Toplevel.keep (fn state => |
422 val print_binds = Toplevel.unknown_context o Toplevel.keep (fn state => |
447 ProofContext.setmp_verbose ProofContext.print_binds (Toplevel.context_of state)); |
423 ProofContext.setmp_verbose ProofContext.print_binds (Toplevel.context_of state)); |