Skip to content

Commit 310c552

Browse files
committed
disable renaming variables
1 parent b63b11d commit 310c552

File tree

1 file changed

+88
-8
lines changed

1 file changed

+88
-8
lines changed

scripts/nltk2normal.py

Lines changed: 88 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,28 @@ def get_atomic_formulas(expression):
3232
return set([expression])
3333
elif isinstance(expression, EqualityExpression):
3434
return set([expression])
35-
elif isinstance(expression, IndividualVariableExpression):
36-
return set([expression])
37-
elif isinstance(expression, EventVariableExpression):
38-
return set([expression])
39-
elif isinstance(expression, FunctionVariableExpression):
40-
return set([expression])
41-
elif isinstance(expression, ConstantExpression):
35+
elif isinstance(expression, AbstractVariableExpression):
4236
return set([expression])
4337
else:
4438
return expression.visit(get_atomic_formulas,
4539
lambda parts: reduce(operator.or_, parts, set()))
4640

41+
def get_role_formulas(expression):
42+
if isinstance(expression, EqualityExpression):
43+
if isinstance(expression.first, ApplicationExpression):
44+
variable = expression.first.argument
45+
if isinstance(variable, EventVariableExpression):
46+
return set([expression])
47+
else:
48+
return set()
49+
else:
50+
return set()
51+
elif isinstance(expression, AbstractVariableExpression):
52+
return set()
53+
else:
54+
return expression.visit(get_role_formulas,
55+
lambda parts: reduce(operator.or_, parts, set()))
56+
4757
def new_variable(var):
4858
var = VariableExpression(var)
4959
# isinstance(var,EventVariableExpression) must come first
@@ -61,6 +71,77 @@ def new_variable(var):
6171
true_preds = ['True', 'TrueP']
6272

6373
def remove_true(expression):
74+
# Remove True and TrueP
75+
if isinstance(expression, ApplicationExpression):
76+
function = remove_true(expression.function)
77+
argument = remove_true(expression.argument)
78+
expr = ApplicationExpression(function, argument)
79+
elif isinstance(expression, EqualityExpression):
80+
left = remove_true(expression.first)
81+
right = remove_true(expression.second)
82+
expr = EqualityExpression(left, right)
83+
elif isinstance(expression, AndExpression):
84+
# True & A <=> A & True <=> A
85+
left = expression.first
86+
right = expression.second
87+
left_str = str(left)
88+
right_str = str(right)
89+
if left_str in true_preds:
90+
expr = remove_true(right)
91+
elif right_str in true_preds:
92+
expr = remove_true(left)
93+
else:
94+
left = remove_true(left)
95+
right = remove_true(right)
96+
expr = AndExpression(left, right)
97+
elif isinstance(expression, OrExpression):
98+
# True or A <=> A or True <=> True
99+
left = expression.first
100+
right = expression.second
101+
left_str = str(left)
102+
right_str = str(right)
103+
if left_str in true_preds:
104+
expr = remove_true(left)
105+
elif right_str in true_preds:
106+
expr = remove_true(right)
107+
else:
108+
left = remove_true(left)
109+
right = remove_true(right)
110+
expr = OrExpression(left, right)
111+
elif isinstance(expression, ImpExpression):
112+
# True -> A <=> A
113+
left = expression.first
114+
right = expression.second
115+
left_str = str(left)
116+
if left_str in true_preds:
117+
expr = remove_true(right)
118+
else:
119+
left = remove_true(expression.first)
120+
right = remove_true(expression.second)
121+
expr = ImpExpression(left, right)
122+
elif isinstance(expression, NegatedExpression):
123+
term = remove_true(expression.term)
124+
expr = NegatedExpression(term)
125+
elif isinstance(expression, ExistsExpression):
126+
variable = expression.variable
127+
term = expression.term
128+
term = remove_true(term)
129+
expr = ExistsExpression(variable, term)
130+
elif isinstance(expression, AllExpression):
131+
variable = expression.variable
132+
term = expression.term
133+
term = remove_true(term)
134+
expr = AllExpression(variable, term)
135+
elif isinstance(expression, LambdaExpression):
136+
variable = expression.variable
137+
term = expression.term
138+
term = remove_true(term)
139+
expr = LambdaExpression(variable, term)
140+
else:
141+
expr = expression
142+
return expr
143+
144+
def remove_true_(expression):
64145
# Remove True and TrueP
65146
if isinstance(expression, ApplicationExpression):
66147
function = remove_true(expression.function)
@@ -148,7 +229,6 @@ def remove_true(expression):
148229
expr = expression
149230
return expr
150231

151-
152232
def rename_variable(expression):
153233
# Rename bound variables so that no variable with the same name is bound
154234
# by two different quantifiers in different parts of a formula

0 commit comments

Comments
 (0)