Identifier
F:int-neg-succ-mul-sub-nat-nat
Proof route
kernel-lean
External status
proved
Axiom footprint
Empty

Recorded description

For naturals a, b and c, -(a+1) * subNatNat(b, c) = subNatNat((a+1)*c, (a+1)*b) -- a representation-level distributivity lemma for a negSucc-constructed factor against subNatNat, with the two sides of the difference swapped by the sign.

Formal statement
theorem Int.negSucc_mul_subNatNat : ((x0 : AxNat) -> ((x1 : AxNat) -> ((x2 : AxNat) -> Eq.{1} Int (Int.mul (Int.negSucc x0) (Int.subNatNat x1 x2)) (Int.subNatNat (AxNat.mul (AxNat.succ x0) x2) (AxNat.mul (AxNat.succ x0) x1)))))

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. A normalized difference with a A normalized difference with a The integer borrow has exactly Multiplication distributes over Current fact Multiplication distributes over
4 direct dependencies 1 direct dependents

Evidence

kernel-Int.negSucc_mul_subNatNat

Kind
kernel-term
Status
checked

Supports: Int.negSucc_mul_subNatNat 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 -- Int.negSucc_mul_subNatNat 2>/dev/null | grep -cE '^Int\.negSucc_mul_subNatNat[[:space:]]'
Evidence notes

`build_int_prelude` admits Int.negSucc_mul_subNatNat through the trusted `Kernel::add_declaration` gate, which re-checks the proof term against the stated type, so a line in `theorem_dependency_inventory`'s output for the exact name is a machine-checked proof having been admitted. That tool exits non-zero for a named filter matching nothing (a deleted theorem cannot read as a re-derived one), and `grep -c` (never `-q`) both avoids a SIGPIPE-under-pipefail false negative and independently asserts the exact tab-anchored line is present. `--release` is MANDATORY: this tool unconditionally also builds `creal`/`complex`/`cpoint`, which recurse deep enough in a debug build to overflow the default thread stack (measured: release exits 0, debug SIGABRTs at 134).

footprint-Int.negSucc_mul_subNatNat

Kind
exhaustive-enumeration
Status
checked

Supports: axiom_footprint: [] -- Int.negSucc_mul_subNatNat lives in the Int prelude's trusted surface, which is empty.

Checker command
cargo run -q -p axeyum-lean-kernel --example nat_axiom_inventory -- --require-axiom-free integer
Evidence notes

`nat_axiom_inventory --require-axiom-free integer` builds the Int environment as its own group and reports `integer: axiom=0 opaque=0 quotient=0 total_trusted=0` (re-measured on this tree), exiting 0 with `ok: integer trusted surface = 0`. That bounds every individual Int theorem's footprint by [], since Int.negSucc_mul_subNatNat cannot depend on a trusted declaration the environment does not contain. `--require-axiom-free <name>` is an error (not a silent pass) for a prelude this run never built, which is what makes `integer` here a claim rather than an absence.

Provenance

{
  "date": "2026-08-25",
  "established_by": "axeyum-lean-kernel build_int_prelude",
  "source": "theorem name and dependency edges from theorem_dependency_inventory; canonical type read via int_theorem_inventory, which already prints Int declarations with their canonical type and axiom footprint -- no probe crate was needed for this batch."
}