Module: Mathlib.FieldTheory.AxGrothendieck

Goal state before:
pp: ι : Type u_1
α : Type u_2
inst✝³ : Finite α
K : Type u_3
inst✝² : Field K
inst✝¹ : CompatibleRing K
inst✝ : Finite ι
φ : ring.Formula (α ⊕ ι)
mons : ι → Finset (ι →₀ ℕ)
injOnAlt : ∀ {S : Set (ι → K)} (f : (ι → K) → ι → K), Set.InjOn f S ↔ ∀ (x y : ι → K), x ∈ S → y ∈ S → f x = f y → x = y
⊢ (∀ (fa : ⋯) (fb : ⋯),
      ⋯ →
        ⋯ →
          ∀ (i : ⋯),
            ⋯ →
              ∃ i_1,
                (Realize φ
                    (Sum.elim
                      ((fun x ↦
                          Sum.elim
                            (Sum.elim
                              ((fun x ↦
                                  Sum.elim
                                    (Sum.elim
                                      (Sum.elim
                                          (Sum.elim
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inl)
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inr))
                                          i_1 ∘
                                        Sum.inl)
                                      (Sum.elim
                                          (Sum.elim
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inl)
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inr))
                                          i_1 ∘
                                        Sum.inr))
                                    (fun x ↦ default (Fin.castAdd 0 x))
                                    (Sum.inl
                                      (Sum.elim
                                        (Sum.elim ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inl)
                                          ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inr))
                                        (fun i ↦ if i.1 = 0 then Sum.inr i.2 else Sum.inl (Sum.inr i.2)) x))) ∘
                                Sum.inl)
                              ((fun x ↦
                                  Sum.elim
                                    (Sum.elim
                                      (Sum.elim
                                          (Sum.elim
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inl)
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inr))
                                          i_1 ∘
                                        Sum.inl)
                                      (Sum.elim
                                          (Sum.elim
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inl)
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inr))
                                          i_1 ∘
                                        Sum.inr))
                                    (fun x ↦ default (Fin.castAdd 0 x))
                                    (Sum.inl
                                      (Sum.elim
                                        (Sum.elim ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inl)
                                          ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inr))
                                        (fun i ↦ if i.1 = 0 then Sum.inr i.2 else Sum.inl (Sum.inr i.2)) x))) ∘
                                Sum.inr))
                            (fun x ↦ default (Fin.cast ⋯ (Fin.castAdd 0 x)))
                            (Sum.inl (Sum.elim (fun x ↦ Sum.inl (Sum.inl x)) (fun x ↦ Sum.inr (0, x)) x))) ∘
                        Sum.inl)
                      ((fun x ↦
                          Sum.elim
                            (Sum.elim
                              ((fun x ↦
                                  Sum.elim
                                    (Sum.elim
                                      (Sum.elim
                                          (Sum.elim
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inl)
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inr))
                                          i_1 ∘
                                        Sum.inl)
                                      (Sum.elim
                                          (Sum.elim
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inl)
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inr))
                                          i_1 ∘
                                        Sum.inr))
                                    (fun x ↦ default (Fin.castAdd 0 x))
                                    (Sum.inl
                                      (Sum.elim
                                        (Sum.elim ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inl)
                                          ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inr))
                                        (fun i ↦ if i.1 = 0 then Sum.inr i.2 else Sum.inl (Sum.inr i.2)) x))) ∘
                                Sum.inl)
                              ((fun x ↦
                                  Sum.elim
                                    (Sum.elim
                                      (Sum.elim
                                          (Sum.elim
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inl)
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inr))
                                          i_1 ∘
                                        Sum.inl)
                                      (Sum.elim
                                          (Sum.elim
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inl)
                                            ((fun a ↦
                                                Sum.elim
                                                  (Sum.elim
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inl)
                                                    ((fun x ↦
                                                        Sum.elim
                                                          (Sum.elim
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inl)
                                                            ((fun a ↦
                                                                Sum.elim default
                                                                  (Sum.elim ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                    ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                  a) ∘
                                                              Sum.inr))
                                                          (fun x ↦ default (Fin.castAdd 0 x)) (Sum.inl (Sum.inr x))) ∘
                                                      Sum.inr))
                                                  i a) ∘
                                              Sum.inr))
                                          i_1 ∘
                                        Sum.inr))
                                    (fun x ↦ default (Fin.castAdd 0 x))
                                    (Sum.inl
                                      (Sum.elim
                                        (Sum.elim ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inl)
                                          ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inr))
                                        (fun i ↦ if i.1 = 0 then Sum.inr i.2 else Sum.inl (Sum.inr i.2)) x))) ∘
                                Sum.inr))
                            (fun x ↦ default (Fin.cast ⋯ (Fin.castAdd 0 x)))
                            (Sum.inl (Sum.elim (fun x ↦ Sum.inl (Sum.inl x)) (fun x ↦ Sum.inr (0, x)) x))) ∘
                        Sum.inr))
                    fun x ↦ default (Fin.cast ⋯ (Fin.cast ⋯ x))) ∧
                  ∀ (b : ⋯),
                    Term.realize
                        (Sum.elim
                          ((fun x ↦
                              Sum.elim
                                (Sum.elim
                                  ((fun x ↦
                                      Sum.elim
                                        (Sum.elim
                                          ((fun x ↦
                                              Sum.elim
                                                (Sum.elim
                                                  (Sum.elim
                                                      (Sum.elim
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inl)
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inr))
                                                      i_1 ∘
                                                    Sum.inl)
                                                  (Sum.elim
                                                      (Sum.elim
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inl)
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inr))
                                                      i_1 ∘
                                                    Sum.inr))
                                                (fun x ↦ default (Fin.castAdd 0 x))
                                                (Sum.inl
                                                  (Sum.elim
                                                    (Sum.elim ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inl)
                                                      ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inr))
                                                    (fun i ↦ if i.1 = 0 then Sum.inr i.2 else Sum.inl (Sum.inr i.2))
                                                    x))) ∘
                                            Sum.inl)
                                          ((fun x ↦
                                              Sum.elim
                                                (Sum.elim
                                                  (Sum.elim
                                                      (Sum.elim
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inl)
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inr))
                                                      i_1 ∘
                                                    Sum.inl)
                                                  (Sum.elim
                                                      (Sum.elim
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inl)
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inr))
                                                      i_1 ∘
                                                    Sum.inr))
                                                (fun x ↦ default (Fin.castAdd 0 x))
                                                (Sum.inl
                                                  (Sum.elim
                                                    (Sum.elim ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inl)
                                                      ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inr))
                                                    (fun i ↦ if i.1 = 0 then Sum.inr i.2 else Sum.inl (Sum.inr i.2))
                                                    x))) ∘
                                            Sum.inr))
                                        (fun x ↦ default (Fin.cast ⋯ (Fin.castAdd 0 x)))
                                        (Sum.inl (Sum.elim (fun x ↦ Sum.inl (Sum.inr x)) Sum.inr x))) ∘
                                    Sum.inl)
                                  ((fun x ↦
                                      Sum.elim
                                        (Sum.elim
                                          ((fun x ↦
                                              Sum.elim
                                                (Sum.elim
                                                  (Sum.elim
                                                      (Sum.elim
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inl)
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inr))
                                                      i_1 ∘
                                                    Sum.inl)
                                                  (Sum.elim
                                                      (Sum.elim
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inl)
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inr))
                                                      i_1 ∘
                                                    Sum.inr))
                                                (fun x ↦ default (Fin.castAdd 0 x))
                                                (Sum.inl
                                                  (Sum.elim
                                                    (Sum.elim ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inl)
                                                      ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inr))
                                                    (fun i ↦ if i.1 = 0 then Sum.inr i.2 else Sum.inl (Sum.inr i.2))
                                                    x))) ∘
                                            Sum.inl)
                                          ((fun x ↦
                                              Sum.elim
                                                (Sum.elim
                                                  (Sum.elim
                                                      (Sum.elim
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inl)
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inr))
                                                      i_1 ∘
                                                    Sum.inl)
                                                  (Sum.elim
                                                      (Sum.elim
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inl)
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inr))
                                                      i_1 ∘
                                                    Sum.inr))
                                                (fun x ↦ default (Fin.castAdd 0 x))
                                                (Sum.inl
                                                  (Sum.elim
                                                    (Sum.elim ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inl)
                                                      ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inr))
                                                    (fun i ↦ if i.1 = 0 then Sum.inr i.2 else Sum.inl (Sum.inr i.2))
                                                    x))) ∘
                                            Sum.inr))
                                        (fun x ↦ default (Fin.cast ⋯ (Fin.castAdd 0 x)))
                                        (Sum.inl (Sum.elim (fun x ↦ Sum.inl (Sum.inr x)) Sum.inr x))) ∘
                                    Sum.inr))
                                (fun x ↦ default (Fin.cast ⋯ (Fin.cast ⋯ x)))
                                (Sum.inl (Sum.elim (fun x ↦ Sum.inl x) (fun x ↦ Sum.inr (0, x)) x))) ∘
                            Sum.inl)
                          ((fun x ↦
                              Sum.elim
                                (Sum.elim
                                  ((fun x ↦
                                      Sum.elim
                                        (Sum.elim
                                          ((fun x ↦
                                              Sum.elim
                                                (Sum.elim
                                                  (Sum.elim
                                                      (Sum.elim
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inl)
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inr))
                                                      i_1 ∘
                                                    Sum.inl)
                                                  (Sum.elim
                                                      (Sum.elim
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inl)
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inr))
                                                      i_1 ∘
                                                    Sum.inr))
                                                (fun x ↦ default (Fin.castAdd 0 x))
                                                (Sum.inl
                                                  (Sum.elim
                                                    (Sum.elim ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inl)
                                                      ((fun x ↦ Sum.inl (Sum.inl x)) ∘ Sum.inr))
                                                    (fun i ↦ if i.1 = 0 then Sum.inr i.2 else Sum.inl (Sum.inr i.2))
                                                    x))) ∘
                                            Sum.inl)
                                          ((fun x ↦
                                              Sum.elim
                                                (Sum.elim
                                                  (Sum.elim
                                                      (Sum.elim
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inr))
                                                              i a) ∘
                                                          Sum.inl)
                                                        ((fun a ↦
                                                            Sum.elim
                                                              (Sum.elim
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inl)
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inr))
                                                                              a) ∘
                                                                          Sum.inr))
                                                                      (fun x ↦ default (Fin.castAdd 0 x))
                                                                      (Sum.inl (Sum.inr x))) ∘
                                                                  Sum.inl)
                                                                ((fun x ↦
                                                                    Sum.elim
                                                                      (Sum.elim
                                                                        ((fun a ↦
                                                                            Sum.elim default
                                                                              (Sum.elim
                                                                                ((fun t ↦ Sum.rec fa fb t) ∘ Sum.inl)
                                                                                ((fun t ↦ ⋯) ∘ ⋯))
                                                                              ⋯) ∘
                                                                          ⋯)
                                                                        ⋯)
                                                                      ⋯ ⋯) ∘
                                                                  ⋯))
                                                              ⋯ ⋯) ∘
                                                          ⋯))
                                                      ⋯ ∘
                                                    ⋯)
                                                  ⋯)
                                                ⋯ ⋯) ∘
                                            ⋯))
                                        ⋯ ⋯) ∘
                                    ⋯)
                                  ⋯)
                                ⋯ ⋯) ∘
                            ⋯))
                        ⋯ =
                      ⋯) ↔
    ⋯

Tactic:
simp only [Function.comp_def, Sum.elim_inl, Sum.elim_inr, Fin.castAdd_zero, Fin.cast_eq_self,
    Nat.add_zero, Term.realize_var, Term.realize_relabel, realize_termOfFreeCommRing,
    lift_genericPolyMap, Nat.reduceAdd, Fin.isValue, Function.uncurry_apply_pair, Fin.cons_zero,
    Fin.cons_one, ↓reduceIte, one_ne_zero]

Goal state after: