X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Ftactics%2FproofEngineTypes.ml;h=ac0713bd057dc364c44a193f71cb1b475a14e564;hb=ebc089606ccbb3e9dbde142542a1f98f5020b4dd;hp=3e0a12e4e406a0e689bead48c5da8be38e0b9a54;hpb=36f71caeee72cb15185ecbc7644ed1da5c6f8186;p=helm.git diff --git a/helm/ocaml/tactics/proofEngineTypes.ml b/helm/ocaml/tactics/proofEngineTypes.ml index 3e0a12e4e..ac0713bd0 100644 --- a/helm/ocaml/tactics/proofEngineTypes.ml +++ b/helm/ocaml/tactics/proofEngineTypes.ml @@ -38,9 +38,22 @@ type status = proof * goal (** an unfinished proof with the optional current goal *) type tactic = status -> proof * goal list + (** creates an opaque tactic from a status->proof*goal list function *) +let mk_tactic t = t + (** tactic failure *) exception Fail of string + (** + calls the opaque tactic on the status, restoring the original + universe graph if the tactic Fails + *) +let apply_tactic t status = + let saved_univ = CicUniv.get_working() in + try + t status + with Fail s -> CicUniv.set_working saved_univ; raise (Fail s) + (** constraint: the returned value will always be constructed by Cic.Name **) type mk_fresh_name_type = Cic.metasenv -> Cic.context -> Cic.name -> typ:Cic.term -> Cic.name