(proof-new) proofs for ArithCongMan -> ee facts (#5207)
authorAlex Ozdemir <aozdemir@hmc.edu>
Tue, 6 Oct 2020 19:15:46 +0000 (12:15 -0700)
committerGitHub <noreply@github.com>
Tue, 6 Oct 2020 19:15:46 +0000 (14:15 -0500)
commite10c381b821337c239479d86fbf1d2eb617c590a
tree042ac35f86a74d7584b5917d1e96d0b6c0b6ad94
parent2d8889f935ca78ef4a5555f0e6bbed76dbc559d7
(proof-new) proofs for ArithCongMan -> ee facts (#5207)

Threads proof production through the ArithCongruenceManager's pipeline
of information to the equality engine.

The idea is to define a method:

ArithCongruenceManager::assertLitToEqualityEngine(literal, reason, pf)
This method asserts a literal to the equality engine with the given
proof and reason. It stores the proof of the literal for the equality
engine's future reference, and is smart about symmetric literals.

This machinery uses proofs that are not closed over the reason, as the
equality engine requires.

Other functions in the pipeline:

assertionToEqualityEngine
equalsCostant
construct proofs and call assertLitToEqualityEngine.
Future commits will address the ee -> ArithCongruenceManager pipeline,
and the relationship between ArithCongruenceManager and the rest of
arithmetic.
src/theory/arith/congruence_manager.cpp
src/theory/arith/congruence_manager.h
src/theory/arith/constraint.h