Theorem: Lean4Axiomatic.Rational.le_dichotomy (Lean4Axiomatic/Rational/Order.lean)

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
⊢ p ≤ q ∨ q ≤ p
Tactic:
let OneOfThree := AA.OneOfThree (p < q) (p ≃ q) (p > q)
State after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
⊢ p ≤ q ∨ q ≤ p

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
⊢ p ≤ q ∨ q ≤ p
Tactic:
have : OneOfThree := (order_trichotomy p q).atLeastOne
State after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this : OneOfThree
⊢ p ≤ q ∨ q ≤ p

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this : OneOfThree
⊢ p ≤ q ∨ q ≤ p
Tactic:
match this with
| AA.OneOfThree.first (_ : p < q) =>
  have : p < q ∨ p ≃ q := Or.inl ‹p < q›
  have : p ≤ q := le_cases.mpr this
  have : p ≤ q ∨ q ≤ p := Or.inl this
  exact this
| AA.OneOfThree.second (_ : p ≃ q) =>
  have : p < q ∨ p ≃ q := Or.inr ‹p ≃ q›
  have : p ≤ q := le_cases.mpr this
  have : p ≤ q ∨ q ≤ p := Or.inl this
  exact this
| AA.OneOfThree.third (_ : p > q) =>
  have : q < p ∨ q ≃ p := Or.inl ‹q < p›
  have : q ≤ p := le_cases.mpr this
  have : p ≤ q ∨ q ≤ p := Or.inr this
  exact this
State after:
no goals

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this : OneOfThree
a✝ : p < q
⊢ p ≤ q ∨ q ≤ p
Tactic:
have : p < q ∨ p ≃ q := Or.inl ‹p < q›
State after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝ : OneOfThree
a✝ : p < q
this : p < q ∨ p ≃ q
⊢ p ≤ q ∨ q ≤ p

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝ : OneOfThree
a✝ : p < q
this : p < q ∨ p ≃ q
⊢ p ≤ q ∨ q ≤ p
Tactic:
have : p ≤ q := le_cases.mpr this
State after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝¹ : OneOfThree
a✝ : p < q
this✝ : p < q ∨ p ≃ q
this : p ≤ q
⊢ p ≤ q ∨ q ≤ p

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝¹ : OneOfThree
a✝ : p < q
this✝ : p < q ∨ p ≃ q
this : p ≤ q
⊢ p ≤ q ∨ q ≤ p
Tactic:
have : p ≤ q ∨ q ≤ p := Or.inl this
State after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝² : OneOfThree
a✝ : p < q
this✝¹ : p < q ∨ p ≃ q
this✝ : p ≤ q
this : p ≤ q ∨ q ≤ p
⊢ p ≤ q ∨ q ≤ p

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝² : OneOfThree
a✝ : p < q
this✝¹ : p < q ∨ p ≃ q
this✝ : p ≤ q
this : p ≤ q ∨ q ≤ p
⊢ p ≤ q ∨ q ≤ p
Tactic:
exact this
State after:
no goals

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this : OneOfThree
b✝ : p ≃ q
⊢ p ≤ q ∨ q ≤ p
Tactic:
have : p < q ∨ p ≃ q := Or.inr ‹p ≃ q›
State after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝ : OneOfThree
b✝ : p ≃ q
this : p < q ∨ p ≃ q
⊢ p ≤ q ∨ q ≤ p

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝ : OneOfThree
b✝ : p ≃ q
this : p < q ∨ p ≃ q
⊢ p ≤ q ∨ q ≤ p
Tactic:
have : p ≤ q := le_cases.mpr this
State after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝¹ : OneOfThree
b✝ : p ≃ q
this✝ : p < q ∨ p ≃ q
this : p ≤ q
⊢ p ≤ q ∨ q ≤ p

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝¹ : OneOfThree
b✝ : p ≃ q
this✝ : p < q ∨ p ≃ q
this : p ≤ q
⊢ p ≤ q ∨ q ≤ p
Tactic:
have : p ≤ q ∨ q ≤ p := Or.inl this
State after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝² : OneOfThree
b✝ : p ≃ q
this✝¹ : p < q ∨ p ≃ q
this✝ : p ≤ q
this : p ≤ q ∨ q ≤ p
⊢ p ≤ q ∨ q ≤ p

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝² : OneOfThree
b✝ : p ≃ q
this✝¹ : p < q ∨ p ≃ q
this✝ : p ≤ q
this : p ≤ q ∨ q ≤ p
⊢ p ≤ q ∨ q ≤ p
Tactic:
exact this
State after:
no goals

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this : OneOfThree
c✝ : p > q
⊢ p ≤ q ∨ q ≤ p
Tactic:
have : q < p ∨ q ≃ p := Or.inl ‹q < p›
State after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝ : OneOfThree
c✝ : p > q
this : q < p ∨ q ≃ p
⊢ p ≤ q ∨ q ≤ p

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝ : OneOfThree
c✝ : p > q
this : q < p ∨ q ≃ p
⊢ p ≤ q ∨ q ≤ p
Tactic:
have : q ≤ p := le_cases.mpr this
State after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝¹ : OneOfThree
c✝ : p > q
this✝ : q < p ∨ q ≃ p
this : q ≤ p
⊢ p ≤ q ∨ q ≤ p

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝¹ : OneOfThree
c✝ : p > q
this✝ : q < p ∨ q ≃ p
this : q ≤ p
⊢ p ≤ q ∨ q ≤ p
Tactic:
have : p ≤ q ∨ q ≤ p := Or.inr this
State after:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝² : OneOfThree
c✝ : p > q
this✝¹ : q < p ∨ q ≃ p
this✝ : q ≤ p
this : p ≤ q ∨ q ≤ p
⊢ p ≤ q ∨ q ≤ p

State before:
ℕ ℤ ℚ : Type
inst✝¹⁰ : Natural ℕ
inst✝⁹ : Integer ℤ
inst✝⁸ : Core ℚ
inst✝⁷ : Addition ℚ
inst✝⁶ : Multiplication ℚ
inst✝⁵ : Negation ℚ
inst✝⁴ : Sign ℚ
inst✝³ : Subtraction ℚ
inst✝² : Reciprocation ℚ
inst✝¹ : Division ℚ
inst✝ : Order ℚ
p q : ℚ
OneOfThree : Prop := AA.OneOfThree (p < q) (p ≃ q) (p > q)
this✝² : OneOfThree
c✝ : p > q
this✝¹ : q < p ∨ q ≃ p
this✝ : q ≤ p
this : p ≤ q ∨ q ≤ p
⊢ p ≤ q ∨ q ≤ p
Tactic:
exact this
State after:
no goals