@@ -160,12 +160,24 @@ def freer(t: Term) -> StringSet:
160
160
),
161
161
)
162
162
163
+ result = egraph .relation ("result" )
164
+
165
+
166
+ def l (fn : Callable [[Term ], Term ]) -> Term : # noqa
167
+ """
168
+ Create a lambda term from a function
169
+ """
170
+ # Use first var name from fn
171
+ x = fn .__code__ .co_varnames [0 ]
172
+ return lam (Var (x ), fn (Term .var (Var (x ))))
173
+
163
174
164
175
def assert_simplifies (left : BaseExpr , right : BaseExpr ) -> None :
165
176
"""
166
177
Simplify and print
167
178
"""
168
- res = egraph .simplify (left , 30 )
179
+ with egraph :
180
+ res = egraph .simplify (left , 30 )
169
181
print (f"{ left } ➡ { res } " )
170
182
assert expr_parts (res ) == expr_parts (right ), f"{ res } != { right } "
171
183
@@ -174,18 +186,6 @@ def assert_simplifies(left: BaseExpr, right: BaseExpr) -> None:
174
186
assert_simplifies ((Term .val (Val (1 )) + Term .val (Val (2 ))).eval (), Val (3 ))
175
187
176
188
177
- result = egraph .relation ("result" )
178
-
179
-
180
- def l (fn : Callable [[Term ], Term ]) -> Term : # noqa
181
- """
182
- Create a lambda term from a function
183
- """
184
- # Use first var name from fn
185
- x = fn .__code__ .co_varnames [0 ]
186
- return lam (Var (x ), fn (Term .var (Var (x ))))
187
-
188
-
189
189
# lambda under
190
190
assert_simplifies (
191
191
l (lambda x : Term .val (Val (4 )) + l (lambda y : y )(Term .val (Val (4 )))),
@@ -270,7 +270,7 @@ def l(fn: Callable[[Term], Term]) -> Term: # noqa
270
270
assert_simplifies (if_ (Term .val (Val (1 )) == Term .val (Val (1 )), Term .val (Val (7 )), Term .val (Val (9 ))), Term .val (Val (7 )))
271
271
272
272
273
- # lambda_compose_many
273
+ # # lambda_compose_many
274
274
assert_simplifies (
275
275
let_ (
276
276
compose ,
@@ -298,7 +298,7 @@ def l(fn: Callable[[Term], Term]) -> Term: # noqa
298
298
let_ (
299
299
zeroone ,
300
300
l (lambda x : if_ (x == Term .val (Val (0 )), Term .val (Val (0 )), Term .val (Val (1 )))),
301
- Term .val ( Val ( 0 )) + Term . var (zeroone )(Term .val (Val (0 ))) + Term .var (zeroone )(Term .val (Val (10 ))),
301
+ Term .var (zeroone )(Term .val (Val (0 ))) + Term .var (zeroone )(Term .val (Val (10 ))),
302
302
),
303
303
Term .val (Val (1 )),
304
304
)
0 commit comments