(a + b)(a + b) = aa + 2ab + bb
Demostrar con Lean4 que si a y b son números reales, entonces
1 |
(a + b) * (a + b) = a * a + 2 * (a * b) + b * b |
Para ello, completar la siguiente teoría de Lean4:
1 2 3 4 5 6 7 8 |
import Mathlib.Data.Real.Basic import Mathlib.Tactic variable (a b c : ℝ) example : (a + b) * (a + b) = a * a + 2 * (a * b) + b * b := sorry |
Demostración en lenguaje natural
Por la siguiente cadena de igualdades
\begin{align}
(a + b)(a + b)
&= (a + b)a + (a + b)b &&\text{[por la distributiva]} \\
&= aa + ba + (a + b)b &&\text{[por la distributiva]} \\
&= aa + ba + (ab + bb) &&\text{[por la distributiva]} \\
&= aa + ba + ab + bb &&\text{[por la asociativa]} \\
&= aa + (ba + ab) + bb &&\text{[por la asociativa]} \\
&= aa + (ab + ab) + bb &&\text{[por la conmutativa]} \\
&= aa + 2(ab) + bb &&\text{[por def. de doble]} \\
\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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
import Mathlib.Data.Real.Basic import Mathlib.Tactic variable (a b c : ℝ) -- 1ª demostración example : (a + b) * (a + b) = a * a + 2 * (a * b) + b * b := calc (a + b) * (a + b) = (a + b) * a + (a + b) * b := by rw [mul_add] _ = a * a + b * a + (a + b) * b := by rw [add_mul] _ = a * a + b * a + (a * b + b * b) := by rw [add_mul] _ = a * a + b * a + a * b + b * b := by rw [←add_assoc] _ = a * a + (b * a + a * b) + b * b := by rw [add_assoc (a * a)] _ = a * a + (a * b + a * b) + b * b := by rw [mul_comm b a] _ = a * a + 2 * (a * b) + b * b := by rw [←two_mul] -- 2ª demostración example : (a + b) * (a + b) = a * a + 2 * (a * b) + b * b := calc (a + b) * (a + b) = a * a + b * a + (a * b + b * b) := by rw [mul_add, add_mul, add_mul] _ = a * a + (b * a + a * b) + b * b := by rw [←add_assoc, add_assoc (a * a)] _ = a * a + 2 * (a * b) + b * b := by rw [mul_comm b a, ←two_mul] -- 3ª demostración example : (a + b) * (a + b) = a * a + 2 * (a * b) + b * b := calc (a + b) * (a + b) = a * a + b * a + (a * b + b * b) := by ring _ = a * a + (b * a + a * b) + b * b := by ring _ = a * a + 2 * (a * b) + b * b := by ring -- 4ª demostración example : (a + b) * (a + b) = a * a + 2 * (a * b) + b * b := by ring -- 5ª demostración example : (a + b) * (a + b) = a * a + 2 * (a * b) + b * b := by rw [mul_add] rw [add_mul] rw [add_mul] rw [←add_assoc] rw [add_assoc (a * a)] rw [mul_comm b a] rw [←two_mul] -- 6ª demostración example : (a + b) * (a + b) = a * a + 2 * (a * b) + b * b := by rw [mul_add, add_mul, add_mul] rw [←add_assoc, add_assoc (a * a)] rw [mul_comm b a, ←two_mul] -- 7ª demostración example : (a + b) * (a + b) = a * a + 2 * (a * b) + b * b := by linarith |
Demostraciones interactivas
Se puede interactuar con las demostraciones anteriores en Lean 4 Web.
Referencias
- J. Avigad y P. Massot. Mathematics in Lean, p. 7.