Si a y b son números reales, entonces (a + b) * (a + b) = a * a + 2 * (a * b) + b * b
Demostrar 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 Lean:
1 2 3 4 5 6 7 |
import data.real.basic variables a b : ℝ example : (a + b) * (a + b) = a * a + 2 * (a * b) + 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 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 66 67 68 69 70 71 72 73 |
import data.real.basic variables a b : ℝ -- 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 := begin 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, end -- 6ª demostración -- =============== example : (a + b) * (a + b) = a * a + 2 * (a * b) + b * b := begin rw [mul_add, add_mul, add_mul], rw [←add_assoc, add_assoc (a * a)], rw [mul_comm b a, ←two_mul], end |
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. 8.