const SNo : set prop const ordsucc : set set const Empty : set axiom SNo_1: SNo (ordsucc Empty) const SNoLt : set set prop term < = SNoLt infix < 2020 2020 axiom SNoLt_0_1: Empty < ordsucc Empty const SNoLe : set set prop term <= = SNoLe infix <= 2020 2020 axiom SNoLtLe: !x:set.!y:set.x < y -> x <= y const mul_SNo : set set set term * = mul_SNo infix * 2291 2290 axiom nonneg_mul_SNo_Le2: !x:set.!y:set.!z:set.!w:set.SNo x -> SNo y -> SNo z -> SNo w -> Empty <= x -> Empty <= y -> x <= z -> y <= w -> x * y <= z * w axiom mul_SNo_oneL: !x:set.SNo x -> ordsucc Empty * x = x const nat_p : set prop const exp_SNo_nat : set set set axiom exp_SNo_nat_S: !x:set.SNo x -> !y:set.nat_p y -> exp_SNo_nat x (ordsucc y) = x * exp_SNo_nat x y var x:set var y:set hyp SNo x hyp ordsucc Empty <= x hyp nat_p y hyp ordsucc Empty <= exp_SNo_nat x y claim SNo (exp_SNo_nat x y) -> ordsucc Empty <= exp_SNo_nat x (ordsucc y)