Título | Autor |
---|---|
En ℝ, si x ≤ y, entonces y ≰ x ↔ x ≠ y. |
José A. Alonso |
[mathjax]
Demostrar con Lean4 que si \(x\) e \(y\) son números reales tales que \(x ≤ y\), entonces \(y ≰ x ↔ x ≠ y\).
Para ello, completar la siguiente teoría de Lean4:
import Mathlib.Data.Real.Basic
variable {x y : ℝ}
example
(h : x ≤ y)
: ¬y ≤ x ↔ x ≠ y :=
by sorry
Demostración en lenguaje natural
Para demostrar la equivalencia, demostraremos cada una de las implicaciones.
Para demostrar la primera, supongamos que \(y ≰ x\) y que \(x = y\). Entonces, \(y ≤ x\) que es una contradicción.
Para demostrar la segunda, supongamos que \(x ≠ y\) y que \(y ≤ x\). Entonces, por la hipótesis y la antisimetría, se tiene que \(x = y\) lo que es una contradicción.
Demostraciones con Lean4
import Mathlib.Data.Real.Basic
variable {x y : ℝ}
-- 1ª demostración
-- ===============
example
(h : x ≤ y)
: ¬y ≤ x ↔ x ≠ y :=
by
constructor
. show ¬y ≤ x → x ≠ y
{ intro h1
-- h1 : ¬y ≤ x
-- ⊢ x ≠ y
intro h2
-- h2 : x = y
-- ⊢ False
have h3 : y ≤ x := by rw [h2]
show False
exact h1 h3 }
. show x ≠ y → ¬y ≤ x
{ intro h1
-- h1 : x ≠ y
-- ⊢ ¬y ≤ x
intro h2
-- h2 : y ≤ x
-- ⊢ False
have h3 : x = y := le_antisymm h h2
show False
exact h1 h3 }
-- 2ª demostración
-- ===============
example
(h : x ≤ y)
: ¬y ≤ x ↔ x ≠ y :=
by
constructor
. show ¬y ≤ x → x ≠ y
{ intro h1
-- h1 : ¬y ≤ x
-- ⊢ x ≠ y
intro h2
-- h2 : x = y
-- ⊢ False
show False
exact h1 (by rw [h2]) }
. show x ≠ y → ¬y ≤ x
{ intro h1
-- h1 : x ≠ y
-- ⊢ ¬y ≤ x
intro h2
-- h2 : y ≤ x
-- ⊢ False
show False
exact h1 (le_antisymm h h2) }
-- 3ª demostración
-- ===============
example
(h : x ≤ y)
: ¬y ≤ x ↔ x ≠ y :=
by
constructor
. show ¬y ≤ x → x ≠ y
{ intro h1 h2
exact h1 (by rw [h2]) }
. show x ≠ y → ¬y ≤ x
{ intro h1 h2
exact h1 (le_antisymm h h2) }
-- 4ª demostración
-- ===============
example
(h : x ≤ y)
: ¬y ≤ x ↔ x ≠ y :=
by
constructor
. intro h1 h2
exact h1 (by rw [h2])
. intro h1 h2
exact h1 (le_antisymm h h2)
-- 5ª demostración
-- ===============
example
(h : x ≤ y)
: ¬y ≤ x ↔ x ≠ y :=
by
constructor
. exact fun h1 h2 ↦ h1 (by rw [h2])
. exact fun h1 h2 ↦ h1 (le_antisymm h h2)
-- 6ª demostración
-- ===============
example
(h : x ≤ y)
: ¬y ≤ x ↔ x ≠ y :=
⟨fun h1 h2 ↦ h1 (by rw [h2]),
fun h1 h2 ↦ h1 (le_antisymm h h2)⟩
-- 7ª demostración
-- ===============
example
(h : x ≤ y)
: ¬y ≤ x ↔ x ≠ y :=
by
constructor
. show ¬y ≤ x → x ≠ y
{ intro h1
-- h1 : ¬y ≤ x
-- ⊢ x ≠ y
contrapose! h1
-- h1 : x = y
-- ⊢ y ≤ x
calc y = x := h1.symm
_ ≤ x := by rfl }
. show x ≠ y → ¬y ≤ x
{ intro h2
-- h2 : x ≠ y
-- ⊢ ¬y ≤ x
contrapose! h2
-- h2 : y ≤ x
-- ⊢ x = y
show x = y
exact le_antisymm h h2 }
-- 8ª demostración
-- ===============
example
(h : x ≤ y)
: ¬y ≤ x ↔ x ≠ y :=
by
constructor
· -- ⊢ ¬y ≤ x → x ≠ y
contrapose!
-- ⊢ x = y → y ≤ x
rintro rfl
-- ⊢ x ≤ x
rfl
. -- ⊢ x ≠ y → ¬y ≤ x
contrapose!
-- ⊢ y ≤ x → x = y
exact le_antisymm h
Demostraciones interactivas
Se puede interactuar con las demostraciones anteriores en Lean 4 Web.
Referencias
- J. Avigad y P. Massot. Mathematics in Lean, p. 36.