kernel-Nat.lcm_assoc
- Kind
- kernel-term
- Status
- checked
Supports: ∀ (m n k : ℕ), (m.lcm n).lcm k = m.lcm (n.lcm k)
test "$(cargo run -q -p axeyum-lean-kernel --example nat_theorem_inventory -- lcm_assoc 2>/dev/null | grep -Ec '^Nat\.lcm_assoc[[:space:]]')" -ge 1 Evidence notes
`build_nat_prelude` admits `Nat.lcm_assoc` through the trusted `Kernel::add_declaration` gate (declared in the new `nat_prelude/lcm_gcd_lemmas.rs`'s `declare_lcm_assoc`). Route: pure mutual divisibility, no induction and no case split -- both `(lcm a b).lcm c` and `a.lcm (lcm b c)` divide each other via `dvd_lcm_left`/`dvd_lcm_right`/`dvd_trans`/`lcm_dvd` alone, and `dvd_antisymm` closes the two directions into one equality. `nat_theorem_inventory`'s rendered type for `Nat.lcm_assoc` is `((x0 : AxNat) -> ((x1 : AxNat) -> ((x2 : AxNat) -> Eq.{1} AxNat (AxNat.lcm (AxNat.lcm x0 x1) x2) (AxNat.lcm x0 (AxNat.lcm x1 x2)))))`, matching this fact's `formal.statement` verbatim (`x0`/`x1`/`x2` are the universally quantified variables in order). `nat_theorem_inventory` exits non-zero for a name that does not exist, and the `grep -c` count (tested `-ge 1`, not piped into `grep -q`) requires the admitted declaration to actually be printed.