Eta-reduction added.
diff --git a/data2.py b/data2.py
index bfe099e..b0f5654 100644
--- a/data2.py
+++ b/data2.py
@@ -261,10 +261,18 @@ class Lambda(Term):
return l
def eval(self,excl_vars=Set()):
+ self = self.eval_vars(excl_vars + Set(self.var))
+ if type(self) != Lambda:
+ return self
return Lambda(self.var,self.expr.eval(excl_vars + Set(self.var)))
def eval_vars(self,excl_vars=Set()):
- return Lambda(self.var, self.expr.eval_vars(excl_vars + Set(self.var)))
+ l = Lambda(self.var, self.expr.eval_vars(excl_vars + Set(self.var)))
+ # eta-reduction
+ if type(l.expr)==Expr and l.expr.op=='@' and str(l.expr.a2)==str(l.var):
+ return l.expr.a1
+ else:
+ return l
def apply(self,expr,excl_vars=Set()):
old = copy(self)