14 #ifndef TOOLS_CIRCT_LEC_SOLVER_H
15 #define TOOLS_CIRCT_LEC_SOLVER_H
18 #include "mlir/IR/MLIRContext.h"
19 #include "mlir/IR/Value.h"
38 mlir::LogicalResult
solve();
The representation of a circuit within a logical engine.
A satisfiability checker for circuit equivalence.
mlir::LogicalResult constrainCircuits()
Formulates additional constraints which are satisfiable if only if the two circuits which are being c...
void printAssertions()
Prints the constraints which were added to the solver.
Circuit * circuits[2]
The two circuits to be compared.
z3::context context
The Z3 context of reference, owning all the declared values, constants and expressions.
void printModel()
Prints a model satisfying the solved constraints.
llvm::DenseMap< mlir::StringAttr, mlir::Value > symbolTable
A map from internal solver symbols to the IR values they represent.
mlir::LogicalResult solve()
Solve the equivalence problem between the two circuits, then present the results to the user.
Circuit * addCircuit(llvm::StringRef name)
Create a new circuit to be compared and return it.
mlir::MLIRContext * mlirCtx
The MLIR context of reference, owning all the MLIR entities.
bool statisticsOpt
The value of the statistics command-line option.
void printStatistics()
Prints the internal statistics of the SMT solver for benchmarking purposes and operational insight.
Solver(mlir::MLIRContext *mlirCtx, bool statisticsOpt)
z3::solver solver
The Z3 solver acting as the logical engine backend.
This file defines an intermediate representation for circuits acting as an abstraction for constraint...