use crate::db::ClauseKey;
pub enum Analysis {
EmptyResolution,
NoAssertion,
Buffer,
ClauseDB,
FailedStoppingCriteria,
}
pub enum BCP {
Conflict(ClauseKey),
CorruptWatch,
}
#[derive(Debug, Eq, PartialEq)]
pub enum Build {
Context(Context),
Parse(Parse),
ClauseDB(ClauseDB),
Unsatisfiable,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ClauseDB {
GetUnitKey,
TransferUnit,
TransferBinary,
TransferWatch,
Missing,
InvalidKeyToken,
InvalidKeyIndex,
EmptyClause,
UnitClause,
StorageExhausted,
AddedUnitAfterDecision,
ImmediateConflict,
}
#[derive(Clone, Copy)]
pub enum Subsumption {
ShortClause,
NoPivot,
WatchError,
TransferFailure,
ClauseTooShort,
ClauseDB,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum Context {
AssumptionAfterDecision,
AssumptionConflict,
AssumptionSet,
QueueConflict,
ClauseDB,
Backjump,
Analysis,
BCP,
Preprocessing,
}
#[derive(Debug, Eq, PartialEq)]
pub enum Parse {
ProblemSpecification,
Line(usize),
MisplacedProblem(usize),
Negation,
NoFile,
Empty,
}
pub enum Preprocessing {
Pure,
}
pub enum Queue {
Conflict,
}
pub enum Report {
StoreFailure,
UnsatCoreUnavailable,
}
pub enum ResolutionBuffer {
LostClause,
Subsumption,
SatisfiedClause,
Transfer,
MissingClause,
}
pub enum FRAT {
CorruptClauseBuffer,
CorruptResolutionQ,
TransfersAreTodo,
}
#[derive(Clone, Copy)]
pub enum Watch {
NotLongInLong,
}
#[derive(Debug)]
pub enum Core {
QueueMiss,
EmptyBCPBuffer,
CorruptClauseBuffer,
MissedKey,
NoConflict,
}
impl From<Watch> for ClauseDB {
fn from(_: Watch) -> Self {
ClauseDB::TransferWatch
}
}
impl From<ClauseDB> for Analysis {
fn from(_: ClauseDB) -> Self {
Analysis::ClauseDB
}
}
impl From<ClauseDB> for Report {
fn from(_: ClauseDB) -> Self {
Report::StoreFailure
}
}
impl From<Queue> for Context {
fn from(_: Queue) -> Self {
Self::QueueConflict
}
}
impl From<ClauseDB> for Context {
fn from(_: ClauseDB) -> Self {
Context::ClauseDB
}
}
impl From<Analysis> for Context {
fn from(_: Analysis) -> Self {
Context::Analysis
}
}
impl From<Preprocessing> for Context {
fn from(_: Preprocessing) -> Self {
Self::Preprocessing
}
}
impl From<ClauseDB> for Build {
fn from(e: ClauseDB) -> Self {
Self::ClauseDB(e)
}
}
impl From<Context> for Build {
fn from(e: Context) -> Self {
Self::Context(e)
}
}
impl From<Subsumption> for ResolutionBuffer {
fn from(_value: Subsumption) -> Self {
Self::Subsumption
}
}