have : sgn p ≃ 1 ∨ sgn p ≃ -1 :=
  match this with
  | AA.OneOfThree.first (_ : sgn p ≃ 0) =>
    have : p ≄ 0 := ‹AP (p ≄ 0)›.ev
    have : sgn p ≄ 0 := mt sgn_zero.mpr this
    absurd ‹sgn p ≃ 0› ‹sgn p ≄ 0›
  | AA.OneOfThree.second (_ : sgn p ≃ 1) =>
    Or.inl ‹sgn p ≃ 1›
  | AA.OneOfThree.third (_ : sgn p ≃ -1) =>
    Or.inr ‹sgn p ≃ -1›
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Subtraction ℚ
inst✝³ : Reciprocation ℚ
inst✝² : Division ℚ
inst✝¹ : Sign ℚ
p : ℚ
inst✝ : AP (p ≄ 0)
this : AA.OneOfThree (sgn p ≃ 0) (sgn p ≃ 1) (sgn p ≃ -1)
⊢ Integer.Sqrt1 (sgn p)
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Subtraction ℚ
inst✝³ : Reciprocation ℚ
inst✝² : Division ℚ
inst✝¹ : Sign ℚ
p : ℚ
inst✝ : AP (p ≄ 0)
this✝ : AA.OneOfThree (sgn p ≃ 0) (sgn p ≃ 1) (sgn p ≃ -1)
this : sgn p ≃ 1 ∨ sgn p ≃ -1
⊢ Integer.Sqrt1 (sgn p)