summaryrefslogtreecommitdiff
path: root/src/proof
AgeCommit message (Collapse)Author
2021-10-29Minor cleanup of proof messages (#7494)Andrew Reynolds
Also deletes unused code encountered in TheoryArrays while investigating cyclic proofs.
2021-10-29Add PfRule ARITH_POLY_NORM (#7501)Andrew Reynolds
This is a coarse grained proof rule for showing that two terms are equivalent up to polynomial normalization. It will be used as a hard coded case in proof reconstruction with DSL granularity.
2021-10-29Improvements for LFSC proof conversion (#7524)Andrew Reynolds
Includes miscellaneous improvements and fixes to the LFSC proof conversion from proof-new in preparation for CI on master.
2021-10-26[proofs] Modularize check for whether a clause is singleton (#7497)Haniel Barbosa
Essentially moves the code for this check from the Alethe post-processor. A further PR will include a new use of this method.
2021-10-26Disable automatic symmetry in proofs of theory explanations (#7493)Andrew Reynolds
This avoids cyclic proofs in a rare case where theory explanations involve an equality and its symmetric form. This PR disables auto-symmetry on lazy proofs used for theory explanations, which is slightly less convenient but avoids potentials for cyclic proofs. Note this complication would not arise if the theory engine did not allow non-rewritten equalities to be propagated between theories. Fixes cvc5/cvc5-projects#311.
2021-10-26[proofs] Alethe: Translate Block of clause pattern rule (#7406)Lachnitt
Implementation of the translation of a number of rules that follow the clause pattern into the Alethe calculus. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-10-26[proofs] Alethe: Translate AND_INTRO rule (#7405)Lachnitt
Implementation of the translation of EQ_RESOLVE rules into the Alethe calculus. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-10-26[proofs] Alethe: Translate AND_ELIM rule (#7404)Lachnitt
Implementation of the translation of AND_ELIM rules into the Alethe calculus. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-10-26[proofs] Alethe: Translate CONTRA rule (#7403)Lachnitt
Implementation of the translation of CONTRA rules into the Alethe calculus. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-10-26[proofs] Alethe: Translate NOT_NOT_ELIM rule (#7402)Lachnitt
Implementation of the translation of NOT_NOT_ELIM rules into the Alethe calculus. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-10-25[proofs] Alethe: Translate MODUS_PONENS rule (#7401)Lachnitt
Implementation of the translation of MODUS_PONENS rules into the Alethe calculus. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-10-25[proofs] Alethe: Translate EQ_RESOLVE rule (#7400)Lachnitt
Implementation of the translation of EQ_RESOLVE rules into the Alethe calculus. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-10-25[proofs] Alethe: Translate SPLIT rule (#7399)Lachnitt
Implementation of the translation of SPLIT rules into the Alethe calculus. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-10-22Fix out-of-sync pruning in CDCAC proofs (#7470)Gereon Kremer
This PR resolves a subtle issue with CDCAC proofs. The CDCAC proof is maintained as a tree where (mostly) every node corresponds to an (infeasible) interval generated within the CDCAC method. We prune these intervals regularly to get rid of redundant intervals, which also sorts intervals. The pruning however relied on a stable ordering of both intervals and child nodes within the proof tree, as there was no easy way to map nodes back to intervals. This PR adds an objectId field to the proof tree nodes and assigns ids to the CDCAC intervals. This allows for a robust mapping between the two, even if the interval list is reordered. Fixes cvc5/cvc5-projects#313.
2021-10-22[proofs] Alethe: Translate FACTORING rule (#7398)Lachnitt
Implementation of the translation of FACTORING rules into the Alethe calculus. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-10-22[proofs] Alethe: Translate CHAIN_RESOLUTION rule (#7397)Lachnitt
Implementation of the translation of RESOLUTION and CHAIN_RESOLUTION rules into the Alethe calculus. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-10-20Eliminate last static calls to rewriter from smt layer (#7355)Andrew Reynolds
2021-10-20[proofs] Alethe: Documentation on Translation (#7394)Lachnitt
Provides background on the translation into the Alethe calculus that is common to all rules. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-10-11Rename SmtScope to SolverEngineScope. (#7284)Aina Niemetz
2021-10-07Finish the LFSC printer (#7285)Andrew Reynolds
This adds the remaining implementation of the LFSC printer. It also corrects a bug introduced during merging the last PR. The printer will be connected to the proof manager in a follow up PR. It will also be extended with support for DSL proof rule printing when the infrastructure is added.
2021-10-01Add the LFSC printer (#7158)Andrew Reynolds
This adds the LFSC printer for proof nodes. This PR has been split to not include support for DSL rewrite rules yet, or its main print method which will be added in a followup PR. Further PRs will connect this printer as a possible output format for cvc5.
2021-09-23[proofs[ Alethe: Fix Order of Arguments of addAletheStepFromOr (#7237)Lachnitt
Changes the order of the arguments of addAletheStepFromOr to be consistent with addAletheStep.
2021-09-23[proofs] Alethe: Translate THEORY_REWRITE (#7236)Lachnitt
Implementation of the translation of THEORY_REWRITE rules into the Alethe calculus. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-09-23[proofs] Alethe: Add Alethe Files to be Compiled (#7241)Lachnitt
Adds Alethe proof rule and option. Adds alethe_post_processor and alethe_proof_rule files to list of files to be compiled. During incorporating these changes errors occurred in the SCOPE rule that are also fixed in this PR.
2021-09-23[proofs] Alethe: Translate SCOPE rule (#7224)Lachnitt
Implementation of the translation of SCOPE rules into the Alethe calculus. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-09-23Implement alpha equivalence proofs (#7066)Andrew Reynolds
This is a modified version of #6137 which accounts for extended rewriting between quantified formulas that are considered alpha equivalent. It also generalizes the proof rule ALPHA_EQUIV. Notice that if we were to make this rule more pedantic, we would check for variable shadowing during substitution, although this is not currently done.
2021-09-21[Proofs] Alethe: Translate ASSUME rule (#7213)Lachnitt
Implementation of the translation of ASSUME rules into the Alethe calculus. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-09-21[proofs] Alethe: Implementation of AletheProofPostprocessCallback (#7212)Lachnitt
Implementation of addAletheStep and addAletheStepFromOr. Added stub for AletheProofPostprocessCallback update function that will be populated by subsequent PRs. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-09-20[proofs] Alethe: adds a node converterHaniel Barbosa
Currently the only transformation it applies is removing attributes from quantifiers. Others may be added later.
2021-09-20Add the LFSC proof post-processor (#7134)Andrew Reynolds
Includes the necessary conversions to LFSC for the core rules of the internal calculus.
2021-09-17[proofs] Alethe: Added Proof Postprocessor to alethe_proof_processor (#7202)Lachnitt
Added proof postprocessor class to alethe_proof_processor header file. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-09-17[proofs] Alethe: Added Final Callback Function to alethe_proof_processor (#7200)Lachnitt
Added final callback class to alethe_proof_processor header file. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-09-15[proofs] Alethe: Added Callback Function to alethe_proof_processor (#7186)Lachnitt
Added alethe_proof_processor header file and introduced callback class. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-09-15[proof] Added printer for proof rule names (#7185)Lachnitt
Implementation file for Alethe proof rules.
2021-09-15[proof] Alethe proof rules (#7180)Lachnitt
Adds header for Alethe proof rules Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2021-09-08Add Lfsc print channel utilities (#7123)Andrew Reynolds
These are utilities used for two-pass printing of LFSC proofs.
2021-09-08Improve pre-skolemization, move quantifiers preprocess to own file (#7153)Andrew Reynolds
This also heavily refactors the preskolemization method (now in QuantifiersPreprocess), in preparation for it being enabled by default. This method previously was doing a tree traversal, it now maintains a visited cache. It makes minor cleanup to the dependencies of this method.
2021-09-08Add LFSC side condition conversion utility for list variables (#7131)Andrew Reynolds
Required for automatic generation of side conditions from DSL rewrite rules.
2021-09-08Use rewriteViaMethod instead of accessing builtin proof checker (#7146)Andrew Reynolds
2021-09-02Add LFSC node converter (#6944)Andrew Reynolds
This utility converts from terms used in the internal calculus to terms that capture how they should be printed in LFSC.
2021-09-02Implement lazy proof checking modes (#7106)Andrew Reynolds
This implements several variants of lazy proof checking in the core proof checker. Note this extends the ProofNode class with an additional Boolean d_provenChecked indicating whether the d_proven field was checked by the underlying proof checker. This PR updates the default proof checking mode to lazy. The previous default can now be enabled by --proof-check=eager-simple.
2021-09-01Fix issues with cyclic proofs due to double SYMM applications (#7083)Andrew Reynolds
Our way of constructing proofs from the equality engine in very rare cases may cause cyclic proofs due to constructing double applications of SYMM, which are not recognized as assumptions in CDProof. This is due to an interplay between LazyProofChain using an underlying CDProof as its default proof generator, where the proof chain would use the proofs from the CDProof to form a cyclic proof. This was encountered in 9 SMT-LIB benchmarks in QF_SLIA. This makes us safer in several places related to double SYMM steps.
2021-09-01Lazy proof reconstruction for strings theory solver (#7096)Andrew Reynolds
This makes it so that we call the strings::InferProofCons::convert lazily, instead deferring to a temporary, trusted STRING_INFERENCE rule. This decreases our average proof overhead on commonly solved instances from 64% to 58% on QF_S + QF_SLIA. It also reduces timeouts significantly, from 2010 to 1460. (Note these numbers were with a slightly extended version of this branch that includes other pending PRs for proofs). Also fixes one subtle issue where proof reconstruction was misusing sequential substitutions (leading to warnings during proof post-processing).
2021-08-30Fix proof equality engine for "no-explain" premises (#7079)Andrew Reynolds
There was an inconsistency between when the equality engine would explain a literal and when we would provide a proof for it. This led to rare cases where we over zealously provided a proof for a fact that should have been an assumption in the theory lemma proof. This corrects the issue by ensuring that no-explain premises are explicitly marked via a new helper proof generator "AssumptionProofGenerator" which always supplies (ASSUME f) as the proof for f. This corrects some proof checking errors on string benchmarks.
2021-08-24Uniform treatment of trusted theory inferences in proofs (#7044)Andrew Reynolds
Makes it so that all theory-specific proof rules for this purpose are replaced by the generic THEORY_INFERENCE.
2021-08-24Miscellaneous changes from proof-new (#7042)Andrew Reynolds
2021-08-04Proper printing of proofs in the internal calculus (#6975)Andrew Reynolds
2021-08-04Fix policy for merging subproofs (#6981)Andrew Reynolds
This makes it so that we replace subproof A with subproof B if A and B prove the same thing, and B contains no assumptions. This is independent of the scope that A and B are in. The previous policy replaced subproof A with subproof B if A and B prove the same thing and were in the same scope. This is not safe if A occurs in multiple scopes, where free assumptions can escape. The new policy is more effective and safer than the previous one.
2021-08-04[proof] [dot] Fix comments on dot printer (#6983)Diego Della Rocca de Camargos
This PR fixes the escaped characters in the dot printer. The output is now a valid DOT. Signed-off-by: Diego Della Rocca de Camargos diegodellarocc@gmail.com
2021-08-04Add containsAssumption proof utility (#6953)Andrew Reynolds
Work towards making our policy for subproof merging safer.
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback