Si R es un anillo y a, b ∈ R, entonces -a + (a + b) = b
En Lean, se declara que R es un anillo mediante la expresión
1 |
variables {R : Type*} [ring R] |
y, como consecuencia, se tienen los siguientes axiomas
1 2 3 4 5 6 7 8 9 |
add_assoc : ∀ a b c : R, (a + b) + c = a + (b + c) add_comm : ∀ a b : R, a + b = b + a zero_add : ∀ a : R, 0 + a = a add_left_neg : ∀ a : R, -a + a = 0 mul_assoc : ∀ a b c : R, a * b * c = a * (b * c) mul_one : ∀ a : R, a * 1 = a one_mul : ∀ a : R, 1 * a = a mul_add : ∀ a b c : R, a * (b + c) = a * b + a * c add_mul : ∀ a b c : R, (a + b) * c = a * c + b * c |
Demostrar que si R es un anillo, entonces
1 |
∀ a b : R, -a + (a + b) = b |
Para ello, completar la siguiente teoría de Lean:
1 2 3 4 5 6 7 8 9 |
import algebra.ring import tactic variables {R : Type*} [ring R] variables a b : R example : -a + (a + b) = b := sorry |
Soluciones con Lean
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 37 38 |
import algebra.ring variables {R : Type*} [ring R] variables a b : R -- 1ª demostración example : -a + (a + b) = b := calc -a + (a + b) = (-a + a) + b : by rw ← add_assoc ... = 0 + b : by rw add_left_neg ... = b : by rw zero_add -- 2ª demostración example : -a + (a + b) = b := begin rw ←add_assoc, rw add_left_neg, rw zero_add, end -- 3ª demostración example : -a + (a + b) = b := by rw [←add_assoc, add_left_neg, zero_add] -- 4ª demostración example : -a + (a + b) = b := -- by library_search neg_add_cancel_left a b -- 5ª demostración example : -a + (a + b) = b := -- by hint by finish |
Se puede interactuar con la prueba anterior en esta sesión con Lean.
Referencias
- J. Avigad, K. Buzzard, R.Y. Lewis y P. Massot. Mathematics in Lean, p. 11.