(re)defined the document antiquotation @subgoal in order to be closer to what is actually printed
--- a/CookBook/antiquote_setup.ML Wed Feb 04 20:26:38 2009 +0000
+++ b/CookBook/antiquote_setup.ML Thu Feb 05 16:34:05 2009 +0000
@@ -57,6 +57,27 @@
if File.exists (Path.append (Path.explode ("~~/src")) (Path.explode txt)) then ()
else error ("Source file " ^ quote txt ^ " does not exist.")
+(* to be closer to the actual output *)
+fun output_goals main_goal src node =
+let
+ fun subgoals 0 = "No subgoals!"
+ | subgoals 1 = "goal (1 subgoal):"
+ | subgoals n = "goal (" ^ string_of_int n ^ " subgoals):";
+
+ fun proof_state node =
+ (case Option.map Toplevel.proof_node node of
+ SOME (SOME prf) => ProofNode.current prf
+ | _ => error "No proof state");
+
+ val state = proof_state node
+ val goals = Proof.pretty_goals main_goal state;
+ val msg = Pretty.str (subgoals (length goals))
+in
+ ThyOutput.args (Scan.succeed ())
+ (Chunks.output (fn _ => fn _ => Pretty.chunks (msg::goals))) src node
+end
+
+
val _ = ThyOutput.add_commands
[("ML", ThyOutput.args (Scan.lift (OuterParse.position (Args.name --
(Scan.optional (Args.$$$ "for" |-- OuterParse.!!! (Scan.repeat1 Args.name)) [] --
@@ -73,6 +94,7 @@
("ML_response_fake_both", ThyOutput.args (Scan.lift (OuterParse.position (Args.name -- Args.name)))
(output_ml_response_fake_both ml_val)),
("ML_struct", ThyOutput.args (Scan.lift (OuterParse.position Args.name)) (output_ml_aux ml_struct)),
- ("ML_type", ThyOutput.args (Scan.lift (OuterParse.position Args.name)) (output_ml_aux ml_type))];
+ ("ML_type", ThyOutput.args (Scan.lift (OuterParse.position Args.name)) (output_ml_aux ml_type)),
+ ("subgoals", output_goals false)];
end;
--- a/CookBook/chunks.ML Wed Feb 04 20:26:38 2009 +0000
+++ b/CookBook/chunks.ML Thu Feb 05 16:34:05 2009 +0000
@@ -26,9 +26,14 @@
#> space_implode "\\isasep\\isanewline%\n"
#> enclose "\\isa{" "}");
+fun output pretty src ctxt = output_list pretty src ctxt o single
+
val _ = ThyOutput.add_options
[("gray", Library.setmp gray o boolean)]
+
+
+
(** theory data **)
structure ChunkData = TheoryDataFun