Let p be given.
We prove the intermediate
claim HpRepl:
p ∈ Repl X (λa ⇒ apply_fun f a).
An exact proof term for the current goal is Hp.
Let a be given.
rewrite the current goal using Heq (from left to right).
rewrite the current goal using Hfa (from left to right).
rewrite the current goal using Hid (from left to right).
rewrite the current goal using Hc (from left to right).
Let p be given.
We prove the intermediate
claim Hp0X:
(p 0) ∈ X.
An
exact proof term for the current goal is
(ap0_Sigma X (λ_ : set ⇒ {y0}) p Hp).
We prove the intermediate
claim Hp1Sing:
(p 1) ∈ {y0}.
An
exact proof term for the current goal is
(ap1_Sigma X (λ_ : set ⇒ {y0}) p Hp).
We prove the intermediate
claim Hp1eq:
(p 1) = y0.
An
exact proof term for the current goal is
(singleton_elem (p 1) y0 Hp1Sing).
We prove the intermediate
claim Heta:
p = (p 0,p 1).
An
exact proof term for the current goal is
(setprod_eta X {y0} p Hp).
We prove the intermediate
claim Hfp0eq:
apply_fun f (p 0) = (p 0,p 1).
rewrite the current goal using Hfp0 (from left to right).
rewrite the current goal using Hid0 (from left to right).
rewrite the current goal using Hc0 (from left to right).
rewrite the current goal using Hp1eq (from left to right).
Use reflexivity.
We prove the intermediate
claim Hp_as_image:
p = apply_fun f (p 0).
rewrite the current goal using Heta (from left to right) at position 1.
rewrite the current goal using Hfp0eq (from left to right).
Use reflexivity.
rewrite the current goal using Hp_as_image (from left to right).
An
exact proof term for the current goal is
(ReplI X (λa : set ⇒ apply_fun f a) (p 0) Hp0X).
∎