const SNo : set prop const ordsucc : set set const Empty : set axiom SNo_2: SNo (ordsucc (ordsucc Empty)) const nat_p : set prop const exp_SNo_nat : set set set axiom SNo_exp_SNo_nat: !x:set.SNo x -> !y:set.nat_p y -> SNo (exp_SNo_nat x y) const SNoLt : set set prop term < = SNoLt infix < 2020 2020 axiom SNoLt_0_2: Empty < ordsucc (ordsucc Empty) axiom exp_SNo_nat_pos: !x:set.SNo x -> Empty < x -> !y:set.nat_p y -> Empty < exp_SNo_nat x y axiom SNoLt_irref: !x:set.~ x < x const In : set set prop term iIn = In infix iIn 2000 2000 const omega : set const mul_SNo : set set set term * = mul_SNo infix * 2291 2290 const add_SNo : set set set term + = add_SNo infix + 2281 2280 axiom exp_SNo_nat_mul_add': !x:set.SNo x -> !y:set.y iIn omega -> !z:set.z iIn omega -> exp_SNo_nat x y * exp_SNo_nat x z = exp_SNo_nat x (y + z) axiom SNo_mul_SNo: !x:set.!y:set.SNo x -> SNo y -> SNo (x * y) axiom mul_SNo_assoc: !x:set.!y:set.!z:set.SNo x -> SNo y -> SNo z -> x * y * z = (x * y) * z axiom mul_SNo_com: !x:set.!y:set.SNo x -> SNo y -> x * y = y * x axiom omega_nat_p: !x:set.x iIn omega -> nat_p x const eps_ : set set axiom mul_SNo_eps_power_2': !x:set.nat_p x -> exp_SNo_nat (ordsucc (ordsucc Empty)) x * eps_ x = ordsucc Empty axiom mul_SNo_oneL: !x:set.SNo x -> ordsucc Empty * x = x axiom mul_SNo_nonzero_cancel: !x:set.!y:set.!z:set.SNo x -> x != Empty -> SNo y -> SNo z -> x * y = x * z -> y = z var x:set var y:set hyp x iIn omega hyp y iIn omega hyp nat_p (x + y) hyp SNo (eps_ x) hyp SNo (eps_ y) hyp SNo (eps_ x * eps_ y) hyp SNo (eps_ (x + y)) hyp SNo (exp_SNo_nat (ordsucc (ordsucc Empty)) x) claim SNo (exp_SNo_nat (ordsucc (ordsucc Empty)) y) -> eps_ x * eps_ y = eps_ (x + y)