aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChantal Keller <Chantal.Keller@lri.fr>2016-10-07 15:30:33 +0200
committerChantal Keller <Chantal.Keller@lri.fr>2016-10-07 15:30:33 +0200
commitab72bee190e0e7b6a4136298a70f9fc5cfa0f907 (patch)
treea1c60385eafa5a63adc56c28e5422e32645aa641
parent3fb5bc25ded5ba737ec3c62d2cc49e240fc9cc3e (diff)
downloadsmtcoq-ab72bee190e0e7b6a4136298a70f9fc5cfa0f907.tar.gz
smtcoq-ab72bee190e0e7b6a4136298a70f9fc5cfa0f907.zip
Corrected a bug with holes in proofs
-rw-r--r--src/trace/smtCommands.ml19
-rw-r--r--src/verit/verit.ml4
-rw-r--r--src/versions/standard/smtcoq_plugin_standard.ml44
-rw-r--r--src/zchaff/zchaff.ml5
4 files changed, 17 insertions, 15 deletions
diff --git a/src/trace/smtCommands.ml b/src/trace/smtCommands.ml
index 87b5cb7..d8ec105 100644
--- a/src/trace/smtCommands.ml
+++ b/src/trace/smtCommands.ml
@@ -369,9 +369,7 @@ let make_proof call_solver rt ro rf l =
call_solver rt ro fl (root,l)
-let tactic call_solver rt ro ra rf env sigma t =
- let (forall_let, concl) = Term.decompose_prod_assum t in
- let env = Environ.push_rel_context forall_let env in
+let core_tactic call_solver rt ro ra rf env sigma concl =
let a, b = get_arguments concl in
let (body_cast, body_nocast, cuts) =
if ((Term.eq_constr b (Lazy.force ctrue)) || (Term.eq_constr b (Lazy.force cfalse))) then
@@ -386,16 +384,17 @@ let tactic call_solver rt ro ra rf env sigma t =
let max_id_confl = make_proof call_solver rt ro rf l in
build_body_eq rt ro ra rf (Form.to_coq l1) (Form.to_coq l2) (Form.to_coq l) max_id_confl in
- let compose_lam_assum forall_let body =
- List.fold_left (fun t rd -> Term.mkLambda_or_LetIn rd t) body forall_let in
- let res_cast = compose_lam_assum forall_let body_cast in
- let res_nocast = compose_lam_assum forall_let body_nocast in
-
let cuts = (Btype.get_cuts rt)@cuts in
List.fold_right (fun (eqn, eqt) tac ->
Structures.tclTHENLAST (Structures.assert_before (Names.Name eqn) eqt) tac
) cuts
(Structures.tclTHEN
- (Structures.set_evars_tac res_nocast)
- (Structures.vm_cast_no_check res_cast))
+ (Structures.set_evars_tac body_nocast)
+ (Structures.vm_cast_no_check body_cast))
+
+
+let tactic call_solver rt ro ra rf =
+ Structures.tclTHEN
+ Tactics.intros
+ (Structures.mk_tactic (core_tactic call_solver rt ro ra rf))
diff --git a/src/verit/verit.ml b/src/verit/verit.ml
index 48ae312..e7ad9b1 100644
--- a/src/verit/verit.ml
+++ b/src/verit/verit.ml
@@ -149,10 +149,10 @@ let call_verit rt ro fl root =
| VeritSyntax.Sat -> Structures.error "veriT can't prove this"
-let tactic env sigma t =
+let tactic () =
clear_all ();
let rt = Btype.create () in
let ro = Op.create () in
let ra = VeritSyntax.ra in
let rf = VeritSyntax.rf in
- SmtCommands.tactic call_verit rt ro ra rf env sigma t
+ SmtCommands.tactic call_verit rt ro ra rf
diff --git a/src/versions/standard/smtcoq_plugin_standard.ml4 b/src/versions/standard/smtcoq_plugin_standard.ml4
index b714029..6ae3545 100644
--- a/src/versions/standard/smtcoq_plugin_standard.ml4
+++ b/src/versions/standard/smtcoq_plugin_standard.ml4
@@ -50,9 +50,9 @@ END
TACTIC EXTEND Tactic_zchaff
-| [ "zchaff" ] -> [ Structures.mk_tactic Zchaff.tactic ]
+| [ "zchaff" ] -> [ Zchaff.tactic () ]
END
TACTIC EXTEND Tactic_verit
-| [ "verit" ] -> [ Structures.mk_tactic Verit.tactic ]
+| [ "verit" ] -> [ Verit.tactic () ]
END
diff --git a/src/zchaff/zchaff.ml b/src/zchaff/zchaff.ml
index bd656aa..106c0b5 100644
--- a/src/zchaff/zchaff.ml
+++ b/src/zchaff/zchaff.ml
@@ -514,7 +514,7 @@ let make_proof pform_tbl atom_tbl env reify_form l =
(* The whole tactic *)
-let tactic env sigma t =
+let core_tactic env sigma t =
SmtTrace.clear ();
let (forall_let, concl) = Term.decompose_prod_assum t in
@@ -548,3 +548,6 @@ let tactic env sigma t =
(Structures.tclTHEN
(Structures.set_evars_tac res_nocast)
(Structures.vm_cast_no_check res_cast))
+
+
+let tactic () = Structures.tclTHEN Tactics.intros (Structures.mk_tactic core_tactic)