In language theory the terms can be terminals or non-terminals. The latter ones are formulated via rules into lower level non-terminals until they are ground as terminals. Some examples of nonterminals are Expression of Java and of terminals integer 5.  Java’s grammar can be seen here: http://tioswww.unige.ch/db-research/Enseignement/analyseinfo/JAVA/BNFindex.html.

In cognitive science there are grounded and non-ground symbols, too. If the origin of a word or a concept can be defined completed via any sybconcepts or related words so that the final goal is well-defined, then the symbol is ground. Otherwise, the symbol is non-ground, ambiguous or not perfectly known.  There is a problem of symbol grounding (Harnard et al.), which states that not many everyday concepts can be ground.  However, in formal languages all symbols are well-defined, well-formed, so that there origin and semantics can be captured from code.

There are some symbolic programming languages to be used for program development. They are ideal tools for building symbolic analysis applications, because they have a capability of expressing both grounded and non-ground information. Prolog and Lisp are the most typical symbolic programming languages.

In Prolog in every clause all variables can be easily solved , whether the variable is ground or not in every expression. If a variable does’t have a value, then it is nonground. For example, in the clause foo(Y):-  X=4,  Y is sqrt(X). ,  X is ground, when sqrt is called, but Y is ground  only after the assignment Y is 2 (sqrt X). In the symbolic notation an expression sqrt(X) can also be a result for a query, for examples for cases where X is not known.

Advertisements