use super::CollectClauses;
use crate::instances::ManageVars;
mod pairwise;
pub use pairwise::Pairwise;
mod ladder;
pub use ladder::Ladder;
mod bitwise;
pub use bitwise::Bitwise;
mod commander;
pub use commander::Commander;
mod bimander;
pub use bimander::Bimander;
pub trait Encode {
fn n_lits(&self) -> usize;
fn encode<Col>(
&mut self,
collector: &mut Col,
var_manager: &mut dyn ManageVars,
) -> Result<(), crate::OutOfMemory>
where
Col: CollectClauses;
}
pub type Def = Pairwise;
#[must_use]
pub fn new_default() -> impl Encode {
Def::default()
}