-- Multiplicacion_por_cero_izquierda.lean -- Si R es un anillo y a ∈ R, entonces 0.a = 0 -- José A. Alonso Jiménez <https://jaalonso.github.io> -- Sevilla, 4-agosto-2023 -- --------------------------------------------------------------------- -- --------------------------------------------------------------------- -- Demostrar que si R es un anillo y a ∈ R, entonces -- 0 * a = 0 -- ---------------------------------------------------------------------- -- Demostración en lenguaje natural -- ================================ -- Basta aplicar la propiedad cancelativa a -- 0.a + 0.a = 0.a + 0 -- que se demuestra mediante la siguiente cadena de igualdades -- 0.a + 0.a = (0 + 0).a [por la distributiva] -- = 0.a [por suma con cero] -- = 0.a + 0 [por suma con cero] -- Demostraciones con Lean4 -- ======================== import Mathlib.Algebra.Ring.Defs import Mathlib.Tactic variable {R : Type _} [Ring R] variable (a : R) -- 1ª demostración example : 0 * a = 0 := by have h : 0 * a + 0 * a = 0 * a + 0 := calc 0 * a + 0 * a = (0 + 0) * a := by rw [add_mul] _ = 0 * a := by rw [add_zero] _ = 0 * a + 0 := by rw [add_zero] rw [add_left_cancel h] -- 2ª demostración example : 0 * a = 0 := by have h : 0 * a + 0 * a = 0 * a + 0 := by rw [←add_mul, add_zero, add_zero] rw [add_left_cancel h] -- 3ª demostración example : 0 * a = 0 := by have : 0 * a + 0 * a = 0 * a + 0 := calc 0 * a + 0 * a = (0 + 0) * a := by simp _ = 0 * a := by simp _ = 0 * a + 0 := by simp simp -- 4ª demostración example : 0 * a = 0 := by have : 0 * a + 0 * a = 0 * a + 0 := by simp simp -- 5ª demostración example : 0 * a = 0 := by simp -- 6ª demostración example : 0 * a = 0 := zero_mul a -- Lemas usados -- ============ -- variable (b c : R) -- #check (add_mul a b c : (a + b) * c = a * c + b * c) -- #check (add_zero a : a + 0 = a) -- #check (zero_mul a : 0 * a = 0)