Class EquivalenceChecker
- Namespace
- LogicalOptimizer
- Assembly
- LogicalOptimizer.dll
Equivalence of two boolean expressions at any scale. Small expressions are compared by truth table; larger ones through a miter (XOR of both sides) put through the Tseitin transformation and the built-in SAT solver — UNSAT proves equivalence without enumerating 2^n rows, SAT yields a concrete counterexample.
public static class EquivalenceChecker
- Inheritance
-
EquivalenceChecker
- Inherited Members
Fields
DefaultMaxConflicts
Default conflict budget for one SAT-based equivalence query.
public const int DefaultMaxConflicts = 200000
Field Value
Methods
Check(AstNode, AstNode, int, CancellationToken)
public static EquivalenceCheckResult Check(AstNode left, AstNode right, int maxConflicts = 200000, CancellationToken cancellationToken = default)
Parameters
leftAstNoderightAstNodemaxConflictsintcancellationTokenCancellationToken
Returns
Check(string, string, int, CancellationToken)
public static EquivalenceCheckResult Check(string left, string right, int maxConflicts = 200000, CancellationToken cancellationToken = default)
Parameters
leftstringrightstringmaxConflictsintcancellationTokenCancellationToken
Returns
CheckWithProof(AstNode, AstNode, int, CancellationToken)
SAT-miter equivalence that also returns a DRAT proof when the verdict is "equivalent" (UNSAT of the miter). The proof is checkable against the miter's Tseitin CNF (also returned) by any DRAT/RUP checker, e.g. drat-trim — the equivalence claim becomes externally verifiable rather than trusted.
public static (EquivalenceCheckResult Result, TseitinCnf MiterCnf, string? DratProof) CheckWithProof(AstNode left, AstNode right, int maxConflicts = 200000, CancellationToken cancellationToken = default)
Parameters
leftAstNoderightAstNodemaxConflictsintcancellationTokenCancellationToken