DAO: La semana en Calculemus (28 de agosto de 2022)
Esta semana he publicado en Calculemus las demostraciones con Lean de las siguientes propiedades:
- 1. Si a, b, c ∈ ℝ, entonces (a * b) * c = b * (a * c)
- 2. Si a, b, c, d, e, f ∈ ℝ tales que a * b = c * d y e = f entonces, a * (b * e) = c * (d * f)
- 3. Si a, b ∈ ℝ, entonces (a + b) * (a + b) = a * a + 2 * (a * b) + b * b
- 4. Si a, b, c, d ∈ ℝ , entonces (a + b) * (c + d) = a * c + a * d + b * c + b * d
- 5. Si a, b ∈ ℝ, entonces (a + b) * (a – b) = a^2 – b^2
A continuación se muestran las soluciones.
1. Si a, b, c ∈ ℝ, entonces (a * b) * c = b * (a * c)
Demostrar que los números reales tienen la siguente propiedad
1 |
(a * b) * c = b * (a * c) |
Para ello, completar la siguiente teoría de Lean:
1 2 3 4 5 6 |
import data.real.basic variables a b c : ℝ example : (a * b) * c = b * (a * c) := 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 |
import data.real.basic variables a b c : ℝ -- 1ª demostración -- =============== example : (a * b) * c = b * (a * c) := begin rw mul_comm a b, rw mul_assoc b a c, end -- 2ª demostración -- =============== example : (a * b) * c = b * (a * c) := calc (a * b) * c = (b * a) * c : by rw mul_comm a b ... = b * (a * c) : by rw mul_assoc b a c -- 3ª demostración -- =============== example : (a * b) * c = b * (a * c) := calc (a * b) * c = (b * a) * c : by ring ... = b * (a * c) : by ring -- 4ª demostración -- =============== example : (a * b) * c = b * (a * c) := by ring |
Se puede interactuar con la prueba anterior en esta sesión con Lean.
En los comentarios se pueden escribir otras soluciones, escribiendo el código entre una línea con <pre lang="lean"> y otra con </pre>
2. Si a, b, c, d, e, f ∈ ℝ tales que a * b = c * d y e = f entonces, a * (b * e) = c * (d * f)
Demostrar que si a, b, c, d, e y f son números reales tales que
1 2 |
a * b = c * d e = f |
Entonces,
1 |
a * (b * e) = c * (d * f) |
Para ello, completar la siguiente teoría de Lean:
1 2 3 4 5 6 7 8 |
import data.real.basic variables a b c d e f : ℝ example (h1 : a * b = c * d) (h2 : e = f) : a * (b * e) = c * (d * f) := |
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 |
import data.real.basic variables a b c d e f : ℝ -- 1ª demostración example (h1 : a * b = c * d) (h2 : e = f) : a * (b * e) = c * (d * f) := begin rw h2, rw ←mul_assoc, rw h1, rw mul_assoc, end -- 2ª demostración example (h1 : a * b = c * d) (h2 : e = f) : a * (b * e) = c * (d * f) := calc a * (b * e) = a * (b * f) : by rw h2 ... = (a * b) * f : by rw ←mul_assoc ... = (c * d) * f : by rw h1 ... = c * (d * f) : by rw mul_assoc -- 3ª demostración example (h1 : a * b = c * d) (h2 : e = f) : a * (b * e) = c * (d * f) := calc a * (b * e) = a * (b * f) : by rw h2 ... = (a * b) * f : by ring ... = (c * d) * f : by rw h1 ... = c * (d * f) : by ring -- 4ª demostración example (h1 : a * b = c * d) (h2 : e = f) : a * (b * e) = c * (d * f) := by finish |
Se puede interactuar con la prueba anterior en esta sesión con Lean.
En los comentarios se pueden escribir otras soluciones, escribiendo el código entre una línea con <pre lang="lean"> y otra con </pre>
3. Si a, b ∈ ℝ, 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.
En los comentarios se pueden escribir otras soluciones, escribiendo el código entre una línea con <pre lang="lean"> y otra con </pre>
4. Si a, b, c, d ∈ ℝ , entonces (a + b) * (c + d) = a * c + a * d + b * c + b * d
Demostrar que si a, b, c y d son números reales, entonces
1 |
(a + b) * (c + d) = a * c + a * d + b * c + b * d |
Para ello, completar la siguiente teoría de Lean:
1 2 3 4 5 6 7 |
import data.real.basic variables a b c d : ℝ example : (a + b) * (c + d) = a * c + a * d + b * c + b * d := 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 |
import data.real.basic variables 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 := begin rw add_mul, rw mul_add, rw mul_add, rw ← add_assoc, end -- 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] |
Se puede interactuar con la prueba anterior en esta sesión con Lean.
En los comentarios se pueden escribir otras soluciones, escribiendo el código entre una línea con <pre lang="lean"> y otra con </pre>
5. Si a, b ∈ ℝ, entonces (a + b) * (a – b) = a^2 – b^2
Demostrar que si a y b son números reales, entonces
1 |
(a + b) * (a - b) = a^2 - b^2 |
Para ello, completar la siguiente teoría de Lean:
1 2 3 4 5 6 |
import data.real.basic variables a b c d : ℝ example : (a + b) * (a - b) = a^2 - b^2 := 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 |
import data.real.basic variables a b c d : ℝ -- 1ª demostración example : (a + b) * (a - b) = a^2 - b^2 := calc (a + b) * (a - b) = a * (a - b) + b * (a - b) : by rw add_mul ... = (a * a - a * b) + b * (a - b) : by rw mul_sub ... = (a^2 - a * b) + b * (a - b) : by rw ← pow_two ... = (a^2 - a * b) + (b * a - b * b) : by rw mul_sub ... = (a^2 - a * b) + (b * a - b^2) : by rw ← pow_two ... = (a^2 + -(a * b)) + (b * a - b^2) : by ring ... = a^2 + (-(a * b) + (b * a - b^2)) : by rw add_assoc ... = a^2 + (-(a * b) + (b * a + -b^2)) : by ring ... = a^2 + ((-(a * b) + b * a) + -b^2) : by rw ← add_assoc (-(a * b)) (b * a) (-b^2) ... = a^2 + ((-(a * b) + a * b) + -b^2) : by rw mul_comm ... = a^2 + (0 + -b^2) : by rw neg_add_self (a * b) ... = (a^2 + 0) + -b^2 : by rw ← add_assoc ... = a^2 + -b^2 : by rw add_zero ... = a^2 - b^2 : by linarith -- 2ª demostración example : (a + b) * (a - b) = a^2 - b^2 := calc (a + b) * (a - b) = a * (a - b) + b * (a - b) : by ring ... = (a * a - a * b) + b * (a - b) : by ring ... = (a^2 - a * b) + b * (a - b) : by ring ... = (a^2 - a * b) + (b * a - b * b) : by ring ... = (a^2 - a * b) + (b * a - b^2) : by ring ... = (a^2 + -(a * b)) + (b * a - b^2) : by ring ... = a^2 + (-(a * b) + (b * a - b^2)) : by ring ... = a^2 + (-(a * b) + (b * a + -b^2)) : by ring ... = a^2 + ((-(a * b) + b * a) + -b^2) : by ring ... = a^2 + ((-(a * b) + a * b) + -b^2) : by ring ... = a^2 + (0 + -b^2) : by ring ... = (a^2 + 0) + -b^2 : by ring ... = a^2 + -b^2 : by ring ... = a^2 - b^2 : by ring -- 3ª demostración example : (a + b) * (a - b) = a^2 - b^2 := by ring |
Se puede interactuar con la prueba anterior en esta sesión con Lean.
En los comentarios se pueden escribir otras soluciones, escribiendo el código entre una línea con <pre lang="lean"> y otra con </pre>