Let X, Tx, seq, x and y be given.
We prove the intermediate
claim HSep:
∀x1 x2 : set, x1 ∈ X → x2 ∈ X → x1 ≠ x2 → ∃U V : set, U ∈ Tx ∧ V ∈ Tx ∧ x1 ∈ U ∧ x2 ∈ V ∧ U ∩ V = Empty.
We prove the intermediate
claim HexUV:
∃U V : set, U ∈ Tx ∧ V ∈ Tx ∧ x ∈ U ∧ y ∈ V ∧ U ∩ V = Empty.
An exact proof term for the current goal is (HSep x y HxX HyX Hneq).
Apply HexUV to the current goal.
Let U be given.
Apply HexV to the current goal.
Let V be given.
We prove the intermediate
claim HU:
U ∈ Tx.
We prove the intermediate
claim HV:
V ∈ Tx.
We prove the intermediate
claim HxU:
x ∈ U.
We prove the intermediate
claim HyV:
y ∈ V.
An
exact proof term for the current goal is
(andER (U ∈ Tx ∧ V ∈ Tx ∧ x ∈ U) (y ∈ V) (andEL (U ∈ Tx ∧ V ∈ Tx ∧ x ∈ U ∧ y ∈ V) (U ∩ V = Empty) Hconj)).
We prove the intermediate
claim HUV_empty:
U ∩ V = Empty.
An
exact proof term for the current goal is
(andER (U ∈ Tx ∧ V ∈ Tx ∧ x ∈ U ∧ y ∈ V) (U ∩ V = Empty) Hconj).
We prove the intermediate
claim HexNx:
∃Nx : set, Nx ∈ ω ∧ ∀n : set, n ∈ ω → Nx ⊆ n → apply_fun seq n ∈ U.
An exact proof term for the current goal is (Hx U HU HxU).
Apply HexNx to the current goal.
Let Nx be given.
Assume HNx_and_conv.
We prove the intermediate
claim HNx:
Nx ∈ ω.
An
exact proof term for the current goal is
(andEL (Nx ∈ ω) (∀n : set, n ∈ ω → Nx ⊆ n → apply_fun seq n ∈ U) HNx_and_conv).
We prove the intermediate
claim Hconv_x:
∀n : set, n ∈ ω → Nx ⊆ n → apply_fun seq n ∈ U.
An
exact proof term for the current goal is
(andER (Nx ∈ ω) (∀n : set, n ∈ ω → Nx ⊆ n → apply_fun seq n ∈ U) HNx_and_conv).
We prove the intermediate
claim HexNy:
∃Ny : set, Ny ∈ ω ∧ ∀n : set, n ∈ ω → Ny ⊆ n → apply_fun seq n ∈ V.
An exact proof term for the current goal is (Hy V HV HyV).
Apply HexNy to the current goal.
Let Ny be given.
Assume HNy_and_conv.
We prove the intermediate
claim HNy:
Ny ∈ ω.
An
exact proof term for the current goal is
(andEL (Ny ∈ ω) (∀n : set, n ∈ ω → Ny ⊆ n → apply_fun seq n ∈ V) HNy_and_conv).
We prove the intermediate
claim Hconv_y:
∀n : set, n ∈ ω → Ny ⊆ n → apply_fun seq n ∈ V.
An
exact proof term for the current goal is
(andER (Ny ∈ ω) (∀n : set, n ∈ ω → Ny ⊆ n → apply_fun seq n ∈ V) HNy_and_conv).
We prove the intermediate
claim HN_omega:
N ∈ ω.
We prove the intermediate
claim Hmax_omega:
Nx ∪ Ny ∈ ω.
Apply (xm (Nx ∈ Ny)) to the current goal.
We prove the intermediate
claim Hmax_eq_Ny:
Nx ∪ Ny = Ny.
We prove the intermediate
claim HNx_sub_Ny:
Nx ⊆ Ny.
We prove the intermediate
claim HNy_nat:
nat_p Ny.
An
exact proof term for the current goal is
(omega_nat_p Ny HNy).
We prove the intermediate
claim HNy_ord:
ordinal Ny.
An
exact proof term for the current goal is
(nat_p_ordinal Ny HNy_nat).
We prove the intermediate
claim HNy_trans:
TransSet Ny.
An exact proof term for the current goal is (HNy_trans Nx HNx_in_Ny).
We prove the intermediate
claim HNy_refl:
Ny ⊆ Ny.
An
exact proof term for the current goal is
(Subq_ref Ny).
An
exact proof term for the current goal is
(binunion_Subq_min Nx Ny Ny HNx_sub_Ny HNy_refl).
rewrite the current goal using Hmax_eq_Ny (from left to right).
An exact proof term for the current goal is HNy.
We prove the intermediate
claim HNy_sub_or_eq_Nx:
Ny ⊆ Nx.
We prove the intermediate
claim HNx_nat:
nat_p Nx.
An
exact proof term for the current goal is
(omega_nat_p Nx HNx).
We prove the intermediate
claim HNy_nat:
nat_p Ny.
An
exact proof term for the current goal is
(omega_nat_p Ny HNy).
We prove the intermediate
claim HNx_ord:
ordinal Nx.
An
exact proof term for the current goal is
(nat_p_ordinal Nx HNx_nat).
We prove the intermediate
claim HNy_ord:
ordinal Ny.
An
exact proof term for the current goal is
(nat_p_ordinal Ny HNy_nat).
We prove the intermediate
claim Hcases:
Nx ∈ Ny ∨ Ny ⊆ Nx.
Apply (Hcases (Ny ⊆ Nx)) to the current goal.
Apply FalseE to the current goal.
An exact proof term for the current goal is (HNx_nin_Ny HNx_in_Ny).
Assume H.
An exact proof term for the current goal is H.
We prove the intermediate
claim Hmax_eq_Nx:
Nx ∪ Ny = Nx.
We prove the intermediate
claim HNx_refl:
Nx ⊆ Nx.
An
exact proof term for the current goal is
(Subq_ref Nx).
An
exact proof term for the current goal is
(binunion_Subq_min Nx Ny Nx HNx_refl HNy_sub_or_eq_Nx).
rewrite the current goal using Hmax_eq_Nx (from left to right).
An exact proof term for the current goal is HNx.
An
exact proof term for the current goal is
(omega_ordsucc (Nx ∪ Ny) Hmax_omega).
We prove the intermediate
claim HNx_sub_N:
Nx ⊆ N.
We prove the intermediate
claim HNx_sub_union:
Nx ⊆ Nx ∪ Ny.
We prove the intermediate
claim Hunion_sub_ordsucc:
Nx ∪ Ny ⊆ ordsucc (Nx ∪ Ny).
An
exact proof term for the current goal is
(ordsuccI1 (Nx ∪ Ny)).
An
exact proof term for the current goal is
(Subq_tra Nx (Nx ∪ Ny) (ordsucc (Nx ∪ Ny)) HNx_sub_union Hunion_sub_ordsucc).
We prove the intermediate
claim HNy_sub_N:
Ny ⊆ N.
We prove the intermediate
claim HNy_sub_union:
Ny ⊆ Nx ∪ Ny.
We prove the intermediate
claim Hunion_sub_ordsucc:
Nx ∪ Ny ⊆ ordsucc (Nx ∪ Ny).
An
exact proof term for the current goal is
(ordsuccI1 (Nx ∪ Ny)).
An
exact proof term for the current goal is
(Subq_tra Ny (Nx ∪ Ny) (ordsucc (Nx ∪ Ny)) HNy_sub_union Hunion_sub_ordsucc).
We prove the intermediate
claim Hseq_N_in_U:
apply_fun seq N ∈ U.
An exact proof term for the current goal is (Hconv_x N HN_omega HNx_sub_N).
We prove the intermediate
claim Hseq_N_in_V:
apply_fun seq N ∈ V.
An exact proof term for the current goal is (Hconv_y N HN_omega HNy_sub_N).
We prove the intermediate
claim Hseq_N_in_UV:
apply_fun seq N ∈ U ∩ V.
rewrite the current goal using HUV_empty (from right to left).
An exact proof term for the current goal is Hseq_N_in_UV.
∎