Identifier
F:ml430-int-add-modeq-left-ee732b5b
Proof route
kernel-lean
External status
proved
Axiom footprint
Empty

Recorded description

The proposition declared as `Int.add_modEq_left` in the pinned Mathlib v4.30 source.

Formal statement
∀ {n a : ℤ}, n + a ≡ a [ZMOD n]

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. [generated] kernel theorem Int. Multiplying an integer by one i Current fact
2 direct dependencies 0 direct dependents

Evidence

statement-Int.add_modEq_left-pin

Kind
kernel-term
Status
checked

Supports: `Int.add_modEq_left` is admitted with EXACTLY the stated shape, no `0 < n` (or any other) positivity premise anywhere in its type -- pinned verbatim: `((x0 : Int) -> ((x1 : Int) -> Int.ModEq x0 (Int.add x0 x1) x1))`. Mutation-verified in an isolated snapshot (scripts/lane-snapshot.sh, never the shared checkout): swapping the argument order inside the pinned string (making it read as a different member of this family) kills exactly this one test, 33 passed / 1 failed, and no other.

Checker command
test "$(scripts/cargo-serialized.sh test -p axeyum-lean-kernel --lib the_modeq_ledger_rows_are_stated_without_a_positivity_hypothesis 2>&1 | grep -Ec 'test result: ok\. 1 passed; 0 failed')" -ge 1
Evidence notes

The statement pin exists because the footprint check alone cannot carry this claim: a theorem stating something WEAKER (carrying the `0 < n` hypothesis every OTHER congruence lemma in modeq.rs carries) would have the same empty footprint and pass the footprint sweep unchanged.

footprint-Int.add_modEq_left

Kind
kernel-term
Status
checked

Supports: axiom_footprint: [] for `Int.add_modEq_left` and for every lemma it is built from (Int.modEq_add_mul_left, Int.mod_eq_iff_dvd, Int.mod_eq_neg_modulus, Int.emod_neg, Int.ediv_add_emod -- all already established). The `integer` prelude's trusted surface stays 0: no Axiom, no Opaque, no Quotient.

Checker command
test "$(scripts/cargo-serialized.sh test -p axeyum-lean-kernel --lib int_prelude::int_prelude_tests::derived_laws_have_no_axiom_footprint -- --exact 2>&1 | grep -Ec 'test result: ok\. 1 passed; 0 failed')" -ge 1
Evidence notes

Counting Declaration::Axiom alone would not suffice in this kernel (Opaque has no proof body and Quotient admits Quot.sound); axiom_footprint covers all three.

concrete-Int.add_modEq_left

Kind
kernel-term
Status
checked

Supports: `Int.add_modEq_left` applied to literal numerals genuinely COMPUTES, at all three regimes a modulus can be in: n = 0 (the case that motivates unconditionality at all -- `Int.emod _ 0` must genuinely reduce to its argument, not merely type-check), a positive n (n = 5), and a NEGATIVE n (n = -4, the leg no other congruence law in int_prelude/modeq.rs can reach, since Int.emod_lt_of_pos has no proved analogue for a negative divisor). At n=0, a=3: emod(0+3,0) and emod(3,0) both genuinely reduce to the literal 3.

Checker command
test "$(scripts/cargo-serialized.sh test -p axeyum-lean-kernel --lib add_modeq_family_computes_at_concrete_values 2>&1 | grep -Ec 'test result: ok\. 1 passed; 0 failed')" -ge 1
Evidence notes

Mutation-verified in an isolated snapshot: replacing the expected reduced literal with a wrong one (2 -> 3 in the modEq_add_mul_left case) kills exactly this one test, 33 passed / 1 failed, confirming the check is not a vacuous type-check-only comparison.

kernel-term-authored-declaration-axiom-free-Int.add_modEq_left

Kind
kernel-term
Status
checked

Supports: This fact was closed via the registered multi-target operation authoritative-kernel-int-modeq-shift-family-v1 (applicability.fact_ids names all five Int.ModEq shift-family facts, not this one alone): `Int.add_modEq_left` was authored directly as a kernel declaration in modeq_family.rs and admitted with an empty axiom footprint.

Checker command
test "$(scripts/cargo-serialized.sh test -p axeyum-lean-kernel --lib int_prelude::int_prelude_tests::every_int_declaration_is_checked_and_axiom_free -- --exact 2>&1 | grep -Ec 'test result: ok\. 1 passed; 0 failed')" -ge 1
Evidence notes

checker_operation.id is the join key scripts/gen-production-provenance-ledger.py reads (fact.evidence[].checker_operation.id -> operations.json's applicability.fact_ids) to credit this fact toward facts_via_multi_target. The operation names all five sibling facts (width 5), so this is a genuine multi-target join. This row deliberately carries ONLY the operation id and no sha256/manifest receipt fields: every other checker_operation row in this ledger was produced by scripts/execute-autogenesis-operation.py's run_registered dispatcher, which has NO case for this operation's executor.driver (axeyum-lean-kernel/authored-declaration-v1) -- confirmed by reading run_registered, whose final branch raises ExecutionError(f"unsupported execution driver {driver!r}") for exactly this string. There is no executor-generated receipt to reproduce, so inventing sha256/manifest fields here would fabricate provenance data rather than record it.

Provenance

{
  "date": "2026-08-18",
  "established_by": "lane int-modeq-kernel (2026-08-27): the ORIGINAL flywheel batch (docs/autogenesis/292-flywheel-2-batch-contract-dispatch.md) declined this fact via producer-contract-int-modeq-family-v1 with DeclineReason::TerminalNotClosed -- the combinator-over-hypothesis producer has no congruence step for an unconditional identity. This fact was instead closed by a DIFFERENT route: a new general kernel theorem, `Int.modEq_add_mul_left : forall n a q, ModEq n (add (mul n q) a) a`, proved unconditionally in n by case-splitting on n's Int.rec shape (n=0 trivial via the emod-at-zero identity; n=ofNat(succ k) via the existing Int.modEq_iff_dvd bridge at a concrete positive modulus; n=negSucc k reduced to the positive case via the already-proved Int.modEq_neg_modulus/Int.emod_neg pair) -- never touching the producer, the import pipeline, or any decline artifact's own guard. The decline record for this fact remains valid and is amended, not deleted (docs/autogenesis/291's convention): it correctly describes what propose_modeq_family cannot do; it says nothing about what a different route can.",
  "source": "statement-only extraction of `Int.add_modEq_left` from Mathlib v4.30.0; no proof value was exposed",
  "prior_art": [
    {
      "who": "the Mathlib contributors",
      "what": "the theorem declaration `Int.add_modEq_left`",
      "where": "mathlib4 commit c5ea00351c28e24afc9f0f84379aa41082b1188f (v4.30.0)",
      "year": 2026,
      "attribution": "the proposition was read from the pinned statement-only inventory; the proof term and tactic trace were not consulted"
    }
  ]
}