Supposons que nous ayonsvérification propositionnelle Formule Un autre Implique (en Haskell)
data Exp = Prop String -- a proposition
| And Exp Exp -- a conjunction of propositions
| Or Exp Exp -- a disjunction of propositions
Alors est-il un moyen de voir si l'on implique l'expression imbriquée un autre? C'est, je suis à la recherche de quelque chose comme ce qui suit:
implies :: Exp -> Exp -> Bool
implies = {- returns true if and only if the first expression
implies the second expression -}
implies
(And (Prop "Apple") (Prop "Banana"))
(Or (Prop "Apple") (Prop "Banana"))
-- => True, since "Apple and Banana" implies "Apple or Banana"
implies
(Or (Prop "Apple") (Prop "Banana"))
(And (Prop "Apple") (Prop "Banana"))
-- => False, since "Apple or Banana" does not imply "Apple and Banana"
est-il un moyen de mettre en œuvre, ou est-il une bibliothèque qui implémente cela? Si cela fait une différence: j'ai seulement besoin de And
et de Or
(c'est-à-dire que je n'ai pas besoin d'implication matérielle).
Vouliez-vous inclure 'Not Exp' comme expression ou avez-vous seulement une conjonction et une disjonction? – augustss
Je n'ai que conjonction et disjonction. – George
On pourrait essayer toute la table de vérité (en temps d'EXP) mais je me demande si l'absence de NOT simplifie le problème w.r.t (un-) SAT. Gardons à l'esprit que nous voulons vérifier une implication valide, donc il y a une négation implicite là. – chi