diff options
author | Hugo Herbelin <Hugo.Herbelin@inria.fr> | 2018-02-17 22:59:32 +0100 |
---|---|---|
committer | Maxime Dénès <mail@maximedenes.fr> | 2018-03-08 21:58:31 +0100 |
commit | b731022c022cfeae9203f6b10b4e1f68b85d9071 (patch) | |
tree | 582bb7c6d3a05c194514c6a5ee9397dee849a8a3 /engine/proofview.ml | |
parent | 61c9bd4bc14d3479a98c2b53adf1b86fa84f13bf (diff) |
Adding tclPUTGIVENUP/tclPUTSHELF in Proofview.Unsafe.
Adding also tclSETSHELF/tclGETSHELF by consistency with
tclSETGOALS/tclGETGOALS.
However, I feel that this is too low-level to be exported as a
"tcl". Doesn't a "tcl" mean that it is supposed to be used by common
tactics? But is it reasonable that a common tactic can change and
modify comb and shelf without passing by a level which e.g. checks
that no goal is lost in the process.
So, I would rather be in favor of removing tclSETGOALS/tclGETGOALS
which are anyway aliases for Comb.get/Comb.set.
Conversely, what is the right expected level of abstraction for
proofview.ml?
Diffstat (limited to 'engine/proofview.ml')
-rw-r--r-- | engine/proofview.ml | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/engine/proofview.ml b/engine/proofview.ml index 73f26c320..53b3cdd9b 100644 --- a/engine/proofview.ml +++ b/engine/proofview.ml @@ -1010,6 +1010,15 @@ module Unsafe = struct let tclSETGOALS = Comb.set + let tclGETSHELF = Shelf.get + + let tclSETSHELF = Shelf.set + + let tclPUTSHELF to_shelve = + tclBIND tclGETSHELF (fun shelf -> tclSETSHELF (to_shelve@shelf)) + + let tclPUTGIVENUP = Giveup.put + let tclEVARSADVANCE evd = Pv.modify (fun ps -> { ps with solution = evd; comb = undefined evd ps.comb }) |