case int =>
  intros i s Hshape Htype;
  cases τ <;> simp [hasType] at Htype
  cases s <;> simp [flatten, hasShape] at *
τ : MLIRTy
⊢ ∀ (a : ℤ) (s : List ℕ),
    hasShape (int a) s = true → ∀ (h : hasType (int a) τ = true), List.length (flatten (int a) h) = shapeProd s
no goals