have : Computable₂ (fun q₁ q₂ => ((l q₁.1).reverse.get? q₂.1).casesOn false (fun b => p q₁.1 b && q₂.2)
  : α × ℕ → ℕ × Bool → Bool) :=
  to₂' <| option_casesOn
    (list_get?.comp (list_reverse.comp $ hl.comp $ fst.comp fst) (fst.comp snd))
    (const false) (by apply dom_bool₂.comp₂ (hp.comp₂ (fst.comp₂ $ fst.comp₂ .left) .right) (snd.comp₂ $ snd.comp₂ .left))
α✝ : Type u_1
β✝ : Type u_2
σ : Type u_3
inst✝⁴ : Primcodable α✝
inst✝³ : Primcodable β✝
inst✝² : Primcodable σ
α : Type u_4
β : Type u_5
inst✝¹ : Primcodable α
inst✝ : Primcodable β
p : α → β → Bool
l : α → List β
hp : Computable₂ p
hl : Computable l
f : α → ℕ → Bool :=
  fun a n => Nat.recOn n true fun m ih => Option.casesOn ((l a).reverse.get? m) false fun b => p a b && ih
⊢ Computable fun a => (l a).all (p a)
α✝ : Type u_1
β✝ : Type u_2
σ : Type u_3
inst✝⁴ : Primcodable α✝
inst✝³ : Primcodable β✝
inst✝² : Primcodable σ
α : Type u_4
β : Type u_5
inst✝¹ : Primcodable α
inst✝ : Primcodable β
p : α → β → Bool
l : α → List β
hp : Computable₂ p
hl : Computable l
f : α → ℕ → Bool :=
  fun a n => Nat.recOn n true fun m ih => Option.casesOn ((l a).reverse.get? m) false fun b => p a b && ih
this : Computable₂ fun q₁ q₂ => Option.casesOn ((l q₁.1).reverse.get? q₂.1) false fun b => p q₁.1 b && q₂.2
⊢ Computable fun a => (l a).all (p a)