Metatheory.jl
Metatheory.jl copied to clipboard
Makes Julia reason with equations. General purpose metaprogramming, symbolic computation and algebraic equational reasoning library for the Julia programming language: E-Graphs & equality saturation,...
It seems that the symbol cache is not working correctly. It is used to reduce the search space in terms of eclasses when performing e-matching, and should be a map...
By now, code blocks behave as n-ary operators. What can be a good way for better integration of expressions like `:(begin x; y; z end)`? cc @thautwarm
See for example https://gist.github.com/MasonProtter/0b8717d0e371b8a6efb1a697555c06a8
Support splatting in left and right hand of rules in the e-graph e-matcher. Example: ```julia t = @theory begin f(args...) => foo(args[1:2]...) + bar(args[2:end]...) end ``` This is already supported...
The `EGraph` type and operations extensively use dictionaries. Consider performance tips from the Julia manual: https://docs.julialang.org/en/v1/manual/performance-tips/ - Replace unefficient/memory hungry data structures (dictionaries, sets, dynamic arrays) with more efficient and...
Working with matching single sub-expressions, ```julia julia> r = @rule *(~y, 3)^~x => :($y^$x * 3^$x); julia> r(:((7* 3)^4)) :(7 ^ 4 * 3 ^ 4) julia> @areequal [r] (7...
Following this PR, a `Metatheory` version bump to `1.4.1` would be appreciated.
Hi, after patching JET.jl with [this not yet merged PR](https://github.com/aviatesk/JET.jl/pull/380), it's now possible to run `report_package(Metatheory)` with Julia 1.8. The current PR fixes most real issues reported by JET. Namely:...