internlm/Lean-Github huggingface dataset:
Theorem: Lean4Axiomatic.Rational.le_refl
Proof 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 : ℚ
⊢ p ≤ p
Tactic:
have : p ≃ p := eqv_refl
Proof 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 : ℚ
this : p ≃ p
⊢ p ≤ p
Theorem: Lean4Axiomatic.Rational.le_refl
Proof 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 : ℚ
this : p ≃ p
⊢ p ≤ p
Tactic:
have : p ≤ p := le_cases.mpr (Or.inr this)
Proof 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 : ℚ
this✝ : p ≃ p
this : p ≤ p
⊢ p ≤ p
Theorem: Lean4Axiomatic.Rational.le_refl
Proof 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 : ℚ
this✝ : p ≃ p
this : p ≤ p
⊢ p ≤ p
Tactic:
exact this
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 ↔ p > q ∨ p ≃ q
Tactic:
apply Iff.intro
Proof state after:
case mp
ℕ ℤ ℚ : 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 → p > q ∨ p ≃ q

case mpr
ℕ ℤ ℚ : 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 ∨ p ≃ q → p ≥ q
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 → p > q ∨ p ≃ q
Tactic:
case mp =>
  intro (_ : p ≥ q)
  show p > q ∨ p ≃ q
  have : q ≤ p := ‹p ≥ q›
  have : q < p ∨ q ≃ p := le_cases.mp this
  match this with
  | Or.inl (_ : q < p) =>
    have : p > q := ‹q < p›
    have : p > q ∨ p ≃ q := Or.inl this
    exact this
  | Or.inr (_ : q ≃ p) =>
    have : p ≃ q := eqv_symm ‹q ≃ p›
    have : p > q ∨ p ≃ q := Or.inr this
    exact this
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 ∨ p ≃ q → p ≥ q
Tactic:
case mpr =>
  intro (_ : p > q ∨ p ≃ q)
  show p ≥ q
  have : q < p ∨ q ≃ p :=
    match ‹p > q ∨ p ≃ q› with
    | Or.inl (_ : p > q) =>
      have : q < p := ‹p > q›
      Or.inl this
    | Or.inr (_ : p ≃ q) =>
      have : q ≃ p := eqv_symm ‹p ≃ q›
      Or.inr this
  have : q ≤ p := le_cases.mpr this
  have : p ≥ q := this
  exact this
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 → p > q ∨ p ≃ q
Tactic:
intro (_ : p ≥ q)
Proof 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 : ℚ
x✝ : p ≥ q
⊢ p > q ∨ p ≃ q
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 : ℚ
x✝ : p ≥ q
⊢ p > q ∨ p ≃ q
Tactic:
have : q ≤ p := ‹p ≥ q›
Proof 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 : ℚ
x✝ : p ≥ q
this : q ≤ p
⊢ p > q ∨ p ≃ q
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 : ℚ
x✝ : p ≥ q
this : q ≤ p
⊢ p > q ∨ p ≃ q
Tactic:
have : q < p ∨ q ≃ p := le_cases.mp this
Proof 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 : ℚ
x✝ : p ≥ q
this✝ : q ≤ p
this : q < p ∨ q ≃ p
⊢ p > q ∨ p ≃ q
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 : ℚ
x✝ : p ≥ q
this✝ : q ≤ p
this : q < p ∨ q ≃ p
⊢ p > q ∨ p ≃ q
Tactic:
match this with
| Or.inl (_ : q < p) =>
  have : p > q := ‹q < p›
  have : p > q ∨ p ≃ q := Or.inl this
  exact this
| Or.inr (_ : q ≃ p) =>
  have : p ≃ q := eqv_symm ‹q ≃ p›
  have : p > q ∨ p ≃ q := Or.inr this
  exact this
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 : ℚ
x✝ : p ≥ q
this✝ : q ≤ p
this : q < p ∨ q ≃ p
h✝ : q < p
⊢ p > q ∨ p ≃ q
Tactic:
have : p > q := ‹q < p›
Proof 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 : ℚ
x✝ : p ≥ q
this✝¹ : q ≤ p
this✝ : q < p ∨ q ≃ p
h✝ : q < p
this : p > q
⊢ p > q ∨ p ≃ q
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 : ℚ
x✝ : p ≥ q
this✝¹ : q ≤ p
this✝ : q < p ∨ q ≃ p
h✝ : q < p
this : p > q
⊢ p > q ∨ p ≃ q
Tactic:
have : p > q ∨ p ≃ q := Or.inl this
Proof 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 : ℚ
x✝ : p ≥ q
this✝² : q ≤ p
this✝¹ : q < p ∨ q ≃ p
h✝ : q < p
this✝ : p > q
this : p > q ∨ p ≃ q
⊢ p > q ∨ p ≃ q
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 : ℚ
x✝ : p ≥ q
this✝² : q ≤ p
this✝¹ : q < p ∨ q ≃ p
h✝ : q < p
this✝ : p > q
this : p > q ∨ p ≃ q
⊢ p > q ∨ p ≃ q
Tactic:
exact this
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 : ℚ
x✝ : p ≥ q
this✝ : q ≤ p
this : q < p ∨ q ≃ p
h✝ : q ≃ p
⊢ p > q ∨ p ≃ q
Tactic:
have : p ≃ q := eqv_symm ‹q ≃ p›
Proof 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 : ℚ
x✝ : p ≥ q
this✝¹ : q ≤ p
this✝ : q < p ∨ q ≃ p
h✝ : q ≃ p
this : p ≃ q
⊢ p > q ∨ p ≃ q
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 : ℚ
x✝ : p ≥ q
this✝¹ : q ≤ p
this✝ : q < p ∨ q ≃ p
h✝ : q ≃ p
this : p ≃ q
⊢ p > q ∨ p ≃ q
Tactic:
have : p > q ∨ p ≃ q := Or.inr this
Proof 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 : ℚ
x✝ : p ≥ q
this✝² : q ≤ p
this✝¹ : q < p ∨ q ≃ p
h✝ : q ≃ p
this✝ : p ≃ q
this : p > q ∨ p ≃ q
⊢ p > q ∨ p ≃ q
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 : ℚ
x✝ : p ≥ q
this✝² : q ≤ p
this✝¹ : q < p ∨ q ≃ p
h✝ : q ≃ p
this✝ : p ≃ q
this : p > q ∨ p ≃ q
⊢ p > q ∨ p ≃ q
Tactic:
exact this
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 ∨ p ≃ q → p ≥ q
Tactic:
intro (_ : p > q ∨ p ≃ q)
Proof 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 : ℚ
x✝ : p > q ∨ p ≃ q
⊢ p ≥ q
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 : ℚ
x✝ : p > q ∨ p ≃ q
⊢ p ≥ q
Tactic:
have : q < p ∨ q ≃ p :=
  match ‹p > q ∨ p ≃ q› with
  | Or.inl (_ : p > q) =>
    have : q < p := ‹p > q›
    Or.inl this
  | Or.inr (_ : p ≃ q) =>
    have : q ≃ p := eqv_symm ‹p ≃ q›
    Or.inr this
Proof 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 : ℚ
x✝ : p > q ∨ p ≃ q
this : q < p ∨ q ≃ p
⊢ p ≥ q
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 : ℚ
x✝ : p > q ∨ p ≃ q
this : q < p ∨ q ≃ p
⊢ p ≥ q
Tactic:
have : q ≤ p := le_cases.mpr this
Proof 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 : ℚ
x✝ : p > q ∨ p ≃ q
this✝ : q < p ∨ q ≃ p
this : q ≤ p
⊢ p ≥ q
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 : ℚ
x✝ : p > q ∨ p ≃ q
this✝ : q < p ∨ q ≃ p
this : q ≤ p
⊢ p ≥ q
Tactic:
have : p ≥ q := this
Proof 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 : ℚ
x✝ : p > q ∨ p ≃ q
this✝¹ : q < p ∨ q ≃ p
this✝ : q ≤ p
this : p ≥ q
⊢ p ≥ q
Theorem: Lean4Axiomatic.Rational.ge_cases
Proof 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 : ℚ
x✝ : p > q ∨ p ≃ q
this✝¹ : q < p ∨ q ≃ p
this✝ : q ≤ p
this : p ≥ q
⊢ p ≥ q
Tactic:
exact this
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.le_gt_false
Proof 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 → p > q → False
Tactic:
intro (_ : p ≤ q) (_ : p > q)
Proof 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 : ℚ
x✝¹ : p ≤ q
x✝ : p > q
⊢ False
Theorem: Lean4Axiomatic.Rational.le_gt_false
Proof 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 : ℚ
x✝¹ : p ≤ q
x✝ : p > q
⊢ False
Tactic:
let TwoOfThree := AA.TwoOfThree (p < q) (p ≃ q) (p > q)
Proof 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 : ℚ
x✝¹ : p ≤ q
x✝ : p > q
TwoOfThree : Prop := AA.TwoOfThree (p < q) (p ≃ q) (p > q)
⊢ False
Theorem: Lean4Axiomatic.Rational.le_gt_false
Proof 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 : ℚ
x✝¹ : p ≤ q
x✝ : p > q
TwoOfThree : Prop := AA.TwoOfThree (p < q) (p ≃ q) (p > q)
⊢ False
Tactic:
have : ¬TwoOfThree := (order_trichotomy p q).atMostOne
Proof 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 : ℚ
x✝¹ : p ≤ q
x✝ : p > q
TwoOfThree : Prop := AA.TwoOfThree (p < q) (p ≃ q) (p > q)
this : ¬TwoOfThree
⊢ False
Theorem: Lean4Axiomatic.Rational.le_gt_false
Proof 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 : ℚ
x✝¹ : p ≤ q
x✝ : p > q
TwoOfThree : Prop := AA.TwoOfThree (p < q) (p ≃ q) (p > q)
this : ¬TwoOfThree
⊢ False
Tactic:
have : p < q ∨ p ≃ q := le_cases.mp ‹p ≤ q›
Proof 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 : ℚ
x✝¹ : p ≤ q
x✝ : p > q
TwoOfThree : Prop := AA.TwoOfThree (p < q) (p ≃ q) (p > q)
this✝ : ¬TwoOfThree
this : p < q ∨ p ≃ q
⊢ False
Theorem: Lean4Axiomatic.Rational.le_gt_false
Proof 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 : ℚ
x✝¹ : p ≤ q
x✝ : p > q
TwoOfThree : Prop := AA.TwoOfThree (p < q) (p ≃ q) (p > q)
this✝ : ¬TwoOfThree
this : p < q ∨ p ≃ q
⊢ False
Tactic:
have : TwoOfThree :=
  match this with
  | Or.inl (_ : p < q) => AA.TwoOfThree.oneAndThree ‹p < q› ‹p > q›
  | Or.inr (_ : p ≃ q) => AA.TwoOfThree.twoAndThree ‹p ≃ q› ‹p > q›
Proof 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 : ℚ
x✝¹ : p ≤ q
x✝ : p > q
TwoOfThree : Prop := AA.TwoOfThree (p < q) (p ≃ q) (p > q)
this✝¹ : ¬TwoOfThree
this✝ : p < q ∨ p ≃ q
this : TwoOfThree
⊢ False
Theorem: Lean4Axiomatic.Rational.le_gt_false
Proof 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 : ℚ
x✝¹ : p ≤ q
x✝ : p > q
TwoOfThree : Prop := AA.TwoOfThree (p < q) (p ≃ q) (p > q)
this✝¹ : ¬TwoOfThree
this✝ : p < q ∨ p ≃ q
this : TwoOfThree
⊢ False
Tactic:
exact absurd ‹TwoOfThree› ‹¬TwoOfThree›
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.le_dichotomy
Proof 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)
Proof 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
Theorem: Lean4Axiomatic.Rational.le_dichotomy
Proof 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
Proof 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
Theorem: Lean4Axiomatic.Rational.le_dichotomy
Proof 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
Proof state after:
no goals
Theorem: Lean4Axiomatic.Rational.le_dichotomy
Proof 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›
Proof 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
Theorem: Lean4Axiomatic.Rational.le_dichotomy
Proof 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
Proof 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
Theorem: Lean4Axiomatic.Rational.le_dichotomy
Proof 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
Proof 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
Theorem: Lean4Axiomatic.Rational.le_dichotomy
Proof 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
Proof state after:
no goals