Metatheory.jl
Metatheory.jl is a general purpose metaprogramming and algebraic computation library for the Julia programming language, designed to take advantage of the powerful reflection capabilities to bridge the gap between symbolic mathematics, abstract interpretation, equational reasoning, optimization, composable compiler transforms, and advanced homoiconic pattern matching features.
Read the preprint on arXiv.
Installation
You can install the stable version:
julia> using Pkg; Pkg.add("Metatheory")
Or you can install the developer version (recommended by now for latest bugfixes)
julia> using Pkg; Pkg.add(url="https://github.com/0x0f0f0f/Metatheory.jl")
Usage
Since Metatheory.jl relies on RuntimeGeneratedFunctions.jl, you have to call @metatheory_init
in the module where you are going to use Metatheory.
using Metatheory
using Metatheory.EGraphs
@metatheory_init
Citing
If you use Metatheory.jl in your research, please cite our works.
@misc{cheli2021metatheoryjl,
title={Metatheory.jl: Fast and Elegant Algebraic Computation in Julia with Extensible Equality Saturation},
author={Alessandro Cheli},
year={2021},
eprint={2102.07888},
archivePrefix={arXiv},
primaryClass={cs.PL}
}