-- (a+b)(c+d)_eq_ac+ad+bc+bd.lean -- (a + b)(c + d) = ac + ad + bc + bd -- José A. Alonso Jiménez <https://jaalonso.github.io> -- Sevilla, 20-julio-2023 -- --------------------------------------------------------------------- -- --------------------------------------------------------------------- -- Demostrar que si a, b, c y d son números reales, entonces -- (a + b) * (c + d) = a * c + a * d + b * c + b * d -- --------------------------------------------------------------------- -- Demostración en lenguaje natural -- ================================ -- Por la siguiente cadena de igualdades -- (a + b)(c + d) -- = a(c + d) + b(c + d) [por la distributiva] -- = ac + ad + b(c + d) [por la distributiva] -- = ac + ad + (bc + bd) [por la distributiva] -- = ac + ad + bc + bd [por la asociativa] -- Demostraciones con Lean4 -- ======================== import Mathlib.Data.Real.Basic import Mathlib.Tactic variable (a b c d : ℝ) -- 1ª demostración example : (a + b) * (c + d) = a * c + a * d + b * c + b * d := calc (a + b) * (c + d) = a * (c + d) + b * (c + d) := by rw [add_mul] _ = a * c + a * d + b * (c + d) := by rw [mul_add] _ = a * c + a * d + (b * c + b * d) := by rw [mul_add] _ = a * c + a * d + b * c + b * d := by rw [←add_assoc] -- 2ª demostración example : (a + b) * (c + d) = a * c + a * d + b * c + b * d := calc (a + b) * (c + d) = a * (c + d) + b * (c + d) := by ring _ = a * c + a * d + b * (c + d) := by ring _ = a * c + a * d + (b * c + b * d) := by ring _ = a * c + a * d + b * c + b * d := by ring -- 3ª demostración example : (a + b) * (c + d) = a * c + a * d + b * c + b * d := by ring -- 4ª demostración example : (a + b) * (c + d) = a * c + a * d + b * c + b * d := by rw [add_mul] rw [mul_add] rw [mul_add] rw [← add_assoc] -- 5ª demostración example : (a + b) * (c + d) = a * c + a * d + b * c + b * d := by rw [add_mul, mul_add, mul_add, ←add_assoc] -- Lemas usados -- ============ -- #check (add_mul : ∀ (a b c : ℝ), (a + b) * c = a * c + b * c) -- #check (mul_add : ∀ (a b c : ℝ), a * (b + c) = a * b + a * c) -- #check (add_assoc : ∀ (a b c : ℝ), (a + b) + c = a + (b + c))