Advertisement
Guest User

Untitled

a guest
Nov 21st, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.10 KB | None | 0 0
  1. class Expr:
  2.     def __init__(self, p, q):
  3.         self.p = p
  4.         self.q = q
  5.         needsbrackets = False
  6.         if self.p.precedence >= self.q.precedence:
  7.             needsbrackets == True
  8.  
  9.            
  10. class And(Expr):
  11.     precedence = 2
  12.     def __str__(self):
  13.         if self.needsbrackets == True:
  14.             return '('+str(self.p)+'&'+str(self.q)+')'
  15.         else:
  16.             return "{}&{}".format(self.p, self.q)
  17.    
  18. class Or(Expr):
  19.     precedence = 1
  20.     def __str__(self):
  21.         if self.needsbrackets == True:
  22.             return '('+str(self.p)+'|'+str(self.q)+')'
  23.         else:
  24.             return "{}|{}".format(self.p, self.q)
  25.  
  26. class Not(Expr):
  27.     precedence = 3
  28.     def __init__(self, something):
  29.         self.val = something
  30.  
  31.     def __str__(self):
  32.         if self.needsbrackets == True:
  33.             return '('+'!'+str(self.q)+')'
  34.         else:
  35.             return "!{}".format(self.val)
  36.  
  37. class Var:
  38.     precedence = 0
  39.     def __init__(self, chary):
  40.         self.chary = chary
  41.  
  42.     def __str__(self):
  43.         return "{}".format(self.chary)
  44.  
  45.     def eval(self, log):
  46.         return self.chary
  47.  
  48. class Dict(object):
  49.  
  50.     def fromkeys(klass, iterable, value=None):
  51.         "Emulate dict_fromkeys() in Objects/dictobject.c"
  52.         d = klass()
  53.         for key in iterable:
  54.             d[key] = value
  55.         return d
  56.     fromkeys = classmethod(fromkeys)
  57.  
  58.  
  59. #Equiv gives: x&z|!x&!z
  60. #e3 should give: !(x&y)&(!x|!y)|!!(x&y)&!(!x|!y)
  61.  
  62. e = Var("x"), Var("z")
  63.  
  64. e1 = Or(Var("x"),Not(Var("x")))
  65. def Equiv(p,q) :
  66.     return Or(And(p,q),And(Not(p),Not(q)))
  67. e2 = Equiv(Var("x"),Not(Not(Var("x"))))
  68. e3 = Equiv(Not(And(Var("x"),Var("y"))),Or(Not(Var("x")),Not(Var("y"))))
  69. e4 = Equiv(Not(And(Var("x"),Var("y"))),And(Not(Var("x")),Not(Var("y"))))
  70.  
  71. log = {"x" : 1, "y" : 2}
  72.  
  73. '''
  74. from sympy.logic.inference import satisfiable
  75. from sympy import Symbol
  76. x = Symbol('x')
  77. y = Symbol('y')
  78. satisfiable(...)'''
  79.  
  80. def isTauto(f) :
  81.    
  82.     for x in [True,False] :
  83.         for y in [True,False] :
  84.             if not f(x,y) :
  85.                 return False
  86.     return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement