logic-eval
+------------------+
| Feel(fresh) :- |
| Sleep(well), |
| Sun(shine), |
| Air(cool). |
+------------------+
logic-eval is a Prolog-like logic evaluation library for Rust.
Features
SLG resolution: handles recursive queries with tabling.Custom type support: use&str, interned strings, or your ownAtomtype.Parsing: parse facts, rules, and queries from a Prolog-like text syntax withparse_str.Basic logical operators: supports NOT, AND, and OR in rule bodies.
Examples
Parse text and query a database
use ;
let mut db = new;
let interner = new;
let dataset = "
child(a, b).
child(b, c).
child(c, d).
descend($X, $Y) :- child($X, $Y).
descend($X, $Z) :- child($X, $Y), descend($Y, $Z).
";
db.insert_dataset;
db.commit;
let mut cx = db.query;
let mut answer = Vecnew;
while let Some = cx.prove_next
assert_eq!;