simp[run_denoteOpArgs_cons_]
α₁ σ₁ : Type
ε₁ : σ₁ → Type
δ₁ : Dialect α₁ σ₁ ε₁
α₂ σ₂ : Type
ε₂ : σ₂ → Type
δ₂ : Dialect α₂ σ₂ ε₂
α σ : Type
ε : σ → Type
Δ : Dialect α σ ε
S : Semantics Δ
env : SSAEnv Δ
ty : MLIRType Δ
v : MLIRType.eval ty
name : SSAVal
ENV : SSAEnv.get name ty env = some v
args : List (TypedSSAVal Δ)
⊢ run (denoteOpArgs Δ ((name, ty) :: args)) env =
    match run (denoteOpArgs Δ args) env with
    | Except.ok (xs, env') => Except.ok ({ fst := ty, snd := v } :: xs, env')
    | Except.error e => Except.error e
α₁ σ₁ : Type
ε₁ : σ₁ → Type
δ₁ : Dialect α₁ σ₁ ε₁
α₂ σ₂ : Type
ε₂ : σ₂ → Type
δ₂ : Dialect α₂ σ₂ ε₂
α σ : Type
ε : σ → Type
Δ : Dialect α σ ε
S : Semantics Δ
env : SSAEnv Δ
ty : MLIRType Δ
v : MLIRType.eval ty
name : SSAVal
ENV : SSAEnv.get name ty env = some v
args : List (TypedSSAVal Δ)
⊢ run
      (do
        let x ← TopM.get ty name
        let xs ← denoteOpArgs Δ args
        pure ({ fst := ty, snd := x } :: xs))
      env =
    match run (denoteOpArgs Δ args) env with
    | Except.ok (xs, env') => Except.ok ({ fst := ty, snd := v } :: xs, env')
    | Except.error e => Except.error e