Schedule demo
from __future__ import annotations
from egglog import *
left = relation("left", i64)
right = relation("right", i64)
x, y = vars_("x y", i64)
step_left = ruleset(
rule(
left(x),
right(x),
).then(left(x + 1)),
)
step_right = ruleset(
rule(
left(x),
right(y),
eq(x).to(y + 1),
).then(right(x)),
)
egraph = EGraph()
egraph.register(left(i64(0)), right(i64(0)))
egraph.run((step_right.saturate() + step_left.saturate()) * 10)
egraph.check(left(i64(10)), right(i64(9)))
egraph.check_fail(left(i64(11)), right(i64(10)))
egraph
Total running time of the script: (0 minutes 0.552 seconds)
Gallery generated by Sphinx-Gallery