Interface IExternalSatSolver

Namespace
LogicalOptimizer
Assembly
LogicalOptimizer.Sat.dll

Seam for plugging an external SAT solver (CaDiCaL, Kissat, a solver behind a service, ...) into consumers that otherwise use the embedded CDCL solver. The contract is deliberately minimal and one-shot — CNF in, verdict out — not an incremental IPASIR binding: the library keeps parsing, Tseitin encoding and counterexample decoding, and only the raw CNF query is handed off.

Trust model (asymmetric, enforced by the in-library consumers such as ExternalSatEquivalenceChecker): a Satisfiable verdict must come with a model, and the model IS verified against the CNF (cheap, linear in the clause count) — a bogus model is detected and rejected. A Unsatisfiable verdict cannot be checked cheaply and is TRUSTED; if that matters, run a proof-producing solver and check its DRAT/LRAT certificate out of band (e.g. with drat-trim).

public interface IExternalSatSolver

Methods

Solve(ExternalSatProblem, CancellationToken)

Decide satisfiability of problem. Implementations should honor cancellationToken (throw OperationCanceledException) and report Unknown when they give up without a verdict (timeout, resource limit, solver not available mid-flight).

ExternalSatResult Solve(ExternalSatProblem problem, CancellationToken cancellationToken = default)

Parameters

problem ExternalSatProblem
cancellationToken CancellationToken

Returns

ExternalSatResult