Subject: Term
Keywords: ::usage
          ::implementation
Title: Term
--------------------------------------------------
Terms are the ubiquitous. Originally used to represent
formal content, terms are used to represent all persistent
data.
Abstractly, terms are a recursive lisp data structure built from
lists and pairs 
<term> :       (<opid> # (<parameter> list)) # <bound_term> list
<bound_term> : VariableId list # <term>
<parameter> :  <parmvalue> # <parmtype>
<parmtype>  :  variable | token | natural | string | time | object_id
Terms are open ended. Any string can be a parmtype.
Any string is accepted for any parmvalue no matter the parmtype.
A parameter can be viewed simply as a pair of strings. If 
a parmvalue with a known parmtype is accessed then if the value string
does not represent a member of the parmtype an error will occur 
at the time of access. 
 
For persistent storage and data interchange, terms are converted to 
printable ascii strings.
  - original : natural expression of term data structure.  
  - export : simplist syntax for parsing  
      * removes opid by making opids a parameter.
        when parsing into term data structure uses special opid
        when first parameter is not of type OPID. 
      * encodes bindings as special bound_id term.
        requires quoting of literal bound_id terms.        
  - compressed : original variation
      * hash consing of a sort that finds equivalent structures
        and avoids duplication by building arrays and replacing structures
        with indices.
    
⋅
--------------------------------------------------
Authors: 
Contributors: RICH:t
              NUPRL:t
⋅
Home