kernel-nat-multiset-prod-sel-injective
- Kind
- kernel-term
- Status
- checked
Supports: Nat.Multiset.prodSel_injective is admitted by the trusted kernel gate with the type recorded in formal.statement.
test "$(cargo run -q --release -p axeyum-lean-kernel --example nat_theorem_inventory -- Nat.Multiset.prodSel_injective 2>/dev/null | grep -Fc '((x0 : AxNat.Multiset) -> ((x1 : ((x1 : AxNat) -> Bool)) -> ((x2 : ((x2 : AxNat) -> Bool)) -> ((x3 : ((x3 : AxNat) -> ((x4 : AxNat.lt AxNat.zero (AxNat.Multiset.count x0 x3)) -> And (AxNat.le (AxNat.succ (AxNat.succ AxNat.zero)) x3) (((x5 : AxNat) -> ((x6 : AxNat.dvd x5 x3) -> Or (Eq.{1} AxNat x5 (AxNat.succ AxNat.zero)) (Eq.{1} AxNat x5 x3))))))) -> ((x4 : Eq.{1} AxNat (AxNat.Multiset.prodSel x0 x1) (AxNat.Multiset.prodSel x0 x2)) -> ((x5 : AxNat) -> ((x6 : AxNat.lt AxNat.zero (AxNat.Multiset.count x0 x5)) -> Eq.{1} Bool (x1 x5) (x2 x5))))))))')" -ge 1 Evidence notes
The pattern is the FULL admitted type as rendered by Kernel::render_lean, not the theorem's name, so a drifted statement fails this check. No new arithmetic: Nat.Multiset.prodSel_eq_prod_restrict says the selection fold IS a multiset product, so Nat.Multiset.count_eq_of_prod_eq (uniqueness of prime factorization, F:nat-multiset-prime-factorization-unique) applies directly, and Nat.bool_select_nat_inj_of_pos reads the Bool back out of the resulting count equation. The positivity hypothesis is what that last step consumes.