Epilog is a computer language based on Dynamic Logic Programming (DLP). Epilog is similar to other logic programming languages, such as Datalog and Prolog, but there are some differences. Like Datalog, Epilog separates data and rules. Like Prolog, Epilog supports data and rules with functional terms. Like both of these languages, Epilog provides the ability to define views of data. However, Epilog also provides a way to express database dynamics. Whereas Prolog treats side effects implicitly using assert and retract as subgoals in view definitions, Epilog enables users to express side effects in the form of explicit constraints and transition rules.

Sierra is a browser-based interactive development environment (IDE) for Epilog. It allows users to view and edit datasets, and it allows users to view and edit view definitions, constraints, and transition rules. It provides a variety of tools for manually querying and modifying datasets, and it automatically updates visible datasets in spreadsheet-like fashion in accordance with the user's rules. It also provides tools for analyzing datasets and rule sets, tools for tracing program execution, and tools for saving and loading files. Click here for a tour of Sierra.

The CompilerJS tab leads to a web application that takes a set of rules as input and produces Javascript subroutines that can be called to compute the relations defined in the rules. The subroutines produced by the compiler run faster than the interpreter, in some cases orders of magnitude faster.

The Library tab provides access to a library of datasets and rulesets written in Epilog and javascript files that can be loaded into EpilogJS.

The Source Code tab provides access to the Javascript code for EpilogJS and CompilerJS.

The Documentation tab provides access to documentation on Logic Programming, Epilog, EpilogJS, CompilerJS, and Sierra.

The first Epilog interpreter was written in Lisp in the 1980s, and since then it has been ported to Java and Javascript. Over the years, Epilog has been used in a variety of applications, including digital hardware simulation, diagnosis, and testing, data integration, enterprise management, computational law, and general game playing.

Comments and complaints to genesereth@stanford.edu.