        {"id":1030,"date":"2022-09-14T06:00:41","date_gmt":"2022-09-14T04:00:41","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/?p=1030"},"modified":"2022-09-11T16:26:50","modified_gmt":"2022-09-11T14:26:50","slug":"si-g-es-un-grupo-y-a-%e2%88%88-g-entonces-a-a%e2%81%bb%c2%b9-1","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/si-g-es-un-grupo-y-a-%e2%88%88-g-entonces-a-a%e2%81%bb%c2%b9-1\/","title":{"rendered":"Si G es un grupo y a \u2208 G, entonces a * a\u207b\u00b9 = 1"},"content":{"rendered":"<p>En Lean, se declara que G es un grupo mediante la expresi\u00f3n<\/p>\n<pre lang=\"text\">\n   variables {G : Type*} [group G]\n<\/pre>\n<p>y, 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 G es un grupo y a \u2208 G, entonces<\/p>\n<pre lang=\"text\">\na * a\u207b\u00b9 = 1\n<\/pre>\n<p>Para ello, completar la siguiente teor\u00eda de Lean:<\/p>\n<pre lang=\"lean\">\nimport algebra.group\nvariables {G : Type*} [group G]\nvariables (a b : G)\n\nexample : a * a\u207b\u00b9 = 1 :=\nsorry\n<\/pre>\n<p><!--more--><\/p>\n<p><b>Soluciones con Lean<\/b><\/p>\n<pre lang=\"lean\">\nimport algebra.group\nvariables {G : Type*} [group G]\nvariables (a b : G)\n\n-- 1\u00aa demostraci\u00f3n\n-- ===============\n\nexample : a * a\u207b\u00b9 = 1 :=\ncalc a * a\u207b\u00b9\n     = 1 * (a * a\u207b\u00b9)\n       : (one_mul (a * a\u207b\u00b9)).symm\n ... = (1 * a) * a\u207b\u00b9\n       : (mul_assoc 1 a  a\u207b\u00b9).symm\n ... = (((a\u207b\u00b9)\u207b\u00b9 * a\u207b\u00b9)  * a) * a\u207b\u00b9\n       : congr_arg (\u03bb x, (x * a) * a\u207b\u00b9) (mul_left_inv a\u207b\u00b9).symm\n ... = ((a\u207b\u00b9)\u207b\u00b9 * (a\u207b\u00b9  * a)) * a\u207b\u00b9\n       : congr_fun (congr_arg has_mul.mul (mul_assoc a\u207b\u00b9\u207b\u00b9 a\u207b\u00b9 a)) a\u207b\u00b9\n ... = ((a\u207b\u00b9)\u207b\u00b9 * 1) * a\u207b\u00b9\n       : congr_arg (\u03bb x, (a\u207b\u00b9\u207b\u00b9 * x) * a\u207b\u00b9) (mul_left_inv a)\n ... = (a\u207b\u00b9)\u207b\u00b9 * (1 * a\u207b\u00b9)\n       : mul_assoc (a\u207b\u00b9)\u207b\u00b9 1 a\u207b\u00b9\n ... = (a\u207b\u00b9)\u207b\u00b9 * a\u207b\u00b9\n       : congr_arg (\u03bb x, (a\u207b\u00b9)\u207b\u00b9 * x) (one_mul a\u207b\u00b9)\n ... = 1\n       : mul_left_inv a\u207b\u00b9\n\n-- 2\u00aa demostraci\u00f3n\n-- ===============\n\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-- 3\u00aa demostraci\u00f3n\n-- ===============\n\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-- 4\u00aa demostraci\u00f3n\n-- ===============\n\nexample : a * a\u207b\u00b9 = 1 :=\nby simp\n\n-- 5\u00aa demostraci\u00f3n\n-- ===============\n\nexample : a * a\u207b\u00b9 = 1 :=\n-- by library_search\nmul_inv_self a\n<\/pre>\n<p>Se puede interactuar con la prueba anterior en <a href=\"https:\/\/leanprover-community.github.io\/lean-web-editor\/#url=https:\/\/raw.githubusercontent.com\/jaalonso\/Calculemus\/main\/src\/Inverso_derecha.lean\" rel=\"noopener noreferrer\" target=\"_blank\">esta sesi\u00f3n con Lean<\/a>.<\/p>\n<p><b>Referencias<\/b><\/p>\n<ul>\n<li>J. Avigad, K. Buzzard, R.Y. Lewis y P. Massot. <a href=\"https:\/\/bit.ly\/3U4UjBk\">Mathematics in Lean<\/a>, p. 14.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>En Lean, se declara que G es un grupo mediante la expresi\u00f3n variables {G : Type*} [group G] y, como consecuencia, se tiene los siguientes axiomas mul_assoc : \u2200 a b c : G, a * b * c = a * (b * c) one_mul : \u2200 a : G, 1 * a = a mul_left_inv : \u2200 a : G, a\u207b\u00b9 * a = 1 Demostrar que si G es un grupo y a \u2208 G, entonces a * a\u207b\u00b9 = 1 Para ello, completar la siguiente teor\u00eda de Lean: import algebra.group variables {G : Type*} [group G] variables (a b : G) example : a * a\u207b\u00b9 = 1 := 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":[284],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/posts\/1030"}],"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=1030"}],"version-history":[{"count":2,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/posts\/1030\/revisions"}],"predecessor-version":[{"id":1096,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/posts\/1030\/revisions\/1096"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/media?parent=1030"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/categories?post=1030"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/tags?post=1030"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}