beta-Juliet & Portia

 (c)2000-2004 Cat's Eye Technologies. All rights reserved.
This software is OSI Certified Open Source Software.
OSI Certified is a certification mark of the [WWW]Open Source Initiative.
See the file license.txt for license information.

Overview

The beta-Juliet language is not Turing-Complete by itself. Nor is the Portia pre-processor. However, when used together, the intent is that they form a Turing-Complete language.

beta-Juliet

beta-Juliet models the world as an unordered, unorganized set of events, such as DominoFalls, CatMeows, or SunSets.

These events can cause, and be caused by other events. In addition they can do so conditionally - but the only conditional available for checking is: given two events, which one fired more recently?

Portia

Portia is solely concerned with expanding parameterized events into series of concrete events, for example creating events DominoOneFalls, DominoTwoFalls, etc., from the generalized meta-event Domino(N=Domino)Falls where Domino is an alphabet over the range of dominoes.

Without each other, these languages are interesting but not powerful. beta-Juliet cannot generalize, and therefore is not Turing-Complete. Portia cannot loop unrestrictively, and therefore is also not Turing-Complete.

[Historical note: Portia, as it has stood for many years, cannot really generalize either, so the combination of beta-Juliet and Portia is still not Turing-Complete.]