case mp =>
  intro (_ : p * q ≃ 0)
  show p ≃ 0 ∨ q ≃ 0
  have : sgn p * sgn q ≃ 0 := calc
    sgn p * sgn q ≃ _ := Rel.symm sgn_compat_mul
    sgn (p * q)   ≃ _ := sgn_zero.mp ‹p * q ≃ 0›
    0             ≃ _ := Rel.refl
  have : sgn p ≃ 0 ∨ sgn q ≃ 0 := Integer.mul_split_zero.mp this
  have : p ≃ 0 ∨ q ≃ 0 := match this with
  | Or.inl (_ : sgn p ≃ 0) =>
    have : p ≃ 0 := sgn_zero.mpr ‹sgn p ≃ 0›
    Or.inl this
  | Or.inr (_ : sgn q ≃ 0) =>
    have : q ≃ 0 := sgn_zero.mpr ‹sgn q ≃ 0›
    Or.inr this
  exact this
ℕ ℤ ℚ : Type
inst✝⁹ : Natural ℕ
inst✝⁸ : Integer ℤ
inst✝⁷ : Core ℚ
inst✝⁶ : Addition ℚ
inst✝⁵ : Multiplication ℚ
inst✝⁴ : Negation ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Sign ℚ
p q : ℚ
⊢ p * q ≃ 0 → p ≃ 0 ∨ q ≃ 0
no goals