Theorem: Lean4Axiomatic.Rational.sqrt1_sgn_nonzero (Lean4Axiomatic/Rational/Sign.lean)

State before:
ℕ ℤ ℚ : 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)
⊢ Integer.Sqrt1 (sgn p)
Tactic:
have : AA.OneOfThree (sgn p ≃ 0) (sgn p ≃ 1) (sgn p ≃ -1) := sgn_trichotomy p
State after:
ℕ ℤ ℚ : 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)

State before:
ℕ ℤ ℚ : 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)
Tactic:
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›
State after:
ℕ ℤ ℚ : 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)

State before:
ℕ ℤ ℚ : 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)
Tactic:
have : Integer.Sqrt1 (sgn p) := Integer.sqrt1_cases.mpr this
State after:
ℕ ℤ ℚ : 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
this : Integer.Sqrt1 (sgn p)
⊢ Integer.Sqrt1 (sgn p)

State before:
ℕ ℤ ℚ : 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
this : Integer.Sqrt1 (sgn p)
⊢ Integer.Sqrt1 (sgn p)
Tactic:
exact this
State after:
no goals