theorem fixInduction_spec {C : α → Sort*} {f : α →. Sum β α} {b : β} {a : α} (h : b ∈ f.fix a)
    (H : ∀ a', b ∈ f.fix a' → (∀ a'', Sum.inr a'' ∈ f a' → C a'') → C a') :
    @fixInduction _ _ C _ _ _ h H = H a h fun a' h' => fixInduction (fix_fwd h h') H := by
  unfold fixInduction
  -- Porting note: `generalize` required to address `generalize_proofs` bug
  generalize (Part.mem_assert_iff.1 h).fst = ha
  

Proof state:
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
C : α → Sort u_7
f : α →. β ⊕ α
b : β
a : α
h : b ∈ fix f a
H : (a' : α) → b ∈ fix f a' → ((a'' : α) → Sum.inr a'' ∈ f a' → C a'') → C a'
ha : Acc (fun x y => Sum.inr x ∈ f y) a
⊢ (let_fun h₂ :=
      (_ :
        b ∈
          WellFounded.fixF
            (fun a IH =>
              Part.assert (f a).Dom fun hf =>
                match e : Part.get (f a) hf with
                | Sum.inl b => Part.some b
                | Sum.inr a' => IH a' (_ : ∃ (h : (f a).Dom), Part.get (f a) h = Sum.inr a'))
            a (_ : Acc (fun x y => Sum.inr x ∈ f y) a));
    Acc.rec (motive := fun {a} h₁ =>
      b ∈
          WellFounded.fixF
            (fun a IH =>
              Part.assert (f a).Dom fun hf =>
                match e : Part.get (f a) hf with
                | Sum.inl b => Part.some b
                | Sum.inr a' => IH a' (_ : ∃ (h : (f a).Dom), Part.get (f a) h = Sum.inr a'))
            a h₁ →
        C a)
      (fun a ha IH h₂ =>
        let_fun h :=
          (_ :
            b ∈
              Part.assert (Acc (fun x y => Sum.inr x ∈ f y) a) fun h =>
                WellFounded.fixF
                  (fun a IH =>
                    Part.assert (f a).Dom fun hf =>
                      match e : Part.get (f a) hf with
                      | Sum.inl b => Part.some b
                      | Sum.inr a' => IH a' (_ : ∃ (h : (f a).Dom), Part.get (f a) h = Sum.inr a'))
                  a h);
        H a h fun a' fa' =>
          IH a' fa'
            (_ :
              b ∈
                WellFounded.fixF
                  (fun a IH =>
                    Part.assert (f a).Dom fun hf =>
                      match e : Part.get (f a) hf with
                      | Sum.inl b => Part.some b
                      | Sum.inr a' => IH a' (_ : ∃ (h : (f a).Dom), Part.get (f a) h = Sum.inr a'))
                  a' (_ : Acc (fun x y => Sum.inr x ∈ f y) a')))
      ha h₂) =
    H a h fun a' h' =>
      let_fun h₂ :=
        (_ :
          b ∈
            WellFounded.fixF
              (fun a IH =>
                Part.assert (f a).Dom fun hf =>
                  match e : Part.get (f a) hf with
                  | Sum.inl b => Part.some b
                  | Sum.inr a' => IH a' (_ : ∃ (h : (f a).Dom), Part.get (f a) h = Sum.inr a'))
              a' (_ : Acc (fun x y => Sum.inr x ∈ f y) a'));
      Acc.rec (motive := fun {a} h₁ =>
        b ∈
            WellFounded.fixF
              (fun a IH =>
                Part.assert (f a).Dom fun hf =>
                  match e : Part.get (f a) hf with
                  | Sum.inl b => Part.some b
                  | Sum.inr a' => IH a' (_ : ∃ (h : (f a).Dom), Part.get (f a) h = Sum.inr a'))
              a h₁ →
          (fun x => C x) a)
        (fun a ha IH h₂ =>
          let_fun h :=
            (_ :
              b ∈
                Part.assert (Acc (fun x y => Sum.inr x ∈ f y) a) fun h =>
                  WellFounded.fixF
                    (fun a IH =>
                      Part.assert (f a).Dom fun hf =>
                        match e : Part.get (f a) hf with
                        | Sum.inl b => Part.some b
                        | Sum.inr a' => IH a' (_ : ∃ (h : (f a).Dom), Part.get (f a) h = Sum.inr a'))
                    a h);
          H a h fun a' fa' =>
            IH a' fa'
              (_ :
                b ∈
                  WellFounded.fixF
                    (fun a IH =>
                      Part.assert (f a).Dom fun hf =>
                        match e : Part.get (f a) hf with
                        | Sum.inl b => Part.some b
                        | Sum.inr a' => IH a' (_ : ∃ (h : (f a).Dom), Part.get (f a) h = Sum.inr a'))
                    a' (_ : Acc (fun x y => Sum.inr x ∈ f y) a')))
        (_ : Acc (fun x y => Sum.inr x ∈ f y) a') h₂

Next tactic:
induction ha