{"id":8053,"date":"2022-11-30T05:00:30","date_gmt":"2022-11-30T03:00:30","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=8053"},"modified":"2023-04-15T11:54:49","modified_gmt":"2023-04-15T09:54:49","slug":"30-nov-22-2","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/30-nov-22-2\/","title":{"rendered":"El tipo de las f\u00f3rmulas proposicionales"},"content":{"rendered":"<h3>1. El tipo de las f\u00f3rmulas proposicionales en Haskell<\/h3>\n<p>La f\u00f3rmula <code>A \u2192 \u22a5 \u2227 \u00acB<\/code> se representa por<\/p>\n<pre lang=\"text\">\n   Impl (Var 'A') (Conj (Const False) (Neg (Var 'B')))\n<\/pre>\n<p>usando el tipo de las f\u00f3rmulas proposicionales definido por<\/p>\n<pre lang=\"haskell\">\ndata FProp = Const Bool\n           | Var Char\n           | Neg FProp\n           | Conj FProp FProp\n           | Impl FProp FProp\n  deriving Show\n<\/pre>\n<h3>1. El tipo de las f\u00f3rmulas proposicionales en Haskell<\/h3>\n<p>La f\u00f3rmula <code>A \u2192 \u22a5 \u2227 \u00acB<\/code> se representa por<\/p>\n<pre lang=\"text\">\n   Impl(Var('A'), Conj(Const(False), Neg (Var('B'))))\n<\/pre>\n<p>usando el tipo de las f\u00f3rmulas proposicionales definido por<\/p>\n<pre lang=\"python\">\nfrom dataclasses import dataclass\n\n\n@dataclass\nclass FProp:\n    pass\n\n@dataclass\nclass Const(FProp):\n    x: bool\n\n@dataclass\nclass Var(FProp):\n    x: str\n\n@dataclass\nclass Neg(FProp):\n    x: FProp\n\n@dataclass\nclass Conj(FProp):\n    x: FProp\n    y: FProp\n\n@dataclass\nclass Impl(FProp):\n    x: FProp\n    y: FProp\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>1. El tipo de las f\u00f3rmulas proposicionales en Haskell La f\u00f3rmula A \u2192 \u22a5 \u2227 \u00acB se representa por Impl (Var &#8216;A&#8217;) (Conj (Const False) (Neg (Var &#8216;B&#8217;))) usando el tipo de las f\u00f3rmulas proposicionales definido por data FProp = Const Bool | Var Char | Neg FProp | Conj FProp FProp | Impl FProp&#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,"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[581],"tags":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/8053"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/comments?post=8053"}],"version-history":[{"count":1,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/8053\/revisions"}],"predecessor-version":[{"id":8054,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/8053\/revisions\/8054"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=8053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=8053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=8053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}