kernel-Nat.mul_lt_mul_right
- Kind
- kernel-term
- Status
- checked
Supports: `Nat.mul_lt_mul_right` is admitted as a Theorem with EXACTLY the stated shape, pinned verbatim via the kernel's own renderer: `((x0 : AxNat) -> ((x1 : AxNat) -> ((x2 : AxNat) -> ((x3 : AxNat.lt AxNat.zero x0) -> Iff (AxNat.lt (AxNat.mul x1 x0) (AxNat.mul x2 x0)) (AxNat.lt x1 x2)))))`. Built in the same new file as the mirror of `Nat.mul_lt_mul_left`, using a privately-built `mul_le_mul_right_core` (via `Nat.mul_le_mul_left` + `Nat.mul_comm`, since no public `mul_le_mul_right` exists) and an EXPLICIT rewrite along `Nat.succ_mul` -- unlike the left mirror, `mul (succ b) a = add (mul b a) a` is NOT a refl-provable defining equation here (`Nat.mul` recurses on its right argument, so only `mul_succ` is `Eq.refl`; `succ_mul` is a real theorem under "multiplicative theorems", proved by induction). A first attempt assuming the same free defeq for both mirrors failed to build (`TypeMismatch`) and was fixed by adding the explicit `Nat.succ_mul` transport.
test "$(cargo run -q --release -p axeyum-lean-kernel --example nat_theorem_inventory 2>/dev/null | awk -F'\t' '$1 == "Nat.mul_lt_mul_right" && $3 == "((x0 : AxNat) -> ((x1 : AxNat) -> ((x2 : AxNat) -> ((x3 : AxNat.lt AxNat.zero x0) -> Iff (AxNat.lt (AxNat.mul x1 x0) (AxNat.mul x2 x0)) (AxNat.lt x1 x2)))))"' | wc -l)" -ge 1