# Solver Notes

## Formula Notes

- Visible training files are p-center instances with sanitized DIMACS input.
- The low-numbered variables form the covering layer. The remaining clauses are
  generated counter/cardinality structure.
- Threshold-10 visible instances are already contradictory under root-level
  unit propagation. Threshold-20 visible instances need an explicit sequence of
  RUP unit derivations before the final contradiction.
- The solver does not inspect comments or filenames. It only parses the CNF and
  checks whether the clause database unit-propagates to contradiction.

## Techniques Used

- Deterministic DIMACS parsing.
- From-scratch unit propagation over the original CNF.
- Failed-literal checks to derive additional RUP unit constraints when root
  propagation alone does not conflict.
- Validated short structural proof templates for the arles p-center counter
  shapes; each template literal is checked by failed-literal propagation before
  it is emitted.
- Conservative proof generation: emit UNSAT only after local propagation over
  the derived units finds a contradiction, then write the VeriPB RUP proof.

## Remaining Things To Try

- If future instances are not root-UP refutable, extend the proof generator with
  failed-literal unit derivations or a bounded p-center/set-cover proof search.
- Recover a fuller structural detector for the counter encoding if SAT models
  become necessary.

## Known Limitations

- The solver intentionally returns `UNKNOWN` when unit closure plus the bounded
  failed-literal pass does not refute the formula.
- It does not currently construct SAT assignments.
- The approach is tuned to the observed target split where all train instances
  are root-RUP UNSAT.

## Changelog

- Initial scaffold: placeholder solver returned `UNKNOWN`.
- Added CNF parser, root-level unit propagation, and minimal VeriPB RUP proof
  output for root contradictions.
- Updated metadata and notes to describe the recovered root-RUP behavior.
- Added failed-literal RUP unit derivation, which solves the visible threshold-20
  cases with locally verified VeriPB proofs.
- Added a four-unit validated structural fast path for the n=220 threshold-20
  p10 shape, reducing those proofs from roughly 1,800 RUP lines to 5.
- Changed the generic fallback to keep unit-propagation closure internal and
  emit only failed-literal units, reducing proof size on shapes not covered by
  the fast path.
- Added a six-unit validated template that covers the public submissions_2025
  arles p-center p10/p20/p30 shapes checked locally, including the slow
  threshold-20 p20 instance.
