| ?- subtest. edge subsumption checking active yes | ?-To turn it, off, use nosubtest.
When subsumption checking is enabled, ALE will only add a new feature structure to the chart between nodes and if there is no other edge currently spanning and whose feature structure subsumes the new one. If, instead, the new feature structure subsumes an existing one's, then the existing edge is retracted and replaced with the new one.
Note that if edges are retracted, there may be gaps in the sequence of chart-edge indices.
Extra compiled code is required in order to make subsumption checking more efficient. If subsumption checking is enabled when a grammar is compiled, this code will be compiled also. If it is disabled, the subsumption checking code will be compiled when the subtest command is given. Only in the former case, however, will subsumption checking be used during EFD closure to reduce the number of empty categories to consider at run-time. The empty categories and phrase structure rules must be recompiled (with compile_rules) if subsumption checking is enabled after the initial compilation of a grammar for empty categories to be tested for subsumption.
Our experience has been that subsumption checking is not required in most unification-based grammars, and should therefore be left disabled. It is useful only for those grammars which have true spurious ambiguity or redundancy. Grammars that incorporate some notion of thematic or functional structure for representing the meaning of a sentence normally realise structural ambiguities as semantic ambiguities that should be retained in the chart.
If both subsumption checking and the mini-interpreter are enabled, then the user may override either of these behaviours. In the former case, before the new feature structure is discarded, it will be displayed along with the discard action-line:
Action(noadd,continue,break,dtr-#,existing,abort)? |:continue instructs the parser to look for more subsuming edges. If no more are found, the new feature structure is added to the chart. existing displays the existing chart edge that subsumes the new one with the edge/2 action-line. The rest behave as described above.
In the latter case, before an existing edge is retracted, its feature structure will be displayed along with the retract action-line:
Action(retract,continue,break,dtr-#,incoming,abort)? |:retract retracts the existing, subsumed edge and asserts the incoming feature structure. incoming displays the incoming feature structure, along with the incoming action-line:
Action(noadd,dtr-#,existing,abort)? |:the functions of whose options have already been described.