%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%                LATEX UTILITIES FOR AUTHORS
%
%           THE CHICAGO JOURNAL OF THEORETICAL COMPUTER SCIENCE
%
%                          MIT Press
%
%                          (CJauthor)
%
% File name: cjauthor.tex
%
% Editor: Michael J. O'Donnell
%
% The University of Chicago
% Department of Computer Science
% Ryerson Hall, 1100 E. 57th St.
% Chicago, IL 60637 USA
%
% (312) 702-1269
%
% odonnell@cs.uchicago.edu
%
% COPYRIGHT in CJauthor as a whole held by Michael J. O'Donnell
% (portions of this document are quoted or adapted with permission
% from other authors who may claim copyrights). The editor and the
% contributing authors grant permission to use, copy, redistribute,
% and modify CJauthor freely under the terms of the GNU Emacs General
% Public License (see e.g. the GNU Emacs Manual, Richard Stallman,
% 1985). Essentially, you may use CJauthor however you wish, as long
% as you acknowledge the authorship and copyright, and pass on with
% every copy of CJauthor or derivative work the full license granted
% to you.
%
% Initial version: 23 June 1994; revised 28 June 1995
%
% Description: The LaTeX commands in this file are intended to be used
% by authors to help them prepare articles for submission to the
% Chicago Journal of Theoretical Computer Science, and to revise
% articles during the editing process. They are not always the same as
% commands in CJstruct, which are intended to be used by copy editors
% to prepare the final versions of published articles.
%
% CJauthor is not intended to provide a style, nor even to be a
% stable or coherent package. Rather, it is a collection of individual
% solutions to formatting/markup problems. I do not recommend, for
% example, that you \input{cjauthor}. Rather, copy and modify those
% definitions that are helpful for a particular task. CJauthor will
% change to reflect the most useful collection that I can produce at a
% given moment. There is no systematic control of versions. Entries
% are not tested systematically.
%
% The Chicago Journal of Theoretical Computer Science is a journal of
% peer-reviewed research published by MIT Press in LaTeX source form
% on the InterNet.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%               STRUCTURAL SUPPORT FOR MATHEMATICAL FORMULAE
%
% The command \mathstyleclass, adapted from the command \newfontobj
% contributed by Stuart A. Kurtz, allows a particular type style to be
% associated with a meaningful class of mathematical objects, so that
% short textual names for individual objects are set consistently in
% the given type style, while the descriptions of the objects in
% mathematical formulae refer to the relevant mathematical concept,
% rather than the type style. \mathstyleclass provides a uniform
% solution to the annoying problem of providing different versions of
% symbols for the 4 different contexts of math mode (Display, Text,
% Script, and Scriptscript).
%
% \mathstyleclass{\name}{\flavor}{\style}
%
% declares \name to be the name of a class of mathematical objects,
% individuals in which are to be described in the type style \style
% (\rm, \it, \bf, etc.), and symbols for which are to have the math
% mode grammatical flavor \flavor (\mathord, \mathop, \mathbin, etc.).
% The flavor does not affect the look of the symbol, but it determines
% the glue that connnects it to surrounding symbols, and is very
% important if the symbol is to appear correctly in a variety of
% contexts in different formulae.
%
% After the declaration above, the form \name{text} in a mathematical
% formula expands to a mathematical symbol with math mode flavor
% \flavor, represented by the given text set in horizontal mode in
% type style \style.
%
% Warning: two names with flavor \mathord in the same type style tend
% to blend together visually when placed contiguously in a formula. If
% individual symbols are named by short texts rather than single
% characters, then multiplication should be represented by some
% symbol, or by a space, rather than by concatenation of the
% multiplicands.
%
% EXAMPLES:
%
% \mathstyleclass{\theory}{\mathord}{\bf}
%
%   \( \theory{Peano}\models x+y=y+x \)
%
%
% \mathstyleclass{\universe}{\mathord}{\Bbb}
%
%   \( \universe{N}\subseteq\universe{Z} \)
%
%
% \mathstyleclass{\moment}{\mathord}{\rm}
% \mathstyleclass{\timerelation}{\mathrel}{\it}
%
%   \( \moment{birth}\timerelation{precedes}\moment{death} \)
%
%
\newcommand{\mathstyleclass}[3]{%
  \newcommand{#1}[1]{% #2{\mathchoice{{\mbox{#3##1\/}}}%
    {{\mbox{#3##1\/}}}% {{\mbox{\scriptsize#3##1\/}}}%
    {{\mbox{\tiny#3##1\/}}}% }% } }
%
% The following commands are taken from the first publishe article.
%
% \setsize{<set>} denotes the size of the given set as |<set>|. The
% use of \left and \right produces appropriate spacing.
%
\newcommand{\setsize}[1]{\left|#1\right|}
%
% \condval{<exp>} produces a two-dimensional presentation of a
% conditional expression, typically used as the right-hand side of a
% definition. The <exp> argument is of the form
%
% <val1> & <cond1> \\
% <val2> & <cond2> \\
%
%        .
%        .
%        .
%
% <valn> & <condn>
%
% where each <vali> is the value to be used on condition <condi>. The
% final condition, <condn>, will often be \mbox{otherwise}.
%
\newcommand{\condval}[1]{\left\{\begin{array}{ll}#1\end{array}\right.}
%
% \setofm{<member>}{<condition>} denotes the set of all values of the
% form <member>, satisfying the given <condition>, using a vertical
% bar as the separator. The idea is taken from The TeXbook, by Donald
% Knuth.
%
\newcommand{\setofm}[2]{\{\,#1\mid#2\,\}}
%
% \setofc is just like \setofm, but it uses a colon as separator.
%
\newcommand{\setofc}[2]{\{\,#1:#2\,\}}
%
% \bigsetofm and \bigsetofc are just like \setofm and \setofc, except
% that the set braces and the vertical bar are made larger. The larger
% forms should be used whenever one of the arguments contains normal
% size set braces. The idea is taken from The TeXbook, by Donald
% Knuth.
%
\newcommand{\bigsetofm}[2]{\bigl\{\,#1\bigm|#2\,\bigr\}}
\newcommand{\bigsetofc}[2]{\bigl\{\,#1:#2\,\bigr\}}
%
% \funcspace{<domain>}{<range>} uses an arrow to denote the functions
% from <domain> to <range>. For appropriate spacing it is important
% that the arrow be marked as \mathbin.
%
\newcommand{\funcspace}[2]{#1\mathbin{\rightarrow}#2}
%
% \graphedge{<head>}{<tail>} uses an arrow to denote an edge in a
% graph from <head> to <tail>. It looks a lot like \funcspace, but the
% arrow is marked as \mathord for closer spacing.
%
\newcommand{\graphedge}[2]{#1\mathord{\rightarrow}#2}
%
% \oftype{<object>}{<type>} denotes that <object> belongs to <type> in
% the form <object>:<type>. <type> is usually a functionspace, denoted
% in the form of \functionspace above. It is important to mark the
% colon as \mathpunct (instead of its usual marking of \mathrel) to
% avoid overwide spacing.
%
\newcommand{\oftype}[2]{#1\mathpunct{:}#2}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
