-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
- Loading branch information
1 parent
ea365de
commit b629960
Showing
8 changed files
with
133 additions
and
51 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
b629960
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This commit is part of a sequence of updates to support proof hints, for arithmetic proofs. A proof hint is a certificate that can be checked effectively by a simpler (efficient, trusted) procedure. The base line for arithmetic is Farkas certificates, that comprise a set of inequalities each inequality has a coefficient. When rewriting the inequalitie t <= 0 to coeff * t <= 0, and adding all left sides: sum_i coeff_i * t_i <= 0 a proper Farkas certificate ensures that the sum sum_i coeff_i * t_i is positive.
The arithmetic solver includes also equality solving. We integrate these in certificates by using equalities to eliminate variables using Gauss elimination.
Bound certificates come from bound propagation and Gomory cuts. They are of the form "set of inequalities with coefficients" implies "inequality".
The premise of the implication is strengthened using "cuts". The certificate checker implements a basic cut rule.
Equality propagation from the arithmetic solver is also possible. The claim is that a set of literals (with coefficients) imply an equality.
Equality propagation is really just two inequality conflicts in a single step. Efficient checking of equality propagation is TBD.