Skip to content

Latest commit

 

History

History
40 lines (33 loc) · 2.17 KB

File metadata and controls

40 lines (33 loc) · 2.17 KB

Planner Contracts

Purpose

Documents the elenchus-solver crate — three-valued Kleene logic, forward chaining, backward CNF/SAT pass, CDCL core, report generation.

Parent

  • (root)

Child Index

  • (none)

Stable Contracts

  • Three-valued Kleene logic: TRUE, FALSE, UNKNOWN. Forward chaining fixes UNKNOWN to TRUE when all antecedents are TRUE.
  • Bidirectional solving: forward chaining to fixpoint, then CNF conversion, then CDCL SAT pass for assumption analysis.
  • CDCL core: clause learning, conflict analysis, non-chronological backjumping, decision heuristics, unit propagation.
  • Report generation: consistent/warning/underdetermined/conflict verdicts, derivation traces, unsat core extraction, assumption retraction analysis.
  • 7+ source modules: solve.rs, sat.rs, report.rs, ports.rs, prop.rs, forward.rs, cnf.rs, puzzles.rs test module.

Read First

  • crates/elenchus-solver/src/lib.rs
  • crates/elenchus-solver/src/solve.rs
  • crates/elenchus-solver/src/sat.rs
  • crates/elenchus-solver/src/report.rs
  • crates/elenchus-solver/src/ports.rs
  • crates/elenchus-solver/src/prop.rs
  • crates/elenchus-solver/src/forward.rs
  • crates/elenchus-solver/src/cnf.rs

Do Not Touch Unless

  • CDCL SAT core in sat.rs — clause learning and conflict analysis are critical for correct unsat cores
  • Three-valued Kleene logic in prop.rs — the foundation of all reasoning
  • Report generation in report.rs — consumer-facing output format

Domain Details

  • Module structure: solve.rs (main solve_entry + bidirectional pipeline), sat.rs (CDCL SAT solver), report.rs (human + JSON report generation), ports.rs (port resolution), prop.rs (propositional logic + Kleene truth table), forward.rs (forward chaining), cnf.rs (CNF conversion), puzzles.rs (test-only puzzle solving)
  • Public API: solve() → Result<SolveResult, SolveError>, SolveResult enum (Consistent/Warning/Underdetermined/Conflict)
  • Feature flag: default=["std"], std enables file I/O for data files. no_std builds use in-memory data.
  • The solver is the reasoning engine. Its output feeds both elenchus-cli (exit codes) and elenchus-mcp (JSON responses).