Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!seismo!mcvax!ukc!eagle!icdoc!cdsm From: cdsm@doc.ic.ac.uk (Chris Moss) Newsgroups: comp.lang.prolog Subject: Prolog terminology Message-ID: <505@ivax.doc.ic.ac.uk> Date: Mon, 27-Jul-87 06:14:16 EDT Article-I.D.: ivax.505 Posted: Mon Jul 27 06:14:16 1987 Date-Received: Thu, 30-Jul-87 07:04:00 EDT Sender: cdsm@doc.ic.ac.uk Reply-To: cdsm@doc.ic.ac.uk (Chris Moss) Organization: Dept. of Computing, Imperial College, London, UK. Lines: 154 We would like to encourage some discussion of standardization issues on the net. Terminology is always a contentious issue, and so appended here is a reprint of one of the BSI documents on terminology. Comments please! I suggest you post issues directly to the network, and to help the discussion, please (1) quote only as much of the definitions as are necessary to make your point (2) remember that definitions hang together. Check the ramifications of your point on other definitions. (3) be constructive, suggest replacements if possible. Sorry for the length of this posting. I'm going on holiday next week so won't respond immediately. Chris Moss. --------------------------------------------------------------------- THE TERMINOLOGY OF PROLOG BSI/IST/5/15 PS/135 Edited by N D North, National Physical Laboratory, Teddington, Middlesex, England NOTE - This is a working document and replaces PS/65/1. Features described in it may well be changed or even not appear in an eventual standard. Introduction This is the terminology to be adopted in standard Prolog. The format is modelled on that of ISO Standards Handbook 10, Data Processing - Vocabulary. Words and phrases that are defined in the glossary are printed in italics when they are used in definitions (in the printed version). Suggestions for additions and corrections are welcomed. Definitions argument A term which is associated with a literal or compound term. arity A non-negative integer associated with a functor or predicate. atom One of a set of unstructured objects whose only property is that equality of two elements can be determined. NOTE - Most Prologs give an atom some structure by introducing a built-in predicate which relates the atom to the sequence of symbols comprising its name. body A goal, distinguished by its context as part of a rule. bound A variable is bound with respect to a substitution unless the substitution maps the variable to itself. built-in predicate A procedure whose definition is part of the Prolog system. NOTE - A built-in predicate cannot be redefined. clause A clause is a fact or a rule compound term A functor of arity N together with a sequence of N arguments. constant An atom, a number, or a string. to consult To read in and store a program, executing any directives. database The set of procedures with respect to which resolution is performed. directive A goal given as input to the top level, interactively or in a program being consulted. Variable substitutions that are found while executing the directive are not output. empty list A distinguished atom. Variously written as "[]", (), <>, nil. fact A literal which is known to be true. There is implicit universal quantification over any variables in the fact. functor A functor symbol together with an arity. functor symbol An atom, associated with a functor. goal A literal, or a disjunction or conjunction of goals. ground A term is ground if it contains no uninstantiated variables. A term is ground with respect to a substitution if repeated application of the substitution yields a ground term. head (of a rule) A literal, distinguished by its context. head (of a list) The first argument of a non-empty list. instantiated A variable is instantiated with respect to a substitution if repeated application of the substitution yields a constant or a compound term. list Either the empty list or a non-empty list. list constructor A distinguished functor, of arity two, used for constructing lists. Usually written as '.' literal A predicate of arity N and a sequence of N arguments. most general unifier The unique minimal substitution which unifies a set of terms. non-empty list A compound term whose functor is the list constructor and which has two arguments, the second of which is a list. number An integer or floating point number. predicate A predicate symbol together with an an arity. predicate symbol An atom, associated with a predicate. procedure A sequence of clauses defining a predicate. The predicate symbol and arity of all facts and heads of rules in the procedure are those of the predicate being defined. program A sequence of clauses and directives. query A goal given as interactive input to the top level. Variable substitutions found while executing the query are output. resolution A method for finding a substitution which, when applied to a set of literals, makes their conjunction true with respect to a set of clauses. rule Syntactically a head and a body. Declaratively a statement that, if the body is true for some substitution, then the head is also true for that substitution. string A sequence of characters. NOTE - Strings are implemented as a separate data type. substitution A mapping from variables to terms. By extension a substitution acts on a term by acting on each variable in the term. tail The second argument of a non-empty list. term A constant, a compound term or a variable. to unify To find a substitution which, when repeatedly applied to a set of terms, makes them all identical. uninstantiated A variable is uninstantiated when it is not instantiated. variable An object which can represent any term. ** End of Terminology list