forked from sventhijssen/compact
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLiteral.py
37 lines (31 loc) · 1.01 KB
/
Literal.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Source: https://github.com/sventhijssen/pgmtocnf
# Authors: Sven Thijssen and Gillis Hermans
class Literal():
def __init__(self, name, positive=True):
super(Literal, self).__init__()
self.atom = name
self.positive = positive
def __str__(self):
if self.positive:
return str(self.atom)
elif self.atom == 'False':
return str(self.atom)
else:
return "\\+" + str(self.atom)
def __repr__(self):
if self.positive:
return str(self.atom)
elif self.atom == 'False':
return str(self.atom)
else:
return "\\+" + str(self.atom)
def __eq__(self, other):
if isinstance(other, Literal):
return self.atom == other.atom and self.positive == other.positive
return False
def __hash__(self):
return hash(self.atom)
def negate(self):
if self.positive:
return Literal(self.atom, False)
return Literal(self.atom, True)