Let F0, ea and eb be given.
We prove the intermediate
claim Hea0F0:
apply_fun ea 0 ∈ F0.
An
exact proof term for the current goal is
(HeaFun 0 (ordsuccI2 0)).
Apply (HebSurj (apply_fun ea 0) Hea0F0) to the current goal.
Let k0 be given.
Assume Hk0pack.
We prove the intermediate
claim Hk0In:
k0 ∈ ordsucc 0.
We prove the intermediate
claim Hk0eq0:
k0 = 0.
We prove the intermediate
claim Hk0Case:
k0 ∈ 0 ∨ k0 = 0.
An
exact proof term for the current goal is
(ordsuccE 0 k0 Hk0In).
Apply (Hk0Case (k0 = 0)) to the current goal.
Apply FalseE to the current goal.
An
exact proof term for the current goal is
(EmptyE k0 Hk0E).
An exact proof term for the current goal is Hk0Z.
rewrite the current goal using Hk0eq0 (from right to left) at position 1.
An exact proof term for the current goal is HebEq.
We prove the intermediate
claim H0Nat:
nat_p 0.
An
exact proof term for the current goal is
(omega_nat_p 0 H0O).
rewrite the current goal using Heb0Eq (from left to right).
Use reflexivity.
Let t be given.
Assume IHt: Pm t.
Let F0, ea and eb be given.
We prove the intermediate
claim HnDef:
n = ordsucc t.
We prove the intermediate
claim HtO:
t ∈ ω.
An
exact proof term for the current goal is
(nat_p_omega t HtNat).
We prove the intermediate
claim HnNat:
nat_p n.
An
exact proof term for the current goal is
(omega_nat_p n HnO).
We prove the intermediate
claim HflF0:
flast ∈ F0.
An
exact proof term for the current goal is
(HeaFun n (ordsuccI2 n)).
Apply Hmove to the current goal.
Let eb' be given.
Assume Heb'pack.
We prove the intermediate
claim Heb'Last:
apply_fun eb' n = flast.
We prove the intermediate
claim HdropA:
bijection n (F0 ∖ {flast}) ea.
We prove the intermediate
claim HdropB:
bijection n (F0 ∖ {flast}) eb'.
We prove the intermediate
claim HlastEq:
apply_fun eb' n = flast.
An exact proof term for the current goal is Heb'Last.
rewrite the current goal using HlastEq (from right to left) at position 1.
Let f be given.
An
exact proof term for the current goal is
(HUI f (setminusE1 F0 {flast} f Hf)).
rewrite the current goal using HnDef (from left to right).
An
exact proof term for the current goal is
(IHt (F0 ∖ {flast}) ea eb' HtO HdropA HdropB HUI_drop).
rewrite the current goal using Heb'Last (from left to right).
Use reflexivity.
rewrite the current goal using HsumB (from left to right).
rewrite the current goal using HprefixEq (from left to right).
rewrite the current goal using HlastTermEq (from left to right).
Use reflexivity.