Previous

1.1.4. The semantics

The "meaning" of programs {2.2.1.a } in the strict language is defined in the semantics by means of sentences {in somewhat formalized natural language} which specify the "actions" to be carried out during the "elaboration" {2.1.4.1 } of those programs. The "meaning" of a program in a representation language is the same as the meaning of the program in the strict language which it represents {9.3 }.

{The semantics makes extensive use of hypernotions and paranotions in order to "designate", respectively, protonotions and constructs. The word "designate" should be understood in the sense that the word "flamingo" may "designate" any animal of the family Phoenicopteridae.}

1.1.4.1. Hypernotions, designation and envelopment

{Hypernotions, when enclosed between apostrophes, are used to "designate" protonotions belonging to certain classes; e.g., 'LEAP' designates any of the protonotions 'local', 'primal' and 'heap'.}

a) Hypernotions standing in the text of this Report, except those in hyper-rules {1.1.3.4.b } or metaproduction rules {1.1.3.3.b}, "designate" any protonotions which may be consistently substituted {1.1.3.4.e } for them, the consistent substitution being applied over all the hypernotions contained in each complete sub-section of the text (a sub-section being one of the lettered sub-divisions, if any, or else the whole, of a numbered section).

{Thus 'QUALITY TAX' is a hypernotion designating protonotions such as 'integral letter i', 'real letter x', etc. If, in some particular discussion, it in fact designates 'integral letter i', then all occurrences of "QUALITY" in that subsection must, over the span of that discussion, designate 'integral' and all occurrences of "TAX" must designate 'letter i'. It may then be deduced from subsection 4.8.2.a that in order, for example, to "ascribe to an integral-defining-indicator-with-letter-i", it is 'integral letter i' that must be "made to access V inside the locale".}

Occasionally, where the context clearly so demands, consistent substitution may be applied over less than a section. {For example, in the introduction to section 2.1.1.2 , there are several occurrences of "'MOID'", of which two are stated to designate specific (and different) protonotions spelled out in full, and of which others occur in the plural form "'MOID's", which is clearly intended to designate a set of different members of the class of terminal metaproductions of "MOID".}

b) If a protonotion (a hypernotion) P consists of the concatenation of the protonotions (hypernotions) A, B and C, where A and C are possibly empty, then P "contains" B at the position {in P} determined by the length of A. {Thus, 'abcdefcdgh' contains 'cd' at its third and seventh positions.}

c) A protonotion P1 "envelops" a protonotion P2 as specifically designated by a hypernotion H2 if P2, or some equivalent {2.1.1.2.a } of it, is contained {b} at some position within P1 but not, at that position, within any different {intermediate} protonotion P3 also contained in P1 such that H2 could also designate P3.

{Thus the 'MODE' enveloped by 'reference to real closed clause' is 'reference to real' rather than 'real'; moreover, the mode {2.1.1.2.b } specified by STRUCT(REAL a, STRUCT(BOOL b, CHAR c) d) envelops 'FIELD' just twice.}

1.1.4.2. Paranotions

{In order to facilitate discussion, in this Report, of constructs with specified originals, the concept of a "paranotion" is introduced. A paranotion is a noun that designates constructs {1.1.3.2.e }; its meaning is not necessarily that found in a dictionary but can be construed from the rules which follow.}

a) A "paranotion" P is a hypernotion {not between apostrophes} which is used, in the text of this Report, to "designate" any construct whose original O satisfies the following:

{For example, the paranotion "fixed-point-numeral" could designate the construct represented by 02, since, had it been in apostrophes, it would have designated an abstraction of the notion 'fixed point numeral', which is the original of that construct. However, that same representation could also be described as a digit-cypher-sequence, and as such it would be a direct descendent of that fixed-point-numeral.}

{As an aid to the reader in distinguishing them from other hypernotions, paranotions are not enclosed between apostrophes and are provided with hyphens where, otherwise, they would have been provided with blanks.}

The meaning of a paranotion to which the small syntactic mark "s" has been appended is the same as if the letter "s" {which is in the same type font as the marks in this sentence} had been appended instead. {Thus the fixed-point-numeral 02 may be said to contain two digit-cyphers, rather than two digit-cyphers.} Moreover, the "s" may be inserted elsewhere than at the end if no ambiguity arises {e.g., "sources-for-MODINE" means the same as "source-for-MODINEs"}.

An initial small syntactic mark of a paranotion is often replaced by the corresponding large syntactic mark (in order to improve readability, as at the start of a sentence) without change of meaning {; e.g., "Identifier" means the same as "identifier"}.

b) A protonotion P2 is an "abstraction" of a protonotion P1 if

  1. P2 is an abstraction of a notion whose production rule begins with an asterisk and of which P1 is an alternative

  2. {e.g., 'trimscript' {5.3.2.1.h } is an abstraction of any of the notions designated by 'NEST trimmer', 'NEST subscript' and 'NEST revised lower bound option'}, or

  3. P1 envelops a protonotion P3 which is designated by one of the "elidible hypernotions" listed in section c below, and P2 is an abstraction of the protonotion consisting of P1 without that enveloped P3

  4. {e.g., 'choice using boolean start' is an abstraction of the notions 'choice using boolean brief start' and 'choice using boolean bold start' (by elision of a 'STYLE' from 9.1.1.a )} , or

  5. P2 is equivalent to {2.1.1.2.a }P1
{e.g., 'bold begin symbol' is an abstraction of 'bold begin symbol'} .

{For an example invoking all three rules, it may be observed that 'union of real integral mode defining indicator' is an abstraction of some 'union of integral real mode NEST defining identifier with letter a' {4.8.1.a }. Note, however, that 'choice using union or integral real mode brief start' is not an abstraction of the notion 'choice using union of integral real boolean mode brief start', because the 'boolean' that has apparently been elided is not an enveloped 'MOID' of that notion.}

c) The "elidible hypernotions" mentioned in section b above are the following:

"STYLE" ·"TALLY" ·"LEAP" ·"DEFIED" ·"VICTAL" ·"SORT" ·"MOID" ·"NEST" ·"REFETY routine" ·"label" ·"with TAX" ·"with DECSETY LABSETY" ·"of DECSETY LABSETY" ·"defining LAYER".

{Which one of several possible notions or symbols is the original of a construct designated by a given paranotion will be apparent from the context in which that paranotion appears. For example, when speaking of the formal-declarer of an identity-declaration, if the identity-declaration is one whose terminal production {1.1.3.2.f } happens to be REF REAL x = LOC REAL, then the original of that formal-declarer is some notion designated by 'formal reference to real NEST declarer'.}

{Since a paranotion designates a construct, all technical terms which are defined for constructs can be used with paranotions without formality.}

d) If two paranotions P and Q designate, respectively, two constructs S and T, and if S is a descendent of T, then P is termed a "constituent" of Q unless there exists some {intermediate construct} U such that

  1. S is a descendent of U,
  2. U is a descendent of T, and
  3. either P or Q could {equally well} designate U.
{Hence a (S1) is a constituent operand of the formula a * (b + 2 ^ (i + j)) (T), but b (S2) is not, since it is a descendent of an intermediate formula b + 2 ^ (i + j) (U), which is itself descended from T. Likewise, (b + 2 ^ (i + j )) is a constituent closed-clause of the formula T, but the closed-clause (i + j) is not, because it is descended from an intermediate closed-clause. However, (i + j) is a constituent integral-closed-clause of T, because the intermediate closed-clause is, in fact, a real-closed-clause.

}

1.1.4.3. Undefined

a) If something is left "undefined" or is said to be "undefined", then this means that it is not defined by this Report alone and that, for its definition, information from outside this Report has to be taken into account.

{A distinction must be drawn between the yielding of an undefined value (whereupon elaboration continues with possibly unpredictable results) and the complete undefinedness of the further elaboration. The action to be taken in this latter case is at the discretion of the implementer, and may be some form of continuation (but not necessarily the same as any other implementer's continuation), or some form of interruption {2.1.4.3.h } brought about by some run-time check.}

b) If some condition is "required" to be satisfied during some elaboration then, if it is not so satisfied, the further elaboration is undefined.

c) A "meaningful" program is a program {2.2.1.a } whose elaboration is defined by this Report.

{Whether all programs, only particular-programs, only meaningful programs, or even only meaningful particular-programs are "ALGOL 68" programs is a matter for individual taste.}
 
Next