A small and naive rule engine with Equality Saturation[1] in Clojure.
- Install Leiningen
- Clone this repository
- Enter the REPL:
$ lein repl
Check if two expressions are in the same e-class:
cogent.core=> (congruent? 3 '(d x (* 3 x)))
true
congruent.core=> (tautology? '(or x (and true (not x))))
true
Goal | Status |
---|---|
Equality Saturation engine | done |
Congruence checker | done |
Tautology checker | done |
Contradiction checker | done |
Performance improvements | work in progress |
General purpose simplifier | design phase |
General purpose solver | design phase |
Implemented rule sets:
- Calculus: symbolic differentiation: work in progress
- First order logic: work in progress
- Elementary algebra: work in progress
- SKI-calculus: done
- egg: Fast and extensible equality saturation
- Efficiency of a Good But Not Linear Set Union Algorithm
Copyright © 2021 Janos Erdos
This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which is available at http://www.eclipse.org/legal/epl-2.0. By using this software in any fashion, you are agreeing to be bound by the terms of this license. You must not remove this notice, or any other, from this software.