Skip to content

Latest commit

 

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gigalog

Gigalog is a minimal semi-naive parallel Datalog engine supporting fixpoint evaluation and stratified negation.

It provides an interpreter which supports wildcards, negation, strings and constants. It also supports input and output statements, comments, as well as recursion and mutual recursion.

Later on I plan to add support for integers and comparison operators to facilitate more useful programming.

Here are some sample programs.

% samegeneration.dl
.input Parent("test.csv")
Person(X) :- Parent(X, _).
Person(X) :- Parent(_, X).
SameGeneration(X, X) :- Person(X).
SameGeneration(X, Y) :- Parent(X, P), SameGeneration(P, Q), Parent(Y, Q).
.output SameGeneration
link(a, b).
link(b, c).
link(c, d).
link(d, e).

path(X, Y) :- link(X, Y).
path(X, Y) :- step(X, Y).

step(X, Y) :- link(X, Z), path(Z, Y).

About

A datalog subset, written to learn more about datalog evaluation.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages