simp [interpOption] at *
case Vis
E F : Type → Type
T R : Type
h : E ~> OptionT (Fitree F)
k : T → Fitree E R
T✝ : Type
e✝ : E T✝
k✝ : T✝ → Fitree E T
ih :
  ∀ (a : T✝),
    interpOption h (bind (k✝ a) k) =
      bind (interpOption h (k✝ a)) fun x? =>
        match x? with
        | some x => interpOption h (k x)
        | none => ret none
⊢ interpOption h (bind (Vis e✝ k✝) k) =
    bind (interpOption h (Vis e✝ k✝)) fun x? =>
      match x? with
      | some x => interpOption h (k x)
      | none => ret none
case Vis
E F : Type → Type
T R : Type
h : E ~> OptionT (Fitree F)
k : T → Fitree E R
T✝ : Type
e✝ : E T✝
k✝ : T✝ → Fitree E T
ih :
  ∀ (a : T✝),
    interp h (bind (k✝ a) k) =
      bind (interp h (k✝ a)) fun x? =>
        match x? with
        | some x => interp h (k x)
        | none => ret none
⊢ interp h (bind (Vis e✝ k✝) k) =
    bind (interp h (Vis e✝ k✝)) fun x? =>
      match x? with
      | some x => interp h (k x)
      | none => ret none