La semana en Calculemus (19 de agosto de 2023)
Esta semana he publicado en Calculemus las demostraciones con Lean4 de las siguientes propiedades:
- 1. Si R es un anillo y a ∈ R, entonces a – a = 0
- 2. En los anillos, 1 + 1 = 2
- 3. Si R es un anillo y a ∈ R, entonces 2a = a+a
- 4. Si G es un grupo y a ∈ G, entonces aa⁻¹ = 1
- 5. Si G es un grupo y a ∈ G, entonces a·1 = a
A continuación se muestran las soluciones.
1. Si R es un anillo y a ∈ R, entonces a – a = 0
Demostrar con Lean4 que si \(R\) es un anillo y \(a \in R\), entonces
\[a – a = 0\]
Para ello, completar la siguiente teoría de Lean4:
1 2 3 4 5 6 |
import Mathlib.Algebra.Ring.Defs variable {R : Type _} [Ring R] variable (a : R) example : a - a = 0 := sorry |
Demostración en lenguaje natural
Por la siguiente cadena de igualdades:
\begin{align}
a – a &= a + -a &&\text{[por definición de resta]} \\
&= 0 &&\text{[por suma con opuesto]}
\end{align}
Demostraciones con Lean4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import Mathlib.Algebra.Ring.Defs variable {R : Type _} [Ring R] variable (a : R) -- 1ª demostración example : a - a = 0 := calc a - a = a + -a := by rw [sub_eq_add_neg a a] _ = 0 := by rw [add_right_neg] -- 2ª demostración example : a - a = 0 := sub_self a -- 3ª demostración example : a - a = 0 := by simp |
Demostraciones interactivas
Se puede interactuar con las demostraciones anteriores en Lean 4 Web.
Referencias
- J. Avigad y P. Massot. Mathematics in Lean, p. 12.
2. En los anillos, 1 + 1 = 2
Demostrar con Lean4 que En los anillos, \(1 + 1 = 2\)
Para ello, completar la siguiente teoría de Lean4:
1 2 3 4 5 6 |
import Mathlib.Algebra.Ring.Defs import Mathlib.Tactic variable {R : Type _} [Ring R] example : 1 + 1 = (2 : R) := sorry |
Demostración en lenguaje natural
Por cálculo.
Demostraciones con Lean4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import Mathlib.Algebra.Ring.Defs import Mathlib.Tactic variable {R : Type _} [Ring R] -- Demostraciones con Lean4 -- ======================== -- 1ª demostración example : 1 + 1 = (2 : R) := by norm_num -- 2ª demostración example : 1 + 1 = (2 : R) := one_add_one_eq_two |
Demostraciones interactivas
Se puede interactuar con las demostraciones anteriores en Lean 4 Web.
Referencias
- J. Avigad y P. Massot. Mathematics in Lean, p. 12.
3. Si R es un anillo y a ∈ R, entonces 2a = a+a
Demostrar con Lean4 que si \(R\) es un anillo y \(a \in R\), entonces
\[2a = a+a\]
Para ello, completar la siguiente teoría de Lean4:
1 2 3 4 5 6 7 |
import Mathlib.Algebra.Ring.Defs variable {R : Type _} [Ring R] variable (a : R) example : 2 * a = a + a := sorry |
Demostración en lenguaje natural
Por la siguiente cadena de igualdades
\begin{align}
2·a &= (1 + 1)·a &&\text{[por la definición de 2]} \\
&= 1·a + 1·a &&\text{[por la distributiva]} \\
&= a + a &&\text{[por producto con uno]}
\end{align}
Demostraciones con Lean4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import Mathlib.Algebra.Ring.Defs variable {R : Type _} [Ring R] variable (a : R) -- 1ª demostración example : 2 * a = a + a := calc 2 * a = (1 + 1) * a := by rw [one_add_one_eq_two] _ = 1 * a + 1 * a := by rw [add_mul] _ = a + a := by rw [one_mul] -- 2ª demostración example : 2 * a = a + a := by exact two_mul a |
Demostraciones interactivas
Se puede interactuar con las demostraciones anteriores en Lean 4 Web.
Referencias
- J. Avigad y P. Massot. Mathematics in Lean, p. 12.
4. Si G es un grupo y a ∈ G, entonces aa⁻¹ = 1
En Lean4, se declara que \(G\) es un grupo mediante la expresión
1 |
variable {G : Type _} [Group G] |
Como consecuencia, se tiene los siguientes axiomas
1 2 3 |
mul_assoc : ∀ a b c : G, a * b * c = a * (b * c) one_mul : ∀ a : G, 1 * a = a mul_left_inv : ∀ a : G, a⁻¹ * a = 1 |
Demostrar que si \(G\) es un grupo y \(a \in G\), entonces
\[aa⁻¹ = 1\]
Para ello, completar la siguiente teoría de Lean4:
1 2 3 4 5 6 7 |
import Mathlib.Algebra.Group.Defs variable {G : Type _} [Group G] variable (a b : G) example : a * a⁻¹ = 1 := sorry |
Demostración en lenguaje natural
Por la siguiente cadena de igualdades
\begin{align}
a·a⁻¹ &= 1·(a·a⁻¹) &&\text{[por producto con uno]} \\
&= (1·a)·a⁻¹ &&\text{[por asociativa]} \\
&= (((a⁻¹)⁻¹·a⁻¹) ·a)·a⁻¹ &&\text{[por producto con inverso]} \\
&= ((a⁻¹)⁻¹·(a⁻¹ ·a))·a⁻¹ &&\text{[por asociativa]} \\
&= ((a⁻¹)⁻¹·1)·a⁻¹ &&\text{[por producto con inverso]} \\
&= (a⁻¹)⁻¹·(1·a⁻¹) &&\text{[por asociativa]} \\
&= (a⁻¹)⁻¹·a⁻¹ &&\text{[por producto con uno]} \\
&= 1 &&\text{[por producto con inverso]}
\end{align}
Demostraciones con Lean4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import Mathlib.Algebra.Group.Defs variable {G : Type _} [Group G] variable (a b : G) -- 1ª demostración example : a * a⁻¹ = 1 := calc a * a⁻¹ = 1 * (a * a⁻¹) := by rw [one_mul] _ = (1 * a) * a⁻¹ := by rw [mul_assoc] _ = (((a⁻¹)⁻¹ * a⁻¹) * a) * a⁻¹ := by rw [mul_left_inv] _ = ((a⁻¹)⁻¹ * (a⁻¹ * a)) * a⁻¹ := by rw [← mul_assoc] _ = ((a⁻¹)⁻¹ * 1) * a⁻¹ := by rw [mul_left_inv] _ = (a⁻¹)⁻¹ * (1 * a⁻¹) := by rw [mul_assoc] _ = (a⁻¹)⁻¹ * a⁻¹ := by rw [one_mul] _ = 1 := by rw [mul_left_inv] -- 2ª demostración example : a * a⁻¹ = 1 := calc a * a⁻¹ = 1 * (a * a⁻¹) := by simp _ = (1 * a) * a⁻¹ := by simp _ = (((a⁻¹)⁻¹ * a⁻¹) * a) * a⁻¹ := by simp _ = ((a⁻¹)⁻¹ * (a⁻¹ * a)) * a⁻¹ := by simp _ = ((a⁻¹)⁻¹ * 1) * a⁻¹ := by simp _ = (a⁻¹)⁻¹ * (1 * a⁻¹) := by simp _ = (a⁻¹)⁻¹ * a⁻¹ := by simp _ = 1 := by simp -- 3ª demostración example : a * a⁻¹ = 1 := by simp -- 4ª demostración example : a * a⁻¹ = 1 := by exact mul_inv_self a |
Demostraciones interactivas
Se puede interactuar con las demostraciones anteriores en Lean 4 Web.
Referencias
- J. Avigad y P. Massot. Mathematics in Lean, p. 12.
5. Si G es un grupo y a ∈ G, entonces a·1 = a
Demostrar con Lean4 que si \(G\) es un grupo y \(a \in G\), entonces
\[a·1 = a\]
Para ello, completar la siguiente teoría de Lean4:
1 2 3 4 5 6 7 |
import Mathlib.Algebra.Group.Defs variable {G : Type _} [Group G] variable (a b : G) example : a * 1 = a := sorry |
Demostración en lenguaje natural
Se tiene por la siguiente cadena de igualdades
\begin{align}
a·1 &= a·(a⁻¹·a) &&\text{[por producto con inverso]} \\
&= (a·a⁻¹)·a &&\text{[por asociativa]} \\
&= 1·a &&\text{[por producto con inverso]} \\
&= a &&\text{[por producto con uno]}
\end{align}
Demostraciones con Lean4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import Mathlib.Algebra.Group.Defs variable {G : Type _} [Group G] variable (a b : G) -- 1ª demostración example : a * 1 = a := calc a * 1 = a * (a⁻¹ * a) := by rw [mul_left_inv] _ = (a * a⁻¹) * a := by rw [mul_assoc] _ = 1 * a := by rw [mul_right_inv] _ = a := by rw [one_mul] -- 2ª demostración example : a * 1 = a := calc a * 1 = a * (a⁻¹ * a) := by simp _ = (a * a⁻¹) * a := by simp _ = 1 * a := by simp _ = a := by simp -- 3ª demostración example : a * 1 = a := by simp -- 4ª demostración example : a * 1 = a := by exact mul_one a |
Demostraciones interactivas
Se puede interactuar con las demostraciones anteriores en Lean 4 Web.
Referencias
- J. Avigad y P. Massot. Mathematics in Lean, p. 12.