funext x
case Vis.a
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
fequal2 : ∀ (α β : Type 1) (f g : α → β) (x y : α), f = g → x = y → f x = g y
⊢ (fun __do_lift =>
      match __do_lift with
      | some a => interp h (bind (k✝ a) k)
      | none => ret none) =
    fun x =>
    bind
      (match x with
      | some a => interp h (k✝ a)
      | none => ret none)
      fun x? =>
      match x? with
      | some x => interp h (k x)
      | none => ret none
case Vis.a.h
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
fequal2 : ∀ (α β : Type 1) (f g : α → β) (x y : α), f = g → x = y → f x = g y
x : Option T✝
⊢ (match x with
    | some a => interp h (bind (k✝ a) k)
    | none => ret none) =
    bind
      (match x with
      | some a => interp h (k✝ a)
      | none => ret none)
      fun x? =>
      match x? with
      | some x => interp h (k x)
      | none => ret none