Previous

7.2. Identification in nests

{This section ensures that for each applied-indicator there is a corresponding property in some suitable 'LAYER' of the nest.}

7.2.1. Syntax

{PROPSETY :: PROPS ; EMPTY.

PROPS :: PROP ; PROPS PROP.

PROP :: DEC ; LAB ; FIELD.

QUALITY :: MODE ; MOID TALLY ; DYADIC ; label ; MODE field.

TAX :: TAG ; TAB ; TAD ; TAM.}

a) WHETHER PROP identified in NEST new PROPSETY{a,48b ,542a} : where PROP resides in PROPSETY{b,c,-}, WHETHER true ; where PROP independent PROPSETY{71a,b,c } , WHETHER PROP identified in NEST{a,-}.

b) WHETHER PROP1 resides in PROPS2 PROP2{a,b,48d } : WHETHER PROP1 resides in PROP2{c,-} or PROP1 resides in PROPS2{b,c,-}.

c) WHETHER QUALITY1 TAX resides in QUALITY2 TAX{a,b,48d } : where (QUALITY1) is (label) or (QUALITY1) is (DYADIC) or (QUALITY1) is (MODE field), WHETHER (QUALITY1) is (QUALITY2) ; where (QUALITY1) is (MOID1 TALLETY) and (QUALITY2) is (MOID2 TALLETY), WHETHER MOID1 equivalent MOID2{73a } . {A nest, except the primal one (which is just 'new'), is some 'NEST LAYER' (i.e., some 'NEST new PROPSETY'). A 'PROP' is identified by first looking for it in that 'LAYER' (rule a). If the 'PROP' is some 'label TAX' or 'DYADIC TAX', then a simple match of the 'PROP's is a sufficient test (rule c). If the 'PROP' is some 'MOID TALLETY TAX', then the mode equivalencing mechanism must be invoked (rule c). If it is not found in the 'LAYER', then the search continues with the 'NEST' (without that 'LAYER'), provided that it is independent of all 'PROP's in that 'LAYER'; otherwise the search is abandoned (rule a). Note that rules b and c do double duty in that they are also used to check the validity of applied-field-selectors {4.8.1.d }.}

7.2.2. Semantics

a) If some NEST-range R {3.0.1.f } contains an applied-indicator I {4.8.1.b } of which there is a descendent where-PROP-identified-in-NEST-LAYER, but no descendent where-PROP-identified-in-NEST, then R is the "defining range" of that I. {Note that 'NEST' is always the nest in force just outside the range.}

b) A QUALITY-applied-indicator-with-TAX I whose defining NEST-range {a}is R "identifies" the QUALITY-NEST-LAYER-defining-indicator-with-TAX contained in R.

{For example, in

(# 1 ¢ REAL i = 2.0; (¢ 2 ¢ INT i = 1; (¢ 3 ¢ REAL x; print(i) ¢ 3 ¢ ) ¢ 2 ¢ ) ¢ 1 ¢ ) there are three ranges. The applied-identifier i in print(i) is forced, by the syntax, to be an integral-NEST-new-real-letter-i-new-integral-letter-i-new-reference-to-real-letter-x-applied-identifier-with-letter-i {4.8.1.b }. Its defining range is the NEST-new-real-letter-i-serial-clause-defining-new-integral-letter-i {3.2.1.a } numbered # 2 #, it identifies the defining-identifier i contained in INT i (not the one in REAL i), and its mode is 'integral'.}

{By a similar mechanism, a DYADIC-formula {5.4.2.1.a } may be said to "identify" that DYADIC-defining-operator {4.8.1.a } which determines its priority.}

c) The environ E "necessary for" a construct C in an environ E1 is determined as follows:

If E1 is the primal environ {2.2.2.a },
then E is E1;
otherwise, letting E1 be composed of a locale L corresponding to some 'PROPSETY' and another environ E2,
If C contains any QUALITY-applied-indicator-with-TAX
then E is E1;
otherwise, {L is not necessary for C and} E is the environ necessary for C in E2.
{The environ necessary for a construct is used in the semantics of routine-texts {5.4.1.2 } and in "establishing" {3.2.2.b}. For example, in
¢ 2 ¢ PROC VOID pp; INT n; (¢ 1 ¢ PROC p = VOID: print(n); pp := p)
if E1 and E2 are the environs established by the elaboration of the serial-clauses marked by the comments # 1 # and # 2 #, then E2 is the environ necessary in E1 for the routine-text VOID: print(n), and so the routine yielded by p in E1 is composed of that routine-text together with E2 {5.4.1.2 }. Therefore, the scope of that routine is the scope of E2 {2.1.3.5.c } and hence the assignment {5.2.1.2.b } invoked by pp := p is well defined.}
 
Next