yarn

 

Semantics

Page history last edited by Anonymous 4 yrs ago

Semantics

 

The core semantics of yarn have not been completely reified. Currently there are several incompatable implementations. One partial implementation in C++ and two in lisp. The operational semantics of the interpreter will be detailed on this page when the interpreter is completed. Some attempt will be made to describe the denotational semantics of Yarn.


Notes:

 

The Belnap bilatice model allows a two axis solution system. From it can be drawn elements that both represent varying degrees on a truth access, and verying degrees on a knowledge axis. The great advantage of this system is that not only is it conservative (of first order logic), it also has the possibility of allowing exceptions to be built into the denotational model in a simple and clear way. This can be done by extending the lattice of values from {true,false,top,bottom} to one including other values.

 

An example of how this might be useful is the inclusion of type checking in the system without using an auxilliary logic. One could simply write something like the following:

 

(: parent (younger older)

(person! younger)

(person! older)

...implementation...)

 

The person! relation might be constructed from person! as follows:

 

(: person! (obj)

(or (person obj)

type-error)))

 

Since (person obj) is a standard predicate, we can assume that it returns one of the values {true,false}. If we construct the lattice of values such that the truth ordering (>=t) places type-error above falsehood, and conjunction of type-error with false will be false, but any disjunction of type-error with false, will be type-error. The partial order is shown in the diagram below:

 

Comments (0)

You don't have permission to comment on this page.