{"id":5552,"date":"2020-02-17T05:30:50","date_gmt":"2020-02-17T03:30:50","guid":{"rendered":"http:\/\/www.glc.us.es\/~jalonso\/exercitium\/?p=5552"},"modified":"2020-02-24T08:28:26","modified_gmt":"2020-02-24T06:28:26","slug":"modelos-de-fnc-formulas-en-forma-normal-conjuntiva","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/modelos-de-fnc-formulas-en-forma-normal-conjuntiva\/","title":{"rendered":"Modelos de FNC (f\u00f3rmulas en forma normal conjuntiva)"},"content":{"rendered":"<p>Nota: En este ejercicio usaremos las mismas notaciones que en  anterior importando los m\u00f3dulos Interpretaciones_de_FNC y Evaluacion_de_FNC<\/p>\n<p>Una interpretaci\u00f3n I es un modelo de un literal L si el valor de L en I es verdadero. Por ejemplo, la interpretaci\u00f3n [2,5]<\/p>\n<ul>\n<li>es modelo del literal x(2) (porque 2 \u2208 [2,5])<\/li>\n<li>no es modelo del literal x(3) (porque 3 \u2209 [2,5])<\/li>\n<li>es modelo del literal -x(4) (porque 4 \u2209 [2,5])<\/li>\n<\/ul>\n<p>Una interpretaci\u00f3n I es un modelo de una cl\u00e1usula C si el valor de C en I es verdadero. Por ejemplo, la interpretaci\u00f3n [2,5]<\/p>\n<ul>\n<li>es modelo de la cl\u00e1usula (x(2) v x(3)) (porque x(2) es verdadero)<\/li>\n<li>no es modelo de la cl\u00e1usula (x(3) v x(4)) (porque x(3) y x(4) son falsos)<\/li>\n<\/ul>\n<p>Una interpretaci\u00f3n I es un modelo de una FNC F si el valor de F en I es verdadero. Por ejemplo, la interpretaci\u00f3n [2,5]<\/p>\n<ul>\n<li>es modelo de la FNC ((x(2) v x(5)) &amp; (-x(4) v x(3)) porque lo es de sus dos cl\u00e1usulas.<\/li>\n<\/ul>\n<p>Definir las siguientes funciones<\/p>\n<pre lang=\"text\">\n   esModeloLiteral  :: Interpretacion -> Literal -> Bool\n   esModeloClausula :: Interpretacion -> Clausula -> Bool\n   esModelo         :: Interpretacion -> FNC -> Bool\n   modelosClausula  :: Clausula -> [Interpretacion]\n   modelos          :: FNC -> [Interpretacion]\n<\/pre>\n<p>tales que<\/p>\n<ul>\n<li>(esModeloLiteral i l) se verifica si i es modelo del literal l. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">  \n     esModeloLiteral [3,5] 3     ==  True\n     esModeloLiteral [3,5] 4     ==  False\n     esModeloLiteral [3,5] (-3)  ==  False\n     esModeloLiteral [3,5] (-4)  ==  True\n<\/pre>\n<ul>\n<li>(esModeloClausula i c) se verifica si i es modelo de la cl\u00e1usula c. Por ejemplo, <\/li>\n<\/ul>\n<pre lang=\"text\">  \n     esModeloClausula [3,5] [2,3,-5]  ==  True\n     esModeloClausula [3,5] [2,4,-1]  ==  True\n     esModeloClausula [3,5] [2,4,1]   ==  False\n<\/pre>\n<ul>\n<li>(esModelo i f) se verifica si i es modelo de la f\u00f3rmula f. Por ejemplo, <\/li>\n<\/ul>\n<pre lang=\"text\">  \n     esModelo [1,3] [[1,-2],[3]]  ==  True\n     esModelo [1]   [[1,-2],[3]]  ==  False\n     esModelo [1]   []            ==  True\n<\/pre>\n<ul>\n<li>(modelosClausula c) es la lista de los modelos de la cl\u00e1usula c. Por ejemplo,  <\/li>\n<\/ul>\n<pre lang=\"text\">  \n     modelosClausula [-1,2]  ==  [[],[2],[1,2]]\n     modelosClausula [-1,1]  ==  [[],[1]]\n     modelosClausula []      ==  []\n<\/pre>\n<ul>\n<li>(modelos f) es la lista de los modelos de la f\u00f3rmula f. Por ejemplo,<\/li>\n<\/ul>\n<pre lang=\"text\">  \n     modelos [[-1,2],[-2,1]]    ==  [[],[1,2]]\n     modelos [[-1,2],[-2],[1]]  ==  []\n     modelos [[1,-1,2]]         ==  [[],[1],[2],[1,2]]\n<\/pre>\n<p><strong>Nota<\/strong>: Escribir la soluci\u00f3n en el m\u00f3dulo Modelos_de_FNC para poderlo usar en los siguientes ejercicios.<\/p>\n<h4>Soluciones<\/h4>\n<pre lang=\"haskell\">\nmodule Modelos_de_FNC where\n\nimport Interpretaciones_de_FNC \nimport Evaluacion_de_FNC\n\nesModeloLiteral :: Interpretacion -> Literal -> Bool\nesModeloLiteral i l\n  | l > 0     = l `elem` i\n  | otherwise = negate l `notElem` i\n\nesModeloClausula :: Interpretacion -> Clausula -> Bool\nesModeloClausula i = any (esModeloLiteral i)\n\nesModelo :: Interpretacion -> FNC -> Bool\nesModelo i = all (esModeloClausula i)\n\nmodelosClausula :: Clausula -> [Interpretacion]\nmodelosClausula c =\n  [i | i <- interpretacionesClausula c,\n       esModeloClausula i c]\n\nmodelos :: FNC -> [Interpretacion]\nmodelos f =\n  [i | i <- interpretaciones f,\n       esModelo i f] \n<\/pre>\n<h4>Otras soluciones<\/h4>\n<ul>\n<li>Se pueden escribir otras soluciones en los comentarios.\n<li>El c\u00f3digo se debe escribir entre una l\u00ednea con &#60;pre lang=\"haskell\"&#62; y otra con &#60;\/pre&#62;\n<\/ul>\n<h4>Pensamiento<\/h4>\n<blockquote><p>\n\"Por muy correcto que parezca un teorema matem\u00e1tico, nunca hay que conformarse con que no haya algo imperfecto en \u00e9l hasta obtener la impresi\u00f3n de qie es bello.\" <\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/George_Boole\">George Boole<\/a>.\n<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Nota: En este ejercicio usaremos las mismas notaciones que en anterior importando los m\u00f3dulos Interpretaciones_de_FNC y Evaluacion_de_FNC Una interpretaci\u00f3n I es un modelo de un literal L si el valor de L en I es verdadero. Por ejemplo, la interpretaci\u00f3n [2,5] es modelo del literal x(2) (porque 2 \u2208 [2,5]) no es modelo del literal&#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":[5],"tags":[41,163,8,26,27,11],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5552"}],"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=5552"}],"version-history":[{"count":5,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5552\/revisions"}],"predecessor-version":[{"id":5616,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/posts\/5552\/revisions\/5616"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/media?parent=5552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/categories?post=5552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/exercitium\/wp-json\/wp\/v2\/tags?post=5552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}