intro x
L : Language
μ : Type v
α : Type u_1
inst✝⁸ : Primcodable α
inst✝⁷ : Primcodable μ
inst✝⁶ : (k : ℕ) → Primcodable (L.Func k)
inst✝⁵ : UniformlyPrimcodable L.Func
inst✝⁴ : (k : ℕ) → Primcodable (L.Rel k)
inst✝³ : UniformlyPrimcodable L.Rel
σ : Type u_2
μ₁ : Type u_3
μ₂ : Type u_4
inst✝² : Primcodable μ₁
inst✝¹ : Primcodable μ₂
inst✝ : Primcodable σ
n₁ n₂ : ℕ
b : σ → Fin n₁ → Semiterm L μ₂ n₂
e : σ → μ₁ → Semiterm L μ₂ n₂
p : σ → Semiformula L μ₁ n₁
hb : Primrec b
he : Primrec₂ e
hp : Primrec p
this✝² : (n : ℕ) → Primcodable { t // t.bv ≤ n } := fun n => Primcodable.subtype ⋯
this✝¹ : (n : ℕ) → Primcodable { t // t.bv ≤ n } := fun n => Primcodable.subtype ⋯
this✝ : (n : ℕ) → Primcodable { p // p.bv ≤ n } := fun n => Primcodable.subtype ⋯
this :
  Primrec fun z =>
    UFormula.bind (fun x => if hx : x < n₁ then ↑(subtEquiv (b z ⟨x, hx⟩)) else default) (fun x => ↑(subtEquiv (e z x)))
      ↑(subfEquiv (p z))
⊢ ∀ (n : σ),
    encode
        (UFormula.bind (fun x => if hx : x < n₁ then ↑(subtEquiv (b n ⟨x, hx⟩)) else default)
          (fun x => ↑(subtEquiv (e n x))) ↑(subfEquiv (p n))) =
      encode ((Rew.bind (b n) (e n)).hom (p n))
L : Language
μ : Type v
α : Type u_1
inst✝⁸ : Primcodable α
inst✝⁷ : Primcodable μ
inst✝⁶ : (k : ℕ) → Primcodable (L.Func k)
inst✝⁵ : UniformlyPrimcodable L.Func
inst✝⁴ : (k : ℕ) → Primcodable (L.Rel k)
inst✝³ : UniformlyPrimcodable L.Rel
σ : Type u_2
μ₁ : Type u_3
μ₂ : Type u_4
inst✝² : Primcodable μ₁
inst✝¹ : Primcodable μ₂
inst✝ : Primcodable σ
n₁ n₂ : ℕ
b : σ → Fin n₁ → Semiterm L μ₂ n₂
e : σ → μ₁ → Semiterm L μ₂ n₂
p : σ → Semiformula L μ₁ n₁
hb : Primrec b
he : Primrec₂ e
hp : Primrec p
this✝² : (n : ℕ) → Primcodable { t // t.bv ≤ n } := fun n => Primcodable.subtype ⋯
this✝¹ : (n : ℕ) → Primcodable { t // t.bv ≤ n } := fun n => Primcodable.subtype ⋯
this✝ : (n : ℕ) → Primcodable { p // p.bv ≤ n } := fun n => Primcodable.subtype ⋯
this :
  Primrec fun z =>
    UFormula.bind (fun x => if hx : x < n₁ then ↑(subtEquiv (b z ⟨x, hx⟩)) else default) (fun x => ↑(subtEquiv (e z x)))
      ↑(subfEquiv (p z))
x : σ
⊢ encode
      (UFormula.bind (fun x_1 => if hx : x_1 < n₁ then ↑(subtEquiv (b x ⟨x_1, hx⟩)) else default)
        (fun x_1 => ↑(subtEquiv (e x x_1))) ↑(subfEquiv (p x))) =
    encode ((Rew.bind (b x) (e x)).hom (p x))