{"id":7802,"date":"2022-09-25T06:58:07","date_gmt":"2022-09-25T04:58:07","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=7802"},"modified":"2022-09-25T06:58:07","modified_gmt":"2022-09-25T04:58:07","slug":"dao-la-semana-en-calculemus-23-de-septiembre-de-2022","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/dao-la-semana-en-calculemus-23-de-septiembre-de-2022\/","title":{"rendered":"DAO: La semana en Calculemus (23 de septiembre de 2022)"},"content":{"rendered":"<p>Esta semana he publicado en <a href=\"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/\">Calculemus<\/a> las demostraciones con Lean de las siguientes propiedades:<\/p>\n<ul>\n<li><a href=\"#ej1\">1. Si G es un grupo y a, b \u2208 G, entonces (a * b)\u207b\u00b9 = b\u207b\u00b9 * a\u207b\u00b9<\/a><\/li>\n<li><a href=\"#ej2\">2. Si a, b, c, d, e \u2208 \u211d tales que a \u2264 b, b &lt; c, c \u2264 d, d &lt; e, entonces a &lt; e<\/a><\/li>\n<li><a href=\"#ej3\">3. Si a, b, d \u2208 \u211d tales que 1 \u2264 a y b \u2264 d, entonces 2 + a + e\u1d47 \u2264 3a + e\u1d48<\/a><\/li>\n<li><a href=\"#ej4\">4. Si a, b, c, d, f \u2208 \u211d tales que a \u2264 b y c &lt; d, entonces a + e\u1d9c + f &lt; b + e\u1d48 + f<\/a><\/li>\n<li><a href=\"#ej5\">5. Si a, b \u2208 \u211d tales que a \u2264 b, entonces log(1 + e\u1d43) \u2264 log(1 + e\u1d47)<\/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 G es un grupo y a, b \u2208 G, entonces (a * b)\u207b\u00b9 = b\u207b\u00b9 * a\u207b\u00b9<\/h3>\n<p>Demostrar que si G es un grupo y a, b \u2208 G, entonces<\/p>\n<pre lang=\"text\">\n(a * b)\u207b\u00b9 = b\u207b\u00b9 * a\u207b\u00b9\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 * b)\u207b\u00b9 = b\u207b\u00b9 * a\u207b\u00b9 :=\nsorry\n<\/pre>\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 * b)\u207b\u00b9 = b\u207b\u00b9 * a\u207b\u00b9 :=\nbegin\n  apply mul_eq_one_iff_inv_eq.mp,\n  calc a * b * (b\u207b\u00b9 * a\u207b\u00b9)\n       = ((a * b) * b\u207b\u00b9) * a\u207b\u00b9 : (mul_assoc _ _ _).symm\n   ... = (a * (b * b\u207b\u00b9)) * a\u207b\u00b9 : congr_arg (* a\u207b\u00b9) (mul_assoc a _ _)\n   ... = (a * 1) * a\u207b\u00b9         : congr_arg2 _ (congr_arg _ (mul_inv_self b)) rfl\n   ... = a * a\u207b\u00b9               : congr_arg (* a\u207b\u00b9) (mul_one a)\n   ... = 1                     : mul_inv_self a\nend\n\n-- 2\u00aa demostraci\u00f3n\n-- ===============\n\nexample : (a * b)\u207b\u00b9 = b\u207b\u00b9 * a\u207b\u00b9 :=\nbegin\n  apply mul_eq_one_iff_inv_eq.mp,\n  calc a * b * (b\u207b\u00b9 * a\u207b\u00b9)\n       = ((a * b) * b\u207b\u00b9) * a\u207b\u00b9 : by simp only [mul_assoc]\n   ... = (a * (b * b\u207b\u00b9)) * a\u207b\u00b9 : by simp only [mul_assoc]\n   ... = (a * 1) * a\u207b\u00b9         : by simp only [mul_inv_self]\n   ... = a * a\u207b\u00b9               : by simp only [mul_one]\n   ... = 1                     : by simp only [mul_inv_self]\nend\n\n-- 3\u00aa demostraci\u00f3n\n-- ===============\n\nexample : (a * b)\u207b\u00b9 = b\u207b\u00b9 * a\u207b\u00b9 :=\nbegin\n  apply mul_eq_one_iff_inv_eq.mp,\n  calc a * b * (b\u207b\u00b9 * a\u207b\u00b9)\n       = ((a * b) * b\u207b\u00b9) * a\u207b\u00b9 : by simp [mul_assoc]\n   ... = (a * (b * b\u207b\u00b9)) * a\u207b\u00b9 : by simp\n   ... = (a * 1) * a\u207b\u00b9         : by simp\n   ... = a * a\u207b\u00b9               : by simp\n   ... = 1                     : by simp,\nend\n\n-- 4\u00aa demostraci\u00f3n\n-- ===============\n\nexample : (a * b)\u207b\u00b9 = b\u207b\u00b9 * a\u207b\u00b9 :=\n-- by library_search\nmul_inv_rev a b\n\n-- 5\u00aa demostraci\u00f3n\n-- ===============\n\nexample : (a * b)\u207b\u00b9 = b\u207b\u00b9 * a\u207b\u00b9 :=\nby simp\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_del_producto.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<p><a name=\"ej2\"><\/a><\/p>\n<h3>2. Si a, b, c, d, e \u2208 \u211d tales que a \u2264 b, b &lt; c, c \u2264 d, d &lt; e, entonces a &lt; e<\/h3>\n<p>Demostrar que si a, b, c, d, e \u2208 \u211d tales que<\/p>\n<pre lang=\"text\">\na \u2264 b\nb < c\nc \u2264 d\nd < e\n<\/pre>\n<p>entonces<\/p>\n<pre lang=\"text\">\na < e\n<\/pre>\n<p>Para ello, completar la siguiente teor\u00eda de Lean:<\/p>\n<pre lang=\"lean\">\nimport data.real.basic\n\nvariables a b c d e : \u211d\n\nexample\n  (h\u2080 : a \u2264 b)\n  (h\u2081 : b < c)\n  (h\u2082 : c \u2264 d)\n  (h\u2083 : d < e) :\n  a < e :=\nsorry\n<\/pre>\n<p><b>Soluciones con Lean<\/b><\/p>\n<pre lang=\"lean\">\nimport data.real.basic\n\nvariables a b c d e : \u211d\n\n-- 1\u00aa demostraci\u00f3n\n-- ===============\n\nexample\n  (h\u2080 : a \u2264 b)\n  (h\u2081 : b < c)\n  (h\u2082 : c \u2264 d)\n  (h\u2083 : d < e) :\n  a < e :=\ncalc a \u2264 b : h\u2080\n   ... < c : h\u2081\n   ... \u2264 d : h\u2082\n   ... < e : h\u2083\n\n-- 2\u00aa demostraci\u00f3n\n-- ===============\n\nexample\n  (h\u2080 : a \u2264 b)\n  (h\u2081 : b < c)\n  (h\u2082 : c \u2264 d)\n  (h\u2083 : d < e) :\n  a < e :=\nbegin\n  apply lt_of_le_of_lt h\u2080,\n  apply lt_trans h\u2081,\n  apply lt_of_le_of_lt h\u2082,\n  exact h\u2083,\nend\n\n-- 3\u00aa demostraci\u00f3n\n-- ===============\n\nexample\n  (h\u2080 : a \u2264 b)\n  (h\u2081 : b < c)\n  (h\u2082 : c \u2264 d)\n  (h\u2083 : d < e) :\n  a < e :=\nby finish\n\n-- 4\u00aa demostraci\u00f3n\n-- ===============\n\nexample\n  (h\u2080 : a \u2264 b)\n  (h\u2081 : b < c)\n  (h\u2082 : c \u2264 d)\n  (h\u2083 : d < e) :\n  a < e :=\nby linarith\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\/Ejercicio_sobre_orden.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>.<\/li>\n<\/ul>\n<p><a name=\"ej3\"><\/a><\/p>\n<h3>3. Si a, b, d \u2208 \u211d tales que 1 \u2264 a y b \u2264 d, entonces 2 + a + e\u1d47 \u2264 3a + e\u1d48<\/h3>\n<p>Demostrar que si a, b, d \u2208 \u211d tales que <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=1+%5Cleq+a&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"1 &#92;leq a\" class=\"latex\" \/> y <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=b+%5Cleq+d&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"b &#92;leq d\" class=\"latex\" \/>, entonces <img decoding=\"async\" src=\"https:\/\/s0.wp.com\/latex.php?latex=2+%2B+a+%2B+e%5Eb+%5Cleq+3a+%2B+e%5Ed&#038;bg=ffffff&#038;fg=000&#038;s=0&#038;c=20201002\" alt=\"2 + a + e^b &#92;leq 3a + e^d\" class=\"latex\" \/>.<\/p>\n<p>Para ello, completar la siguiente teor\u00eda de Lean:<\/p>\n<pre lang=\"lean\">\nimport analysis.special_functions.log.basic\nopen real\nvariables a b d : \u211d\n\nexample\n  (h  : 1 \u2264 a)\n  (h' : b \u2264 d)\n  : 2 + a + exp b \u2264 3 * a + exp d :=\nsorry\n<\/pre>\n<p><strong>Nota<\/strong>: Se pueden usar los lemas<\/p>\n<pre lang=\"text\">\nadd_le_add : a \u2264 b \u2192 c \u2264 d \u2192 a + c \u2264 b + d\nexp_le_exp : exp a \u2264 exp b \u2194 a \u2264 b\n<\/pre>\n<p><b>Soluciones con Lean<\/b><\/p>\n<pre lang=\"lean\">\nimport analysis.special_functions.log.basic\nopen real\nvariables a b d : \u211d\n\n-- 1\u00aa demostraci\u00f3n\n-- ===============\n\nexample\n  (h  : 1 \u2264 a)\n  (h' : b \u2264 d)\n  : 2 + a + exp b \u2264 3 * a + exp d :=\nbegin\n  apply add_le_add,\n  { calc 2 + a\n         = (1 + 1) + a : by refl\n     ... \u2264 (1 + a) + a : by simp [h]\n     ... \u2264 (a + a) + a : by simp [h]\n     ... = 3 * a       : by ring },\n  { exact exp_le_exp.mpr h', },\nend\n\n-- 2\u00aa demostraci\u00f3n\n-- ===============\n\nexample\n  (h  : 1 \u2264 a)\n  (h' : b \u2264 d)\n  : 2 + a + exp b \u2264 3 * a + exp d :=\nby linarith [exp_le_exp.mpr h']\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\/Desigualdad_con_exponencial.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. 16.<\/li>\n<\/ul>\n<p><a name=\"ej4\"><\/a><\/p>\n<h3>4. Si a, b, c, d, f \u2208 \u211d tales que a \u2264 b y c &lt; d, entonces a + e\u1d9c + f &lt; b + e\u1d48 + f<\/h3>\n<p>Demostrar que si a, b, c, d, f \u2208 \u211d tales que<\/p>\n<pre lang=\"text\">\na \u2264 b\nc < d\n<\/pre>\n<p>entonces<\/p>\n<pre lang=\"text\">\na + e\u1d9c + f < b + e\u1d48 + f\n<\/pre>\n<p>Para ello, completar la siguiente teor\u00eda de Lean:<\/p>\n<pre lang=\"lean\">\nimport analysis.special_functions.log.basic\nopen real\nvariables a b c d f : \u211d\n\nexample\n  (hab : a \u2264 b)\n  (hcd : c < d)\n  : a + exp c + f < b + exp d + f :=\nsorry\n<\/pre>\n<p><b>Soluciones con Lean<\/b><\/p>\n<pre lang=\"lean\">\nimport analysis.special_functions.log.basic\nopen real\nvariables a b c d f : \u211d\n\n-- 1\u00aa demostraci\u00f3n\n-- ===============\n\nexample\n  (hab : a \u2264 b)\n  (hcd : c < d)\n  : a + exp c + f < b + exp d + f :=\nbegin\n  apply add_lt_add_of_lt_of_le,\n  { apply add_lt_add_of_le_of_lt,\n    { exact hab, },\n    { apply exp_lt_exp.mpr,\n      exact hcd, }},\n  { apply le_refl, },\nend\n\n-- 3\u00aa demostraci\u00f3n\n-- ===============\n\nexample\n  (hab : a \u2264 b)\n  (hcd : c < d)\n  : a + exp c + f < b + exp d + f :=\nbegin\n  apply add_lt_add_of_lt_of_le,\n  { apply add_lt_add_of_le_of_lt hab (exp_lt_exp.mpr hcd), },\n  { refl, },\nend\n\n-- 4\u00aa demostraci\u00f3n\n-- ===============\n\nexample\n  (hab : a \u2264 b)\n  (hcd : c < d)\n  : a + exp c + f < b + exp d + f :=\nadd_lt_add_of_lt_of_le\n  (add_lt_add_of_le_of_lt hab (exp_lt_exp.mpr hcd))\n  (le_refl f)\n\n-- 5\u00aa demostraci\u00f3n\n-- ===============\n\nexample\n  (hab : a \u2264 b)\n  (hcd : c < d)\n  : a + exp c + f < b + exp d + f :=\nby linarith [exp_lt_exp.mpr hcd]\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\/Desigualdad_con_exponencial_2.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. 16.<\/li>\n<\/ul>\n<p><a name=\"ej5\"><\/a><\/p>\n<h3>5. Si a, b \u2208 \u211d tales que a \u2264 b, entonces log(1 + e\u1d43) \u2264 log(1 + e\u1d47)<\/h3>\n<p>Demostrar que si a, b \u2208 \u211d tales que a \u2264 b, entonces log(1 + e\u1d43) \u2264 log(1 + e\u1d47).<\/p>\n<p>Para ello, completar la siguiente teor\u00eda de Lean:<\/p>\n<pre lang=\"lean\">\nimport analysis.special_functions.log.basic\nopen real\nvariables a b : \u211d\n\nexample\n  (h : a \u2264 b)\n  : log (1 + exp a) \u2264 log (1 + exp b) :=\nsorry\n<\/pre>\n<p><b>Soluciones con Lean<\/b><\/p>\n<pre lang=\"lean\">\nimport analysis.special_functions.log.basic\nopen real\nvariables a b : \u211d\n\n-- 1\u00aa demostraci\u00f3n\n-- ===============\n\nexample\n  (h : a \u2264 b)\n  : log (1 + exp a) \u2264 log (1 + exp b) :=\nbegin\n  have h\u2080 : 0 < 1 + exp a,\n  { apply add_pos,\n    exact one_pos,\n    apply exp_pos, },\n  have h\u2081 : 0 < 1 + exp b,\n  { apply add_pos,\n    exact one_pos,\n    apply exp_pos },\n  apply (log_le_log h\u2080 h\u2081).mpr,\n  apply add_le_add,\n   apply le_refl,\n  apply exp_le_exp.mpr h,\nend\n\n-- 2\u00aa demostraci\u00f3n\n-- ===============\n\nexample\n  (h : a \u2264 b)\n  : log (1 + exp a) \u2264 log (1 + exp b) :=\nbegin\n  have h\u2080 : 0 < 1 + exp a := add_pos one_pos (exp_pos a),\n  have h\u2081 : 0 < 1 + exp b := add_pos one_pos (exp_pos b),\n  exact (log_le_log h\u2080 h\u2081).mpr (add_le_add rfl.ge (exp_le_exp.mpr h))\nend\n\n-- 3\u00aa demostraci\u00f3n\n-- ===============\n\nlemma aux : 0 < 1 + exp a :=\nadd_pos one_pos (exp_pos a)\n\nexample\n  (h : a \u2264 b)\n  : log (1 + exp a) \u2264 log (1 + exp b) :=\nbegin\n  have h\u2080 : 0 < 1 + exp a := aux a,\n  have h\u2081 : 0 < 1 + exp b := aux b,\n  exact (log_le_log h\u2080 h\u2081).mpr (add_le_add rfl.ge (exp_le_exp.mpr h))\nend\n\n-- 4\u00aa demostraci\u00f3n\n-- ===============\n\nexample\n  (h : a \u2264 b)\n  : log (1 + exp a) \u2264 log (1 + exp b) :=\n(log_le_log (aux a) (aux b)).mpr (add_le_add rfl.ge (exp_le_exp.mpr h))\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\/Desigualdad_con_logaritmos.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. 17.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Esta semana he publicado en Calculemus las demostraciones con Lean de las siguientes propiedades: 1. Si G es un grupo y a, b \u2208 G, entonces (a * b)\u207b\u00b9 = b\u207b\u00b9 * a\u207b\u00b9 2. Si a, b, c, d, e \u2208 \u211d tales que a \u2264 b, b &lt; c, c \u2264 d, d &lt;&#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\/7802"}],"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=7802"}],"version-history":[{"count":1,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/7802\/revisions"}],"predecessor-version":[{"id":7803,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/7802\/revisions\/7803"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=7802"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=7802"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=7802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}