{"id":8005,"date":"2023-08-19T18:35:23","date_gmt":"2023-08-19T16:35:23","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=8005"},"modified":"2023-08-19T18:35:23","modified_gmt":"2023-08-19T16:35:23","slug":"19-ago-23","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/19-ago-23\/","title":{"rendered":"La semana en Calculemus (19 de agosto 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 R es un anillo y a \u2208 R, entonces a &#8211; a = 0<\/a><\/li>\n<li><a href=\"#ej2\">2. En los anillos, 1 + 1 = 2<\/a><\/li>\n<li><a href=\"#ej3\">3. Si R es un anillo y a \u2208 R, entonces 2a = a+a<\/a><\/li>\n<li><a href=\"#ej4\">4. Si G es un grupo y a \u2208 G, entonces aa\u207b\u00b9 = 1<\/a><\/li>\n<li><a href=\"#ej5\">5. Si G es un grupo y a \u2208 G, entonces a\u00b71 = a<\/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 R es un anillo y a \u2208 R, entonces a &#8211; a = 0<\/h3>\n<p>Demostrar con Lean4 que si &#92;(R&#92;) es un anillo y &#92;(a &#92;in R&#92;), entonces<br \/>\n&#92;[a &#8211; a = 0&#92;]<\/p>\n<p>Para ello, completar la siguiente teor\u00eda de Lean4:<\/p>\n<pre lang=\"lean\">\nimport Mathlib.Algebra.Ring.Defs\nvariable {R : Type _} [Ring R]\nvariable (a : R)\n\nexample : a - a = 0 :=\nsorry\n<\/pre>\n<p><b>Demostraci\u00f3n en lenguaje natural<\/b><\/p>\n<p>Por la siguiente cadena de igualdades:<br \/>\n&#92;begin{align}<br \/>\n   a &#8211; a &amp;= a + -a    &amp;&amp;&#92;text{[por definici\u00f3n de resta]} &#92;&#92;<br \/>\n         &amp;= 0         &amp;&amp;&#92;text{[por suma con opuesto]}<br \/>\n&#92;end{align}<\/p>\n<p><b>Demostraciones con Lean4<\/b><\/p>\n<pre lang=\"lean\">\nimport Mathlib.Algebra.Ring.Defs\nvariable {R : Type _} [Ring R]\nvariable (a : R)\n\n-- 1\u00aa demostraci\u00f3n\nexample : a - a = 0 :=\ncalc\n  a - a = a + -a := by rw [sub_eq_add_neg a a]\n      _ = 0      := by rw [add_right_neg]\n\n-- 2\u00aa demostraci\u00f3n\nexample : a - a = 0 :=\nsub_self a\n\n-- 3\u00aa demostraci\u00f3n\nexample : a - a = 0 :=\nby simp\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\/Resta_consigo_mismo.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. 12.<\/li>\n<\/ul>\n<p><a name=\"ej2\"><\/a><\/p>\n<h3>2. En los anillos, 1 + 1 = 2<\/h3>\n<p>Demostrar con Lean4 que En los anillos, &#92;(1 + 1 = 2&#92;)<\/p>\n<p>Para ello, completar la siguiente teor\u00eda de Lean4:<\/p>\n<pre lang=\"lean\">\nimport Mathlib.Algebra.Ring.Defs\nimport Mathlib.Tactic\nvariable {R : Type _} [Ring R]\n\nexample : 1 + 1 = (2 : R) :=\nsorry\n<\/pre>\n<p><b>Demostraci\u00f3n en lenguaje natural<\/b><\/p>\n<p>Por c\u00e1lculo.<\/p>\n<p><b>Demostraciones con Lean4<\/b><\/p>\n<pre lang=\"lean\">\nimport Mathlib.Algebra.Ring.Defs\nimport Mathlib.Tactic\nvariable {R : Type _} [Ring R]\n\n-- Demostraciones con Lean4\n-- ========================\n\n-- 1\u00aa demostraci\u00f3n\nexample : 1 + 1 = (2 : R) :=\nby norm_num\n\n-- 2\u00aa demostraci\u00f3n\nexample : 1 + 1 = (2 : R) :=\none_add_one_eq_two\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\/Uno_mas_uno_es_dos.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. 12.<\/li>\n<\/ul>\n<p><a name=\"ej3\"><\/a><\/p>\n<h3>3. Si R es un anillo y a \u2208 R, entonces 2a = a+a<\/h3>\n<p>Demostrar con Lean4 que si &#92;(R&#92;) es un anillo y &#92;(a &#92;in R&#92;), entonces<br \/>\n&#92;[2a = a+a&#92;]<\/p>\n<p>Para ello, completar la siguiente teor\u00eda de Lean4:<\/p>\n<pre lang=\"lean\">\nimport Mathlib.Algebra.Ring.Defs\n\nvariable {R : Type _} [Ring R]\nvariable (a : R)\n\nexample : 2 * a = a + a :=\nsorry\n<\/pre>\n<p><b>Demostraci\u00f3n en lenguaje natural<\/b><\/p>\n<p>Por la siguiente cadena de igualdades<br \/>\n&#92;begin{align}<br \/>\n   2\u00b7a &amp;= (1 + 1)\u00b7a    &amp;&amp;&#92;text{[por la definici\u00f3n de 2]} &#92;&#92;<br \/>\n       &amp;= 1\u00b7a + 1\u00b7a    &amp;&amp;&#92;text{[por la distributiva]} &#92;&#92;<br \/>\n       &amp;= a + a        &amp;&amp;&#92;text{[por producto con uno]}<br \/>\n&#92;end{align}<\/p>\n<p><b>Demostraciones con Lean4<\/b><\/p>\n<pre lang=\"lean\">\nimport Mathlib.Algebra.Ring.Defs\n\nvariable {R : Type _} [Ring R]\nvariable (a : R)\n\n-- 1\u00aa demostraci\u00f3n\nexample : 2 * a = a + a :=\ncalc\n  2 * a = (1 + 1) * a   := by rw [one_add_one_eq_two]\n      _ = 1 * a + 1 * a := by rw [add_mul]\n      _ = a + a         := by rw [one_mul]\n\n-- 2\u00aa demostraci\u00f3n\nexample : 2 * a = a + a :=\nby exact two_mul 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\/Producto_por_dos.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. 12.<\/li>\n<\/ul>\n<p><a name=\"ej4\"><\/a><\/p>\n<h3>4. Si G es un grupo y a \u2208 G, entonces aa\u207b\u00b9 = 1<\/h3>\n<p>En Lean4, se declara que &#92;(G&#92;) es un grupo mediante la expresi\u00f3n<\/p>\n<pre lang=\"text\">\n   variable {G : Type _} [Group G]\n<\/pre>\n<p>Como consecuencia, se tiene los siguientes axiomas<\/p>\n<pre lang=\"text\">\n   mul_assoc :    \u2200 a b c : G, a * b * c = a * (b * c)\n   one_mul :      \u2200 a : G, 1 * a = a\n   mul_left_inv : \u2200 a : G, a\u207b\u00b9 * a = 1\n<\/pre>\n<p>Demostrar que si &#92;(G&#92;) es un grupo y &#92;(a &#92;in G&#92;), entonces<br \/>\n&#92;[aa\u207b\u00b9 = 1&#92;]<\/p>\n<p>Para ello, completar la siguiente teor\u00eda de Lean4:<\/p>\n<pre lang=\"lean\">\nimport Mathlib.Algebra.Group.Defs\n\nvariable {G : Type _} [Group G]\nvariable (a b : G)\n\nexample : a * a\u207b\u00b9 = 1 :=\nsorry\n<\/pre>\n<p><b>Demostraci\u00f3n en lenguaje natural<\/b><\/p>\n<p>Por la siguiente cadena de igualdades<br \/>\n&#92;begin{align}<br \/>\n   a\u00b7a\u207b\u00b9 &amp;= 1\u00b7(a\u00b7a\u207b\u00b9)                 &amp;&amp;&#92;text{[por producto con uno]} &#92;&#92;<br \/>\n         &amp;= (1\u00b7a)\u00b7a\u207b\u00b9                 &amp;&amp;&#92;text{[por asociativa]} &#92;&#92;<br \/>\n         &amp;= (((a\u207b\u00b9)\u207b\u00b9\u00b7a\u207b\u00b9) \u00b7a)\u00b7a\u207b\u00b9    &amp;&amp;&#92;text{[por producto con inverso]} &#92;&#92;<br \/>\n         &amp;= ((a\u207b\u00b9)\u207b\u00b9\u00b7(a\u207b\u00b9 \u00b7a))\u00b7a\u207b\u00b9    &amp;&amp;&#92;text{[por asociativa]} &#92;&#92;<br \/>\n         &amp;= ((a\u207b\u00b9)\u207b\u00b9\u00b71)\u00b7a\u207b\u00b9           &amp;&amp;&#92;text{[por producto con inverso]} &#92;&#92;<br \/>\n         &amp;= (a\u207b\u00b9)\u207b\u00b9\u00b7(1\u00b7a\u207b\u00b9)           &amp;&amp;&#92;text{[por asociativa]} &#92;&#92;<br \/>\n         &amp;= (a\u207b\u00b9)\u207b\u00b9\u00b7a\u207b\u00b9               &amp;&amp;&#92;text{[por producto con uno]} &#92;&#92;<br \/>\n         &amp;= 1                         &amp;&amp;&#92;text{[por producto con inverso]}<br \/>\n&#92;end{align}<\/p>\n<p><b>Demostraciones con Lean4<\/b><\/p>\n<pre lang=\"lean\">\nimport Mathlib.Algebra.Group.Defs\n\nvariable {G : Type _} [Group G]\nvariable (a b : G)\n\n-- 1\u00aa demostraci\u00f3n\nexample : a * a\u207b\u00b9 = 1 :=\ncalc\n  a * a\u207b\u00b9 = 1 * (a * a\u207b\u00b9)                := by rw [one_mul]\n        _ = (1 * a) * a\u207b\u00b9                := by rw [mul_assoc]\n        _ = (((a\u207b\u00b9)\u207b\u00b9 * a\u207b\u00b9)  * a) * a\u207b\u00b9 := by rw [mul_left_inv]\n        _ = ((a\u207b\u00b9)\u207b\u00b9 * (a\u207b\u00b9  * a)) * a\u207b\u00b9 := by rw [\u2190 mul_assoc]\n        _ = ((a\u207b\u00b9)\u207b\u00b9 * 1) * a\u207b\u00b9          := by rw [mul_left_inv]\n        _ = (a\u207b\u00b9)\u207b\u00b9 * (1 * a\u207b\u00b9)          := by rw [mul_assoc]\n        _ = (a\u207b\u00b9)\u207b\u00b9 * a\u207b\u00b9                := by rw [one_mul]\n        _ = 1                            := by rw [mul_left_inv]\n\n-- 2\u00aa demostraci\u00f3n\nexample : a * a\u207b\u00b9 = 1 :=\ncalc\n  a * a\u207b\u00b9 = 1 * (a * a\u207b\u00b9)                := by simp\n        _ = (1 * a) * a\u207b\u00b9                := by simp\n        _ = (((a\u207b\u00b9)\u207b\u00b9 * a\u207b\u00b9)  * a) * a\u207b\u00b9 := by simp\n        _ = ((a\u207b\u00b9)\u207b\u00b9 * (a\u207b\u00b9  * a)) * a\u207b\u00b9 := by simp\n        _ = ((a\u207b\u00b9)\u207b\u00b9 * 1) * a\u207b\u00b9          := by simp\n        _ = (a\u207b\u00b9)\u207b\u00b9 * (1 * a\u207b\u00b9)          := by simp\n        _ = (a\u207b\u00b9)\u207b\u00b9 * a\u207b\u00b9                := by simp\n        _ = 1                            := by simp\n\n-- 3\u00aa demostraci\u00f3n\nexample : a * a\u207b\u00b9 = 1 :=\nby simp\n\n-- 4\u00aa demostraci\u00f3n\nexample : a * a\u207b\u00b9 = 1 :=\nby exact mul_inv_self 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\/Producto_por_inverso.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. 12.<\/li>\n<\/ul>\n<p><a name=\"ej5\"><\/a><\/p>\n<h3>5. Si G es un grupo y a \u2208 G, entonces a\u00b71 = a<\/h3>\n<p>Demostrar con Lean4 que si &#92;(G&#92;) es un grupo y &#92;(a &#92;in G&#92;), entonces<br \/>\n&#92;[a\u00b71 = a&#92;]<\/p>\n<p>Para ello, completar la siguiente teor\u00eda de Lean4:<\/p>\n<pre lang=\"lean\">\nimport Mathlib.Algebra.Group.Defs\n\nvariable {G : Type _} [Group G]\nvariable (a b : G)\n\nexample : a * 1 = a :=\nsorry\n<\/pre>\n<p><b>Demostraci\u00f3n en lenguaje natural<\/b><\/p>\n<p>Se tiene por la siguiente cadena de igualdades<br \/>\n&#92;begin{align}<br \/>\n   a\u00b71 &amp;= a\u00b7(a\u207b\u00b9\u00b7a)    &amp;&amp;&#92;text{[por producto con inverso]} &#92;&#92;<br \/>\n       &amp;= (a\u00b7a\u207b\u00b9)\u00b7a    &amp;&amp;&#92;text{[por asociativa]} &#92;&#92;<br \/>\n       &amp;= 1\u00b7a          &amp;&amp;&#92;text{[por producto con inverso]} &#92;&#92;<br \/>\n       &amp;= a            &amp;&amp;&#92;text{[por producto con uno]}<br \/>\n&#92;end{align}<\/p>\n<p><b>Demostraciones con Lean4<\/b><\/p>\n<pre lang=\"lean\">\nimport Mathlib.Algebra.Group.Defs\n\nvariable {G : Type _} [Group G]\nvariable (a b : G)\n\n-- 1\u00aa demostraci\u00f3n\nexample : a * 1 = a :=\ncalc\n  a * 1 = a * (a\u207b\u00b9 * a) := by rw [mul_left_inv]\n      _ = (a * a\u207b\u00b9) * a := by rw [mul_assoc]\n      _ = 1 * a         := by rw [mul_right_inv]\n      _ = a             := by rw [one_mul]\n\n-- 2\u00aa demostraci\u00f3n\nexample : a * 1 = a :=\ncalc\n  a * 1 = a * (a\u207b\u00b9 * a) := by simp\n      _ = (a * a\u207b\u00b9) * a := by simp\n      _ = 1 * a         := by simp\n      _ = a             := by simp\n\n-- 3\u00aa demostraci\u00f3n\nexample : a * 1 = a :=\nby simp\n\n-- 4\u00aa demostraci\u00f3n\nexample : a * 1 = a :=\nby exact mul_one 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\/Producto_por_uno.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. 12.<\/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 R es un anillo y a \u2208 R, entonces a &#8211; a = 0 2. En los anillos, 1 + 1 = 2 3. Si R es un anillo y a \u2208 R, entonces 2a = a+a 4. Si&#8230;<\/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":[335],"tags":[],"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\/8005"}],"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=8005"}],"version-history":[{"count":1,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/8005\/revisions"}],"predecessor-version":[{"id":8006,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/8005\/revisions\/8006"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=8005"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=8005"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=8005"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}