byCases H: v' = v
α σ : Type
ε : σ → Type
δ : Dialect α σ ε
τ τ' : MLIRType δ
env : SSAEnv δ
v v' : SSAVal
val : MLIRType.eval τ'
⊢ get v τ (set v' τ' val env) =
    if v' = v then
      if H : τ' = τ then
        some
          (cast
            (_ :
              (match τ' with
                | MLIRType.float a => Float
                | MLIRType.int signedness sz => FinInt sz
                | MLIRType.tensor1d => Tensor1D
                | MLIRType.tensor2d => Tensor2D
                | MLIRType.tensor4d => Tensor4D
                | MLIRType.index => ℤ
                | MLIRType.undefined a => Unit
                | MLIRType.extended σ => ε σ
                | MLIRType.erased => Unit) =
                match τ with
                | MLIRType.float a => Float
                | MLIRType.int signedness sz => FinInt sz
                | MLIRType.tensor1d => Tensor1D
                | MLIRType.tensor2d => Tensor2D
                | MLIRType.tensor4d => Tensor4D
                | MLIRType.index => ℤ
                | MLIRType.undefined a => Unit
                | MLIRType.extended σ => ε σ
                | MLIRType.erased => Unit)
            val)
      else none
    else get v τ env
case h1
α σ : Type
ε : σ → Type
δ : Dialect α σ ε
τ τ' : MLIRType δ
env : SSAEnv δ
v : SSAVal
val : MLIRType.eval τ'
⊢ get v τ (set v τ' val env) =
    if h : τ' = τ then
      some
        (cast
          (_ :
            (match τ' with
              | MLIRType.float a => Float
              | MLIRType.int signedness sz => FinInt sz
              | MLIRType.tensor1d => Tensor1D
              | MLIRType.tensor2d => Tensor2D
              | MLIRType.tensor4d => Tensor4D
              | MLIRType.index => ℤ
              | MLIRType.undefined a => Unit
              | MLIRType.extended σ => ε σ
              | MLIRType.erased => Unit) =
              match τ with
              | MLIRType.float a => Float
              | MLIRType.int signedness sz => FinInt sz
              | MLIRType.tensor1d => Tensor1D
              | MLIRType.tensor2d => Tensor2D
              | MLIRType.tensor4d => Tensor4D
              | MLIRType.index => ℤ
              | MLIRType.undefined a => Unit
              | MLIRType.extended σ => ε σ
              | MLIRType.erased => Unit)
          val)
    else none

case h2
α σ : Type
ε : σ → Type
δ : Dialect α σ ε
τ τ' : MLIRType δ
env : SSAEnv δ
v v' : SSAVal
val : MLIRType.eval τ'
H : ¬v' = v
⊢ get v τ (set v' τ' val env) = get v τ env