Page Numbers: Yes First Page: 1
Heading:
June 18, 1977 2:48 PM [IVY]<KRL>document>str-lev-mem-unit
STATUS: not yet written -- this is just a place holder
Specification of the Form and Use of Units in KRL1
This document describes the form and meaning of units in KRL-1. It clarifies some of the concepts in previous writeups (e.g. the status of footnotes) through the notion of the meta-unit, and introduces new mechanisms for embedded units. It also describes the notions of further specification and clusters in a formal way, and gives the actual units and functionals for making use of these facilities.
More stuff
Units, names, and anchors
As in earlier versions of KRL, we have the notion of a unit which has a name (a LISP atom) and a set of slots, each of which is a labelled anchor, whose unit-name is the name of the unit in which it is a slot. Every labelled anchor belongs to one and only one unit. No two slots in the same unit can have the same slot name. No two units in the system can have the same name. Note: We may need to go to some more complex naming scheme (based on partitioning the set of units into groups analagous to blocks for the block compiler) if this makes it too difficult to integrate files written by different people. For the time being, we will not worry about it.
# Unit
name: A LispAtom
slots:
SetOf(A LabelledAnchor with unitName = My name)
EveryPair(\# self: {My x, My y}
x: A LabelledAnchor
y: A LabelledAnchor with
slotName = Not(The slotName from My x))
Units in memory stucture
The primitive data types of KRL-1 (see <KRL>datatypes.doc) include lisp objects, anchors and descriptors. They do not include units. Semantically, a unit is a set of labelled anchors. The individual anchors in this set have representations in the memory structure, but the entity which is the unit as a whole is described only at the meta-layer. For each unit in the memory, there is an anchor which contains (in compact form) a descriptor based on the unit for Unit given above. This anchor is called the meta-anchor for the unit, and is the self slot of the meta-unit for the unit.
The reason for layer shift is to provide a coherent way of talking about the footnotes which appear in the syntax of KRL-1. At the intermediate (parse structure) level, there is a clear notion of a syntactic object called a note reference which can appear in four places:
following the unit name
following the label of any slot
following the key word of any descriptor (or the first word of those such as functionals which do not begin with a key word)
following an at-sign appearing in any anchor
Each of the note references in a unit must have a unique identifier (a number in the old version of the syntax, an atom in the version described below), and there must appear somewhere else in the same unit a footnote labelled with this identifier, which in turn is a syntactic form corresponding to a single anchor (i.e. it can contain a set of descriptors).
There is a specific way in which the footnote is interpreted as relating to the place where the note reference appeared. A note for a reference following the unit name is a description of the unit as a whole; one following a slot label is a description of the labelled anchor which represents the slot in memory; one on a descriptor is a description of that descriptor; and one following an at-sign is a description of the anchor. Each footnote can then be thought of as an anchor at a meta layer which contains a description of some object (descriptor, anchor, or unit) in the unit being defined. In semantic terms, the unit being defined (along with its consitituent anchors and descriptors) is being treated as a world level object, which is in turn modelled by a series of layers, including the memory level meta-descriptions represented by the footnotes.
The question naturally arises as to where these meta-layer anchors exist. They are not a part of the unit itself, since they are parts of a description of that unit at another layer. However, they seem to have much in common with slots, in that they are labelled, and can refer back and forth through what has previously been the Noteref descriptor (see below for why this is no longer needed). The natural generalization is to treat them as the slots of a meta-unit, whose self slot describes the unit in whose definition the footnotes appear.
The Meta-Unit
stuff
More stuff
Unit Constructors
stuff
More stuff
Situation Units
stuff
More stuff
Further Specification
stuff
More stuff
Clusters
stuff
More stuff