        {"id":1755,"date":"2023-11-03T06:00:13","date_gmt":"2023-11-03T04:00:13","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/?p=1755"},"modified":"2023-10-26T13:40:27","modified_gmt":"2023-10-26T11:40:27","slug":"03-nov-23","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/03-nov-23\/","title":{"rendered":"Si x e y son sumas de dos cuadrados, entonces xy tambi\u00e9n lo es"},"content":{"rendered":"<p>Demostrar con Lean4 que si &#92;(x&#92;) e &#92;(y&#92;) son sumas de dos cuadrados, entonces &#92;(xy&#92;) tambi\u00e9n lo es<\/p>\n<p>Para ello, completar la siguiente teor\u00eda de Lean4:<\/p>\n<pre lang=\"lean\">\nimport Mathlib.Tactic\nvariable {\u03b1 : Type _} [CommRing \u03b1]\nvariable {x y : \u03b1}\n\n-- (suma_de_cuadrados x) afirma que x se puede escribir como la suma\n-- de dos cuadrados.\ndef suma_de_cuadrados (x : \u03b1) :=\n  \u2203 a b, x = a^2 + b^2\n\nexample\n  (hx : suma_de_cuadrados x)\n  (hy : suma_de_cuadrados y)\n  : suma_de_cuadrados (x * y) :=\nby sorry\n<\/pre>\n<p><!--more--><\/p>\n<p><b>Demostraci\u00f3n en lenguaje natural<\/b><\/p>\n<p><br \/>\nPuesto que &#92;(x&#92;) e &#92;(y&#92;) se pueden escribir como la suma de dos cuadrados, existen &#92;(a&#92;), &#92;(b&#92;) , &#92;(c&#92;) y &#92;(d&#92;) tales que<br \/>\n&#92;begin{align}<br \/>\n   x &amp;= a\u00b2 + b\u00b2 &#92;&#92;<br \/>\n   y &amp;= c\u00b2 + d\u00b2<br \/>\n&#92;end{align}<br \/>\nEntonces,<br \/>\n&#92;begin{align}<br \/>\n   xy &amp;= (a\u00b2 + b\u00b2)(c\u00b2 + d\u00b2) &#92;&#92;<br \/>\n      &amp;= a\u00b2c\u00b2 + b\u00b2d\u00b2 + a\u00b2d\u00b2 + b\u00b2c\u00b2 &#92;&#92;<br \/>\n      &amp;= a\u00b2c\u00b2 &#8211; 2acbd + b\u00b2d\u00b2 + a\u00b2d\u00b2 + 2adbc + b\u00b2c\u00b2 &#92;&#92;<br \/>\n      &amp;= (ac &#8211; bd)\u00b2 + (ad + bc)\u00b2<br \/>\n&#92;end{align}<br \/>\nPor tanto, &#92;(xy&#92;) es la suma de dos cuadrados.<\/p>\n<p><b>Demostraciones con Lean4<\/b><\/p>\n<pre lang=\"lean\">\nimport Mathlib.Tactic\nvariable {\u03b1 : Type _} [CommRing \u03b1]\nvariable {x y : \u03b1}\n\n-- (suma_de_cuadrados x) afirma que x se puede escribir como la suma\n-- de dos cuadrados.\ndef suma_de_cuadrados (x : \u03b1) :=\n  \u2203 a b, x = a^2 + b^2\n\n-- 1\u00aa demostraci\u00f3n\nexample\n  (hx : suma_de_cuadrados x)\n  (hy : suma_de_cuadrados y)\n  : suma_de_cuadrados (x * y) :=\nby\n  rcases hx with \u27e8a, b, xeq : x = a^2 + b^2\u27e9\n  -- a b : \u03b1\n  -- xeq : x = a ^ 2 + b ^ 2\n  rcases hy with \u27e8c, d, yeq : y = c^2 + d^2\u27e9\n  -- c d : \u03b1\n  -- yeq : y = c ^ 2 + d ^ 2\n  have h1: x * y = (a*c - b*d)^2 + (a*d + b*c)^2 :=\n    calc x * y\n         = (a^2 + b^2) * (c^2 + d^2) :=\n                by rw [xeq, yeq]\n       _ = a^2*c^2 + b^2*d^2 + a^2*d^2 + b^2*c^2 :=\n                by ring\n       _ = a^2*c^2 - 2*a*c*b*d + b^2*d^2 + a^2*d^2 + 2*a*d*b*c + b^2*c^2 :=\n                by ring\n       _ = (a*c - b*d)^2 + (a*d + b*c)^2 :=\n                by ring\n  have h2 : \u2203 f, x * y = (a*c - b*d)^2 + f^2 :=\n    Exists.intro (a*d + b*c) h1\n  have h3 : \u2203 e f, x * y = e^2 + f^2 :=\n    Exists.intro (a*c - b*d) h2\n  show suma_de_cuadrados (x * y)\n  exact h3\n\n-- 2\u00aa demostraci\u00f3n\nexample\n  (hx : suma_de_cuadrados x)\n  (hy : suma_de_cuadrados y)\n  : suma_de_cuadrados (x * y) :=\nby\n  rcases hx with \u27e8a, b, xeq : x = a^2 + b^2\u27e9\n  -- a b : \u03b1\n  -- xeq : x = a ^ 2 + b ^ 2\n  rcases hy with \u27e8c, d, yeq : y = c^2 + d^2\u27e9\n  -- c d : \u03b1\n  -- yeq : y = c ^ 2 + d ^ 2\n  have h1: x * y = (a*c - b*d)^2 + (a*d + b*c)^2 :=\n    calc x * y\n         = (a^2 + b^2) * (c^2 + d^2)     := by rw [xeq, yeq]\n       _ = (a*c - b*d)^2 + (a*d + b*c)^2 := by ring\n  have h2 : \u2203 e f, x * y = e^2 + f^2 :=\n    by tauto\n  show suma_de_cuadrados (x * y)\n  exact h2\n\n-- 3\u00aa demostraci\u00f3n\nexample\n  (hx : suma_de_cuadrados x)\n  (hy : suma_de_cuadrados y)\n  : suma_de_cuadrados (x * y) :=\nby\n  rcases hx with \u27e8a, b, xeq\u27e9\n  -- a b : \u03b1\n  -- xeq : x = a ^ 2 + b ^ 2\n  rcases hy with \u27e8c, d, yeq\u27e9\n  -- c d : \u03b1\n  -- yeq : y = c ^ 2 + d ^ 2\n  rw [xeq, yeq]\n  -- \u22a2 suma_de_cuadrados ((a ^ 2 + b ^ 2) * (c ^ 2 + d ^ 2))\n  use a*c - b*d, a*d + b*c\n  -- \u22a2 (a ^ 2 + b ^ 2) * (c ^ 2 + d ^ 2)\n  --   = (a * c - b * d) ^ 2 + (a * d + b * c) ^ 2\n  ring\n\n-- 4\u00aa demostraci\u00f3n\nexample\n  (hx : suma_de_cuadrados x)\n  (hy : suma_de_cuadrados y)\n  : suma_de_cuadrados (x * y) :=\nby\n  rcases hx with \u27e8a, b, rfl\u27e9\n  -- \u22a2 suma_de_cuadrados ((a ^ 2 + b ^ 2) * y)\n  rcases hy with \u27e8c, d, rfl\u27e9\n  -- \u22a2 suma_de_cuadrados ((a ^ 2 + b ^ 2) * (c ^ 2 + d ^ 2))\n  use a*c - b*d, a*d + b*c\n  -- \u22a2 (a ^ 2 + b ^ 2) * (c ^ 2 + d ^ 2)\n  --   = (a * c - b * d) ^ 2 + (a * d + b * c) ^ 2\n  ring\n<\/pre>\n<p><b>Demostraciones interactivas<\/b><\/p>\n<p>Se puede interactuar con las demostraciones anteriores en <a href=\"https:\/\/live.lean-lang.org\/#url=https:\/\/raw.githubusercontent.com\/jaalonso\/Calculemus2\/main\/src\/Producto_de_suma_de_cuadrados.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. 30.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Demostrar con Lean4 que si &#92;(x&#92;) e &#92;(y&#92;) son sumas de dos cuadrados, entonces &#92;(xy&#92;) tambi\u00e9n lo es Para ello, completar la siguiente teor\u00eda de Lean4: import Mathlib.Tactic variable {\u03b1 : Type _} [CommRing \u03b1] variable {x y : \u03b1} &#8212; (suma_de_cuadrados x) afirma que x se puede escribir como la suma &#8212; de dos cuadrados. def suma_de_cuadrados (x : \u03b1) := \u2203 a b, x = a^2 + b^2 example (hx : suma_de_cuadrados x) (hy : suma_de_cuadrados y) : suma_de_cuadrados (x * y) := by sorry<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","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,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/posts\/1755"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/comments?post=1755"}],"version-history":[{"count":2,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/posts\/1755\/revisions"}],"predecessor-version":[{"id":1757,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/posts\/1755\/revisions\/1757"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/media?parent=1755"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/categories?post=1755"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/tags?post=1755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}