Identifier
F:nat-even-or-odd
Proof route
kernel-lean
External status
proved
Axiom footprint
Empty

Recorded description

For every n : Nat, either n = (n/2)+(n/2) or n = succ((n/2)+(n/2)) -- the decidable parity split, stated with the COMPUTED half n/2 substituted directly into the statement rather than produced by an existential witness. This matters structurally: Exists.rec is Prop-only and cannot produce a term whose TYPE mentions the extracted witness, so a downstream construction that needs the half to appear in its own conclusion's type (as CReal/alternating.rs's bridge from an arbitrary Nat index to the even-indexed/odd-indexed partial sum closest to it does) cannot be built from a Prop-wrapped 'exists a half' fact -- it needs exactly this computed-witness statement. Built from the same div_mod_exec + Bool.rec construction Nat.pow_half_split already performs internally (its e_eq_final intermediate, in each branch, IS this fact), extracted as its own reusable theorem.

Formal statement
theorem Nat.even_or_odd : ((x0 : AxNat) -> Or (Eq.{1} AxNat x0 (AxNat.add (AxNat.div x0 (AxNat.succ (AxNat.succ AxNat.zero))) (AxNat.div x0 (AxNat.succ (AxNat.succ AxNat.zero))))) (Eq.{1} AxNat x0 (AxNat.succ (AxNat.add (AxNat.div x0 (AxNat.succ (AxNat.succ AxNat.zero))) (AxNat.div x0 (AxNat.succ (AxNat.succ AxNat.zero)))))))

Dependencies

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

Evidence

kernel-Nat.even_or_odd

Kind
kernel-term
Status
checked

Supports: Nat.even_or_odd is admitted by the trusted kernel gate with the type recorded in formal.statement.

Checker command
cargo run -q --release -p axeyum-lean-kernel --example theorem_dependency_inventory -- even_or_odd 2>/dev/null | grep -cE '^Nat\.even_or_odd[[:space:]]'
Evidence notes

build_nat_prelude admits Nat.even_or_odd through the trusted Kernel::add_declaration gate. theorem_dependency_inventory exits non-zero for a named filter matching nothing; grep -c asserts the exact tab-anchored line. --release is MANDATORY: this tool also builds creal/complex/cpoint, which overflow the default debug thread stack.

footprint-Nat.even_or_odd

Kind
exhaustive-enumeration
Status
checked

Supports: axiom_footprint: [] -- the nat prelude's trusted surface is empty, which bounds Nat.even_or_odd

Checker command
cargo run -q --release -p axeyum-lean-kernel --example nat_axiom_inventory -- --include-constructed --require-axiom-free nat
Evidence notes

Re-measured on this tree: nat: axiom=0 opaque=0 quotient=0 total_trusted=0, exits 0 printing 'ok: nat trusted surface = 0'. That bounds every declaration in the nat environment, including Nat.even_or_odd, since a declaration cannot depend on a trusted declaration the environment does not contain. --require-axiom-free <name> errors for a prelude never built by this run rather than silently passing on zero rows. --release is MANDATORY here.

Provenance

{
  "date": "2026-08-27",
  "established_by": "axeyum-lean-kernel build_nat_prelude (crates/axeyum-lean-kernel/src/nat_prelude/powsq.rs, declare_even_or_odd)",
  "source": "canonical type read via kernel_declaration_projection's own UNFILTERED emit mode (cargo run -q --release -p axeyum-lean-kernel --example kernel_declaration_projection, no --require-declaration flag), which prints, per constructed prelude, one TSV row per declaration whose last field is kernel.render_lean(declaration.ty()) -- the same Kernel::render_lean canonical form nat_theorem_inventory prints, just not filtered to Declaration::Theorem. That output was piped to a scratchpad file and the exact row for this declaration's own prelude label was extracted and injected here programmatically (a Python script reading the TSV, never hand-transcribed); direct theorem dependencies were cross-read from the same run's direct_theorems column (field 6) and matched against the ledger's own registered kernel_theorem/formal.statement names to populate depends_on. No new probe binary was written for this batch; crates/ source was not touched to produce this batch."
}