        {"id":594,"date":"2021-07-24T06:00:29","date_gmt":"2021-07-24T04:00:29","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/?p=594"},"modified":"2021-07-24T11:14:25","modified_gmt":"2021-07-24T09:14:25","slug":"un-numero-es-par-si-y-solo-si-lo-es-su-cuadrado","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/un-numero-es-par-si-y-solo-si-lo-es-su-cuadrado\/","title":{"rendered":"Un n\u00famero es par si y solo si lo es su cuadrado"},"content":{"rendered":"<p>Demostrar que un n\u00famero es par si y solo si lo es su cuadrado.<\/p>\n<p>Para ello, completar la siguiente teor\u00eda de Lean:<\/p>\n<pre lang=\"lean\">\nimport data.int.parity\nimport tactic\nopen int\n\nvariable (n : \u2124)\n\nexample :\n  even (n^2) \u2194 even n :=\nsorry\n<\/pre>\n<p>[expand title=\u00bbSoluciones con Lean\u00bb]<\/p>\n<pre lang=\"lean\">\r\nimport data.int.parity\r\nimport tactic\r\nopen int\r\n\r\nvariable (n : \u2124)\r\n\r\n-- 1\u00aa demostraci\u00f3n\r\nexample :\r\n  even (n^2) \u2194 even n :=\r\nbegin\r\n  split,\r\n  { contrapose,\r\n    rw \u2190 odd_iff_not_even,\r\n    rw \u2190 odd_iff_not_even,\r\n    unfold odd,\r\n    intro h,\r\n    cases h with k hk,\r\n    use 2*k*(k+1),\r\n    rw hk,\r\n    ring, },\r\n  { unfold even,\r\n    intro h,\r\n    cases h with k hk,\r\n    use 2*k^2,\r\n    rw hk,\r\n    ring, },\r\nend\r\n\r\n-- 2\u00aa demostraci\u00f3n\r\nexample :\r\n  even (n^2) \u2194 even n :=\r\nbegin\r\n  split,\r\n  { contrapose,\r\n    rw \u2190 odd_iff_not_even,\r\n    rw \u2190 odd_iff_not_even,\r\n    rintro \u27e8k, rfl\u27e9,\r\n    use 2*k*(k+1),\r\n    ring, },\r\n  { rintro \u27e8k, rfl\u27e9,\r\n    use 2*k^2,\r\n    ring, },\r\nend\r\n\r\n-- 3\u00aa demostraci\u00f3n\r\nexample :\r\n  even (n^2) \u2194 even n :=\r\niff.intro\r\n  ( have h : \u00aceven n \u2192 \u00aceven (n^2),\r\n      { assume h1 : \u00aceven n,\r\n        have h2 : odd n,\r\n          from odd_iff_not_even.mpr h1,\r\n        have h3: odd (n^2), from\r\n          exists.elim h2\r\n            ( assume k,\r\n              assume hk : n = 2*k+1,\r\n              have h4 : n^2 = 2*(2*k*(k+1))+1, from\r\n                calc  n^2\r\n                    = (2*k+1)^2       : by rw hk\r\n                ... = 4*k^2+4*k+1     : by ring\r\n                ... = 2*(2*k*(k+1))+1 : by ring,\r\n              show odd (n^2),\r\n                from exists.intro (2*k*(k+1)) h4),\r\n        show \u00aceven (n^2),\r\n          from odd_iff_not_even.mp h3 },\r\n    show even (n^2) \u2192 even n,\r\n      from not_imp_not.mp h )\r\n  ( assume h1 : even n,\r\n    show even (n^2), from\r\n      exists.elim h1\r\n        ( assume k,\r\n          assume hk : n = 2*k ,\r\n          have h2 : n^2 = 2*(2*k^2), from\r\n            calc  n^2\r\n                = (2*k)^2   : by rw hk\r\n            ... = 2*(2*k^2) : by ring,\r\n          show even (n^2),\r\n            from exists.intro (2*k^2) h2 ))\r\n\r\n-- 4\u00aa demostraci\u00f3n\r\nexample :\r\n  even (n^2) \u2194 even n :=\r\ncalc even (n^2)\r\n     \u2194 even (n * n)      : iff_of_eq (congr_arg even (sq n))\r\n ... \u2194 (even n \u2228 even n) : int.even_mul\r\n ... \u2194 even n            : or_self (even n)\r\n\r\n-- 5\u00aa demostraci\u00f3n\r\nexample :\r\n  even (n^2) \u2194 even n :=\r\ncalc even (n^2)\r\n     \u2194 even (n * n)      : by ring_nf\r\n ... \u2194 (even n \u2228 even n) : int.even_mul\r\n ... \u2194 even n            : by simp\r\n\r\n-- 6\u00aa demostraci\u00f3n\r\nexample :\r\n  even (n^2) \u2194 even n :=\r\nbegin\r\n  split,\r\n  { contrapose,\r\n    intro h,\r\n    rw \u2190 odd_iff_not_even at *,\r\n    cases h with k hk,\r\n    use 2*k*(k+1),\r\n    calc n^2\r\n         = (2*k+1)^2       : by rw hk\r\n     ... = 4*k^2+4*k+1     : by ring\r\n     ... = 2*(2*k*(k+1))+1 : by ring, },\r\n  { intro h,\r\n    cases h with k hk,\r\n    use 2*k^2,\r\n    calc n^2\r\n         = (2*k)^2   : by rw hk\r\n     ... = 2*(2*k^2) : by ring, },\r\nend\r\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\/Un_numero_es_par_syss_lo_es_su_cuadrado.lean\" rel=\"noopener noreferrer\" target=\"_blank\">esta sesi\u00f3n con Lean<\/a>.<\/p>\n<p>En los comentarios se pueden escribir otras soluciones, escribiendo el c\u00f3digo entre una l\u00ednea con &#60;pre lang=&quot;lean&quot;&#62; y otra con &#60;\/pre&#62;<br \/>\n[\/expand]<\/p>\n<p>[expand title=\u00bbSoluciones con Isabelle\/HOL\u00bb]<\/p>\n<pre lang=\"isar\">\r\ntheory Un_numero_es_par_syss_lo_es_su_cuadrado\r\nimports Main\r\nbegin\r\n\r\n(* 1\u00aa demostraci\u00f3n *)\r\nlemma\r\n  fixes n :: int\r\n  shows \"even (n\u00b2) \u27f7 even n\"\r\nproof (rule iffI)\r\n  assume \"even (n\u00b2)\"\r\n  show \"even n\"\r\n  proof (rule ccontr)\r\n    assume \"odd n\"\r\n    then obtain k where \"n = 2*k+1\"\r\n      by (rule oddE)\r\n    then have \"n\u00b2 = 2*(2*k*(k+1))+1\"\r\n    proof -\r\n      have \"n\u00b2 = (2*k+1)\u00b2\"\r\n        by (simp add: \u2039n = 2 * k + 1\u203a)\r\n      also have \"\u2026 = 4*k\u00b2+4*k+1\"\r\n        by algebra\r\n      also have \"\u2026 = 2*(2*k*(k+1))+1\"\r\n        by algebra\r\n      finally show \"n\u00b2 = 2*(2*k*(k+1))+1\" .\r\n    qed\r\n    then have \"\u2203k'. n\u00b2 = 2*k'+1\"\r\n      by (rule exI)\r\n    then have \"odd (n\u00b2)\"\r\n      by fastforce\r\n    then show False\r\n      using \u2039even (n\u00b2)\u203a by blast\r\n  qed\r\nnext\r\n  assume \"even n\"\r\n  then obtain k where \"n = 2*k\"\r\n    by (rule evenE)\r\n  then have \"n\u00b2 = 2*(2*k\u00b2)\"\r\n    by simp\r\n  then show \"even (n\u00b2)\"\r\n    by simp\r\nqed\r\n\r\n(* 2\u00aa demostraci\u00f3n *)\r\nlemma\r\n  fixes n :: int\r\n  shows \"even (n\u00b2) \u27f7 even n\"\r\nproof\r\n  assume \"even (n\u00b2)\"\r\n  show \"even n\"\r\n  proof (rule ccontr)\r\n    assume \"odd n\"\r\n    then obtain k where \"n = 2*k+1\"\r\n      by (rule oddE)\r\n    then have \"n\u00b2 = 2*(2*k*(k+1))+1\"\r\n      by algebra\r\n    then have \"odd (n\u00b2)\"\r\n      by simp\r\n    then show False\r\n      using \u2039even (n\u00b2)\u203a by blast\r\n  qed\r\nnext\r\n  assume \"even n\"\r\n  then obtain k where \"n = 2*k\"\r\n    by (rule evenE)\r\n  then have \"n\u00b2 = 2*(2*k\u00b2)\"\r\n    by simp\r\n  then show \"even (n\u00b2)\"\r\n    by simp\r\nqed\r\n\r\n(* 3\u00aa demostraci\u00f3n *)\r\nlemma\r\n  fixes n :: int\r\n  shows \"even (n\u00b2) \u27f7 even n\"\r\nproof -\r\n  have \"even (n\u00b2) = (even n \u2227 (0::nat) < 2)\"\r\n    by (simp only: even_power)\r\n  also have \"\u2026 = (even n \u2227 True)\"\r\n    by (simp only: less_numeral_simps)\r\n  also have \"\u2026 = even n\"\r\n    by (simp only: HOL.simp_thms(21))\r\n  finally show \"even (n\u00b2) \u27f7 even n\"\r\n    by this\r\nqed\r\n\r\n(* 4\u00aa demostraci\u00f3n *)\r\nlemma\r\n  fixes n :: int\r\n  shows \"even (n\u00b2) \u27f7 even n\"\r\nproof -\r\n  have \"even (n\u00b2) = (even n \u2227 (0::nat) < 2)\"\r\n    by (simp only: even_power)\r\n  also have \"\u2026 = even n\"\r\n    by simp\r\n  finally show \"even (n\u00b2) \u27f7 even n\" .\r\nqed\r\n\r\n(* 5\u00aa demostraci\u00f3n *)\r\nlemma\r\n  fixes n :: int\r\n  shows \"even (n\u00b2) \u27f7 even n\"\r\n  by simp\r\n\r\nend\r\n<\/pre>\n<p>En los comentarios se pueden escribir otras soluciones, escribiendo el c\u00f3digo entre una l\u00ednea con &#60;pre lang=&quot;isar&quot;&#62; y otra con &#60;\/pre&#62;<br \/>\n[\/expand]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Demostrar que un n\u00famero es par si y solo si lo es su cuadrado. Para ello, completar la siguiente teor\u00eda de Lean: import data.int.parity import tactic open int variable (n : \u2124) example : even (n^2) \u2194 even n := sorry [expand title=\u00bbSoluciones con Lean\u00bb] import data.int.parity import tactic open int variable (n : \u2124) &#8212; 1\u00aa demostraci\u00f3n example : even (n^2) \u2194 even n := begin split, { contrapose, rw \u2190 odd_iff_not_even, rw \u2190 odd_iff_not_even, unfold odd, intro h, cases h with k hk, use 2*k*(k+1), rw hk, ring, }, { unfold even, intro h, cases h with k hk, use 2*k^2, rw hk, ring, }, end &#8212; 2\u00aa demostraci\u00f3n example : even (n^2) \u2194 even n := begin split, { contrapose, rw \u2190&#8230;<\/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":[21],"tags":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/posts\/594"}],"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=594"}],"version-history":[{"count":3,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/posts\/594\/revisions"}],"predecessor-version":[{"id":597,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/posts\/594\/revisions\/597"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/media?parent=594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/categories?post=594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/tags?post=594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}