Midterm 1 Definitions Flashcards
abstract syntax tree (AST)
A tree representation of a program that is abstracted from the details of a particular programming language and its surface syntax.
association list
in Lisp, a list composed of pairs of a symbolic name and associated value, used to represent variable bindings, substitutions, and data sets.
atom
- in propositional or predicate calculus, a predicate symbol with the appropriate number of arguments. For example, MORTAL(Socrates) is an atom, where MORTAL is the predicate and Socrates is a constant term that is its argument. Also, atomic formula.
- in Lisp, data that is not a cons cell, such as a symbol or a number.
backchaining
a proof that starts with the conclusion and searches for facts or rules that support the conclusions, recursively.
backtrack
in a tree search, to move back from the node currently being examined to its parent.
base case
A simple case that can be solved easily, without recursion.
binary tree
A tree in which each node has at most two children.
Contents and left and right links.
Node = cons, binary links = first and rest.
E.g. arithmetic expressions
binary search tree (BST)
A binary tree in which all elements less than the current element are to its left and all elements greater are to its right.
binding
an association of a name with a value.
box
in logic or resolution theorem proving, the empty clause; from its mathematical symbol, &box;
False, contradiction, empty.
branching factor
in a search tree, the number of children of a given node. Usually, the branching factors of individual nodes will vary.
combinatoric explosion
the rapid growth of the number of possibilities to be explored in a search, often exponential because it is the product of the number of possible choices at each level of the search tree.
The rapid growth of combinations of possible moves.
combine
an operator that is used to combine elements in an accumulation
conjunctive normal form (CNF)
a canonical form of writing predicate calculus formulas as a conjunction (AND) of clauses (disjunction (OR) of literals); used in resolution theorem proving.
consistent
of a logical formula, having some interpretation that makes it true.
constant folding
performing at compile time an operation whose operands are constant, giving a new constant result.
constructive
proving that a formula is consistent by constructing an element that makes it true.
Constructive proof: given a theorem ∀x∃y P(x, y), prove it by constructing a y that satisfies the theorem.
During program synthesis, witnesses are constructed for existential terms. The witnesses correspond to subroutines in the SPICE library (concrete terms).
specification → theorem → proof → program
decidable
of a theorem proving or decision making task, able to be decided one way or the other (e.g., proved or disproved) within a finite time bound that can be determined from the size of the input problem. cf. undecidable.
depth
depth of a tree in number of links below the root.
depth-first search (DFS)
a search in which children of a node are considered (recursively) before siblings are considered
design pattern
a pattern that describes a set of similar programs.
destructive
describes a function that modifies its arguments.
eval
Lisp / Clojure function that evaluates an expression.
exists
the logical quantifier ∃, pronounced “there exists” or “for some”.
fixpoint
a value of a function where f(x) = x, i.e. applying a function such as optimization to an expression no longer can do any more.
for all
the logical quantifier ∀, describing something that is true for all possible values of the quantified variable.
functional program
a program in which all computation is performed by functions and there are no side-effects.