Sentence: A sentence is something that can be true or false on a given turn of a game. It is made up of a name (which is a constant) and (optionally) a body consisting of terms. In GGP-Base, a sentence with no body is called a proposition, while a sentence with a body is called a relation. (Note that this is different from the sense of "proposition" used in propositional network, which is equivalent to a sentence in this terminology.)
Term: A term is a constant, variable, or function. It's what fills one "slot" in a sentence body.
Constant: A constant is a "word" of the language for a particular game, or one of the GDL keywords. If it's a single word without parentheses (and not a variable) it's a constant.
Variable: A "word" in a sentence starting with
?. It can represent a constant or a function.
Function: A complex term that contains other terms. It has a name (which is a constant) and a body consisting of other terms, much like a sentence. Unlike a sentence, it does not have a truth value.
Arity: The number of terms in a sentence body or function body. This should be constant across every use of a sentence name or function name.
Rule: A rule in a GDL description starts with the <= operator, follows it with a sentence (whatever is implied by the rule), and then has a body consisting of literals.
Literal: A literal is a condition for a rule. This can be a sentence; a negated sentence; a declaration that two terms are distinct; or a disjunction of other literals. These last three get their own types in GGP-Base: GdlNot, GdlDistinct, and GdlOr, respectively.
And a few examples:
terminalcan be either a constant/term or a sentence/proposition, depending on the context. The constant
terminalis the name of the sentence
(init (cell 1 1 b))is a sentence/relation. Its name is
init. Its arity is one, because the only term in its body is the function
(cell 1 1 b). This function in turn has arity three, and its body consists of the constants
(true (cell 1 1 b))is also a sentence/relation. Its name is
true. Note that
(cell 1 1 b)is still just a function, even though it looks like we're talking about its truth value.
(line ?player)could be either a function/term or a sentence/relation, depending on the context and the game description it appears in. If it appears on its own in the head or tail of a rule, it's a sentence. If it is part of a larger sentence, such as
(next (line ?player)), then it's a function instead. Whichever it is, it should be consistently one or the other throughout the game description.
(distinct ?x king)is a literal/distinct, and its two terms are a variable and a constant, respectively. Note that it doesn't get to count as a sentence; instead, it's considered just a language construct.
(Edited on 8/25/13: Added an example of an ambiguous sentence/function.)