case abs ctx _ _ _ hi =>
  specialize hi <| (hx ▸ ctx.shift_succ x) ▸ (↥ctx).set_get_ne 0 (x + 1)
  rw [(↥ctx).set_ne_comm 0 (x + 1), ctx.shift_set_comm x] at hi
  exact .abs hi
ctx✝ : Ctx
t : Term
ty ty' ty₁✝ : Ty
ctx : Ctx
t✝ : Term
ty₂✝ : Ty
a✝ : (↥ctx)[0 ↦ ty₁✝] ⊢ t✝ ⋮ ty₂✝
hi : ∀ {x : Nat}, (↥ctx)[0 ↦ ty₁✝] x = none → (↥ctx)[0 ↦ ty₁✝][x ↦ ty'] ⊢ t✝ ⋮ ty₂✝
x : Nat
hx : ctx x = none
⊢ ctx[x ↦ ty'] ⊢ Term.abs ty₁✝ t✝ ⋮ Ty.arrow ty₁✝ ty₂✝
no goals