        {"id":1901,"date":"2024-01-03T06:00:23","date_gmt":"2024-01-03T04:00:23","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/?p=1901"},"modified":"2023-12-31T09:57:33","modified_gmt":"2023-12-31T07:57:33","slug":"03-ene-24","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/03-ene-24\/","title":{"rendered":"En los \u00f3rdenes parciales, a < b \u2194 a \u2264 b \u2227 a \u2260 b"},"content":{"rendered":"\n<p>Demostrar con Lean4 que en los \u00f3rdenes parciales,<br \/>\n&#92;[a &lt; b \u2194 a \u2264 b \u2227 a \u2260 b&#92;]<\/p>\n<p>Para ello, completar la siguiente teor\u00eda de Lean4:<\/p>\n<pre lang=\"lean\">\nimport Mathlib.Tactic\n\nvariable {\u03b1 : Type _} [PartialOrder \u03b1]\nvariable (a b : \u03b1)\n\nexample : a < b \u2194 a \u2264 b \u2227 a \u2260 b :=\nby sorry\n<\/pre>\n<p><!--more--><\/p>\n<p><b>Demostraci\u00f3n en lenguaje natural<\/b><\/p>\n<p>Usaremos los siguientes lemas<br \/>\n&#92;begin{align}<br \/>\n   &amp;(\u2200 a, b)[a &lt; b \u2194 a \u2264 b \u2227 b \u2270 a] &#92;tag{L1} &#92;&#92;<br \/>\n   &amp;(\u2200 a, b)[a \u2264 b \u2192 b \u2264 a \u2192 a = b] &#92;tag{L2}<br \/>\n&#92;end{align}<\/p>\n<p>Por el lema L1, lo que tenemos que demostrar es<br \/>\n&#92;[ a \u2264 b \u2227 b \u2270 a \u2194 a \u2264 b \u2227 a \u2260 b &#92;]<br \/>\nLo haremos demostrando las dos implicaciones.<\/p>\n<p>(\u21d2) Supongamos que &#92;(a \u2264 b&#92;) y &#92;(b \u2270 a&#92;). Tenemos que demostrar que &#92;(a \u2260 b&#92;). Lo haremos por reducci\u00f3n al absurdo. Para ello, supongamos que &#92;(a = b&#92;). Entonces, &#92;(b \u2264 a&#92;) que es una contradicicci\u00f3n con &#92;(b \u2270 a&#92;).<\/p>\n<p>(\u21d0) Supongamos que &#92;(a \u2264 b&#92;) y &#92;(a \u2260 b&#92;). Tenemos que demostrar que &#92;(b \u2270 a&#92;). Lo haremos por reducci\u00f3n al absurdo. Para ello, supongamos que &#92;(b \u2264 a&#92;). Entonces, junto con &#92;(a \u2264 b&#92;), se tiene que &#92;(a = b&#92;) que es una contradicicci\u00f3n con &#92;(a \u2260 b&#92;).<\/p>\n<p><b>Demostraciones con Lean4<\/b><\/p>\n<pre lang=\"lean\">\nimport Mathlib.Tactic\n\nvariable {\u03b1 : Type _} [PartialOrder \u03b1]\nvariable (a b : \u03b1)\n\n-- 1\u00aa demostraci\u00f3n\n-- ===============\n\nexample : a < b \u2194 a \u2264 b \u2227 a \u2260 b :=\nby\n  rw [lt_iff_le_not_le]\n  -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a \u2194 a \u2264 b \u2227 a \u2260 b\n  constructor\n  . -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a \u2192 a \u2264 b \u2227 a \u2260 b\n    rintro \u27e8h1 : a \u2264 b, h2 : \u00acb \u2264 a\u27e9\n    -- \u22a2 a \u2264 b \u2227 a \u2260 b\n    constructor\n    . -- \u22a2 a \u2264 b\n      exact h1\n    . -- \u22a2 a \u2260 b\n      rintro (h3 : a = b)\n      -- \u22a2 False\n      have h4: b = a := h3.symm\n      have h5: b \u2264 a := le_of_eq h4\n      show False\n      exact h2 h5\n  . -- \u22a2 a \u2264 b \u2227 a \u2260 b \u2192 a \u2264 b \u2227 \u00acb \u2264 a\n    rintro \u27e8h5 : a \u2264 b , h6 : a \u2260 b\u27e9\n    -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a\n    constructor\n    . -- \u22a2 a \u2264 b\n      exact h5\n    . -- \u22a2 \u00acb \u2264 a\n      rintro (h7 : b \u2264 a)\n      have h8 : a = b := le_antisymm h5 h7\n      show False\n      exact h6 h8\n\n-- 2\u00aa demostraci\u00f3n\n-- ===============\n\nexample : a < b \u2194 a \u2264 b \u2227 a \u2260 b :=\nby\n  rw [lt_iff_le_not_le]\n  -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a \u2194 a \u2264 b \u2227 a \u2260 b\n  constructor\n  . -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a \u2192 a \u2264 b \u2227 a \u2260 b\n    rintro \u27e8h1 : a \u2264 b, h2 : \u00acb \u2264 a\u27e9\n    -- \u22a2 a \u2264 b \u2227 a \u2260 b\n    constructor\n    . -- \u22a2 a \u2264 b\n      exact h1\n    . -- \u22a2 a \u2260 b\n      rintro (h3 : a = b)\n      -- \u22a2 False\n      exact h2 (le_of_eq h3.symm)\n  . -- \u22a2 a \u2264 b \u2227 a \u2260 b \u2192 a \u2264 b \u2227 \u00acb \u2264 a\n    rintro \u27e8h4 : a \u2264 b , h5 : a \u2260 b\u27e9\n    -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a\n    constructor\n    . -- \u22a2 a \u2264 b\n      exact h4\n    . -- \u22a2 \u00acb \u2264 a\n      rintro (h6 : b \u2264 a)\n      exact h5 (le_antisymm h4 h6)\n\n-- 3\u00aa demostraci\u00f3n\n-- ===============\n\nexample : a < b \u2194 a \u2264 b \u2227 a \u2260 b :=\nby\n  rw [lt_iff_le_not_le]\n  -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a \u2194 a \u2264 b \u2227 a \u2260 b\n  constructor\n  . -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a \u2192 a \u2264 b \u2227 a \u2260 b\n    rintro \u27e8h1 : a \u2264 b, h2 : \u00acb \u2264 a\u27e9\n    -- \u22a2 a \u2264 b \u2227 a \u2260 b\n    constructor\n    . -- \u22a2 a \u2264 b\n      exact h1\n    . -- \u22a2 a \u2260 b\n      exact fun h3 \u21a6 h2 (le_of_eq h3.symm)\n  . -- \u22a2 a \u2264 b \u2227 a \u2260 b \u2192 a \u2264 b \u2227 \u00acb \u2264 a\n    rintro \u27e8h4 : a \u2264 b , h5 : a \u2260 b\u27e9\n    -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a\n    constructor\n    . -- \u22a2 a \u2264 b\n      exact h4\n    . -- \u22a2 \u00acb \u2264 a\n      exact fun h6 \u21a6 h5 (le_antisymm h4 h6)\n\n-- 4\u00aa demostraci\u00f3n\n-- ===============\n\nexample : a < b \u2194 a \u2264 b \u2227 a \u2260 b :=\nby\n  rw [lt_iff_le_not_le]\n  -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a \u2194 a \u2264 b \u2227 a \u2260 b\n  constructor\n  . -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a \u2192 a \u2264 b \u2227 a \u2260 b\n    rintro \u27e8h1 : a \u2264 b, h2 : \u00acb \u2264 a\u27e9\n    -- \u22a2 a \u2264 b \u2227 a \u2260 b\n    exact \u27e8h1, fun h3 \u21a6 h2 (le_of_eq h3.symm)\u27e9\n  . -- \u22a2 a \u2264 b \u2227 a \u2260 b \u2192 a \u2264 b \u2227 \u00acb \u2264 a\n    rintro \u27e8h4 : a \u2264 b , h5 : a \u2260 b\u27e9\n    -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a\n    exact \u27e8h4, fun h6 \u21a6 h5 (le_antisymm h4 h6)\u27e9\n\n-- 5\u00aa demostraci\u00f3n\n-- ===============\n\nexample : a < b \u2194 a \u2264 b \u2227 a \u2260 b :=\nby\n  rw [lt_iff_le_not_le]\n  -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a \u2194 a \u2264 b \u2227 a \u2260 b\n  constructor\n  . -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a \u2192 a \u2264 b \u2227 a \u2260 b\n    exact fun \u27e8h1, h2\u27e9 \u21a6 \u27e8h1, fun h3 \u21a6 h2 (le_of_eq h3.symm)\u27e9\n  . -- \u22a2 a \u2264 b \u2227 a \u2260 b \u2192 a \u2264 b \u2227 \u00acb \u2264 a\n    exact fun \u27e8h4, h5\u27e9 \u21a6 \u27e8h4, fun h6 \u21a6 h5 (le_antisymm h4 h6)\u27e9\n\n-- 6\u00aa demostraci\u00f3n\n-- ===============\n\nexample : a < b \u2194 a \u2264 b \u2227 a \u2260 b :=\nby\n  rw [lt_iff_le_not_le]\n  -- \u22a2 a \u2264 b \u2227 \u00acb \u2264 a \u2194 a \u2264 b \u2227 a \u2260 b\n  exact \u27e8fun \u27e8h1, h2\u27e9 \u21a6 \u27e8h1, fun h3 \u21a6 h2 (le_of_eq h3.symm)\u27e9,\n         fun \u27e8h4, h5\u27e9 \u21a6 \u27e8h4, fun h6 \u21a6 h5 (le_antisymm h4 h6)\u27e9\u27e9\n\n-- 7\u00aa demostraci\u00f3n\n-- ===============\n\nexample : a < b \u2194 a \u2264 b \u2227 a \u2260 b :=\nby\n  constructor\n  . -- \u22a2 a < b \u2192 a \u2264 b \u2227 a \u2260 b\n    intro h\n    -- h : a < b\n    -- \u22a2 a \u2264 b \u2227 a \u2260 b\n    constructor\n    . -- \u22a2 a \u2264 b\n      exact le_of_lt h\n    . -- \u22a2 a \u2260 b\n      exact ne_of_lt h\n  . -- \u22a2 a \u2264 b \u2227 a \u2260 b \u2192 a < b\n    rintro \u27e8h1, h2\u27e9\n    -- h1 : a \u2264 b\n    -- h2 : a \u2260 b\n    -- \u22a2 a < b\n    exact lt_of_le_of_ne h1 h2\n\n-- 8\u00aa demostraci\u00f3n\n-- ===============\n\nexample : a < b \u2194 a \u2264 b \u2227 a \u2260 b :=\n  \u27e8fun h \u21a6 \u27e8le_of_lt h, ne_of_lt h\u27e9,\n   fun \u27e8h1, h2\u27e9 \u21a6 lt_of_le_of_ne h1 h2\u27e9\n\n-- 9\u00aa demostraci\u00f3n\n-- ===============\n\nexample : a < b \u2194 a \u2264 b \u2227 a \u2260 b :=\n  lt_iff_le_and_ne\n\n-- Lemas usados\n-- ============\n\n-- #check (le_antisymm : a \u2264 b \u2192 b \u2264 a \u2192 a = b)\n-- #check (le_of_eq : a = b \u2192 a \u2264 b)\n-- #check (lt_iff_le_and_ne : a < b \u2194 a \u2264 b \u2227 a \u2260 b)\n-- #check (lt_iff_le_not_le : a < b \u2194 a \u2264 b \u2227 \u00acb \u2264 a)\n-- #check (lt_of_le_of_ne : a \u2264 b \u2192 a \u2260 b \u2192 a < b)\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\/Caracterizacion_de_menor_en_ordenes_parciales.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. 37.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Demostrar con Lean4 que en los \u00f3rdenes parciales, &#92;[a &lt; b \u2194 a \u2264 b \u2227 a \u2260 b&#92;] Para ello, completar la siguiente teor\u00eda de Lean4: import Mathlib.Tactic variable {\u03b1 : Type _} [PartialOrder \u03b1] variable (a b : \u03b1) example : a < b \u2194 a \u2264 b \u2227 a \u2260 b := by sorry\n<\/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\/1901"}],"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=1901"}],"version-history":[{"count":2,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/posts\/1901\/revisions"}],"predecessor-version":[{"id":1903,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/posts\/1901\/revisions\/1903"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/media?parent=1901"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/categories?post=1901"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/calculemus\/wp-json\/wp\/v2\/tags?post=1901"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}