# Glossary

## A

Artificial Intelligence
Artificial intelligence (also known as machine intelligence and often abbreviated as AI) is intelligence exhibited by any manufactured. For example, AI scientists are working on speech recognition.
Algorithm
A finite set of well-defined instructions for accomplishing some task which, given an initial state, will terminate in a corresponding recognisable end-state.
Argument
An expression passed to a procedure (same as a parameter).
Assertion
A programming language construct that checks whether an expression is true. Assertions are written so that they should always evaluate to true. If an assertion is false, it indicates a possible bug in the program. This is called an "assertion failure".
Axioms
An assumption or statement that is assumed to be true, and is accepted without proof.

## B

Backtrack mechanism
The process of returning to a previous state in a computation, so that an alternative strategy can be tried.
Body
The second part of a rule in Prolog, that is found after the :- symbol.
Branch
A point in the instruction stream of a computer program where the address of the next instruction is not the next sequential storage location. A branch may be unconditional (implying that the branch is always taken) or conditional, implying that the decision to take the branch or not depends on some condition that must be evaluated.

## C

Clausal form
A normal form, which is a subset of first order logic, in which a sentence is defined by an universal prefix (a string of universal quantifiers) and a matrix (a quantifier-free conjunction of a clause).
Clause
A disjunction of one or more literals. In Prolog, it is a unit of information in a Prolog program ending with a full stop. A clause may be a fact or a rule.
Conditional clause
All definite clauses that are not positive unit clauses.
Conjunct
In a formula of the form A /\ B, A and B are conjuncts.
Connectives
Logical connectives, also known as logical connectors and sometimes logical constants, serve to connect statements into more complicated compound statements, they include /\, \/.
Constant
Represent objects in the domain
Constraint
A limitation of the possible values that can be taken.

## D

Data base
See Program.
Declarative programming languages
A high-level language that describes a problem, rather than defining a solution.
Definite clause
A clause that contains exactly one positive literal and any number of negative literals.
Definite program
A program consisting of only definite clauses.
Definition
A set of definite clauses whose positive literals all share the same predicate symbol.
Depth First Search
An algorithm for traversing or searching a tree, tree structure, or graph. Intuitively, you start at the root (selecting some node as the root in the graph case) and explore as far as possible along each branch before backtracking.
Disjunct
In a formula of the form A \/ B, A and B are disjuncts.
Distributed computers
The process of aggregating the power of several computing entities to collaboratively run a single computational task in a transparent and coherent way, so that they appear as a single, centralised system.
Domain
Any set of our choice, for example the set of natural numbers.
Dynamic
The ability to allocate the memory for objects, created during execution of the program.

## E

Empty clause
A clause that contains no literals.

## F

Facts
A statement about the relationship between objects. For Prolog definition see Positive unit clauses.
First order logic
An extension of propositional logic, that considers whether things are true or false in a domain.

## G

Goal
A subproblem that the Prolog system must try to satisfy.

## H

Head
The first part of a rule in Prolog, that is found before the :- symbol.
Horn clauses
All types of clauses that are not indefinite.

## I

Indefinite clause
A clause with at least two positive literals.
Indefinite program
Any program that does not consist solely of definite clauses.
Inference
Tells us how one proposition can follow from others.
Interpreter
A program that translates and executes source code one line at a time.

Knowledge base
See Program.

## L

Lambda - calculus
A formal system designed to investigate function definition, function application and recursion.
Lambda - term
A variable, a lambda abstraction, an application, or a parenthesised lambda term.
Literal
A formula that is either atomic or negated atomic, e.g. X, Z.
Logic
A system of reasoning OR the branch of philosophy that analyses inference.
Logical deduction
A procedure of deriving a new statement from the list of known rules and statements.

## M

Machine learning
The ability of a machine to improve its performance based on previous results.
Memory management
How memory is used and allocated for different functions.
Meta programming
Meta programming is the writing of programs that write or manipulate other programs (or themselves) as their data, or that do part of the work that is otherwise done at runtime during compile time. This allows programmers to produce a larger amount of code and get more done in the same amount of time as they would take to write all the code manually.

## N

Negative clause
A clause with no positive literals and any number of negative literals.
Non-horn clause
Indefinite clauses.

## O

Object Orientated Language
A programming language that that allows or encourages, to some degree, object-oriented programming methods.
Objects
Run-time entities that contain both data and operations.

## P

Paradigm
A thought pattern in any scientific discipline.
Parallelism
The simultaneous execution of the same task (split up and specially adapted) on multiple processors in order to obtain results faster.
Pattern matching
A programming method for matching a list against a template.
Positive unit clause
A clause with no negative literals.
Predicate
A function that returns true or false.
Primitives
Fundamental operations from which more complex operations can be constructed.
Procedure
See Definition.
Program
A set of non-negative clauses OR a collection of facts, rules, and procedures organised into schemas.
Program clause
See Clause.
Propositional logic
A branch of symbolic logic dealing with propositions as units and with their combinations and the connectives that relate them.

## Q

Quantifier
Make an assertion about a formula applied over all objects in the domain.
Query
See negative clause.
Question
A sequence of one or more goals.

## R

Recursion
A programming technique in which a function may call itself.
Resolution
A rule of inference, that is used to prove theorems in a purely mechanical way from axioms. It is designed to work with formulae in clausal form.
Rule
A rule of inference, an axiom or a theorem. For Prolog definition see Definite clauses.
Rule base
See Program.
Rules of deduction
See Resolution.

## S

Sentence
An equation with no free variables, ie all variables are bounded.
Syntax
A systematic statement of the rules governing the properly formed formulas of a logical system.

## T

Term
A constant symbol, a variable symbol or an n-ary function symbol applied to a tuple of n terms.
Tree
A data structure that emulates a tree structure with a set of linked nodes. Each node has zero or more child nodes, which are below it in the tree.

## U

Unification
The pattern matching technique used by Prolog to match goals and sub-goals in a program.
Unit clause
A clause with exactly one literal, it can be a positive or a negative unit clause.
Universal matrix
A quantifier free conjunction of a clause.
Universal prefix
A string of universal quantifiers.

## V

Variable
A sequence of alphanumeric characters that refer to objects in the domain.