History log of /seL4-l4v-master/l4v/isabelle/src/HOL/Tools/SMT/smt_solver.ML
Revision Date Author Comments
# 21fef7de 07-Jun-2019 blanchet <none@none>

handle timeouts gracefully in 'smt' proof method (patch due to Mathias Fleury)


# 0c47a543 27-May-2019 wenzelm <none@none>

more direct invocation of Windows exe: avoid extra bash, cygpath, exec;


# ac21784c 24-May-2019 wenzelm <none@none>

avoid extra subprocess -- potentially more robust on Cygwin;


# a4bab154 04-Jan-2019 wenzelm <none@none>

isabelle update -u control_cartouches;


# 7110473f 30-Oct-2018 fleury <Mathias.Fleury@mpi-inf.mpg.de>

add reconstruction by veriT in method smt


# ea4853ba 28-Jan-2018 wenzelm <none@none>

clarified take/drop/chop prefix/suffix;


# 766d11c5 22-Sep-2017 blanchet <none@none>

real oracle


# 61f649e7 18-Oct-2016 wenzelm <none@none>

clarified modules;


# af6f1e98 19-May-2016 fleury <Mathias.Fleury@mpi-inf.mpg.de>

better handling of veriT's 'unknown' status


# 64ed947a 07-Mar-2016 wenzelm <none@none>

File.bash_string operations in ML as in Scala -- exclusively for GNU bash, not perl and not user output;
clarified treatment of whitespace in some bash scripts;


# 2759308d 25-Sep-2015 wenzelm <none@none>

moved remaining display.ML to more_thm.ML;


# 3e156fd9 27-Aug-2015 blanchet <none@none>

generate proper error instead of exception if goal cannot be atomized


# 62ae9c62 18-Jul-2015 wenzelm <none@none>

prefer tactics with explicit context;


# a64ec6cd 08-Jul-2015 wenzelm <none@none>

clarified context;


# 99c7a9c0 08-Jul-2015 wenzelm <none@none>

Variable.focus etc.: optional bindings provided by user;
Subgoal.focus command: more careful treatment of user-provided bindings;


# 904e2f2f 06-Mar-2015 wenzelm <none@none>

clarified context;


# 740a17d4 06-Mar-2015 wenzelm <none@none>

Thm.cterm_of and Thm.ctyp_of operate on local context;


# f6662567 25-Apr-2015 blanchet <none@none>

made CVC4 support work also without unsat cores


# ac75f5e7 27-Aug-2014 blanchet <none@none>

renamed new SMT module from 'SMT2' to 'SMT'

--HG--
rename : src/HOL/SMT2.thy => src/HOL/SMT.thy
rename : src/HOL/Tools/SMT2/smt2_builtin.ML => src/HOL/Tools/SMT/smt_builtin.ML
rename : src/HOL/Tools/SMT2/smt2_config.ML => src/HOL/Tools/SMT/smt_config.ML
rename : src/HOL/Tools/SMT2/smt2_datatypes.ML => src/HOL/Tools/SMT/smt_datatypes.ML
rename : src/HOL/Tools/SMT2/smt2_failure.ML => src/HOL/Tools/SMT/smt_failure.ML
rename : src/HOL/Tools/SMT2/smt2_normalize.ML => src/HOL/Tools/SMT/smt_normalize.ML
rename : src/HOL/Tools/SMT2/smt2_real.ML => src/HOL/Tools/SMT/smt_real.ML
rename : src/HOL/Tools/SMT2/smt2_solver.ML => src/HOL/Tools/SMT/smt_solver.ML
rename : src/HOL/Tools/SMT2/smt2_systems.ML => src/HOL/Tools/SMT/smt_systems.ML
rename : src/HOL/Tools/SMT2/smt2_translate.ML => src/HOL/Tools/SMT/smt_translate.ML
rename : src/HOL/Tools/SMT2/smt2_util.ML => src/HOL/Tools/SMT/smt_util.ML
rename : src/HOL/Tools/SMT2/smtlib2.ML => src/HOL/Tools/SMT/smtlib.ML
rename : src/HOL/Tools/SMT2/smtlib2_interface.ML => src/HOL/Tools/SMT/smtlib_interface.ML
rename : src/HOL/Tools/SMT2/smtlib2_isar.ML => src/HOL/Tools/SMT/smtlib_isar.ML
rename : src/HOL/Tools/SMT2/smtlib2_proof.ML => src/HOL/Tools/SMT/smtlib_proof.ML
rename : src/HOL/Tools/SMT2/verit_isar.ML => src/HOL/Tools/SMT/verit_isar.ML
rename : src/HOL/Tools/SMT2/verit_proof.ML => src/HOL/Tools/SMT/verit_proof.ML
rename : src/HOL/Tools/SMT2/verit_proof_parse.ML => src/HOL/Tools/SMT/verit_proof_parse.ML
rename : src/HOL/Tools/SMT2/z3_new_interface.ML => src/HOL/Tools/SMT/z3_interface.ML
rename : src/HOL/Tools/SMT2/z3_new_isar.ML => src/HOL/Tools/SMT/z3_isar.ML
rename : src/HOL/Tools/SMT2/z3_new_proof.ML => src/HOL/Tools/SMT/z3_proof.ML
rename : src/HOL/Tools/SMT2/z3_new_real.ML => src/HOL/Tools/SMT/z3_real.ML
rename : src/HOL/Tools/SMT2/z3_new_replay.ML => src/HOL/Tools/SMT/z3_replay.ML
rename : src/HOL/Tools/SMT2/z3_new_replay_literals.ML => src/HOL/Tools/SMT/z3_replay_literals.ML
rename : src/HOL/Tools/SMT2/z3_new_replay_methods.ML => src/HOL/Tools/SMT/z3_replay_methods.ML
rename : src/HOL/Tools/SMT2/z3_new_replay_rules.ML => src/HOL/Tools/SMT/z3_replay_rules.ML
rename : src/HOL/Tools/SMT2/z3_new_replay_util.ML => src/HOL/Tools/SMT/z3_replay_util.ML
rename : src/HOL/Tools/Sledgehammer/sledgehammer_prover_smt2.ML => src/HOL/Tools/Sledgehammer/sledgehammer_prover_smt.ML
rename : src/HOL/Word/Tools/smt2_word.ML => src/HOL/Word/Tools/smt_word.ML


# 9bc2d09b 02-Oct-2013 blanchet <none@none>

make SMT integration slacker w.r.t. bad apples (facts)


# 1d64bfe5 27-Jul-2013 wenzelm <none@none>

standardized aliases;


# 900d2734 11-Dec-2012 blanchet <none@none>

made MaSh evaluation driver work with SMT solvers


# fe427b22 23-Aug-2012 wenzelm <none@none>

prefer classic take_prefix/take_suffix over chop_while (cf. 0659e84bdc5f);


# 99ba7c52 26-Jul-2012 blanchet <none@none>

Z3 prints so many warnings that the very informative abnormal termination exception hardly ever gets raised -- better be more aggressive here


# 0534011e 26-Jul-2012 blanchet <none@none>

Sledgehammer already has its own ways of reporting and recovering from crashes in external provers -- no need to additionally print scores of warnings (cf. 4b0daca2bf88)


# 3abd2838 30-May-2012 boehmes <none@none>

introduced option "z3_with_extensions" to control whether Z3's support for nonlinear arithmetic and datatypes should be enabled (including potential proof reconstruction failures)


# 429ef7fe 23-Apr-2012 wenzelm <none@none>

more standard method setup;


# b24a20db 27-Mar-2012 blanchet <none@none>

renamed "smt_fixed" to "smt_read_only_certificates"


# accf0d7e 01-Mar-2012 boehmes <none@none>

fine-tune intended failure of smt method when the chosen SMT solver is not installed: restrict failures to true invocations of the SMT solver and don't fail for runs based on certificates


# b173aaef 29-Feb-2012 boehmes <none@none>

SMT fails if the chosen SMT solver is not installed


# 0d27b506 15-Feb-2012 wenzelm <none@none>

renamed Thm.capply to Thm.apply, and Thm.cabs to Thm.lambda in conformance with similar operations in structure Term and Logic;


# 3fede354 14-Feb-2012 wenzelm <none@none>

normalized aliases;


# 247df2ed 02-May-2011 wenzelm <none@none>

added Attrib.setup_config_XXX conveniences, with implicit setup of the background theory;
proper name bindings;


# eda9baa8 08-Apr-2011 boehmes <none@none>

check if negating the goal is possible (avoids CTERM exception for Pure propositions)


# 436f6b2f 14-Feb-2011 boehmes <none@none>

more explicit errors to inform users about problems related to SMT solvers;
fall back to remote SMT solver (if local version does not exist);
extend the Z3 proof parser to accommodate for slight changes introduced by Z3 2.18


# 560edaea 17-Jan-2011 boehmes <none@none>

made Z3 the default SMT solver again


# 21aeb7a0 10-Jan-2011 boehmes <none@none>

dropped superfluous error message


# ef2d6500 08-Jan-2011 wenzelm <none@none>

misc tuning and comments based on review of Theory_Data, Proof_Data, Generic_Data usage;


# 5dd62dd8 06-Jan-2011 boehmes <none@none>

differentiate between local and remote SMT solvers (e.g., "z3" vs. "remote_z3");
turned individual SMT solvers into components;
made CVC3 the default SMT solver (Z3 is licensed as "non-commercial only");
tuned smt_filter interface


# 06e58f50 20-Dec-2010 boehmes <none@none>

avoid ML structure aliases (especially single-letter abbreviations)


# 9e36898a 20-Dec-2010 boehmes <none@none>

perform monomorphization during normalization: schematic numerals might be monomorphized into built-in numerals and then numeral normalization is required


# 95a93c76 17-Dec-2010 blanchet <none@none>

run the SMT relevance filter only once, then run the normalization/monomorphization code once _per class_ of SMT solvers


# f14d037c 16-Dec-2010 blanchet <none@none>

make timeout part of the SMT filter's tail


# 6ee04e96 16-Dec-2010 blanchet <none@none>

split "smt_filter" into head and tail


# 5030af88 15-Dec-2010 boehmes <none@none>

fixed proof reconstruction for lambda-lifted problems (which broke when the lambda-lifting code was changed to operate on terms instead of on theorems)


# 58e355b7 15-Dec-2010 boehmes <none@none>

re-implemented eta-expansion, lambda-lifting, and explicit application on terms (exploiting the control over the term structure);
abolished SMT interface concept in favor of solver classes (now also the translation configuration is stored in the context);
proof reconstruction is now expected to return a theorem stating False (and hence needs to discharge all hypothetical definitions);
built-in functions carry additionally their arity and their most general type;
slightly generalized the definition of fun_app


# d15f02bb 15-Dec-2010 boehmes <none@none>

re-ordered SMT normalization code (eta-normalization, lambda abstractions and partial functions will be dealt with on the term level);
added simple trigger inference mechanism;
added syntactic checks for triggers and quantifier weights;
factored out the normalization of special quantifiers (used to be in the eta-normalization part);
normalization now unfolds abs/min/max (not SMT-LIB-specific);
rules for pairs and function update are not anymore added automatically to the problem;
more aggressive rewriting of natural number operations into integer operations (minimizes the number of remaining nat-int coercions);
normalizations are now managed in a class-based manner (similar to built-in symbols)


# 4b0c0402 15-Dec-2010 boehmes <none@none>

moved SMT classes and dictionary functions to SMT_Utils


# 681fd023 15-Dec-2010 boehmes <none@none>

added option to modify the random seed of SMT solvers


# 72356766 07-Dec-2010 boehmes <none@none>

tuned


# 1e323d7a 07-Dec-2010 boehmes <none@none>

centralized handling of built-in types and constants;
also store types and constants which are rewritten during preprocessing;
interfaces are identified by classes (supporting inheritance, at least on the level of built-in symbols);
removed term_eq in favor of type replacements: term-level occurrences of type bool are replaced by type term_bool (only for the translation)


# 6c627839 07-Dec-2010 blanchet <none@none>

make SML/NJ happy


# 47bae790 06-Dec-2010 blanchet <none@none>

have SMT solvers report the number of facts that they should have by default in Sledgehammer -- the information might not seem to belong there but it also belongs nowhere else, for how is Sledgehammer to know how different solvers deal with hundreds of facts?


# 1ff61e6a 06-Dec-2010 blanchet <none@none>

return all facts for CVC3 and Yices, since there is no proof parsing / unsat core extraction


# 49749efb 03-Dec-2010 blanchet <none@none>

export more information about available SMT solvers


# 2f10c56a 30-Nov-2010 boehmes <none@none>

split up Z3 models into constraints on free variables and constant definitions;
reduce Z3 models by replacing unknowns with free variables and constants from the goal;
remove occurrences of the hidden constant fun_app from Z3 models


# 2c3aca6a 23-Nov-2010 blanchet <none@none>

try Metis to reconstruct SMT proofs, to increase success rate and reduce dependency on (often remote) SMT solvers or certificates


# c982ee42 17-Nov-2010 boehmes <none@none>

use the const antiquotation for constants (this checks that the constant is declared, whereas the more general term antiquotation treats undeclared names as free variable)


# 981e2ce7 17-Nov-2010 boehmes <none@none>

keep input and output files used to communicate with the SMT solver (for debugging purposes mainly)


# f46b6402 15-Nov-2010 boehmes <none@none>

renamed SMT failure: Abnormal_Termination is indeed more appropriate than Solver_Crashed


# de8826a0 15-Nov-2010 boehmes <none@none>

honour timeouts which are not rounded to full seconds


# 6072a744 15-Nov-2010 boehmes <none@none>

trace more solver output before raising an exception due to a non-zero return code (avoids truncating potential counterexamples produced by Z3)


# d171fbc9 12-Nov-2010 boehmes <none@none>

check the return code of the SMT solver and raise an exception if the prover failed


# 4a31de38 12-Nov-2010 boehmes <none@none>

turned SMT counterexamples into verbose messages (they had been swallowed before, following the state of smt_trace -- which is off by default), because they might be useful for the user


# 05ce0736 07-Nov-2010 boehmes <none@none>

return the process return code along with the process outputs


# b1d1d667 07-Nov-2010 boehmes <none@none>

better modularization: moved SMT configuration options and diagnostics as well as SMT failure and exception into separate structures (both of which are loaded first and consequently are available to other SMT structures)


# b2be3b27 04-Nov-2010 boehmes <none@none>

simulate more closely the behaviour of the tactic


# bd2d290c 03-Nov-2010 boehmes <none@none>

standardize timeout value based on reals


# dc6b08bb 29-Oct-2010 boehmes <none@none>

optionally drop assumptions which cannot be preprocessed


# 6b4e2e42 29-Oct-2010 boehmes <none@none>

clarified error message


# 2f8f8f15 26-Oct-2010 boehmes <none@none>

use proper context


# 352dcecd 26-Oct-2010 boehmes <none@none>

trace assumptions before giving them to the SMT solver


# fbc7a0f9 26-Oct-2010 boehmes <none@none>

capture out-of-memory warnings of Z3 and turn them into proper exceptions; be more precise about SMT solver run-time: return NONE instead of ~1


# 1d364224 26-Oct-2010 boehmes <none@none>

honor choice of either local or remote SMT solver only for smt_filter and keep default behaviour for the SMT tactic; omit messages when running smt_filter


# d9477cce 26-Oct-2010 boehmes <none@none>

optionally force the remote version of an SMT solver to be executed


# 75c333b3 26-Oct-2010 boehmes <none@none>

tuned


# f40a829e 26-Oct-2010 boehmes <none@none>

added a mode to only filter assumptions used in a Z3 proof (in which no proof reconstruction is performed)


# 393b826c 26-Oct-2010 boehmes <none@none>

joined setup of SMT solvers in one place; turned Z3-specific options into SMT options (renamed configuration options from z3_* to smt_*); more detailed SMT exception; improved SMT filter interface


# d3020384 26-Oct-2010 boehmes <none@none>

keep track of theorems initially given to SMT (even if they are rewritten); provide interface to filter theorems necessary for SMT proofs


# ba1e1620 01-Oct-2010 haftmann <none@none>

chop_while replace drop_while and take_while


# 3e1f51b9 30-Sep-2010 haftmann <none@none>

take_while, drop_while


# 191468cb 17-Sep-2010 boehmes <none@none>

add full support for datatypes to the SMT interface (only used by Z3 in oracle mode so far); added store to keep track of datatype selector functions


# fcf767bf 27-Aug-2010 wenzelm <none@none>

more antiquotations;


# 7a6b0131 17-May-2010 wenzelm <none@none>

prefer structure Keyword, Parse, Parse_Spec, Outer_Syntax;
eliminated old-style structure aliases K = Keyword, P = Parse;


# 24f3e0b8 15-May-2010 blanchet <none@none>

make SML/NJ happy


# 5d3ecda1 12-May-2010 boehmes <none@none>

layered SMT setup, adapted SMT clients, added further tests, made Z3 proof abstraction configurable


# 8cfb9a3f 12-May-2010 boehmes <none@none>

integrated SMT into the HOL image