aboutsummaryrefslogtreecommitdiffstats
path: root/src/versions/standard
diff options
context:
space:
mode:
authorckeller <ckeller@users.noreply.github.com>2019-01-28 23:19:12 +0100
committerGitHub <noreply@github.com>2019-01-28 23:19:12 +0100
commit7021c53d4ecf97c82ccebb6bb45f5305d8b482ea (patch)
treeba7537e1e813cabf9ee0d910f845c71fa5f446e7 /src/versions/standard
parent36548d6634864a131cc83ce21491c797163de305 (diff)
downloadsmtcoq-7021c53d4ecf97c82ccebb6bb45f5305d8b482ea.tar.gz
smtcoq-7021c53d4ecf97c82ccebb6bb45f5305d8b482ea.zip
Merge from LFSC (#26)
* Showing models as coq counter examples in tactic without constructing coq terms * also read models when calling cvc4 with a file (deactivated because cvc4 crashes) * Show counter examples with variables in the order they are quantified in the Coq goal * Circumvent issue with ocamldep * fix issue with dependencies * fix issue with dependencies * Translation and OCaml support for extract, zero_extend, sign_extend * Show run times of components * print time on stdout instead * Tests now work with new version (master) of CVC4 * fix small printing issue * look for date on mac os x * proof of valid_check_bbShl: some cases to prove. * full proof of "left shift checker". * full proof of "rigth shift checker". * Support translation of terms bvlshr, bvshl but LFSC rules do not exists at the moment Bug fix for bitvector extract (inverted arguments) * Typo * More modularity on the format of traces depending on the version of coq * More straightforward definitions in Int63Native_standard * Use the Int31 library with coq-8.5 * Use the most efficient operations of Int31 * Improved performance with coq-8.5 * Uniform treatment of sat and smt tactics * Hopefully solved the problem with universes for the tactic * Updated the installation instructions * Holes for unsupported bit blasting rules * Cherry-picking from smtcoq/smtcoq * bug fix hole for bitblast * Predefined arrays are not required anymore * fix issue with coq bbT and bitof construction from ocaml * bug fix in smtAtom for uninterpreted functions fix verit test file * fix issue with smtlib2 extract parsing * It looks like we still need the PArray function instances for some examples (see vmcai_bytes.smt2) * Solver specific reification: Each solver has a list of supported theories which is passed to Atom.of_coq, this function creates uninterpreted functions / sorts for unsupported features. * show counter-examples with const_farray instead of const for constant array definitions * Vernacular commands to debug checkers. Verit/Lfsc_Checker_Debug will always fail, reporting the first proof step of the certificate that failed be checked * Update INSTALL.md * show smtcoq proof when converting * (Hopefully) repared the universes problems * Corrected a bug with holes in proofs * scripts for tests: create a folder "work" under "lfsc/tests/", locate the benchmarks there. create a folder "results" under "lfsc/tests/work/" in which you'll find the results of ./cvc4tocoq. * make sure to give correct path for your benchs... * Checker for array extensionality modulo symmetry of equality * fix oversight with bitvectors larger than 63 bits * some printing functions for smt2 ast * handle smtlib2 files with more complicated equivalence with (= ... ) * revert: ./cvc4tocoq does not output lfsc proofs... * bug fix one input was ignored * Don't show verit translation of LFSC proof if environment variable DONTSHOWVERIT is set (e.g. put export DONTSHOWVERIT="" in your .bashrc or .bashprofile) * Also sort names of introduced variables when showing counter-example * input files for which SMTCoq retuns false. * input files for which SMTCoq retuns false. * use debug checker for debug file * More efficient debug checker * better approximate number of failing step of certificate in debug checker * fix mistake in ml4 * very first attempt to support goals in Prop * bvs: comparison predicates in Prop and their <-> proofs with the ones in bool farrays: equality predicate in Prop and its <-> proof with the one in bool. * unit, Bool, Z, Pos: comparison and equality predicates in Prop. * a typo fixed. * an example of array equality in Prop (converted into Bool by hand)... TODO: enhance the search space of cvc4 tactic. * first version of cvc4' tactic: "solves" the goals in Prop. WARNING: supports only bv and array goals and might not be complete TODO: add support for lia goals * cvc4' support for lia WARNING: might not be complete! * small fix in cvc4' and some variations of examples * small fix + support for goals in Bool and Bool = true + use of solve tactical WARNING: does not support UF and INT63 goals in Prop * cvc4': better arrangement * cvc4': Prop2Bool by context search... * cvc4': solve tactial added -> do not modify unsolved goals. * developer documentation for the smtcoq repo * cvc4': rudimentary support for uninterpreted function goals in Prop. * cvc4': support for goals with Leibniz equality... WARNING: necessary use of "Grab Existential Variables." to instantiate variable types for farrays! * cvc4': Z.lt adapted + better support from verit... * cvc4': support for Z.le, Z.ge, Z.gt. * Try arrays with default value (with a constructor for constant arrays), but extensionality is not provable * cvc4': support for equality over uninterpreted types * lfsc demo: goals in Coq's Prop. * lfsc demo: goals in Bool. * Fix issue with existential variables generated by prop2bool. - prop2bool tactic exported by SMTCoq - remove useless stuff * update usage and installation instructions * Update INSTALL.md * highlighting * the tactic: bool2prop. * clean up * the tactic smt: very first version. * smt: return unsolved goals in Prop. * Show when a certificate cannot be checked when running the tactic instead of at Qed * Tactic improvements - Handle negation/True/False in prop/bool conversions tactic. - Remove alias for farray (this caused problem for matching on this type in tactics). - Tactic `smt` that combines cvc4 and veriT. - return subgoals in prop * test change header * smt: support for negated goals + some reorganization. * conflicts resolved + some reorganization. * a way to solve the issue with ambiguous coercions. * reorganization. * small change. * another small change. * developer documentation of the tactics. * developer guide: some improvements. * developer guide: some more improvements. * developer guide: some more improvements. * developer guide: some more improvements. * pass correct environment for conversion + better error messages * cleaning * ReflectFacts added. * re-organizing developers' guide. * re-organizing developers' guide. * re-organizing developers' guide. * removing unused maps. * headers. * artifact readme getting started... * first attempt * second... * third... * 4th... * 5th... * 6th... * 7th... * 8th... * 9th... * 10th... * 11th... * 12th... * 13th... * 14th... * 15th... * 16th... * 17th... * Update artifact.md Use links to lfsc repository like in the paper * 18th... * 19th... * 20th... * 21st... * 22nd... * 23rd... * 24th... * 25th... * 26th... * 27th... * 28th... * Update artifact.md Small reorganization * minor edits * More minor edits * revised description of tactics * Final pass * typo * name changed: artifact-readme.md * file added... * passwd chaged... * links... * removal * performance statement... * typos... * the link to the artifact image updated... * suggestions by Guy... * aux files removed... * clean-up... * clean-up... * some small changes... * small fix... * additional information on newly created files after running cvc4tocoq script... * some small fix... * another small fix... * typo... * small fix... * another small fix... * fix... * link to the artifact image... * We do not want to force vm_cast for the Theorem commands * no_check variants of the tactics * TODO: a veriT test does not work anymore * Compiles with both versions of Coq * Test of the tactics in real conditions * Comment on this case study * an example for the FroCoS paper. * Fix smt tactic that doesn't return cvc4's subgoals * readme modifications * readme modifications 2 * small typo in readme. * small changes in readme. * small changes in readme. * typo in readme. * Sync with https://github.com/LFSC/smtcoq * Port to Coq 8.6 * README * README * INSTALL * Missing file * Yves' proposition for installation instructions * Updated link to CVC4 * Compiles again with native-coq * Compiles with both versions of Coq * Command to bypass typechecking when generating a zchaff theorem * Solved bug on cuts from Hole * Counter-models for uninterpreted sorts (improves issue #13) * OCaml version note (#15) * update .gitignore * needs OCaml 4.04.0 * Solving merge issues (under progress) * Make SmtBtype compile * Compilation of SmtForm under progress * Make SmtForm compile * Make SmtCertif compile * Make SmtTrace compile * Make SatAtom compile * Make smtAtom compile * Make CnfParser compile * Make Zchaff compile * Make VeritSyntax compile * Make VeritParser compile * Make lfsc/tosmtcoq compile * Make smtlib2_genconstr compile * smtCommand under progress * smtCommands and verit compile again * lfsc compiles * ml4 compiles * Everything compiles * All ZChaff unit tests and most verit unit tests (but taut5 and un_menteur) go through * Most LFSC tests ok; some fail due to the problem of verit; a few fail due to an error "Not_found" to investigate * Authors and headings * Compiles with native-coq * Typo
Diffstat (limited to 'src/versions/standard')
-rw-r--r--src/versions/standard/Array/PArray_standard.v9
-rw-r--r--src/versions/standard/Int63/Int63Axioms_standard.v11
-rw-r--r--src/versions/standard/Int63/Int63Native_standard.v11
-rw-r--r--src/versions/standard/Int63/Int63Op_standard.v11
-rw-r--r--src/versions/standard/Int63/Int63Properties_standard.v11
-rw-r--r--src/versions/standard/Int63/Int63_standard.v11
-rw-r--r--src/versions/standard/Make49
-rw-r--r--src/versions/standard/Makefile67
-rw-r--r--src/versions/standard/Structures_standard.v20
-rw-r--r--src/versions/standard/g_smtcoq_standard.ml442
-rw-r--r--src/versions/standard/smtcoq_plugin_standard.mlpack16
-rw-r--r--src/versions/standard/structures.ml28
-rw-r--r--src/versions/standard/structures.mli23
13 files changed, 227 insertions, 82 deletions
diff --git a/src/versions/standard/Array/PArray_standard.v b/src/versions/standard/Array/PArray_standard.v
index 4bf5e7a..e116339 100644
--- a/src/versions/standard/Array/PArray_standard.v
+++ b/src/versions/standard/Array/PArray_standard.v
@@ -1,14 +1,9 @@
(**************************************************************************)
(* *)
(* SMTCoq *)
-(* Copyright (C) 2011 - 2016 *)
+(* Copyright (C) 2011 - 2019 *)
(* *)
-(* Chantal Keller *)
-(* *)
-(* from the PArray library of native-coq *)
-(* by Benjamin Gregoire and Laurent Thery *)
-(* *)
-(* Inria - École Polytechnique - Université Paris-Sud *)
+(* See file "AUTHORS" for the list of authors *)
(* *)
(* This file is distributed under the terms of the CeCILL-C licence *)
(* *)
diff --git a/src/versions/standard/Int63/Int63Axioms_standard.v b/src/versions/standard/Int63/Int63Axioms_standard.v
index bbc353a..d4e45fc 100644
--- a/src/versions/standard/Int63/Int63Axioms_standard.v
+++ b/src/versions/standard/Int63/Int63Axioms_standard.v
@@ -1,16 +1,9 @@
(**************************************************************************)
(* *)
(* SMTCoq *)
-(* Copyright (C) 2011 - 2016 *)
+(* Copyright (C) 2011 - 2019 *)
(* *)
-(* Chantal Keller *)
-(* *)
-(* from the Int31 library *)
-(* by Arnaud Spiwack and Pierre Letouzey *)
-(* and the Int63 library of native-coq *)
-(* by Benjamin Gregoire and Laurent Thery *)
-(* *)
-(* Inria - École Polytechnique - Université Paris-Sud *)
+(* See file "AUTHORS" for the list of authors *)
(* *)
(* This file is distributed under the terms of the CeCILL-C licence *)
(* *)
diff --git a/src/versions/standard/Int63/Int63Native_standard.v b/src/versions/standard/Int63/Int63Native_standard.v
index 9e5058a..a5a931b 100644
--- a/src/versions/standard/Int63/Int63Native_standard.v
+++ b/src/versions/standard/Int63/Int63Native_standard.v
@@ -1,16 +1,9 @@
(**************************************************************************)
(* *)
(* SMTCoq *)
-(* Copyright (C) 2011 - 2016 *)
+(* Copyright (C) 2011 - 2019 *)
(* *)
-(* Chantal Keller *)
-(* *)
-(* from the Int31 library *)
-(* by Arnaud Spiwack and Pierre Letouzey *)
-(* and the Int63 library of native-coq *)
-(* by Benjamin Gregoire and Laurent Thery *)
-(* *)
-(* Inria - École Polytechnique - Université Paris-Sud *)
+(* See file "AUTHORS" for the list of authors *)
(* *)
(* This file is distributed under the terms of the CeCILL-C licence *)
(* *)
diff --git a/src/versions/standard/Int63/Int63Op_standard.v b/src/versions/standard/Int63/Int63Op_standard.v
index d0df921..85ea0c7 100644
--- a/src/versions/standard/Int63/Int63Op_standard.v
+++ b/src/versions/standard/Int63/Int63Op_standard.v
@@ -1,16 +1,9 @@
(**************************************************************************)
(* *)
(* SMTCoq *)
-(* Copyright (C) 2011 - 2016 *)
+(* Copyright (C) 2011 - 2019 *)
(* *)
-(* Chantal Keller *)
-(* *)
-(* from the Int31 library *)
-(* by Arnaud Spiwack and Pierre Letouzey *)
-(* and the Int63 library of native-coq *)
-(* by Benjamin Gregoire and Laurent Thery *)
-(* *)
-(* Inria - École Polytechnique - Université Paris-Sud *)
+(* See file "AUTHORS" for the list of authors *)
(* *)
(* This file is distributed under the terms of the CeCILL-C licence *)
(* *)
diff --git a/src/versions/standard/Int63/Int63Properties_standard.v b/src/versions/standard/Int63/Int63Properties_standard.v
index 9b9649f..cb1e1f5 100644
--- a/src/versions/standard/Int63/Int63Properties_standard.v
+++ b/src/versions/standard/Int63/Int63Properties_standard.v
@@ -1,16 +1,9 @@
(**************************************************************************)
(* *)
(* SMTCoq *)
-(* Copyright (C) 2011 - 2016 *)
+(* Copyright (C) 2011 - 2019 *)
(* *)
-(* Chantal Keller *)
-(* *)
-(* from the Int31 library *)
-(* by Arnaud Spiwack and Pierre Letouzey *)
-(* and the Int63 library of native-coq *)
-(* by Benjamin Gregoire and Laurent Thery *)
-(* *)
-(* Inria - École Polytechnique - Université Paris-Sud *)
+(* See file "AUTHORS" for the list of authors *)
(* *)
(* This file is distributed under the terms of the CeCILL-C licence *)
(* *)
diff --git a/src/versions/standard/Int63/Int63_standard.v b/src/versions/standard/Int63/Int63_standard.v
index 85ee8b7..59c6419 100644
--- a/src/versions/standard/Int63/Int63_standard.v
+++ b/src/versions/standard/Int63/Int63_standard.v
@@ -1,16 +1,9 @@
(**************************************************************************)
(* *)
(* SMTCoq *)
-(* Copyright (C) 2011 - 2016 *)
+(* Copyright (C) 2011 - 2019 *)
(* *)
-(* Chantal Keller *)
-(* *)
-(* from the Int31 library *)
-(* by Arnaud Spiwack and Pierre Letouzey *)
-(* and the Int63 library of native-coq *)
-(* by Benjamin Gregoire and Laurent Thery *)
-(* *)
-(* Inria - École Polytechnique - Université Paris-Sud *)
+(* See file "AUTHORS" for the list of authors *)
(* *)
(* This file is distributed under the terms of the CeCILL-C licence *)
(* *)
diff --git a/src/versions/standard/Make b/src/versions/standard/Make
index b674ce9..ee7f119 100644
--- a/src/versions/standard/Make
+++ b/src/versions/standard/Make
@@ -12,19 +12,24 @@
## In the Makefile : ##
## 1) Suppress the "Makefile" target ##
## 2) Change the "all" target: ##
-## remove the "test", "ztest", "vtest" and "./" dependencies ##
+## remove the "test", "ztest", "vtest", "lfsctest" and "./" ##
+## dependencies ##
## 3) Change the "install" and "clean" targets: ##
## Suppress the "+" lines ##
## 4) Add to the "clean" target: ##
-## - rm -f ../unit-tests/*.vo ../unit-tests/*.zlog ../unit-tests/*.vtlog verit/veritParser.mli verit/veritParser.ml verit/veritLexer.ml smtlib2/smtlib2_parse.mli smtlib2/smtlib2_parse.ml smtlib2/smtlib2_lex.ml ##
+## - rm -f ../unit-tests/*.vo ../unit-tests/*.zlog ../unit-tests/*.vtlog verit/veritParser.mli verit/veritParser.ml verit/veritLexer.ml smtlib2/smtlib2_parse.mli smtlib2/smtlib2_parse.ml smtlib2/smtlib2_lex.ml smtlib2/sExprParser.mli smtlib2/sExprParser.ml smtlib2/sExprLexer.ml ##
########################################################################
-R . SMTCoq
-I .
+-I bva
+-I classes
+-I array
-I cnf
-I euf
+-I lfsc
-I lia
-I smtlib2
-I trace
@@ -39,10 +44,11 @@
-extra "test" "" "cd ../unit-tests; make" ""
-extra "ztest" "" "cd ../unit-tests; make zchaff"
-extra "vtest" "" "cd ../unit-tests; make verit"
+-extra "lfsctest" "" "cd ../unit-tests; make lfsc"
-extra "%.ml" "%.mll" "$(CAMLLEX) $<"
-extra "%.ml %.mli" "%.mly" "$(CAMLYACC) $<"
--extra-phony "smtcoq_plugin.mlpack.d" "verit/veritParser.ml verit/veritLexer.ml smtlib2/smtlib2_parse.ml smtlib2/smtlib2_lex.ml" ""
+-extra-phony "smtcoq_plugin.mlpack.d" "verit/veritParser.ml verit/veritLexer.ml smtlib2/smtlib2_parse.ml smtlib2/smtlib2_lex.ml smtlib2/sExprParser.ml smtlib2/sExprLexer.ml lfsc/lfscParser.ml lfsc/lfscLexer.ml" ""
CAMLLEX = $(CAMLBIN)ocamllex
CAMLYACC = $(CAMLBIN)ocamlyacc
@@ -58,6 +64,15 @@ versions/standard/Structures.v
versions/standard/structures.ml
versions/standard/structures.mli
+bva/BVList.v
+bva/Bva_checker.v
+
+classes/SMT_classes.v
+classes/SMT_classes_instances.v
+
+array/FArray.v
+array/Array_checker.v
+
trace/coqTerms.ml
trace/coqTerms.mli
trace/smtBtype.ml
@@ -89,6 +104,13 @@ smtlib2/smtlib2_genConstr.ml
smtlib2/smtlib2_genConstr.mli
smtlib2/smtlib2_util.ml
smtlib2/smtlib2_util.mli
+smtlib2/sExpr.ml
+smtlib2/sExpr.mli
+smtlib2/smtlib2_solver.ml
+smtlib2/smtlib2_solver.mli
+smtlib2/sExprParser.ml
+smtlib2/sExprParser.mli
+smtlib2/sExprLexer.ml
verit/veritParser.ml
verit/veritParser.mli
@@ -99,6 +121,23 @@ verit/verit.mli
verit/veritSyntax.ml
verit/veritSyntax.mli
+lfsc/shashcons.mli
+lfsc/shashcons.ml
+lfsc/hstring.mli
+lfsc/hstring.ml
+lfsc/lfscParser.ml
+lfsc/lfscParser.mli
+lfsc/type.ml
+lfsc/ast.ml
+lfsc/ast.mli
+lfsc/translator_sig.mli
+lfsc/builtin.ml
+lfsc/tosmtcoq.ml
+lfsc/tosmtcoq.mli
+lfsc/converter.ml
+lfsc/lfsc.ml
+lfsc/lfscLexer.ml
+
zchaff/cnfParser.ml
zchaff/cnfParser.mli
zchaff/satParser.ml
@@ -124,6 +163,10 @@ spl/Operators.v
Conversion_tactics.v
Misc.v
SMTCoq.v
+ReflectFacts.v
+PropToBool.v
+BoolToProp.v
+Tactics.v
SMT_terms.v
State.v
Trace.v
diff --git a/src/versions/standard/Makefile b/src/versions/standard/Makefile
index 0225e3c..f71b0c8 100644
--- a/src/versions/standard/Makefile
+++ b/src/versions/standard/Makefile
@@ -2,7 +2,7 @@
## v # The Coq Proof Assistant ##
## <O___,, # INRIA - CNRS - LIX - LRI - PPS ##
## \VV/ # ##
-## // # Makefile automagically generated by coq_makefile V8.6 ##
+## // # Makefile automagically generated by coq_makefile V8.6.1 ##
#############################################################################
# WARNING
@@ -55,8 +55,12 @@ vo_to_obj = $(addsuffix .o,\
##########################
OCAMLLIBS?=-I "."\
+ -I "bva"\
+ -I "classes"\
+ -I "array"\
-I "cnf"\
-I "euf"\
+ -I "lfsc"\
-I "lia"\
-I "smtlib2"\
-I "trace"\
@@ -69,8 +73,12 @@ OCAMLLIBS?=-I "."\
COQLIBS?=\
-R "." SMTCoq\
-I "."\
+ -I "bva"\
+ -I "classes"\
+ -I "array"\
-I "cnf"\
-I "euf"\
+ -I "lfsc"\
-I "lia"\
-I "smtlib2"\
-I "trace"\
@@ -132,6 +140,7 @@ COQSRCLIBS?=-I "$(COQLIB)kernel" \
-I "$(COQLIB)/plugins/firstorder" \
-I "$(COQLIB)/plugins/fourier" \
-I "$(COQLIB)/plugins/funind" \
+ -I "$(COQLIB)/plugins/ltac" \
-I "$(COQLIB)/plugins/micromega" \
-I "$(COQLIB)/plugins/nsatz" \
-I "$(COQLIB)/plugins/omega" \
@@ -188,6 +197,12 @@ VFILES:=versions/standard/Int63/Int63.v\
versions/standard/Int63/Int63Properties.v\
versions/standard/Array/PArray.v\
versions/standard/Structures.v\
+ bva/BVList.v\
+ bva/Bva_checker.v\
+ classes/SMT_classes.v\
+ classes/SMT_classes_instances.v\
+ array/FArray.v\
+ array/Array_checker.v\
cnf/Cnf.v\
euf/Euf.v\
lia/Lia.v\
@@ -198,6 +213,10 @@ VFILES:=versions/standard/Int63/Int63.v\
Conversion_tactics.v\
Misc.v\
SMTCoq.v\
+ ReflectFacts.v\
+ PropToBool.v\
+ BoolToProp.v\
+ Tactics.v\
SMT_terms.v\
State.v\
Trace.v
@@ -249,10 +268,24 @@ MLFILES:=versions/standard/structures.ml\
smtlib2/smtlib2_ast.ml\
smtlib2/smtlib2_genConstr.ml\
smtlib2/smtlib2_util.ml\
+ smtlib2/sExpr.ml\
+ smtlib2/smtlib2_solver.ml\
+ smtlib2/sExprParser.ml\
+ smtlib2/sExprLexer.ml\
verit/veritParser.ml\
verit/veritLexer.ml\
verit/verit.ml\
verit/veritSyntax.ml\
+ lfsc/shashcons.ml\
+ lfsc/hstring.ml\
+ lfsc/lfscParser.ml\
+ lfsc/type.ml\
+ lfsc/ast.ml\
+ lfsc/builtin.ml\
+ lfsc/tosmtcoq.ml\
+ lfsc/converter.ml\
+ lfsc/lfsc.ml\
+ lfsc/lfscLexer.ml\
zchaff/cnfParser.ml\
zchaff/satParser.ml\
zchaff/zchaff.ml\
@@ -297,10 +330,19 @@ MLIFILES:=versions/standard/structures.mli\
smtlib2/smtlib2_ast.mli\
smtlib2/smtlib2_genConstr.mli\
smtlib2/smtlib2_util.mli\
+ smtlib2/sExpr.mli\
+ smtlib2/smtlib2_solver.mli\
+ smtlib2/sExprParser.mli\
verit/veritParser.mli\
verit/veritLexer.mli\
verit/verit.mli\
verit/veritSyntax.mli\
+ lfsc/shashcons.mli\
+ lfsc/hstring.mli\
+ lfsc/lfscParser.mli\
+ lfsc/ast.mli\
+ lfsc/translator_sig.mli\
+ lfsc/tosmtcoq.mli\
zchaff/cnfParser.mli\
zchaff/satParser.mli\
zchaff/zchaff.mli\
@@ -397,13 +439,16 @@ ztest:
vtest:
cd ../unit-tests; make verit
+lfsctest:
+ cd ../unit-tests; make lfsc
+
%.ml: %.mll
$(CAMLLEX) $<
%.ml %.mli: %.mly
$(CAMLYACC) $<
-smtcoq_plugin.mlpack.d: verit/veritParser.ml verit/veritLexer.ml smtlib2/smtlib2_parse.ml smtlib2/smtlib2_lex.ml
+smtcoq_plugin.mlpack.d: verit/veritParser.ml verit/veritLexer.ml smtlib2/smtlib2_parse.ml smtlib2/smtlib2_lex.ml smtlib2/sExprParser.ml smtlib2/sExprLexer.ml lfsc/lfscParser.ml lfsc/lfscLexer.ml
###################
# #
@@ -504,12 +549,20 @@ uninstall: uninstall_me.sh
@echo "B $(COQLIB)config" >> .merlin
@echo "B $(COQLIB)ltac" >> .merlin
@echo "B $(COQLIB)engine" >> .merlin
- @echo "B /home/valentin/smtcoq/smtcoq/src/versions/standard" >> .merlin
- @echo "S /home/valentin/smtcoq/smtcoq/src/versions/standard" >> .merlin
+ @echo "B /home/artemis/Recherche/github.com/ckeller/smtcoq-lfsc/src/versions/standard" >> .merlin
+ @echo "S /home/artemis/Recherche/github.com/ckeller/smtcoq-lfsc/src/versions/standard" >> .merlin
+ @echo "B bva" >> .merlin
+ @echo "S bva" >> .merlin
+ @echo "B classes" >> .merlin
+ @echo "S classes" >> .merlin
+ @echo "B array" >> .merlin
+ @echo "S array" >> .merlin
@echo "B cnf" >> .merlin
@echo "S cnf" >> .merlin
@echo "B euf" >> .merlin
@echo "S euf" >> .merlin
+ @echo "B lfsc" >> .merlin
+ @echo "S lfsc" >> .merlin
@echo "B lia" >> .merlin
@echo "S lia" >> .merlin
@echo "B smtlib2" >> .merlin
@@ -541,10 +594,11 @@ clean::
- rm -rf test
- rm -rf ztest
- rm -rf vtest
- - rm -f ../unit-tests/*.vo ../unit-tests/*.zlog ../unit-tests/*.vtlog verit/veritParser.mli verit/veritParser.ml verit/veritLexer.ml smtlib2/smtlib2_parse.mli smtlib2/smtlib2_parse.ml smtlib2/smtlib2_lex.ml
+ - rm -rf lfsctest
+ - rm -f ../unit-tests/*.vo ../unit-tests/*.zlog ../unit-tests/*.vtlog verit/veritParser.mli verit/veritParser.ml verit/veritLexer.ml smtlib2/smtlib2_parse.mli smtlib2/smtlib2_parse.ml smtlib2/smtlib2_lex.ml smtlib2/sExprParser.mli smtlib2/sExprParser.ml smtlib2/sExprLexer.ml
cleanall:: clean
- rm -f $(patsubst %.v,.%.aux,$(VFILES))
+ rm -f $(foreach f,$(VFILES:.v=),$(dir $(f)).$(notdir $(f)).aux)
archclean::
rm -f *.cmx *.o
@@ -558,6 +612,7 @@ printenv:
@echo 'COQLIBINSTALL = $(COQLIBINSTALL)'
@echo 'COQDOCINSTALL = $(COQDOCINSTALL)'
+
###################
# #
# Implicit rules. #
diff --git a/src/versions/standard/Structures_standard.v b/src/versions/standard/Structures_standard.v
index 04b396f..4894ebd 100644
--- a/src/versions/standard/Structures_standard.v
+++ b/src/versions/standard/Structures_standard.v
@@ -1,3 +1,15 @@
+(**************************************************************************)
+(* *)
+(* SMTCoq *)
+(* Copyright (C) 2011 - 2019 *)
+(* *)
+(* See file "AUTHORS" for the list of authors *)
+(* *)
+(* This file is distributed under the terms of the CeCILL-C licence *)
+(* *)
+(**************************************************************************)
+
+
Require Import Int63.
Require Import List.
@@ -7,6 +19,9 @@ Section Trace.
Definition trace (step:Type) := ((list step) * step)%type.
+ Definition trace_to_list {step:Type} (t:trace step) : list step :=
+ let (t, _) := t in t.
+
Definition trace_length {step:Type} (t:trace step) : int :=
let (t,_) := t in
List.fold_left (fun i _ => (i+1)%int) t 0%int.
@@ -33,3 +48,8 @@ Section Trace.
Admitted.
End Trace.
+
+
+Definition nat_eqb := Nat.eqb.
+Definition nat_eqb_eq := Nat.eqb_eq.
+Definition nat_eqb_refl := Nat.eqb_refl.
diff --git a/src/versions/standard/g_smtcoq_standard.ml4 b/src/versions/standard/g_smtcoq_standard.ml4
index b8ea279..2cc4415 100644
--- a/src/versions/standard/g_smtcoq_standard.ml4
+++ b/src/versions/standard/g_smtcoq_standard.ml4
@@ -1,13 +1,9 @@
(**************************************************************************)
(* *)
(* SMTCoq *)
-(* Copyright (C) 2011 - 2016 *)
+(* Copyright (C) 2011 - 2019 *)
(* *)
-(* Michaël Armand *)
-(* Benjamin Grégoire *)
-(* Chantal Keller *)
-(* *)
-(* Inria - École Polytechnique - Université Paris-Sud *)
+(* See file "AUTHORS" for the list of authors *)
(* *)
(* This file is distributed under the terms of the CeCILL-C licence *)
(* *)
@@ -46,15 +42,39 @@ VERNAC COMMAND EXTEND Vernac_verit CLASSIFIED AS QUERY
[
Verit.checker fsmt fproof
]
+| [ "Verit_Checker_Debug" string(fsmt) string(fproof) ] ->
+ [
+ Verit.checker_debug fsmt fproof
+ ]
| [ "Verit_Theorem" ident(name) string(fsmt) string(fproof) ] ->
[
Verit.theorem name fsmt fproof
]
END
+VERNAC COMMAND EXTEND Vernac_lfsc CLASSIFIED AS QUERY
+| [ "Parse_certif_lfsc"
+ ident(t_i) ident(t_func) ident(t_atom) ident(t_form) ident(root) ident(used_roots) ident(trace) string(fsmt) string(fproof) ] ->
+ [
+ Lfsc.parse_certif t_i t_func t_atom t_form root used_roots trace fsmt fproof
+ ]
+| [ "Lfsc_Checker" string(fsmt) string(fproof) ] ->
+ [
+ Lfsc.checker fsmt fproof
+ ]
+| [ "Lfsc_Checker_Debug" string(fsmt) string(fproof) ] ->
+ [
+ Lfsc.checker_debug fsmt fproof
+ ]
+| [ "Lfsc_Theorem" ident(name) string(fsmt) string(fproof) ] ->
+ [
+ Lfsc.theorem name fsmt fproof
+ ]
+END
TACTIC EXTEND Tactic_zchaff
-| [ "zchaff" ] -> [ Zchaff.tactic () ]
+| [ "zchaff_bool" ] -> [ Zchaff.tactic () ]
+| [ "zchaff_bool_no_check" ] -> [ Zchaff.tactic_no_check () ]
END
let lemmas_list = ref []
@@ -66,5 +86,11 @@ END
TACTIC EXTEND Tactic_verit
-| [ "verit_base" constr_list(lpl) ] -> [ Verit.tactic lpl !lemmas_list ]
+| [ "verit_bool_base" constr_list(lpl) ] -> [ Verit.tactic lpl !lemmas_list ]
+| [ "verit_bool_no_check_base" constr_list(lpl) ] -> [ Verit.tactic_no_check lpl !lemmas_list ]
+END
+
+TACTIC EXTEND Tactic_cvc4
+| [ "cvc4_bool" ] -> [ Lfsc.tactic () ]
+| [ "cvc4_bool_no_check" ] -> [ Lfsc.tactic_no_check () ]
END
diff --git a/src/versions/standard/smtcoq_plugin_standard.mlpack b/src/versions/standard/smtcoq_plugin_standard.mlpack
index b316040..68ce13a 100644
--- a/src/versions/standard/smtcoq_plugin_standard.mlpack
+++ b/src/versions/standard/smtcoq_plugin_standard.mlpack
@@ -19,6 +19,10 @@ Smtlib2_util
Smtlib2_ast
Smtlib2_parse
Smtlib2_lex
+SExpr
+SExprParser
+SExprLexer
+Smtlib2_solver
Lia
@@ -26,10 +30,22 @@ VeritSyntax
VeritParser
VeritLexer
+Shashcons
+Hstring
+Type
+Ast
+Builtin
+Tosmtcoq
+Converter
+LfscParser
+LfscLexer
+
Smtlib2_genConstr
SmtCommands
Verit
+Lfsc
+
G_smtcoq
diff --git a/src/versions/standard/structures.ml b/src/versions/standard/structures.ml
index be63a80..3dbcad2 100644
--- a/src/versions/standard/structures.ml
+++ b/src/versions/standard/structures.ml
@@ -1,13 +1,9 @@
(**************************************************************************)
(* *)
(* SMTCoq *)
-(* Copyright (C) 2011 - 2016 *)
+(* Copyright (C) 2011 - 2019 *)
(* *)
-(* Michaël Armand *)
-(* Benjamin Grégoire *)
-(* Chantal Keller *)
-(* *)
-(* Inria - École Polytechnique - Université Paris-Sud *)
+(* See file "AUTHORS" for the list of authors *)
(* *)
(* This file is distributed under the terms of the CeCILL-C licence *)
(* *)
@@ -140,17 +136,19 @@ type rel_decl = Context.Rel.Declaration.t
let destruct_rel_decl r = Context.Rel.Declaration.get_name r,
Context.Rel.Declaration.get_type r
-type constr_expr = Constrexpr.constr_expr
-
let interp_constr env sigma t = Constrintern.interp_constr env sigma t |> fst
-
+
let tclTHEN = Tacticals.New.tclTHEN
let tclTHENLAST = Tacticals.New.tclTHENLAST
let assert_before = Tactics.assert_before
+
+let vm_conv = Vconv.vm_conv
let vm_cast_no_check t = Tactics.vm_cast_no_check t
-(* let vm_cast_no_check t = Proofview.V82.tactic (Tactics.vm_cast_no_check t) *)
+
+(* Warning 40: this record of type Proofview.Goal.enter contains fields
+ that are not visible in the current scope: enter. *)
let mk_tactic tac =
- Proofview.Goal.nf_enter {enter = (fun gl ->
+ Proofview.Goal.nf_enter {Proofview.Goal.enter = (fun gl ->
let env = Proofview.Goal.env gl in
let sigma = Tacmach.New.project gl in
let t = Proofview.Goal.concl gl in
@@ -167,6 +165,9 @@ let constrextern_extern_constr =
let env = Global.env () in
Constrextern.extern_constr false env (Evd.from_env env)
+let get_rel_dec_name = function
+ | Context.Rel.Declaration.LocalAssum (n, _) | Context.Rel.Declaration.LocalDef (n, _, _) -> n
+
(* New packaging of plugins *)
module Micromega_plugin_Certificate = Micromega_plugin.Certificate
@@ -174,5 +175,8 @@ module Micromega_plugin_Coq_micromega = Micromega_plugin.Coq_micromega
module Micromega_plugin_Micromega = Micromega_plugin.Micromega
module Micromega_plugin_Mutils = Micromega_plugin.Mutils
-(* Type of coq tactics *)
+
+(* Types in the Coq source code *)
type tactic = unit Proofview.tactic
+type names_id = Names.Id.t
+type constr_expr = Constrexpr.constr_expr
diff --git a/src/versions/standard/structures.mli b/src/versions/standard/structures.mli
index 600503d..f7c4f91 100644
--- a/src/versions/standard/structures.mli
+++ b/src/versions/standard/structures.mli
@@ -1,3 +1,15 @@
+(**************************************************************************)
+(* *)
+(* SMTCoq *)
+(* Copyright (C) 2011 - 2019 *)
+(* *)
+(* See file "AUTHORS" for the list of authors *)
+(* *)
+(* This file is distributed under the terms of the CeCILL-C licence *)
+(* *)
+(**************************************************************************)
+
+
val mklApp : Term.constr Lazy.t -> Term.constr array -> Term.constr
val gen_constant : string list list -> string -> Term.constr lazy_t
val int63_modules : string list list
@@ -39,13 +51,13 @@ val pr_constr_env : Environ.env -> Term.constr -> Pp.std_ppcmds
val lift : int -> Constr.constr -> Constr.constr
type rel_decl = Context.Rel.Declaration.t
val destruct_rel_decl : rel_decl -> Names.Name.t * Constr.t
-type constr_expr = Constrexpr.constr_expr
val interp_constr : Environ.env -> Evd.evar_map -> Constrexpr.constr_expr -> Term.constr
val tclTHEN :
unit Proofview.tactic -> unit Proofview.tactic -> unit Proofview.tactic
val tclTHENLAST :
unit Proofview.tactic -> unit Proofview.tactic -> unit Proofview.tactic
val assert_before : Names.Name.t -> Term.types -> unit Proofview.tactic
+val vm_conv : Reduction.conv_pb -> Term.types Reduction.kernel_conversion_function
val vm_cast_no_check : Term.constr -> unit Proofview.tactic
val mk_tactic :
(Environ.env -> Evd.evar_map -> Term.constr -> unit Proofview.tactic) ->
@@ -53,8 +65,17 @@ val mk_tactic :
val set_evars_tac : Term.constr -> unit Proofview.tactic
val ppconstr_lsimpleconstr : Ppconstr.precedence
val constrextern_extern_constr : Term.constr -> Constrexpr.constr_expr
+val get_rel_dec_name : Context.Rel.Declaration.t -> Names.Name.t
+
+
+(* New packaging of plugins *)
module Micromega_plugin_Certificate = Micromega_plugin.Certificate
module Micromega_plugin_Coq_micromega = Micromega_plugin.Coq_micromega
module Micromega_plugin_Micromega = Micromega_plugin.Micromega
module Micromega_plugin_Mutils = Micromega_plugin.Mutils
+
+
+(* Types in the Coq source code *)
type tactic = unit Proofview.tactic
+type names_id = Names.Id.t
+type constr_expr = Constrexpr.constr_expr