Note the top-most function frame containing initial definitions of the
feature extractors {\tt a,b,c,d}. These are the {\em apriori}
definitions of these feature extractors which initialised the system.
Well-defined \fx\ (e.g. {\tt sin, cos, \ldots}) could be included in
these {\em apriori} definitions. However, note that if these
definitions were somehow inappropriate to the current domain, they
could be changed.  For example, consider the Prolog list processing
predicate {\tt member/2}.  This predicates has at least two
definitions: one that backtracks to find all solutions and one that
succeeds only once:

\footnotesize
\begin{alltt}
% backtracks
memberA(H,[H|_]).
memberA(X,[_|T]) :- memberA(H,T).

% only succeeds once
memberB(H,[H|_]) :- !.
memberB(X,[_|T]) :- memberB(H,T).
\end{alltt}
\normalsize

The semantics of a rule could be crucially dependent on which {\tt
member/2} is chosen. The backtracting {\tt memberA/2} could permit a
single rule to activate multiple sub-goals while a non-backtracking
{\tt memberB/2} may just active one, highest priority, sub-goal.  If
an expert's initial understanding was that of (e.g.) {\tt memberA/2},
and they wrote rules based on that understanding, then a gloabl
conversion to {\tt memberB/2} might have strange side-effects.

Theory    ::= Lexicon Objects Rules Preferences
Lexicon   ::= {Class} 

Class     ::= Name Parents {Attribute} {Operation}
Parents   ::= {Class} 

Attribute ::= Type Default 
Type      ::= Class
Default   ::= ...

Operation ::= Signature Body
Signature ::= Name 


\begin{prolog}
proofsPrefer(Proofs,Proof,Edge1,Edge2,Edge1) 	
if	heuristicCost(Proofs,Proof,Edge1,C1) and
	heuristicCost(Proofs,Proof,Edge2,C2) and
	muchBigger(C2,C1)
then	cull(Edge2).
.


worldsPrefer(World1,World2)
if	cover(World1,C1) and
	cover(World2,C2) and
	bigger(C1,C2)
then	cull(World2).



World         ::= world _id if  Env then {Proof}+
Proof         ::= explains output Vertex using inputs {Vertex}+
                  via [Path]
Path          ::= contains {Vertex}+ forbids {Vertex}+ assuming Vertex

Route [via {Vertex}+ forbidding {Vertex}+   
ProofsPrefer  := 
RDF           ::= RDR FunctionFrame

PSM           ::= RDF
\end{prolog}
\begin{flushright}
{\em 
If you only have a hammer, you tend to\\
see every problem as a nail. -- Maslow\\

~\\

Hammers and nails can be used a lot.\\
-- Tim \& Ashesh}
\end{flushright}
