{"id":7962,"date":"2023-07-22T16:27:35","date_gmt":"2023-07-22T14:27:35","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=7962"},"modified":"2023-07-22T16:59:13","modified_gmt":"2023-07-22T14:59:13","slug":"22-jul-23","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/22-jul-23\/","title":{"rendered":"La semana en Calculemus (22 de julio de 2023)"},"content":{"rendered":"\n<p>Esta semana he publicado en <a href=\"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/\">Calculemus<\/a> las demostraciones con Lean4 de las siguientes propiedades:<\/p>\n<ul>\n<li><a href=\"#ej1\">1. Si bc = ef, entonces ((ab)c)d = ((ae)f)d<\/a><\/li>\n<li><a href=\"#ej2\">2. Si c = ba-d y d = ab, entonces c = 0<\/a><\/li>\n<li><a href=\"#ej3\">3. (a+b)(a+b) = aa+2ab+bb<\/a><\/li>\n<li><a href=\"#ej4\">4. (a+b)(c+d) = ac+ad+bc+bd<\/a><\/li>\n<li><a href=\"#ej5\">5. (a+b)(a-b) = a\u00b2-b\u00b2<\/a><\/li>\n<\/ul>\n<p>A continuaci\u00f3n se muestran las soluciones.<br \/>\n<!--more--><br \/>\n<a name=\"ej1\"><\/a><\/p>\n<h3>1. Si bc = ef, entonces ((ab)c)d = ((ae)f)d<\/h3>\n<p>Demostrar con Lean4 que si bc = ef, entonces ((ab)c)d = ((ae)f)d.<\/p>\n<p>Para ello, completar la siguiente teor\u00eda de Lean4:<\/p>\n<pre lang=\"lean\">\nimport Mathlib.Data.Real.Basic\nimport Mathlib.Tactic\n\nexample\n  (a b c d e f : \u211d)\n  (h : b * c = e * f)\n  : ((a * b) * c) * d = ((a * e) * f) * d :=\nby sorry\n<\/pre>\n<p><b>Demostraci\u00f3n en lenguaje natural<\/b><\/p>\n<p>Por la siguiente cadena de igualdades<br \/>\n\\begin{align}<br \/>\n   ((ab)c)d<br \/>\n   &amp;= (a(bc))d    &amp;&amp;\\text{[por la asociativa]} &#92;&#92;<br \/>\n   &amp;= (a(ef))d    &amp;&amp;\\text{[por la hip\u00f3tesis]}  &#92;&#92;<br \/>\n   &amp;= ((ae)f)d    &amp;&amp;\\text{[por la asociativa]}<br \/>\n\\end{align}<\/p>\n<p><b>Demostraciones con Lean<\/b><\/p>\n<pre lang=\"lean\">\nimport Mathlib.Data.Real.Basic\nimport Mathlib.Tactic\n\n-- 1\u00aa demostraci\u00f3n\nexample\n  (a b c d e f : \u211d)\n  (h : b * c = e * f)\n  : ((a * b) * c) * d = ((a * e) * f) * d :=\ncalc\n  ((a * b) * c) * d\n    = (a * (b * c)) * d := by rw [mul_assoc a]\n  _ = (a * (e * f)) * d := by rw [h]\n  _ = ((a * e) * f) * d := by rw [\u2190mul_assoc a]\n\n-- 2\u00aa demostraci\u00f3n\nexample\n  (a b c d e f : \u211d)\n  (h : b * c = e * f)\n  : ((a * b) * c) * d = ((a * e) * f) * d :=\nby\n  rw [mul_assoc a]\n  rw [h]\n  rw [\u2190mul_assoc a]\n\n-- 3\u00aa demostraci\u00f3n\nexample\n  (a b c d e f : \u211d)\n  (h : b * c = e * f)\n  : ((a * b) * c) * d = ((a * e) * f) * d :=\nby\n  rw [mul_assoc a, h, \u2190mul_assoc a]\n<\/pre>\n<p><b>Demostraciones interactivas<\/b><\/p>\n<p>Se puede interactuar con las demostraciones anteriores en <a href=\"https:\/\/lean.math.hhu.de\/#url=https:\/\/raw.githubusercontent.com\/jaalonso\/Calculemus2\/main\/src\/Si_bc_eq_ef_entonces_((ab)c)d_eq_((ae)f)d.lean\" rel=\"noopener noreferrer\" target=\"_blank\">Lean 4 Web<\/a>.<\/p>\n<p><b>Referencias<\/b><\/p>\n<ul>\n<li> J. Avigad y P. Massot. <a href=\"https:\/\/bit.ly\/3U4UjBk\">Mathematics in Lean<\/a>, p. 6.<\/li>\n<\/ul>\n<p><a name=\"ej2\"><\/a><\/p>\n<h3>2. Si c = ba-d y d = ab, entonces c = 0<\/h3>\n<p>Demostrar con Lean4 que si a, b, c y d son n\u00fameros reales tales<\/p>\n<pre lang=\"text\">\n   c = b * a - d\n   d = a * b\n<\/pre>\n<p>entonces<\/p>\n<pre lang=\"text\">\n   c = 0\n<\/pre>\n<p>Para ello, completar la siguiente teor\u00eda de Lean4:<\/p>\n<pre lang=\"lean\">\nimport Mathlib.Data.Real.Basic\nimport Mathlib.Tactic\n\nexample\n  (a b c d : \u211d)\n  (h1 : c = b * a - d)\n  (h2 : d = a * b)\n  : c = 0 :=\nby sorry\n<\/pre>\n<p><b>Demostraci\u00f3n en lenguaje natural<\/b><\/p>\n<p>Por la siguiente cadena de igualdades<br \/>\n\\begin{align}<br \/>\n   c &amp;= ba &#8211; d     &amp;&amp;\\text{[por la primera hip\u00f3tesis]} &#92;&#92;<br \/>\n     &amp;= ab &#8211; d     &amp;&amp;\\text{[por la conmutativa]}       &#92;&#92;<br \/>\n     &amp;= ab &#8211; ab    &amp;&amp;\\text{[por la segunda hip\u00f3tesis]} &#92;&#92;<br \/>\n     &amp;= 0<br \/>\n\\end{align}<\/p>\n<p><b>Demostraciones con Lean<\/b><\/p>\n<pre lang=\"lean\">\nimport Mathlib.Data.Real.Basic\nimport Mathlib.Tactic\n\n-- 1\u00aa demostraci\u00f3n\nexample\n  (a b c d : \u211d)\n  (h1 : c = b * a - d)\n  (h2 : d = a * b)\n  : c = 0 :=\ncalc\n  c = b * a - d     := by rw [h1]\n  _ = a * b - d     := by rw [mul_comm]\n  _ = a * b - a * b := by rw [h2]\n  _ = 0             := by rw [sub_self]\n\n-- 2\u00aa demostraci\u00f3n\nexample\n  (a b c d : \u211d)\n  (h1 : c = b * a - d)\n  (h2 : d = a * b)\n  : c = 0 :=\nby\n  rw [h1]\n  rw [mul_comm]\n  rw [h2]\n  rw [sub_self]\n\n-- 3\u00aa demostraci\u00f3n\nexample\n  (a b c d : \u211d)\n  (h1 : c = b * a - d)\n  (h2 : d = a * b)\n  : c = 0 :=\nby\n  rw [h1, mul_comm, h2, sub_self]\n<\/pre>\n<p><b>Demostraciones interactivas<\/b><\/p>\n<p>Se puede interactuar con las demostraciones anteriores en <a href=\"https:\/\/lean.math.hhu.de\/#url=https:\/\/raw.githubusercontent.com\/jaalonso\/Calculemus2\/main\/src\/Si_c_eq_ba-d_y_d_eq_ab_entonces_c_eq_0.lean\" rel=\"noopener noreferrer\" target=\"_blank\">Lean 4 Web<\/a>.<\/p>\n<p><b>Referencias<\/b><\/p>\n<ul>\n<li> J. Avigad y P. Massot. <a href=\"https:\/\/bit.ly\/3U4UjBk\">Mathematics in Lean<\/a>, p. 7.<\/li>\n<\/ul>\n<p><a name=\"ej3\"><\/a><\/p>\n<h3>3. (a+b)(a+b) = aa+2ab+bb<\/h3>\n<p>Demostrar con Lean4 que si a y b son n\u00fameros reales, entonces<\/p>\n<pre lang=\"text\">\n   (a + b) * (a + b) = a * a + 2 * (a * b) + b * b\n<\/pre>\n<p>Para ello, completar la siguiente teor\u00eda de Lean4:<\/p>\n<pre lang=\"lean\">\nimport Mathlib.Data.Real.Basic\nimport Mathlib.Tactic\n\nvariable (a b c : \u211d)\n\nexample :\n  (a + b) * (a + b) = a * a + 2 * (a * b) + b * b :=\nsorry\n<\/pre>\n<p><b>Demostraci\u00f3n en lenguaje natural<\/b><\/p>\n<p>Por la siguiente cadena de igualdades<br \/>\n\\begin{align}<br \/>\n(a + b)(a + b)<br \/>\n&amp;= (a + b)a + (a + b)b    &amp;&amp;\\text{[por la distributiva]} &#92;&#92;<br \/>\n&amp;= aa + ba + (a + b)b     &amp;&amp;\\text{[por la distributiva]} &#92;&#92;<br \/>\n&amp;= aa + ba + (ab + bb)    &amp;&amp;\\text{[por la distributiva]} &#92;&#92;<br \/>\n&amp;= aa + ba + ab + bb      &amp;&amp;\\text{[por la asociativa]} &#92;&#92;<br \/>\n&amp;= aa + (ba + ab) + bb    &amp;&amp;\\text{[por la asociativa]} &#92;&#92;<br \/>\n&amp;= aa + (ab + ab) + bb    &amp;&amp;\\text{[por la conmutativa]} &#92;&#92;<br \/>\n&amp;= aa + 2(ab) + bb        &amp;&amp;\\text{[por def. de doble]} &#92;&#92;<br \/>\n\\end{align}<\/p>\n<p><b>Demostraciones con Lean4<\/b><\/p>\n<pre lang=\"lean\">\nimport Mathlib.Data.Real.Basic\nimport Mathlib.Tactic\n\nvariable (a b c : \u211d)\n\n-- 1\u00aa demostraci\u00f3n\nexample :\n  (a + b) * (a + b) = a * a + 2 * (a * b) + b * b :=\ncalc\n  (a + b) * (a + b)\n    = (a + b) * a + (a + b) * b       := by rw [mul_add]\n  _ = a * a + b * a + (a + b) * b     := by rw [add_mul]\n  _ = a * a + b * a + (a * b + b * b) := by rw [add_mul]\n  _ = a * a + b * a + a * b + b * b   := by rw [\u2190add_assoc]\n  _ = a * a + (b * a + a * b) + b * b := by rw [add_assoc (a * a)]\n  _ = a * a + (a * b + a * b) + b * b := by rw [mul_comm b a]\n  _ = a * a + 2 * (a * b) + b * b     := by rw [\u2190two_mul]\n\n-- 2\u00aa demostraci\u00f3n\nexample :\n  (a + b) * (a + b) = a * a + 2 * (a * b) + b * b :=\ncalc\n  (a + b) * (a + b)\n    = a * a + b * a + (a * b + b * b) := by rw [mul_add, add_mul, add_mul]\n  _ = a * a + (b * a + a * b) + b * b := by rw [\u2190add_assoc, add_assoc (a * a)]\n  _ = a * a + 2 * (a * b) + b * b     := by rw [mul_comm b a, \u2190two_mul]\n\n-- 3\u00aa demostraci\u00f3n\nexample :\n  (a + b) * (a + b) = a * a + 2 * (a * b) + b * b :=\ncalc\n  (a + b) * (a + b)\n    = a * a + b * a + (a * b + b * b) := by ring\n  _ = a * a + (b * a + a * b) + b * b := by ring\n  _ = a * a + 2 * (a * b) + b * b     := by ring\n\n-- 4\u00aa demostraci\u00f3n\nexample :\n  (a + b) * (a + b) = a * a + 2 * (a * b) + b * b :=\nby ring\n\n-- 5\u00aa demostraci\u00f3n\nexample :\n  (a + b) * (a + b) = a * a + 2 * (a * b) + b * b :=\nby\n  rw [mul_add]\n  rw [add_mul]\n  rw [add_mul]\n  rw [\u2190add_assoc]\n  rw [add_assoc (a * a)]\n  rw [mul_comm b a]\n  rw [\u2190two_mul]\n\n-- 6\u00aa demostraci\u00f3n\nexample :\n  (a + b) * (a + b) = a * a + 2 * (a * b) + b * b :=\nby\n  rw [mul_add, add_mul, add_mul]\n  rw [\u2190add_assoc, add_assoc (a * a)]\n  rw [mul_comm b a, \u2190two_mul]\n\n-- 7\u00aa demostraci\u00f3n\nexample :\n  (a + b) * (a + b) = a * a + 2 * (a * b) + b * b :=\nby linarith\n<\/pre>\n<p><b>Demostraciones interactivas<\/b><\/p>\n<p>Se puede interactuar con las demostraciones anteriores en <a href=\"https:\/\/lean.math.hhu.de\/#url=https:\/\/raw.githubusercontent.com\/jaalonso\/Calculemus2\/main\/src\/(a+b)(a+b)_eq_aa+2ab+bb.lean\" rel=\"noopener noreferrer\" target=\"_blank\">Lean 4 Web<\/a>.<\/p>\n<p><b>Referencias<\/b><\/p>\n<ul>\n<li> J. Avigad y P. Massot. <a href=\"https:\/\/bit.ly\/3U4UjBk\">Mathematics in Lean<\/a>, p. 7.<\/li>\n<\/ul>\n<p><a name=\"ej4\"><\/a><\/p>\n<h3>4. (a+b)(c+d) = ac+ad+bc+bd<\/h3>\n<p>Demostrar con Lean4 que si a, b, c y d son n\u00fameros reales, entonces<\/p>\n<pre lang=\"text\">\n   (a + b) * (c + d) = a * c + a * d + b * c + b * d\n<\/pre>\n<p>Para ello, completar la siguiente teor\u00eda de Lean4:<\/p>\n<pre lang=\"lean\">\nimport Mathlib.Data.Real.Basic\nimport Mathlib.Tactic\n\nvariable (a b c d : \u211d)\n\nexample\n  : (a + b) * (c + d) = a * c + a * d + b * c + b * d :=\nsorry\n<\/pre>\n<p><b>Demostraci\u00f3n en lenguaje natural<\/b><\/p>\n<p>Por la siguiente cadena de igualdades<br \/>\n\\begin{align}<br \/>\n(a + b)(c + d)<br \/>\n&amp;= a(c + d) + b(c + d)    &amp;&amp;\\text{[por la distributiva]} &#92;&#92;<br \/>\n&amp;= ac + ad + b(c + d)     &amp;&amp;\\text{[por la distributiva]} &#92;&#92;<br \/>\n&amp;= ac + ad + (bc + bd)    &amp;&amp;\\text{[por la distributiva]} &#92;&#92;<br \/>\n&amp;= ac + ad + bc + bd      &amp;&amp;\\text{[por la asociativa]}<br \/>\n\\end{align}<\/p>\n<p><b>Demostraciones con Lean4<\/b><\/p>\n<pre lang=\"lean\">\nimport Mathlib.Data.Real.Basic\nimport Mathlib.Tactic\n\nvariable (a b c d : \u211d)\n\n-- 1\u00aa demostraci\u00f3n\nexample\n  : (a + b) * (c + d) = a * c + a * d + b * c + b * d :=\ncalc\n  (a + b) * (c + d)\n    = a * (c + d) + b * (c + d)       := by rw [add_mul]\n  _ = a * c + a * d + b * (c + d)     := by rw [mul_add]\n  _ = a * c + a * d + (b * c + b * d) := by rw [mul_add]\n  _ = a * c + a * d + b * c + b * d   := by rw [\u2190add_assoc]\n\n-- 2\u00aa demostraci\u00f3n\nexample\n  : (a + b) * (c + d) = a * c + a * d + b * c + b * d :=\ncalc\n  (a + b) * (c + d)\n    = a * (c + d) + b * (c + d)       := by ring\n  _ = a * c + a * d + b * (c + d)     := by ring\n  _ = a * c + a * d + (b * c + b * d) := by ring\n  _ = a * c + a * d + b * c + b * d   := by ring\n\n-- 3\u00aa demostraci\u00f3n\nexample : (a + b) * (c + d) = a * c + a * d + b * c + b * d :=\nby ring\n\n-- 4\u00aa demostraci\u00f3n\nexample\n  : (a + b) * (c + d) = a * c + a * d + b * c + b * d :=\nby\n   rw [add_mul]\n   rw [mul_add]\n   rw [mul_add]\n   rw [\u2190 add_assoc]\n\n-- 5\u00aa demostraci\u00f3n\nexample : (a + b) * (c + d) = a * c + a * d + b * c + b * d :=\nby rw [add_mul, mul_add, mul_add, \u2190add_assoc]\n<\/pre>\n<p><b>Demostraciones interactivas<\/b><\/p>\n<p>Se puede interactuar con las demostraciones anteriores en <a href=\"https:\/\/lean.math.hhu.de\/#url=https:\/\/raw.githubusercontent.com\/jaalonso\/Calculemus2\/main\/src\/(a+b)(c+d)_eq_ac+ad+bc+bd.lean\" rel=\"noopener noreferrer\" target=\"_blank\">Lean 4 Web<\/a>.<\/p>\n<p><b>Referencias<\/b><\/p>\n<ul>\n<li> J. Avigad y P. Massot. <a href=\"https:\/\/bit.ly\/3U4UjBk\">Mathematics in Lean<\/a>, p. 8.<\/li>\n<\/ul>\n<p><a name=\"ej5\"><\/a><\/p>\n<h3>5. (a+b)(a-b) = a\u00b2-b\u00b2<\/h3>\n<p>Demostrar con Lean4 que si a y b son n\u00fameros reales, entonces<\/p>\n<pre lang=\"text\">\n   (a + b) * (a - b) = a^2 - b^2\n<\/pre>\n<p>Para ello, completar la siguiente teor\u00eda de Lean4:<\/p>\n<pre lang=\"lean\">\nimport Mathlib.Data.Real.Basic\nimport Mathlib.Tactic\n\nvariable (a b : \u211d)\n\nexample : (a + b) * (a - b) = a^2 - b^2 :=\nsorry\n<\/pre>\n<p><b>Demostraci\u00f3n en lenguaje natural<\/b><\/p>\n<p>Por la siguiente cadena de igualdades:<br \/>\n\\begin{align}<br \/>\n(a + b)(a &#8211; b)<br \/>\n&amp;= a(a &#8211; b) + b(a &#8211; b)            &amp;&amp;\\text{[por la distributiva]} &#92;&#92;<br \/>\n&amp;= (aa &#8211; ab) + b(a &#8211; b)           &amp;&amp;\\text{[por la distributiva]} &#92;&#92;<br \/>\n&amp;= (a^2 &#8211; ab) + b(a &#8211; b)          &amp;&amp;\\text{[por def. de cuadrado]} &#92;&#92;<br \/>\n&amp;= (a^2 &#8211; ab) + (ba &#8211; bb)         &amp;&amp;\\text{[por la distributiva]} &#92;&#92;<br \/>\n&amp;= (a^2 &#8211; ab) + (ba &#8211; b^2)        &amp;&amp;\\text{[por def. de cuadrado]} &#92;&#92;<br \/>\n&amp;= (a^2 + -(ab)) + (ba &#8211; b^2)     &amp;&amp;\\text{[por def. de resta]} &#92;&#92;<br \/>\n&amp;= a^2 + (-(ab) + (ba &#8211; b^2))     &amp;&amp;\\text{[por la asociativa]} &#92;&#92;<br \/>\n&amp;= a^2 + (-(ab) + (ba + -b^2))    &amp;&amp;\\text{[por def. de resta]} &#92;&#92;<br \/>\n&amp;= a^2 + ((-(ab) + ba) + -b^2)    &amp;&amp;\\text{[por la asociativa]} &#92;&#92;<br \/>\n&amp;= a^2 + ((-(ab) + ab) + -b^2)    &amp;&amp;\\text{[por la conmutativa]} &#92;&#92;<br \/>\n&amp;= a^2 + (0 + -b^2)               &amp;&amp;\\text{[por def. de opuesto]} &#92;&#92;<br \/>\n&amp;= (a^2 + 0) + -b^2               &amp;&amp;\\text{[por asociativa]} &#92;&#92;<br \/>\n&amp;= a^2 + -b^2                     &amp;&amp;\\text{[por def. de cero]} &#92;&#92;<br \/>\n&amp;= a^2 &#8211; b^2                      &amp;&amp;\\text{[por def. de resta]}<br \/>\n\\end{align}<\/p>\n<p><b>Demostraciones con Lean<\/b><\/p>\n<pre lang=\"lean\">\nimport Mathlib.Data.Real.Basic\nimport Mathlib.Tactic\n\nvariable (a b : \u211d)\n\n-- 1\u00aa demostraci\u00f3n\n-- ===============\n\nexample : (a + b) * (a - b) = a^2 - b^2 :=\ncalc\n  (a + b) * (a - b)\n    = a * (a - b) + b * (a - b)         := by rw [add_mul]\n  _ = (a * a - a * b) + b * (a - b)     := by rw [mul_sub]\n  _ = (a^2 - a * b) + b * (a - b)       := by rw [\u2190 pow_two]\n  _ = (a^2 - a * b) + (b * a - b * b)   := by rw [mul_sub]\n  _ = (a^2 - a * b) + (b * a - b^2)     := by rw [\u2190 pow_two]\n  _ = (a^2 + -(a * b)) + (b * a - b^2)  := by ring\n  _ = a^2 + (-(a * b) + (b * a - b^2))  := by rw [add_assoc]\n  _ = a^2 + (-(a * b) + (b * a + -b^2)) := by ring\n  _ = a^2 + ((-(a * b) + b * a) + -b^2) := by rw [\u2190 add_assoc\n                                              (-(a * b)) (b * a) (-b^2)]\n  _ = a^2 + ((-(a * b) + a * b) + -b^2) := by rw [mul_comm]\n  _ = a^2 + (0 + -b^2)                  := by rw [neg_add_self (a * b)]\n  _ = (a^2 + 0) + -b^2                  := by rw [\u2190 add_assoc]\n  _ = a^2 + -b^2                        := by rw [add_zero]\n  _ = a^2 - b^2                         := by linarith\n\n-- 2\u00aa demostraci\u00f3n\n-- ===============\n\nexample : (a + b) * (a - b) = a^2 - b^2 :=\ncalc\n  (a + b) * (a - b)\n    = a * (a - b) + b * (a - b)         := by ring\n  _ = (a * a - a * b) + b * (a - b)     := by ring\n  _ = (a^2 - a * b) + b * (a - b)       := by ring\n  _ = (a^2 - a * b) + (b * a - b * b)   := by ring\n  _ = (a^2 - a * b) + (b * a - b^2)     := by ring\n  _ = (a^2 + -(a * b)) + (b * a - b^2)  := by ring\n  _ = a^2 + (-(a * b) + (b * a - b^2))  := by ring\n  _ = a^2 + (-(a * b) + (b * a + -b^2)) := by ring\n  _ = a^2 + ((-(a * b) + b * a) + -b^2) := by ring\n  _ = a^2 + ((-(a * b) + a * b) + -b^2) := by ring\n  _ = a^2 + (0 + -b^2)                  := by ring\n  _ = (a^2 + 0) + -b^2                  := by ring\n  _ = a^2 + -b^2                        := by ring\n  _ = a^2 - b^2                         := by ring\n\n-- 3\u00aa demostraci\u00f3n\n-- ===============\n\nexample : (a + b) * (a - b) = a^2 - b^2 :=\nby ring\n\n-- 4\u00aa demostraci\u00f3n (por reescritura usando el lema anterior)\n-- =========================================================\n\n-- El lema anterior es\nlemma aux : (a + b) * (c + d) = a * c + a * d + b * c + b * d :=\nby ring\n\n-- La demostraci\u00f3n es\nexample : (a + b) * (a - b) = a^2 - b^2 :=\nby\n  rw [sub_eq_add_neg]\n  rw [aux]\n  rw [mul_neg]\n  rw [add_assoc (a * a)]\n  rw [mul_comm b a]\n  rw [neg_add_self]\n  rw [add_zero]\n  rw [\u2190 pow_two]\n  rw [mul_neg]\n  rw [\u2190 pow_two]\n  rw [\u2190 sub_eq_add_neg]\n<\/pre>\n<p><b>Demostraciones interactivas<\/b><\/p>\n<p>Se puede interactuar con las demostraciones anteriores en <a href=\"https:\/\/lean.math.hhu.de\/#url=https:\/\/raw.githubusercontent.com\/jaalonso\/Calculemus2\/main\/src\/(a+b)(a-b)_eq_aa-bb.lean\" rel=\"noopener noreferrer\" target=\"_blank\">Lean 4 Web<\/a>.<\/p>\n<p><b>Referencias<\/b><\/p>\n<ul>\n<li> J. Avigad y P. Massot. <a href=\"https:\/\/bit.ly\/3U4UjBk\">Mathematics in Lean<\/a>, p. 8.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Esta semana he publicado en Calculemus las demostraciones con Lean4 de las siguientes propiedades: 1. Si bc = ef, entonces ((ab)c)d = ((ae)f)d 2. Si c = ba-d y d = ab, entonces c = 0 3. (a+b)(a+b) = aa+2ab+bb 4. (a+b)(c+d) = ac+ad+bc+bd 5. (a+b)(a-b) = a\u00b2-b\u00b2 A continuaci\u00f3n se muestran las soluciones.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[1],"tags":[341],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/7962"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/comments?post=7962"}],"version-history":[{"count":4,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/7962\/revisions"}],"predecessor-version":[{"id":7973,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/7962\/revisions\/7973"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=7962"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=7962"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=7962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}