const SNo : set prop const ordsucc : set set const Empty : set axiom SNo_2: SNo (ordsucc (ordsucc Empty)) const nat_p : set prop const In : set set prop term iIn = In infix iIn 2000 2000 const omega : set axiom nat_p_omega: !x:set.nat_p x -> x iIn omega axiom SNo_1: SNo (ordsucc Empty) const add_SNo : set set set term + = add_SNo infix + 2281 2280 axiom SNo_add_SNo: !x:set.!y:set.SNo x -> SNo y -> SNo (x + y) const SNoLt : set set prop term < = SNoLt infix < 2020 2020 axiom add_SNo_Lt1: !x:set.!y:set.!z:set.SNo x -> SNo y -> SNo z -> x < z -> (x + y) < z + y axiom SNoLt_1_2: ordsucc Empty < ordsucc (ordsucc Empty) const SNoLe : set set prop term <= = SNoLe infix <= 2020 2020 axiom SNoLtLe: !x:set.!y:set.x < y -> x <= y const exp_SNo_nat : set set set axiom exp_SNo_1_bd: !x:set.SNo x -> ordsucc Empty <= x -> !y:set.nat_p y -> ordsucc Empty <= exp_SNo_nat x y axiom add_SNo_Le2: !x:set.!y:set.!z:set.SNo x -> SNo y -> SNo z -> y <= z -> (x + y) <= x + z axiom SNoLtLe_tra: !x:set.!y:set.!z:set.SNo x -> SNo y -> SNo z -> x < y -> y <= z -> x < z const mul_SNo : set set set term * = mul_SNo infix * 2291 2290 axiom mul_SNo_oneL: !x:set.SNo x -> ordsucc Empty * x = x axiom mul_SNo_distrR: !x:set.!y:set.!z:set.SNo x -> SNo y -> SNo z -> (x + y) * z = x * z + y * z axiom add_SNo_1_1_2: ordsucc Empty + ordsucc Empty = ordsucc (ordsucc Empty) axiom add_SNo_1_ordsucc: !x:set.x iIn omega -> x + ordsucc Empty = ordsucc x 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 hyp nat_p x hyp x < exp_SNo_nat (ordsucc (ordsucc Empty)) x hyp SNo x claim SNo (exp_SNo_nat (ordsucc (ordsucc Empty)) x) -> ordsucc x < exp_SNo_nat (ordsucc (ordsucc Empty)) (ordsucc x)