<Chapter id=chapter.recordc>
    <title/Feature Constraints: <<RecordC>>/

    <p>
    This chapter explains  procedures dedicated to feature constraints.

      <List>
	<Entry><Span class=index/<<is>>/
	  <Index class=tails/<<RecordC>><And><<is>>/
	<Synopsis>
          <<{RecordC.is ?*{X} ??{B}}>>
	<Item>
          tests whether ?_{X} has kind record.

	<Entry><Span class=index/<<tell>>/
	  <Index class=tails/<<RecordC>><And><<tell>>/
	<Synopsis>
          <<{RecordC.tell ?+{L} ??{R}}>>
	<Item>
          tells the constraint store that ?_{R} is a record with
	  label&nbsp;?_{L}.

	<Entry><Span class=index/<<tellSize>>/
	  <Index class=tails/<<RecordC>><And><<tellSize>>/
	<Synopsis>
          <<{RecordC.tellSize ?+{L} ?+{I} ??{R}}>>
	<Item>
          tells the constraint store that ?_{R} is a record with
	  label&nbsp;?_{L}.
        <p>
          Signals the implementation that it is likely that ?_{I} features are told to ?_{R}. <<RecordC.tellSize>> is semantically equivalent to <<RecordC.tell>>, but the current implementation optimizes memory allocation. 

	<Entry><Span class=index/<<^>>/
	  <Index/<<RecordC>><And><<'^'>>/
	<Synopsis>
	  <<{RecordC.'^' ?_{R} ?+{LI} ?_{X}}>>
	<Item>
          tells the constraint store that ?_{R} is a FC having
	  field&nbsp;?_{X} at feature ?_{LI}.
	<P>
          Is supported by the infix operator&nbsp;<<^>>, that is 
          <<<{RecordC.'^' ?_{R} ?_{LI} ?_{X}}>>>
          can also be written as
          <<<?_{R}^?_{LI}=?_{X}>>>

	<Entry><Span class=index/<<width>>/
	  <Index class=tails/<<RecordC>><And><<width>>/
	<Synopsis>
          <<{RecordC.width ?*{R} ??{D}}>>
	<Item>
           posts a propagator for the constraint that ?_{D} is the
           width of&nbsp;?_{R}. Also tells the constraint store that ?_{D}
           is a finite domain integer.

	<Entry><<reflectArity>>
	  <Index class=tails/<<RecordC>><And><<reflectArity>>/
	<Synopsis>
          <<{RecordC.reflectArity ?*{R} ??{LIs}}>>
	<Item>
           returns a list ?_{LIs} containing
           the currently known features of&nbsp;?_{R}.  

	<Entry><<monitorArity>>
	  <Index class=tails/<<RecordC>><And><<monitorArity>>/
	<Synopsis>
          <<{RecordC.monitorArity ?*{R} ??{P} ??{LIs}}>>
	<Item>
          returns a nullary procedure&nbsp;?_{P} and a stream ?_{LIs}
          containing the currently known features of&nbsp;?_{R}.  
          <p>
          Features appear in the stream as soon as they become known
          to the constraint store. Application of&nbsp;?_{P} closes the
          stream and deletes the propagator. The stream is
          automatically closed once the constraint store
	  determines&nbsp;?_{R}.

	<Entry><<hasLabel>>
	  <Index class=tails/<<RecordC>><And><<hasLabel>>/
	<Synopsis>
          <<{RecordC.hasLabel ?*{R} ??{B}}>>
	<Item>
          blocks until ?_{R} becomes a feature structure. Tests whether ?_{R} has been told a label with <<RecordC.tell>>.
       </List>

       
     </chapter>

