A library for determining the satisfiability of boolean formulas written in conjunctive normal form, developed to support investigation into solvers by researchers, developers, or anyone curious.
usecrate::structures::{consequence::Consequence,literal::CLiteral};/// A level storing a literal and its *observed* consequences (given prior assumptions, decisions and observed consequences).
/// As the literal is intended to be a decision or (representative) assumption, the prefix 'AD' is used.
pubstructADLevel{literal: CLiteral,
consequences:Vec<Consequence>,
}implADLevel{/// A new level from some literal, with no recorded consequences.
pubfnnew(literal: CLiteral)->Self{Self{
literal,
consequences:vec![],}}/// The literal of a level.
pubfnliteral(&self)-> CLiteral{self.literal
}/// The consequences of a level.
pubfnconsequences(&self)->&[Consequence]{&self.consequences
}/// Stores a consequence of the level from some source.
pub(super)fnstore_consequence(&mutself, consequence: Consequence){self.consequences.push(consequence)}}