erdos / cogent

a small theorem prover in clojure

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cogent

A small and naive rule engine with Equality Saturation[1] in Clojure.

example workflow contributions welcome EPL 2.0

Usage

  1. Install Leiningen
  2. Clone this repository
  3. 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

Status

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

Resources

  1. egg: Fast and extensible equality saturation
  2. Efficiency of a Good But Not Linear Set Union Algorithm

License

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.

About

a small theorem prover in clojure

License:Other


Languages

Language:Clojure 100.0%