Assume Hm'0: m' = 0.
Apply SNoLt_irref x to the current goal.
Apply SNoLt_tra x 2 x Hx1 SNo_2 Hx1 to the current goal.
We will
prove x < ordsucc (ordsucc 0).
rewrite the current goal using Hm'0 (from right to left).
rewrite the current goal using Hmm' (from right to left).
An exact proof term for the current goal is Hxm1.
An exact proof term for the current goal is H2.
Assume H.
Apply H to the current goal.
Let m'' be given.
Assume H.
Apply H to the current goal.
Assume Hm'': nat_p m''.
Assume Hm'm'': m' = ordsucc m''.
We prove the intermediate
claim L1a:
∃k ∈ ω, 2 ≤ k ∧ k < x ∧ x ≤ ordsucc k.
Apply SNoLeE m x (nat_p_SNo m Lm) Hx1 Hmx to the current goal.
We use m to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hm.
Apply and3I to the current goal.
Apply SNoLtLe_or m 2 (nat_p_SNo m Lm) SNo_2 to the current goal.
We will prove False.
We prove the intermediate
claim L1aa:
m ∈ 2.
Apply ordinal_SNoLt_In to the current goal.
An exact proof term for the current goal is nat_p_ordinal m Lm.
An exact proof term for the current goal is nat_p_ordinal 2 nat_2.
An exact proof term for the current goal is H5.
Apply cases_2 m L1aa (λi ⇒ m ≠ i) to the current goal.
rewrite the current goal using Hmm' (from left to right).
An exact proof term for the current goal is neq_ordsucc_0 m'.
rewrite the current goal using Hmm' (from left to right).
rewrite the current goal using Hm'm'' (from left to right).
Assume H6: ordsucc (ordsucc m'') = 1.
An exact proof term for the current goal is neq_ordsucc_0 m'' (ordsucc_inj (ordsucc m'') 0 H6).
An exact proof term for the current goal is H5.
An exact proof term for the current goal is H4.
We will
prove x ≤ ordsucc m.
Apply SNoLtLe to the current goal.
We will
prove x < ordsucc m.
An exact proof term for the current goal is Hxm1.
Assume H4: m = x.
Apply nat_inv m'' Hm'' to the current goal.
Assume Hm''0: m'' = 0.
We will prove False.
Apply Hxn2 to the current goal.
We will prove x = 2.
rewrite the current goal using H4 (from right to left).
rewrite the current goal using Hmm' (from left to right).
rewrite the current goal using Hm'm'' (from left to right).
rewrite the current goal using Hm''0 (from left to right).
Use reflexivity.
Assume H.
Apply H to the current goal.
Let m''' be given.
Assume H.
Apply H to the current goal.
Assume Hm''': nat_p m'''.
Assume Hm''m''': m'' = ordsucc m'''.
We will
prove ∃k ∈ ω, 2 ≤ k ∧ k < x ∧ x ≤ ordsucc k.
We use m' to witness the existential quantifier.
Apply andI to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is Hm'.
We will
prove 2 ≤ m' ∧ m' < x ∧ x ≤ ordsucc m'.
Apply and3I to the current goal.
rewrite the current goal using Hm'm'' (from left to right).
We will
prove 2 ≤ ordsucc m''.
rewrite the current goal using ordinal_ordsucc_SNo_eq m'' (nat_p_ordinal m'' Hm'') (from left to right).
We will
prove 2 ≤ 1 + m''.
rewrite the current goal using Hm''m''' (from left to right).
We will
prove 2 ≤ 1 + ordsucc m'''.
rewrite the current goal using ordinal_ordsucc_SNo_eq m''' (nat_p_ordinal m''' Hm''') (from left to right).
We will
prove 2 ≤ 1 + 1 + m'''.
rewrite the current goal using add_SNo_assoc 1 1 m''' SNo_1 SNo_1 (nat_p_SNo m''' Hm''') (from left to right).
We will
prove 2 ≤ (1 + 1) + m'''.
rewrite the current goal using add_SNo_1_1_2 (from left to right).
We will
prove 2 ≤ 2 + m'''.
rewrite the current goal using add_SNo_0R 2 SNo_2 (from right to left) at position 1.
We will
prove 2 + 0 ≤ 2 + m'''.
Apply add_SNo_Le2 2 0 m''' SNo_2 SNo_0 (nat_p_SNo m''' Hm''') to the current goal.
Apply ordinal_Subq_SNoLe 0 m''' ordinal_Empty (nat_p_ordinal m''' Hm''') to the current goal.
Apply Subq_Empty to the current goal.
rewrite the current goal using H4 (from right to left).
Apply ordinal_In_SNoLt to the current goal.
An exact proof term for the current goal is nat_p_ordinal m Lm.
rewrite the current goal using Hmm' (from left to right).
Apply ordsuccI2 to the current goal.
We will
prove x ≤ ordsucc m'.
rewrite the current goal using H4 (from right to left).
rewrite the current goal using Hmm' (from left to right).
We will
prove ordsucc m' ≤ ordsucc m'.
Apply SNoLe_ref to the current goal.
Apply L1a to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
We prove the intermediate claim Lk: nat_p k.
An exact proof term for the current goal is omega_nat_p k Hk.
We prove the intermediate claim LkS: SNo k.
An exact proof term for the current goal is nat_p_SNo k Lk.
We use k to witness the existential quantifier.
Apply andI to the current goal.
We will
prove k ∈ SNoL_pos x.
We will
prove k ∈ {w ∈ SNoL x|0 < w}.
Apply SepI to the current goal.
We will
prove k ∈ SNoL x.
Apply SNoL_I to the current goal.
An exact proof term for the current goal is Hx1.
An exact proof term for the current goal is LkS.
We will
prove SNoLev k ∈ SNoLev x.
rewrite the current goal using ordinal_SNoLev k (nat_p_ordinal k Lk) (from left to right).
We will
prove k ∈ SNoLev x.
Apply ordinal_trichotomy_or_impred k (SNoLev x) (nat_p_ordinal k Lk) (SNoLev_ordinal x Hx1) to the current goal.
An exact proof term for the current goal is H4.
Assume H4: k = SNoLev x.
We will prove False.
Apply SNoLt_irref k to the current goal.
Apply SNoLtLe_tra k x k LkS Hx1 LkS Hkx to the current goal.
Apply ordinal_SNoLev_max_2 k (nat_p_ordinal k Lk) x Hx1 to the current goal.
rewrite the current goal using H4 (from right to left).
Apply ordsuccI2 to the current goal.
We will prove False.
Apply SNoLt_irref k to the current goal.
Apply SNoLt_tra k x k LkS Hx1 LkS Hkx to the current goal.
An exact proof term for the current goal is ordinal_SNoLev_max k (nat_p_ordinal k Lk) x Hx1 H4.
An exact proof term for the current goal is Hkx.
Apply SNoLtLe_tra 0 2 k SNo_0 SNo_2 LkS SNoLt_0_2 to the current goal.
An exact proof term for the current goal is H2k.
rewrite the current goal using add_SNo_1_1_2 (from right to left).
rewrite the current goal using mul_SNo_distrR 1 1 k SNo_1 SNo_1 LkS (from left to right).
rewrite the current goal using mul_SNo_oneL k LkS (from left to right).
Apply SNoLeLt_tra x (ordsucc k) (k + k) Hx1 (nat_p_SNo (ordsucc k) (nat_ordsucc k Lk)) (SNo_add_SNo k k LkS LkS) HxSk to the current goal.
We will
prove ordsucc k < k + k.
rewrite the current goal using ordinal_ordsucc_SNo_eq k (nat_p_ordinal k Lk) (from left to right).
We will
prove 1 + k < k + k.
Apply add_SNo_Lt1 1 k k SNo_1 LkS LkS to the current goal.
Apply SNoLtLe_tra 1 2 k SNo_1 SNo_2 LkS SNoLt_1_2 to the current goal.
An exact proof term for the current goal is H2k.