% -*- Mode: TeX -*-

%%%% ===== References =====

%%% Books

\def\CLtL{{\it Common Lisp: The Language\/}}
\def\CLtLTwo{{\it Common Lisp: The Language, Second Edition\/}}

\def\RandomHouseDictionary{{\it The Random House Dictionary of 
 the English Language, Second Edition, Unabridged\/}}

\def\WebstersDictionary{{\it Webster's Third New International Dictionary
 the English Language, Unabridged\/}}

\def\CondSysPaper{{\it Exceptional Situations in Lisp\/}}

\def\GabrielBenchmarks{{\it Performance and Evaluation of Lisp Programs\/}}

\def\KnuthVolThree{{\it The Art of Computer Programming, Volume 3\/}}

\def\MetaObjectProtocol{{\it The Art of the Metaobject Protocol\/}}

\def\AnatomyOfLisp{{\it The Anatomy of Lisp\/}}

\def\FlavorsPaper{{\it Flavors: A Non-Hierarchical Approach to Object-Oriented Programming\/}}

\def\LispOnePointFive{{\it Lisp 1.5 Programmer's Manual\/}}

\def\Moonual{{\it Maclisp Reference Manual, Revision~0\/}}

\def\Pitmanual{{\it The Revised Maclisp Manual\/}}

\def\InterlispManual{{\it Interlisp Reference Manual\/}}

\def\Chinual{{\it Lisp Machine Manual\/}}

\def\SmalltalkBook{{\it Smalltalk-80: The Language and its Implementation\/}}

\def\XPPaper{{\it XP: A Common Lisp Pretty Printing System\/}}

%%% Standards

\def\IEEEFloatingPoint{{\it IEEE Standard for Binary Floating-Point Arithmetic\/}}

\def\IEEEScheme{{\it IEEE Standard for the Scheme Programming Language\/}}

\def\ISOChars{{\rm ISO 6937/2}}

%%% Papers

%This one should be used like
%    ``{\PrincipalValues}''
% or ``{\PrincipalValues},''
% or ``{\PrincipalValues}.'' 
\def\PrincipalValues{Principal Values and Branch Cuts in Complex APL}

\def\RevisedCubedScheme{Revised$^3$ Report on the Algorithmic Language Scheme}

\def\StandardLispReport{Standard LISP Report}

\def\NILReport{NIL---A Perspective}

\def\SOneCLPaper{S-1 Common Lisp Implementation}

\def\CLOSPaper{Common Lisp Object System Specification}

%%%% ===== Languages, Operating Systems, etc. =====

\def\clisp{{\rm Common Lisp}}%Use in middle of sentence.
\def\Lisp{{\rm Lisp}}
\def\maclisp{{\rm MacLisp}}
\def\apl{{\rm APL}}
\def\lmlisp{{\rm ZetaLisp}}
\def\scheme{{\rm Scheme}}
\def\interlisp{{\rm InterLisp}}
\def\slisp{{\rm Spice Lisp}}
\def\newlisp{{\rm Nil}}
\def\sOnelisp{{\rm S-1 Common Lisp}}
\def\fortran{{\rm Fortran}}
\def\stdlisp{{\rm Standard Lisp}}
\def\psl{{\rm Portable Standard Lisp}}
\def\Unix{{\rm Unix}}
\def\algol{{\tt Algol}}
\def\TopsTwenty{{\tt TOPS-20}}

%%%% ===== Important names =====

%\def\form{\term{form}}   % No longer used. -kmp 7-Feb-92

\def\t{\misc{t}}
\def\nil{\misc{nil}}
\def\empty{{\tt ()}}

\def\allowotherkeys{{\keyword \&allow-other-keys}}
\def\aux{{\keyword \&aux}}
%\def\body {\tt\&body}
\def\body{{\keyword \&body}}
\def\environment{{\keyword \&environment}}
%\def\key #1{\tt\&key #1}
\def\key{{\keyword \&key}}
%\def\opt  {\tt\&optional}
\def\opt{{\keyword \&optional}}
\def\optional{{\keyword \&optional}}
%\def\rest {\tt\&rest}
\def\rest{{\keyword \&rest}}
\def\whole{{\keyword \&whole}}

%%%% ===== General Phrases =====

\def\etc.{\i{etc.}}
\def\ie {\i{i.e.}, }
\def\eg {\i{e.g.}, }

%%%% ===== Domain-specific Phrases =====

\def\defmethod{defmethod}
%\def\MOP:{Meta-Object Protocol:}  % No longer used. -kmp 6-Aug-91
\def\CLOS{object system}
\def\OS{object system}

\def\SETFof#1{\macref{setf} of \misc{#1}}
\def\objectoftype #1{\term{object} of \term{type} \f{#1}}
\def\objectsoftype #1{\term{objects} of \term{type} \f{#1}}
\def\Objectsoftype #1{\term{Objects} of \term{type} \f{#1}}
\def\oftype #1{of \term{type} \typeref{#1}}
\def\ofclass #1{of \term{class} \typeref{#1}}
\def\oftypes #1{of \term{type} \typeref{#1} or a \term{subtype} of \term{type} \typeref{#1}}
\def\ofmetaclass #1{of \term{metaclass} \typeref{#1}}
\def\thetype #1{the \term{type} \typeref{#1}}
\def\Thetype #1{The \term{type} \typeref{#1}}
\def\thetypes #1{the \term{types} \typeref{#1}}
\def\Thetypes #1{The \term{types} \typeref{#1}}
\def\theclass #1{the \term{class} \typeref{#1}}
\def\Theclass #1{The \term{class} \typeref{#1}}
\def\thevariable #1{the \term{variable} \varref{#1}}
\def\Thevariable #1{The \term{variable} \varref{#1}}
\def\thevariables #1{the \term{variables} \varref{#1}}
\def\Thevariables #1{The \term{variables} \varref{#1}}
\def\themacro #1{the \funref{#1} \term{macro}}
\def\Themacro #1{The \funref{#1} \term{macro}}
\def\theinitkeyarg#1{the \kwd{#1} initialization argument}
\def\Theinitkeyarg#1{The \kwd{#1} initialization argument}
\def\theinitkeyargs#1{the initialization arguments named \kwd{#1}}
\def\Theinitkeyargs#1{The initialization argument named \kwd{#1}}
\def\thekeyarg#1{the \kwd{#1} \term{argument}}
\def\Thekeyarg#1{The \kwd{#1} \term{argument}}
\def\thefunction #1{the \term{function} \funref{#1}}
\def\Thefunction #1{The \term{function} \funref{#1}}
\def\thefunctions #1{the \term{functions} \funref{#1}}
\def\Thefunctions #1{The \term{functions} \funref{#1}}
\def\thespecform #1{the \specref{#1} \term{special form}}
\def\Thespecform #1{The \specref{#1} \term{special form}}
\def\thespecforms #1{the \specref{#1} \term{special forms}}
\def\Thespecforms #1{The \specref{#1} \term{special forms}}
\def\thespecop #1{the \specref{#1} \term{special operator}}
\def\Thespecop #1{The \specref{#1} \term{special operator}}
\def\Thespecforms #1{The \specref{#1} \term{special forms}}
\def\theGF #1{the \term{generic function} \funref{#1}}
\def\TheGF #1{The \term{generic function} \funref{#1}}
\def\subtypeof #1{\term{subtype} of \term{type} \typeref{#1}}
\def\subtypesof #1{\term{subtypes} of \term{type} \typeref{#1}}
\def\Subtypesof #1{\term{Subtypes} of \term{type} \typeref{#1}}
\def\supertypeof #1{\term{supertype} of \term{type} \typeref{#1}}
\def\supertypesof #1{\term{supertypes} of \term{type} \typeref{#1}}
\def\Supertypesof #1{\term{Supertypes} of \term{type} \typeref{#1}}
\def\subclassof #1{\term{subclass} of \term{class} \typeref{#1}}
\def\subclassesof #1{\term{subclasses} of \term{class} \typeref{#1}}
\def\Subclassesof #1{\term{Subclasses} of \term{class} \typeref{#1}}
\def\superclassof #1{\term{superclass} of \term{class} \typeref{#1}}
\def\superclassesof #1{\term{superclasses} of \term{class} \typeref{#1}}
\def\Superclassesof #1{\term{Superclasses} of \term{class} \typeref{#1}}
\def\therestart #1{the \misc{#1} \term{restart}}
\def\Therestart #1{The \misc{#1} \term{restart}}
\def\thepackage #1{the \packref{#1} \term{package}}
\def\Thepackage #1{The \packref{#1} \term{package}}
\def\instofclass #1{\term{instance} of the \term{class} \typeref{#1}}
\def\instsofclass #1{\term{instances} of the \term{class} \typeref{#1}}
\def\Instsofclass #1{\term{Instances} of the \term{class} \typeref{#1}}
% \def\instanceofclasses #1{\term{instance} of the \term{class} \typeref{#1} 
% 		           or its \term{subclasses}}
% \def\instancesofclasses #1{\term{instances} of the \term{class} \typeref{#1} 
% 		           or its \term{subclasses}}
% \def\Instancesofclasses #1{\term{Instances} of the \term{class} \typeref{#1} 
% 		           or its \term{subclasses}}
\def\instanceofclasses #1{\term{generalized instance} of \theclass{#1}}
\def\instancesofclasses #1{\term{generalized instances} of \theclass{#1}}
\def\Instancesofclasses #1{\term{Generalized instances} of \theclass{#1}}
\def\Theloopconstruct #1{The \macref{loop} \loopref{#1} construct}
\def\theloopconstruct #1{the \macref{loop} \loopref{#1} construct}
\def\Theloopkeyword #1{The \macref{loop} \loopref{#1} keyword}
\def\theloopkeyword #1{the \macref{loop} \loopref{#1} keyword}

\def\thevalueof #1{the \term{value} of \misc{#1}}
\def\Thevalueof #1{The \term{value} of \misc{#1}}
\def\thevaluesof #1{the \term{values} of \misc{#1}}
\def\Thevaluesof #1{The \term{values} of \misc{#1}}

\def\formatOp#1{{\dummy}\hbox{{\tt ~#1}}}
\def\formatdirective#1{{\dummy}\hbox{{\tt ~#1}} format directive}

\def\NamedTypePredicate#1#2#3{\funref{#1} returns \term{true} if \param{#2} is \oftype{#3};
otherwise, it returns \term{false}.}
\def\TypePredicate#1#2{Returns \term{true} if \param{#1} is \oftype{#2};
otherwise, returns \term{false}.}
\def\NamedPredicate#1#2#3{\funref{#1} returns \term{true} if \param{#2} is #3;
otherwise, returns \term{false}.}
\def\Predicate#1#2{Returns \term{true} if \param{#1} is #2;
otherwise, returns \term{false}.}

\def\Shouldcheckplus#1{Should signal an error \oftype{program-error} 
		       if at least one \param{#1} is not supplied.}
\def\Checktype#1#2{Signals an error \oftype{type-error} if \param{#1} is not #2.}
\def\Checktypes#1#2{Signals an error \oftype{type-error} if #1 are not #2.}
\def\Checknottype#1#2{Signals an error \oftype{type-error} if \param{#1} is #2.}
\def\Checknottypes#1#2{Signals an error \oftype{type-error} if #1 are #2.}
\def\Checkanytype#1#2{Signals an error \oftype{type-error} if any \param{#1} is not #2.}
\def\Shouldchecktype#1#2{Should signal an error \oftype{type-error}
			      if \param{#1} is not #2.}
\def\Shouldcheckanytype#1#2{Should signal an error \oftype{type-error}
			      if any \param{#1} is not #2.}
\def\Lazychecktype#1#2{Should be prepared to signal an error \oftype{type-error}
			 if \param{#1} is not #2.}
\def\Lazychecktypes#1#2{Should be prepared to signal an error \oftype{type-error}
			 if #1 are not #2.}
\def\Lazychecknottype#1#2{Should be prepared to signal an error \oftype{type-error}
			 if \param{#1} is #2.}
\def\Lazycheckanytype#1#2{Should be prepared to signal an error \oftype{type-error}
			    if any \param{#1} is not #2.}
\def\Lazycheckanynottype#1#2{Should be prepared to signal an error \oftype{type-error}
			    if any \param{#1} is #2.}
\def\checktype#1#2{signals an error \oftype{type-error} if \param{#1} is not #2.}
\def\checkanytype#1#2{signals an error \oftype{type-error} if any \param{#1} is not #2.}
\def\shouldchecktype#1#2{should signal an error \oftype{type-error}
			   if \param{#1} is not #2.}
\def\shouldcheckanytype#1#2{should signal an error \oftype{type-error}
			      if any \param{#1} is not #2.}
\def\lazychecktype#1#2{should be prepared to signal an error \oftype{type-error}
			 if \param{#1} is not #2.}
\def\lazycheckanytype#1#2{should be prepared to signal an error \oftype{type-error}
			    if any \param{#1} is not #2.}
\def\Default#1{The default is #1.}
\def\DefaultFor#1#2{The default for #1 is #2.}
\def\DefaultIn#1#2{The default in #1 is #2.}
\def\Defaults#1#2{The defaults for #1 are #2, respectively.}
\def\DefaultEach#1#2{The defaults for each of #1 is #2.}
\def\DefaultsIn#1#2#3{The defaults for #2 in #1 are #3, respectively.}
\def\HairyDefault{Complicated defaulting behavior; see below}

\def\MentionMetaObjects#1#2{\issue{SLOT-VALUE-METACLASSES:LESS-MINIMAL}
  Although no \term{implementation} is required to do so,
  implementors are strongly encouraged to implement \thefunction{#1} using 
  the \term{function} \f{#2} described in the \term{Metaobject Protocol}.
\endissue{SLOT-VALUE-METACLASSES:LESS-MINIMAL}}
