summaryrefslogtreecommitdiff
path: root/src/expr/proof_rule.cpp
AgeCommit message (Collapse)Author
2021-04-01Rename namespace CVC5 to cvc5. (#6258)Aina Niemetz
2021-03-31Rename namespace CVC4 to CVC5. (#6249)Aina Niemetz
2021-03-10(proof-new) Replace witness form by original form in the internal proof ↵Andrew Reynolds
calculus (#6051) This makes a simplification to the internal proof calculus. In particular, purification skolems are no longer are special case of witness skolems. They are now independent concepts. The concept of "witness form" is replaced in most places by "original form". This is required for fixing two issues: (1) variable shadowing issues in skolemization. (2) bookkeeping issues for bound variables introduced to construct witness terms. This made the LFSC proof conversion extremely cumbersome for e.g. string reductions. In this PR, the main changes: The internals of SkolemManager are changed to use original form vs witness form when necessary. This eliminates the need to do variable renaming in SkolemManager::skolemize. the rule WITNESS_INTRO is replaced by SKOLEM_INTRO MACRO_SR_* rules use original form Proof post processing is simplified These changes imply that ppRewrite should not return WITNESS terms. Followup PRs will modify arithmetic preprocessing so that its ppRewrite method returns skolems instead.
2021-03-09Update copyright headers to 2021. (#6081)Aina Niemetz
2021-02-23Add proof for mult sign lemma (#5966)Gereon Kremer
This PR adds the proof for a nonlinear refinement lemma that infers the sign of a monomial from the sign of the variables.
2021-02-23Add proof for monomial bounds check (#5965)Gereon Kremer
This PR adds proofs for a nonlinear refinement lemma that deals with multiplication of inequalities with some term. This lemma is split into two proof rules for positive or negative factors.
2021-02-23(proof-new) Add proof generator for CAD solver (#5964)Gereon Kremer
This PR adds a proof generator for the CAD solver, including two new proof rules. The code is not yet used, but will be integrated into the CAD solver itself in another PR.
2021-02-22Add trans secant proofs. (#5957)Gereon Kremer
This PR adds proofs for secant lemmas in the transcendental lemmas for both exponential and sine functions. It also adds proof rules and corresponding proof checkers.
2021-02-22(proof-new) Add proofs for exponential functions (#5956)Gereon Kremer
This PR adds proofs for lemmas concerned with the exponential function. If also adds the necessary proof rules and corresponding proof checker.
2021-02-22(proof-new) Add proofs for sine lemmas in the transcendental solver (#5952)Gereon Kremer
This PR adds proofs for the lemmas related to the sine function in the transcendental solver. It introduces several new proof rules with corresponding proof checkers and produces proofs in the sine solver.
2021-02-02(proof-new) Miscellaneous fixes and regressions (#5841)Andrew Reynolds
2020-12-21Add proof for pi bound lemma (#5709)Gereon Kremer
This PR adds proofs for lemmas that introduce bounds on the constant representing pi.
2020-12-21Add proof for sine shift lemmas. (#5710)Gereon Kremer
This PR adds proofs for the sine shift lemmas that add equivalent instances of the sine function where the argument is in its "main phase" between minus pi and pi.
2020-12-18(proof-new) Add proof for tangent plane lemmas (#5700)Gereon Kremer
This PR adds a proof for the tangent plane lemmas from nl-ext. As this lemma uses some insight about the tangent plane of a multiplication term, this PR adds a new proof rule.
2020-12-07Add support for BV proofs with the simple bitblasting solver. (#5603)Mathias Preiner
2020-12-02(proof-new) Proofs for expand definitions (#5562)Andrew Reynolds
2020-10-26(proof-new) Add datatypes proof checker (#5340)Andrew Reynolds
This adds the proof rules and proof checker for datatypes.
2020-10-18(proof-new) Implementation of trust substitution (#5276)Andrew Reynolds
Trust substitution is a data structure that is used throughout preprocessing for proofs. This adds its implementation.
2020-10-13(proof-new) New rules for Booleans (#5243)Andrew Reynolds
This adds 2 new rules for convenience to the Boolean checker.
2020-10-08(proof-new) Fixes and improvements for smt proof postprocessor (#5197)Andrew Reynolds
This includes several subtle issues encountered in the past month based on our regressions. It also improves the expansion forms of MACRO_ rules to use EQ_RESOLVE instead of a TRUE_INTRO/TRUE_ELIM scheme. This is both more compact and avoids cyclic proofs for some corner cases of proofs with Boolean constant equalites.
2020-09-22Update copyright header script to support CMake and Python files (#5067)Mathias Preiner
This PR updates the update-copyright.pl script to also update/add copyright headers to CMake specific files. It further fixes a small typo in the header.
2020-09-21(proof-new) Add the arrays proof checker (#5047)Andrew Reynolds
Includes adding the standard method for constructing the extensionality skolem using the skolem manager.
2020-09-16[proof-new] Resolution rules and checkers (#5070)Haniel Barbosa
2020-09-02(proof-new) Updates to builtin proof checker (#4962)Andrew Reynolds
This includes support for some trusted rules (whose use is to come). It also modifies THEORY_REWRITE so that it is a "trusted" rule, that is, it is not re-checked. The reason for this is that TheoryRewriter is not deterministic. An example of non-determinism in TheoryRewriter are rules that introduce bound variables (e.g. quantifiers rewriter) since these bound variables are fresh each time it is invoked. Non-deterministic theory rewriters cannot be rechecked, which was leading to failures on proof-new at proof check time. The other way to fix this would be to cache TheoryRewriter responses, but then the checker would only be verifying that the caching was being done properly. This is not worthwhile.
2020-09-02(proof-new) Add proof support in TheoryUF (#5002)Andrew Reynolds
This makes TheoryUF use a standard theory inference manager, which thus makes it proof producing when proof-new is enabled. This additionally cleans HoExtension so that it does not keep a backwards reference to TheoryUF and instead takes its inference manager. This additionally adds two rules for higher-order that are required to make its equality engine proofs correct. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
2020-08-18(proof-new) Theory preprocessor proof producing (#4807)Andrew Reynolds
This makes the theory preprocessor proof producing in the new infrastructure, which involves updating its interfaces to TrustNode in a few places.
2020-08-15(proof-new) Add the strings proof checker (#4858)Andrew Reynolds
It also adds enumeration for two new rules that have been recently added.
2020-08-12(proof-new) Improve interfaces to proof generators (#4803)Andrew Reynolds
This includes configurable naming and a caching policy for term conversion proof generator. Also corrects a subtle issue in LazyCDProof related to making getProofFor idempotent using the notion of owned proofs.
2020-08-12(proof-new) Witness form proof generator (#4782)Andrew Reynolds
This class is responsible for the connection between terms and their witness form in the final proof.
2020-07-27(proof-new) Proof production for term formula removal (#4687)Andrew Reynolds
This adds proof support in the term formula removal pass. It also refactors this class heavily so that its interface is more intuitive and does not depend on AssertionPipeline.
2020-07-17(proof-new) Updates to strings core solver (#4642)Andrew Reynolds
This updates the core strings solver in preparation for proofs. The main changes include: The addition of the strings PfRule enum values. The definition of a "getConclusion" static method, used by the core solver, and to be used in the future by the strings proof checker. This includes several optional forms of lemmas, which are added as options in this PR. Major simplifications to our inference schemas for disequality handling (a STRING_DECOMPOSE inference rule). Note this is the only significant intended behavioral change in this PR. Minor updates to the form of inferences send to inference manager, for instance to orient equalities in the expected way, and to reorder assumptions. These changes are done for uniformity and make the strings proof reconstruction from inference steps easier.
2020-07-14(proof-new) Skeleton proof support in the Rewriter (#4730)Andrew Reynolds
This adds support for skeleton proofs in the rewriter (REWRITE -> THEORY_REWRITE). It adds "extended equality rewrite" as a new method of the rewriter/theory rewriters. The unit test of this feature should be added on a followup PR. Co-authored-by: Andres Noetzli <andres.noetzli@gmail.com>
2020-07-13 (proof-new) SMT Preprocess proof generator (#4708)Andrew Reynolds
This adds the proof generator for storing proofs of preprocessing. It stores assertions added via preprocessing passes and their rewrites. This utility will eventually live in SmtEngine. It also adds 2 new proof rules, and fixes an issue in ProofNodeUpdater.
2020-06-28Proof Rules and Checker for Arithmetic (#4665)Alex Ozdemir
This PR introduces proof rules for arithmetic and their checker. The code is dead, since these rules are never used.
2020-06-16Update copyright headers.Aina Niemetz
2020-06-15(proof-new) Add quantifiers proof checker (#4593)Andrew Reynolds
Adds core rules for quantifiers, some of which also will be used as a general way for introducing and skolemizing witness terms. This PR also changes the order of other rules in proof_rule.h/cpp which was in an abnormal order from previous merges.
2020-06-03(proof-new) Adding rules and proof checker for EUF (#4559)Haniel Barbosa
2020-06-03(proof-new) Adding rules and proof checker for Boolean reasoning (#4560)Haniel Barbosa
2020-06-03(proof-new) Add builtin proof checker (#4537)Andrew Reynolds
This adds the proof checker for TheoryBuiltin, which handles the core proof rules (SCOPE and ASSUME) and all proof rules corresponding to generic operations on Node objects. This includes proof rules for rewriting and substitution, which are added in this PR.
2020-04-20Add SCOPE proof rule (#4332)Andrew Reynolds
This rule is dual to ASSUME. It is a way of closing free assumptions to conclude an implication. It also changes getId -> getRule.
2020-04-15Add ProofNode data structure (#4311)Andrew Reynolds
This is the core data structure for proofs in the new proofs infrastructure. PfRule is a global enumeration of ids of proof nodes (analogous to Kind for Nodes).
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback