apply corec_bisim (fun ⟨σ', c⟩ i => σ' = (σ.drop <| i + i/2) 
  ∧ c = (i+1) % 2)
α✝ : Type u_1
σ : Stream' α✝
⊢ corec
      (fun x =>
        match x with
        | (σ, snd) => head σ)
      (fun x =>
        match x with
        | (σ, 0) => (tail (tail σ), 3 - 2)
        | (σ, Nat.succ m) => (tail σ, m))
      (σ, 3 - 2) =
    corec (fun i => σ (i + i / 2)) (fun x => x + 1) 0
case hf
α✝ : Type u_1
σ : Stream' α✝
⊢ ∀ (a : Stream' α✝ × ℕ) (a' : ℕ),
    (match a with
      | (σ', c) => σ' = drop (a' + a' / 2) σ ∧ c = (a' + 1) % 2) →
      (match a with
        | (σ, snd) => head σ) =
        σ (a' + a' / 2)

case hg
α✝ : Type u_1
σ : Stream' α✝
⊢ ∀ (a : Stream' α✝ × ℕ) (a' : ℕ),
    (match a with
      | (σ', c) => σ' = drop (a' + a' / 2) σ ∧ c = (a' + 1) % 2) →
      match
        match a with
        | (σ, 0) => (tail (tail σ), 3 - 2)
        | (σ, Nat.succ m) => (tail σ, m) with
      | (σ', c) => σ' = drop (a' + 1 + (a' + 1) / 2) σ ∧ c = (a' + 1 + 1) % 2

case a
α✝ : Type u_1
σ : Stream' α✝
⊢ match (σ, 3 - 2) with
  | (σ', c) => σ' = drop (0 + 0 / 2) σ ∧ c = (0 + 1) % 2