Skip to content


A solution to a Dusa program consists of a set of propositions that have no free variables: we call propositions with no free variables facts.

Relational propositions

A relational proposition is a predicate followed by any number of terms. The proposition edge a b treats edge as a two-place relation, and the proposition node c treats node as a one-place relation.

Functional propositions

Dusa also utilizes functional propositions, which consist of an attribute (a predicate plus zero or more terms) and a value (a single term). The predicate plus its terms is called an attribute, and every attribute must have at most one value: deriving both attr is a and attr is b will result in the solution being invalidated for failing an integrity constraint.

Using propositions like functions

  • TODO add