Identifier
F:schedule-critical-chain-infeasible
Proof route
kernel-lean
External status
Not recorded
Axiom footprint
AxReal, AxReal.add, AxReal.add_assoc, AxReal.add_comm, AxReal.add_le_add, AxReal.add_neg, AxReal.add_zero, AxReal.le, AxReal.le_of_lt, AxReal.le_refl, AxReal.lt, AxReal.lt_irrefl, AxReal.lt_of_lt_of_le, AxReal.neg, AxReal.one, AxReal.zero, AxReal.zero_lt_one, axeyum.reconstruct.lra.hyp._2, axeyum.reconstruct.lra.hyp._4, axeyum.reconstruct.lra.hyp._6, axeyum.reconstruct.lra.hyp._7, axeyum.reconstruct.lra.hyp._8, axeyum.reconstruct.lra.x._0, axeyum.reconstruct.lra.x._1, axeyum.reconstruct.lra.x._3, axeyum.reconstruct.lra.x._5

Recorded description

There are no real start times s_t03, s_t06, s_t09, s_t12 with s_t03 >= 6, s_t06 >= s_t03 + 5, s_t09 >= s_t06 + 6, s_t12 >= s_t09 + 3 and s_t12 + 4 <= 20. In project terms: if the long-lead material for t03 lands on day 6 and the chain t03 -> t06 -> t09 -> t12 runs 5, 6 and 3 days with a 4-day final task, delivery cannot happen by day 20. These five constraints are the measured irreducible core of the 60-row schedule in artifacts/instances/infeasibility/schedule-deadline.smt2.

Formal statement
(assert (not (exists ((s_t03 Real) (s_t06 Real) (s_t09 Real) (s_t12 Real)) (and (>= s_t03 6.0) (>= s_t06 (+ s_t03 5.0)) (>= s_t09 (+ s_t06 6.0)) (>= s_t12 (+ s_t09 3.0)) (<= (+ s_t12 4.0) 20.0)))))

Dependencies

The graph shows direct ledger edges. Follow a node to open its artifact page.

Direct dependencies appear to the left. The current fact is in the center. Facts that depend directly on it appear to the right. Current fact Five rows of a 60-row project s
0 direct dependencies 1 direct dependents

Evidence

schedule-chain-kernel-term

Kind
kernel-term
Status
checked

Supports: The five constraints are jointly unsatisfiable, by a kernel-checked proof term of False.

Checker command
cargo run --release -q -p axeyum-solver --features full --example infeasibility_farkas_lean -- artifacts/instances/infeasibility/schedule-deadline.smt2 --require-kernel --expect-axioms 26
Evidence notes

Ran 2026-08-14. `lra_farkas_certificate` on the five core rows returns five atoms with multipliers ALL EQUAL TO 1 -- the textbook negative-cycle refutation, 6+5+6+3 = 20 against a ceiling of 16, excess 4 -- and `FarkasCertificate::verify()` re-derives it from scratch in exact rationals (nonnegative multipliers, at least one positive, every variable cancels, surviving constant relation unsatisfiable), sharing no code with the Fourier-Motzkin elimination that found it. `reconstruct_lra_proof` then builds a Lean kernel term whose `infer` succeeds and whose inferred type is `def_eq` to `False`. The example ASSERTS that the term rests on exactly 5 hypothesis axioms, one per core row, and exits 1 otherwise. `--require-kernel` makes the whole route a ratchet: if the reconstruction ever declines this query, the command fails rather than reporting a stop.

schedule-chain-module-shape

Kind
instance-pin
Status
checked

Supports: axiom_footprint: the 26 axioms the kernel module actually rests on.

Checker command
cargo run --release -q -p axeyum-solver --features full --example infeasibility_farkas_lean -- artifacts/instances/infeasibility/schedule-deadline.smt2 --require-kernel --expect-axioms 26
Evidence notes

The rendered module declares 26 axioms: 17 ordered-field prelude (the `AxReal` carrier, its operations, and the order/additive laws), 4 variable axioms (one abstract `AxReal` per start time), and 5 hypothesis axioms (one per core row, in the canonical `le L zero` form). This route IS NOT AXIOM-FREE and cannot presently be: `crates/axeyum-lean-kernel/src/arith_prelude.rs` declares `AxReal` and every field law through `declare_axiom`, with no theorems and no inductives, so `[]` here would be a lie the validator would have accepted (it only rejects `[]` off the kernel-lean route). WHAT THE FACADE DOES -- this paragraph is REPLACED, not renumbered. It used to read: `prove_unsat_to_lean_module` on the SAME five rows routes to `ProofFragment::LraDpll` and emits a 21-line STRUCTURAL SHIM (`axiom prop : P`, `axiom hyp : Not P`, `theorem _ : False := hyp prop`) with no arithmetic in it, so calling that 'the Farkas proof reached the kernel' would be false. That stopped being true when the facade dispatch was fixed on 2026-08-15. Measured 2026-08-18 on this same instance: the facade routes to `ProofFragment::Lra`, emits a 62-line module that CARRIES ordered-field content (it declares an `axeyum.reconstruct.lra.hyp._N : AxReal.le ...` hypothesis axiom), self-labels `theory-reconstruction`, and the strict front door `prove_unsat_to_lean_theory_module` ACCEPTS it as `Lra` instead of declining -- so `--require-kernel` is a live ratchet on the facade route too, not only on the direct one. The example still prints and labels both routes, and still cross-checks its structural scan against the module's self-label, because the scan was silently broken for as long as the facade emitted a shim. SIZE: the kernel proof term is 5,101,317 bytes and the rendered module 5,105,945 (measured 2026-08-18). This number DRIFTS with the prelude and nothing gates it -- the 5,099,060 recorded on 2026-08-14 was 2,257 bytes smaller -- so read it as ~5.1 MB with a date, not as a pin. The prelude has no numerals, so the constant 20 reconstructs as a 20-fold `AxReal.add AxReal.one` chain and every cancellation is an explicit Eq-rewrite; a 5-row explanation becomes a 5 MB proof term. RE-RUN 2026-08-19 after ADR-0522 renamed the axiomatized package `Real` -> `AxReal`: the same checker_command exits 0 with `kernel axioms 26 = 17 prelude + 4 variable + 5 hypothesis`, so the 17 prelude rows above are the same 17 declarations under their new spelling and no row was transcribed from the old run. The module grew to 6,010,498 bytes and the proof term to 6,004,703 -- the rename is +2 bytes per occurrence and the term is mostly occurrences; the size still DRIFTS and is still not pinned. That re-run also REPAIRED this evidence: the example's `carries ordered-field content` scan matched `ty.contains("Real.le")`, which `CReal.le` satisfies, so it had been reporting the right verdict for the wrong carrier ever since the facade route moved to the constructed reals. It now names both carriers in full.

Provenance

{
  "date": "2026-08-14",
  "established_by": "axeyum lane `infeasibility`, 2026-08-14: crates/axeyum-solver/examples/infeasibility_farkas_lean.rs",
  "source": "the measured irreducible core of an instance authored by this lane (scripts/gen-infeasibility-instances.py)"
}