aboutsummaryrefslogtreecommitdiffhomepage
path: root/proofs/proof.ml
diff options
context:
space:
mode:
authorGravatar Hugo Herbelin <Hugo.Herbelin@inria.fr>2017-01-26 13:24:04 +0100
committerGravatar Hugo Herbelin <Hugo.Herbelin@inria.fr>2017-01-26 18:39:41 +0100
commitc7a0568967a8a6e40888a2106b9b59325f2f09a5 (patch)
tree131f69969a4f5b0f49029479c9724acee3a371fc /proofs/proof.ml
parentd6bcc6ebe4f65d0555414851f7e4fb6fa1fb22a4 (diff)
Adding a printer for Proof.proof reflecting the focusing layout.
This is a modest contribution serving before all the purpose of displaying the focus stack and the shelf and give_up list. It does not print the sigma (while it could). Any improvements are welcome.
Diffstat (limited to 'proofs/proof.ml')
-rw-r--r--proofs/proof.ml16
1 files changed, 16 insertions, 0 deletions
diff --git a/proofs/proof.ml b/proofs/proof.ml
index 0a3b08c04..b2103489a 100644
--- a/proofs/proof.ml
+++ b/proofs/proof.ml
@@ -372,6 +372,22 @@ let in_proof p k = k (Proofview.return p.proofview)
let unshelve p =
{ p with proofview = Proofview.unshelve (p.shelf) (p.proofview) ; shelf = [] }
+let pr_proof p =
+ let p = map_structured_proof p (fun _sigma g -> g) in
+ Pp.(
+ let pr_goal_list = prlist_with_sep spc Goal.pr_goal in
+ let rec aux acc = function
+ | [] -> acc
+ | (before,after)::stack ->
+ aux (pr_goal_list before ++ spc () ++ str "{" ++ acc ++ str "}" ++ spc () ++
+ pr_goal_list after) stack in
+ str "[" ++ str "focus structure: " ++
+ aux (pr_goal_list p.fg_goals) p.bg_goals ++ str ";" ++ spc () ++
+ str "shelved: " ++ pr_goal_list p.shelved_goals ++ str ";" ++ spc () ++
+ str "given up: " ++ pr_goal_list p.given_up_goals ++
+ str "]"
+ )
+
(*** Compatibility layer with <=v8.2 ***)
module V82 = struct
let subgoals p =