apply corec_bisim (fun ⟨σ, n⟩ σ' => σ = σ' ∧ n = 0)
α : Type u_1
σ : Stream' α
⊢ corec (fun x => head x.fst)
      (fun x =>
        match x with
        | (σ, 0) => (tail (tail σ), 0)
        | (σ, Nat.succ m) => (tail σ, m))
      (σ, 0) =
    corec (fun s => head s) (fun s => tail (tail s)) σ
case hf
α : Type u_1
σ : Stream' α
⊢ ∀ (a : Stream' α × ℕ) (a' : Stream' α),
    (match a with
      | (σ, n) => σ = a' ∧ n = 0) →
      head a.fst = head a'

case hg
α : Type u_1
σ : Stream' α
⊢ ∀ (a : Stream' α × ℕ) (a' : Stream' α),
    (match a with
      | (σ, n) => σ = a' ∧ n = 0) →
      match
        match a with
        | (σ, 0) => (tail (tail σ), 0)
        | (σ, Nat.succ m) => (tail σ, m) with
      | (σ, n) => σ = tail (tail a') ∧ n = 0

case a
α : Type u_1
σ : Stream' α
⊢ match (σ, 0) with
  | (σ_1, n) => σ_1 = σ ∧ n = 0