        {"id":1939,"date":"2024-01-17T06:00:29","date_gmt":"2024-01-17T04:00:29","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/?p=1939"},"modified":"2024-01-17T12:04:46","modified_gmt":"2024-01-17T10:04:46","slug":"17-ene-24","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/17-ene-24\/","title":{"rendered":"Si m divide a n o a k, entonces m divide a nk"},"content":{"rendered":"\n<p>Demostrar con Lean4 que si \\(m\\) divide a \\(n\\) o a \\(k\\), entonces \\(m\\) divide a \\(nk\\).<\/p>\n<p>Para ello, completar la siguiente teor\u00eda de Lean4:<\/p>\n<pre lang=\"lean\">\r\nimport Mathlib.Tactic\r\nvariable {m n k : \u2115}\r\n\r\nexample\r\n  (h : m \u2223 n \u2228 m \u2223 k)\r\n  : m \u2223 n * k :=\r\nby sorry\r\n<\/pre>\n<p><!--more--><\/p>\n<p><b>Demostraci\u00f3n en lenguaje natural<\/b><\/p>\n<p>Se demuestra por casos.<\/p>\n<p>Caso 1: Supongamos que \\(m \u2223 n\\). Entonces, existe un \\(a \u2208 \u2115\\) tal que<br \/>\n\\[ n = ma \\]<br \/>\nPor tanto,<br \/>\n\\begin{align}<br \/>\n   nk &#038;= (ma)k \\\\<br \/>\n      &#038;= m(ak)<br \/>\n\\end{align}<br \/>\nque es divisible por \\(m\\).<\/p>\n<p>Caso 2: Supongamos que \\(m \u2223 k). Entonces, existe un \\(b \u2208 \u2115\\) tal que<br \/>\n\\[ k = mb \\]<br \/>\nPor tanto,<br \/>\n\\begin{align}<br \/>\n   nk &#038;= n(mb) \\\\<br \/>\n      &#038;= m(nb)<br \/>\n\\end{align}<br \/>\nque es divisible por \\(m\\).<\/p>\n<p><b>Demostraciones con Lean4<\/b><\/p>\n<pre lang=\"lean\">\r\nimport Mathlib.Tactic\r\nvariable {m n k : \u2115}\r\n\r\n-- 1\u00aa demostraci\u00f3n\r\n-- ===============\r\n\r\nexample\r\n  (h : m \u2223 n \u2228 m \u2223 k)\r\n  : m \u2223 n * k :=\r\nby\r\n  rcases h with h1 | h2\r\n  . -- h1 : m \u2223 n\r\n    rcases h1 with \u27e8a, ha\u27e9\r\n    -- a : \u2115\r\n    -- ha : n = m * a\r\n    rw [ha]\r\n    -- \u22a2 m \u2223 (m * a) * k\r\n    rw [mul_assoc]\r\n    -- \u22a2 m \u2223 m * (a * k)\r\n    exact dvd_mul_right m (a * k)\r\n  . -- h2 : m \u2223 k\r\n    rcases h2 with \u27e8b, hb\u27e9\r\n    -- b : \u2115\r\n    -- hb : k = m * b\r\n    rw [hb]\r\n    -- \u22a2 m \u2223 n * (m * b)\r\n    rw [mul_comm]\r\n    -- \u22a2 m \u2223 (m * b) * n\r\n    rw [mul_assoc]\r\n    -- \u22a2 m \u2223 m * (b * n)\r\n    exact dvd_mul_right m (b * n)\r\n\r\n-- 2\u00aa demostraci\u00f3n\r\n-- ===============\r\n\r\nexample\r\n  (h : m \u2223 n \u2228 m \u2223 k)\r\n  : m \u2223 n * k :=\r\nby\r\n  rcases h with h1 | h2\r\n  . -- h1 : m \u2223 n\r\n    rcases h1 with \u27e8a, ha\u27e9\r\n    -- a : \u2115\r\n    -- ha : n = m * a\r\n    rw [ha, mul_assoc]\r\n    -- \u22a2 m \u2223 m * (a * k)\r\n    exact dvd_mul_right m (a * k)\r\n  . -- h2 : m \u2223 k\r\n    rcases h2 with \u27e8b, hb\u27e9\r\n    -- b : \u2115\r\n    -- hb : k = m * b\r\n    rw [hb, mul_comm, mul_assoc]\r\n    -- \u22a2 m \u2223 m * (b * n)\r\n    exact dvd_mul_right m (b * n)\r\n\r\n-- 3\u00aa demostraci\u00f3n\r\n-- ===============\r\n\r\nexample\r\n  (h : m \u2223 n \u2228 m \u2223 k)\r\n  : m \u2223 n * k :=\r\nby\r\n  rcases h with \u27e8a, rfl\u27e9 | \u27e8b, rfl\u27e9\r\n  . -- a : \u2115\r\n    -- \u22a2 m \u2223 (m * a) * k\r\n    rw [mul_assoc]\r\n    -- \u22a2 m \u2223 m * (a * k)\r\n    exact dvd_mul_right m (a * k)\r\n  . -- \u22a2 m \u2223 n * (m * b)\r\n    rw [mul_comm, mul_assoc]\r\n    -- \u22a2 m \u2223 m * (b * n)\r\n    exact dvd_mul_right m (b * n)\r\n\r\n-- 4\u00aa demostraci\u00f3n\r\n-- ===============\r\n\r\nexample\r\n  (h : m \u2223 n \u2228 m \u2223 k)\r\n  : m \u2223 n * k :=\r\nby\r\n  rcases h with h1 | h2\r\n  . -- h1 : m \u2223 n\r\n    exact dvd_mul_of_dvd_left h1 k\r\n  . -- h2 : m \u2223 k\r\n    exact dvd_mul_of_dvd_right h2 n\r\n\r\n-- Lemas usados\r\n-- ============\r\n\r\n-- #check (dvd_mul_of_dvd_left : m \u2223 n \u2192 \u2200 (c : \u2115), m \u2223 n * c)\r\n-- #check (dvd_mul_of_dvd_right : m \u2223 n \u2192 \u2200 (c : \u2115), m \u2223 c * n)\r\n-- #check (dvd_mul_right m n : m \u2223 m * n)\r\n-- #check (mul_assoc m n k : m * n * k = m * (n * k))\r\n-- #check (mul_comm m n : m * n = n * m)\r\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\/CS_de_divisibilidad_del_producto.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. 39.<\/li>\n<\/ul>\n<p><b>Demostraciones con Isabelle\/HOL<\/b><\/p>\n<pre lang=\"isar\">\r\ntheory CS_de_divisibilidad_del_producto\r\n  imports Main\r\nbegin\r\n\r\n(* 1\u00aa demostraci\u00f3n *)\r\nlemma \r\n  fixes n m k :: nat\r\n  assumes \"m dvd n \u2228 m dvd k\"\r\n  shows \"m dvd (n * k)\"\r\nusing assms\r\nproof\r\n    assume \"m dvd n\"\r\n    then obtain a where \"n = m * a\" by auto\r\n    then have \"n * k = m * (a * k)\" by simp\r\n    then show ?thesis by auto\r\n  next\r\n    assume \"m dvd k\"\r\n    then obtain b where \"k = m * b\" by auto\r\n    then have \"n * k = m * (n * b)\" by simp\r\n    then show ?thesis by auto\r\nqed\r\n\r\n(* 2\u00aa demostraci\u00f3n *)\r\nlemma \r\n  fixes n m k :: nat\r\n  assumes \"m dvd n \u2228 m dvd k\"\r\n  shows \"m dvd (n * k)\"\r\n  using assms by auto\r\n\r\nend\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Demostrar con Lean4 que si m divide a n o a k, entonces m divide a nk.<\/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\/1939"}],"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=1939"}],"version-history":[{"count":4,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/posts\/1939\/revisions"}],"predecessor-version":[{"id":1960,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/posts\/1939\/revisions\/1960"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/media?parent=1939"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/categories?post=1939"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/tags?post=1939"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}