alg-mul-le-mul-of-nonneg-left-1
- Kind
- kernel-term
- Status
- checked
Supports: Alg.OrderedRing (Ring's 15 fields restated plus le and five order laws: le_refl, le_trans, le_antisymm, add_le_add_left, mul_nonneg -- 21 fields total, admits at Sort 2 with the same universe-guard control every other record in the spine carries) and Alg.mul_le_mul_of_nonneg_left both admit through the trusted kernel gate. Instantiated at Int.orderedRing and Rat.orderedRing (Rat's add_le_add_left has no primitive and is DERIVED from add_le_add + le_refl), type-checking symbolically (closed over free a b c and both hypothesis fvars) at both. Proof: d := add (neg b) c is shown >=0 (add_le_add_left + a transport along the derived add(neg b)b=zero); b+d=c (assoc + negAdd + a derived left-unit); so a*c=a*b+a*d (distribL); a*d>=0 (mul_nonneg), so a*b <= a*b+a*d = a*c (add_le_add_left again).
out=$(cargo test -p axeyum-lean-kernel --lib -- mul_le_mul_of_nonneg_left_applies_symbolically_at_int_and_rat_ordered_rings --nocapture --test-threads=1 2>&1) && test "$(printf "%s\n" "$out"| grep -cE 'test result: ok\. 1 passed; 0 failed')" -ge 1