Egglog

Latest version: v8.0.1

Safety actively analyzes 706487 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 5

6.0.1

- Upgrade dependencies, including [egglog](https://github.com/egraphs-good/egglog/compare/ceed816e9369570ffed9feeba157b19471dda70d...4cc011f6b48029dd72104a38a2ca0c7657846e0b)
- Fix bug where saturate wasn't properly getting translated.

6.0.0

Remove modules / Auto register functions/classes

You can now create classes and functions without an EGraph! They will be automatically registered on any EGraph if they
are used in any of the rules or commands. This means the methods to add functions/classes on an EGraph are deprecated and
moved to the top level module:

- `egraph.class_` -> Removed, simply subclass from `egglog.Expr`
- `egraph.method` -> `egglog.method`
- `egraph.function` -> `egglog.function`
- `egraph.relation` -> `egglog.relation`
- `egraph.ruleset` -> `egglog.Ruleset`
- `egraph.Module` -> Removed

The goal of this change is to remove the complexity of `Module`s and remove the need to think about what functions/classes
need to be registered for each `EGraph`.

In turn, if you want to collect a set of rules, you can do that with a ruleset. Whenever you now run a ruleset or schedule,
the ruleset will be automatically registered on the EGraph.

For backwards compatability, the existing methods and functions are preserved, to make this easier to adopt. They will
all now raise deprication warnings.

Allow future type references in classes

Classes can now reference types that have not been defined yet, as long as they are defined before the class is used in a
rule or expression. For example:

python
class A(Expr):
def __init__(self, b: B) -> None: ...

class B(Expr):
...


Top level commands

We can now simplify and check expressions without explicity making an EGraph:

python
check(<fact>, [<schedule>], *[<actions>])
is equivalent to
e = EGraph()
e.register(*<actions>)
e.run(<schedule>)
e.check(<fact>)

simplify(<expr>, [<schedule>])
is equivalent to
EGraph().simplify(<expr>, [<schedule>])

5.0.0

- Move egglog `!=` function to be called with `ne(x).to(y)` instead of `x != y` so that user defined expressions
can

4.0.1

- Fix keyword args for `__init__` methods (96)[https://github.com/metadsl/egglog-python/pull/96].

4.0.0

- Fix `as_egglog_string` proprety.
- Move `EGraph.eval_fn` to `py_eval_fn` since it doesn't need the `EGraph` anymore.

3.1.0

- Update graphs to include more compact Python names of functions (79)[https://github.com/metadsl/egglog-python/pull/79].
- Add `as_egglog_string` property to get egglog source from e-graph (82)[https://github.com/metadsl/egglog-python/pull/82].
- Add `include_cost` flag to `egraph.extract` to return the integer cost as well as an expression (86)[https://github.com/metadsl/egglog-python/pull/86].
- Automatically try converting arguments to `eq`, `rewrite`, `set_`, and `union` to the correct type (84)[https://github.com/metadsl/egglog-python/pull/84].
- Update RTD name to new project name of `egglog-python` from `egg-smol-python` (18)[https://github.com/egraphs-good/egglog-python/pull/18].
- Move project to egraphs-good org!

Page 2 of 5

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.