%%% $Id: qsymbols.sty,v 1.5 1994/10/28 18:19:36 kris Exp $
%%%
%%% `Quoted math symbol abbreviations' package for LaTeX 2e: macros.
%%% Copyright (c) 1994   Kristoffer H. Rose   <kris@diku.dk>
%%%
%%% This package is free software; you can redistribute it and/or modify
%%% it under the terms of the GNU General Public License as published by the
%%% Free Software Foundation; either version 2 of the License, or (at your
%%% option) any later version.
%%%
%%% This package is distributed in the hope that it will be useful, but
%%% WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
%%% or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
%%% for more details.
%%%
%%% You should have received a copy of the GNU General Public License along
%%% with this package; if not, write to the Free Software Foundation, Inc.,
%%% 675 Mass Ave, Cambridge, MA 02139, USA.
%%%
\NeedsTeXFormat{LaTeX2e}

\def\tmp#1Revision: #2 $,#3Date: #4 #5 ${%
  \ProvidesPackage{qsymbols}[#4 Quoted math symbol abbreviations v.#2]
  \def\qsymbolsversion{#2}\def\qsymbolsdate{#4}}
\tmp$Revision: 1.5 $,$Date: 1994/10/28 18:19:36 $

%%% Process Options such that \xyloaded is indicator...

\DeclareOption{xy}{\edef\@tmp{\catcode64=\the\catcode64}\makeatother
  \input{xy}\xyoption{arrow}\xyoption{cmtip}\@tmp}

\ProcessOptions

%%% Import of symbols.

\RequirePackage{stmaryrd}
\let\blacktriangle=\undefined % Sic.
\RequirePackage{amssymb,amsbsy}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% SETUP.

%%% Activate ` and " in math mode.

\def\tmp{\futurelet\tmp\qsym@}
{\catcode`\`=\active \global\let`=\tmp}
\mathcode`\`="8000

\def\tmp#1"{\Arr#1 }
{\catcode`\"=\active \global\let"=\tmp}
\mathcode`\"="8000

\def\qsym@#1{\ifx\bgroup\tmp \def\tmp{`{#1}}\else\def\tmp{`#1}\fi
  \expandafter\let\expandafter\@tmp\csname qsym@\codeof\tmp\endcsname
  \ifx\@tmp\relax \@warning{Unknown symbol `\codeof\tmp}%
  \else \expandafter\@tmp \fi}

\def\newqsymbol#1{\def\tmp{#1}%
  \expandafter\let\expandafter\@tmp\csname qsym@\codeof\tmp\endcsname
  \ifx\@tmp\relax\else \@warning{Redefining symbol \codeof\tmp}\fi
  \expandafter\def\csname qsym@\codeof\tmp\endcsname}

%%% Auxiliaries (from Xy-pic)...

\ifx\xyloaded\undefined
{\catcode`\:=12 \catcode`\>=12 % to ensure that all of :->< are other...
  \gdef\codeof#1{\expandafter\codeof@\meaning#1<-:}
  \gdef\codeof@#1:->#2<-:{#2}}
 \def\DN@{\def\next@}
 \def\DNii@{\def\nextii@}
\fi

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% SINGLE SYMBOLS.

%%% Letters:

\newqsymbol{`a}{\alpha}
\newqsymbol{`b}{\beta}
\newqsymbol{`c}{\chi}
\newqsymbol{`d}{\delta}
\newqsymbol{`D}{\Delta}
\newqsymbol{`e}{\epsilon}
\newqsymbol{`f}{\phi}
\newqsymbol{`F}{\Phi}
\newqsymbol{`g}{\gamma}
\newqsymbol{`G}{\Gamma}
\newqsymbol{`h}{\eta}
\newqsymbol{`i}{\iota}
\newqsymbol{`j}{\psi}
\newqsymbol{`J}{\Psi}
\newqsymbol{`k}{\kappa}
\newqsymbol{`l}{\lambda}
\newqsymbol{`L}{\Lambda}
\newqsymbol{`m}{\mu}
\newqsymbol{`n}{\nu}
\newqsymbol{`p}{\pi}
\newqsymbol{`P}{\Pi}
\newqsymbol{`q}{\theta}
\newqsymbol{`Q}{\Theta}
\newqsymbol{`r}{\rho}
\newqsymbol{`s}{\sigma}
\newqsymbol{`S}{\Sigma}
\newqsymbol{`t}{\tau}
\newqsymbol{`w}{\omega}
\newqsymbol{`W}{\Omega}
\newqsymbol{`x}{\xi}
\newqsymbol{`X}{\Xi}
\newqsymbol{`y}{\upsilon}
\newqsymbol{`Y}{\Upsilon}
\newqsymbol{`z}{\zeta}

%%% Symbols:

\newqsymbol{`+}{\pm}
\newqsymbol{`*}{\times}
\newqsymbol{`:}{\in}
\newqsymbol{`;}{\notin}
\newqsymbol{`/}{\setminus}
\newqsymbol{`U}{\cup}
\newqsymbol{`_}{\perp}
\newqsymbol{`-}{\vdash}
\newqsymbol{`o}{\circ}
\newqsymbol{`O}{\varnothing}
\newqsymbol{`.}{\cdot}
\newqsymbol{`=}{\equiv}
\newqsymbol{`~}{\sim}
\newqsymbol{`E}{\exists}
\newqsymbol{`A}{\forall}
\newqsymbol{`!}{\lnot}
\newqsymbol{`^}{\land}
\newqsymbol{`V}{\lor}
\newqsymbol{`<}{\less}
\newqsymbol{`>}{\gtr}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% CIRCLED & BOXED OPERATIONS.

%%% Circled:

\newqsymbol{`(}{\oqsym@}

\def\oqsym@#1){\def\tmp{`(#1)}%
  \expandafter\let\expandafter\@tmp\csname qsym@\codeof\tmp\endcsname\relax
  \ifx\@tmp\relax \encircle{#1}\else \@tmp \fi}

\def\encircle#1{{\kern-1pt %
    \ooalign{\hfil\hbox{$\mathstrut\scriptstyle#1$}\hfil\crcr
      $\bigcirc$}\kern-1pt}}

\newqsymbol{`(+)}{\varoplus}
\newqsymbol{`(-)}{\varominus}
\newqsymbol{`(`*)}{\varotimes}
\newqsymbol{`(/)}{\varoslash}
\newqsymbol{`(|)}{\varobar}
\newqsymbol{`(`/)}{\varobslash}
\newqsymbol{`(`.)}{\varodot}
\newqsymbol{`(*)}{\varoast}
\newqsymbol{`(`o)}{\varocircle}
\newqsymbol{`(`^)}{\varowedge}
\newqsymbol{`(`V)}{\varovee}
\newqsymbol{`(<)}{\varolessthan}
\newqsymbol{`(>)}{\varogreaterthan}

\newqsymbol{`()}{\bigcirc}
\newqsymbol{`(?)}{\circ}
\newqsymbol{`(!)}{\bullet}
\newqsymbol{`(:-)}{\smiley}

%%% Boxed:

\newqsymbol{`[}{\boxedqsym@}

\def\boxedqsym@#1]{\def\tmp{`[#1]}%
  \expandafter\let\expandafter\@tmp\csname qsym@\codeof\tmp\endcsname\relax
  \ifx\@tmp\relax \enbox{#1}\else \@tmp \fi}

\def\enbox#1{{\kern-1pt \raise1pt\hbox{%
      \ooalign{\hfil\raise.8pt\hbox{$\mathstrut\scriptstyle#1$}\hfil\crcr
        $\square$}\kern-1pt}}}

\newqsymbol{`[+]}{\boxplus}
\newqsymbol{`[-]}{\boxminus}
\newqsymbol{`[`*]}{\boxtimes}
\newqsymbol{`[/]}{\boxslash}
\newqsymbol{`[|]}{\boxbar}
\newqsymbol{`[`/]}{\boxbslash}
\newqsymbol{`[`.]}{\boxdot}
\newqsymbol{`[*]}{\boxast}
\newqsymbol{`[`o]}{\boxcircle}

\newqsymbol{`[]}{\square}
\newqsymbol{`[?]}{\whitebox}
\newqsymbol{`[!]}{\blackbox}
\newqsymbol{`[:-]}{\frowny}

%%% Auxiliaries:

\def\blackbox{\vcenter{\hbox{\null%
      \kern.2ex \vrule height 1ex width .8ex depth -.2ex \kern.2ex\null}}}

\def\whitebox{\vcenter{\hbox{\null\kern.2ex %
      \vrule height .8ex depth .0ex width .1ex %
      \rlap{\vrule height .8ex depth -.7ex width .6ex }%
      \vrule height .1ex depth .0ex width .6ex %
      \vrule height .8ex depth .0ex width .1ex \kern.2ex \null}}}

\def\smiley{{\hbox{\rlap{$\varbigcirc$}\kern1.3\p@$\scriptstyle\ddot\smile$}}}
\def\frowny{{\hbox{\rlap{$\varbigcirc$}\kern1.3\p@$\scriptstyle\ddot\frown$}}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% BOLD SYMBOLS

\newqsymbol{`"}{\futurelet\tmp\boldqsymbol}

\def\boldqsymbol{%
  \ifx `\tmp \DN@`{\futurelet\tmp\boldqsymbol@}%
  \else \let\next@=\boldsymbol \fi \next@}

\def\boldqsymbol@{%
  \ifx [\tmp \DN@[##1]{\boldsymbol{`[##1]}}%
  \else\ifx (\tmp \DN@(##1){\boldsymbol{`(##1)}}%
  \else\ifx \bgroup\tmp \DN@##1{\boldsymbol{`{##1}}}%
  \else \DN@##1{\boldsymbol{`##1}}%
  \fi\fi\fi \next@}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% ORDERINGS.

\newqsymbol{``}{\qsymord@}

\def\qsymord@{\def\qsymord@@{}\def\qsymord@@n{}\def\qsymord@@eq{}%
  \futurelet\tmp\qsymord@i}

\def\qsymord@i{%
  \ifx /\tmp \def\qsymord@@n{n}\def\@tmp/{\futurelet\tmp\qsymord@i}%
  \else\ifx `\tmp \edef\qsymord@@n{\qsymord@@n x}%
    \def\@tmp`{\futurelet\tmp\qsymord@i}%
  \else \let\@tmp=\qsymord@ii \fi\fi \@tmp}

\def\qsymord@ii{\def\@tmp##1{\futurelet\tmp\qsymord@x}%
  \ifx <\tmp \def\qsymord@@{less}%
  \else\ifx >\tmp \def\qsymord@@{gtr}%
  \else\ifx (\tmp \def\qsymord@@{subset}%
  \else\ifx )\tmp \def\qsymord@@{supset}%
  \else\ifx [\tmp \def\qsymord@@{sqsubset}%
  \else\ifx ]\tmp \def\qsymord@@{sqsupset}%
  \else\ifx \{\tmp\def\qsymord@@{prec}%
  \else\ifx \}\tmp\def\qsymord@@{succ}%
  \else\ifx \<\tmp\def\qsymord@@{triangleleft}%
  \else\ifx \>\tmp\def\qsymord@@{triangleright}%
  \else\ifx ~\tmp\def\qsymord@@{sim}%
  \else\ifx \~\tmp\def\qsymord@@{backsim}%
  \else\ifx -\tmp\def\qsymord@@{vdash}%
  \else\ifx \-\tmp\def\qsymord@@{dashv}%
  \else \def\@tmp##1{\def\qsymord@@{##1@ord}\futurelet\tmp\qsymord@x}%
  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \@tmp}

\def\qsymord@x{\ifx =\tmp
    \def\qsymord@@eq{eq}\def\@tmp={\futurelet\tmp\qsymord@x}%
  \else \def\@tmp{\csname\qsymord@@n\qsymord@@\qsymord@@eq\endcsname}\fi
  \@tmp}

\mathchardef\less="313C         % <
\let\lesseq=\leq \let\nlesseq=\nleq
\mathchardef\gtr="313E
\let\gtreq=\geq \let\ngtreq=\ngeq
\def\xless{\mathrel{\wedge}}
\def\xgtr{\mathrel{\vee}}
\let\xxless=\bigwedge
\let\xxgtr=\bigvee

\def\nsubset{\not\subset}       % `set inclusion' relation
\def\nsubseteq{\not\subseteq}
\def\nsupset{\not\supset}
\def\nsupseteq{\not\supseteq}
\let\xsubset=\cap
\let\xsupset=\cup
\let\xxsubset=\bigcap
\let\xxsupset=\bigcup

\def\nsqsubset{\not\sqsubset}   % `open square' relations
\def\nsqsubseteq{\not\sqsubseteq}
\def\nsqsupset{\not\sqsupset}
\def\nsqsupseteq{\not\sqsupseteq}
\let\xsqsubset=\sqcap
\let\xsqsupset=\sqcup
\let\xxsqsubset=\bigsqcap
\let\xxsqsupset=\bigsqcup

\let\xprec=\curlywedge          % `curly' relations
\let\xsucc=\curlyvee
\let\xxprec=\bigcurlywedge
\let\xxsucc=\bigcurlyvee

\let\triangleleft=\vartriangleleft % `triangle' relations
\let\triangleright=\vartriangleright
\let\xtriangleleft=\vartriangle
\let\xtriangleright=\triangledown
\let\xxtriangleleft=\bigtriangleup
\let\xxtriangleright=\bigtriangledown

\def\nsim{\not\sim}             % ~
\def\nsimeq{\not\simeq}
\let\xsim=\wr
\def\nbacksim{\not\backsim}
\def\nbacksimeq{\not\backsimeq}
\def\xbacksim{\smallint}
\def\xxbacksim{\int}

\def\vdasheq{\models}           % |-
\def\nvdasheq{\mathrel\vert\joinrel\not=}
\def\xvdash{\mathrel{\top}}

\def\ndashv{\not\dashv}
\def\dashveq{=\joinrel\mathrel\vert}
\def\ndashveq{\not=\joinrel\mathrel\vert}
\def\xdashv{\bot}

\def\U@ord{\bigcup}             % Abbreviations... ``U
\expandafter\def\csname\string^@ord\endcsname{\bigwedge} % ``^
\def\V@ord{\bigvee}             % ``V
\def\S@ord{\sum}                % ``S
\def\P@ord{\prod}               % ``P

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% ARROWS.

\newif\ifArr@@hasconn
\newif\ifArr@@hasnot

\def\Arr{\def\Arr@@{}%
  \def\Arrv@@{}\def\Arrm@@{}\def\Arrx@@{}\def\Arrw@@{{.9em}}%
  \Arr@@hasconnfalse \Arr@@hasnotfalse \futurelet\tmp\Arr@}

\def\addtoArr@@#1{\expandafter\def\expandafter\Arr@@\expandafter{\Arr@@#1}}

\def\addtoArrm@@#1{\expandafter\def\expandafter\Arrm@@\expandafter{\Arrm@@#1}}
\def\addtoArrx@@#1{\expandafter\def\expandafter\Arrx@@\expandafter{\Arrx@@#1}}

\def\Arr@hasconn{\ifArr@@hasconn \Arr@expand \else \Arr@@hasconntrue \fi}

\def\Arr@{\DN@##1{\addtoArr@@{##1}\addtoArrm@@{##1}\futurelet\tmp\Arr@}%
  \ifx 2\tmp \def\Arrv@@{2}\addtoArr@@2\DN@2{\futurelet\tmp\Arr@}%
  \else\ifx 3\tmp \def\Arrv@@{3}\addtoArr@@3\DN@3{\futurelet\tmp\Arr@}%
  \else\ifx ^\tmp \def\Arrv@@{^}\addtoArr@@^\DN@^{\futurelet\tmp\Arr@}%
  \else\ifx _\tmp \def\Arrv@@{_}\addtoArr@@_\DN@_{\futurelet\tmp\Arr@}%
  \else\ifx <\tmp
  \else\ifx >\tmp
  \else\ifx |\tmp
  \else\ifx -\tmp \Arr@hasconn
  \else\ifx =\tmp \Arr@hasconn \addtoArrm@@{-}\def\Arrv@@{2}%
    \addtoArr@@{=}\DN@={\futurelet\tmp\Arr@}%
  \else\ifx .\tmp \Arr@hasconn
  \else\ifx :\tmp \Arr@hasconn\addtoArrm@@{.}\def\Arrv@@{2}%
    \addtoArr@@{:}\DN@:{\futurelet\tmp\Arr@}%
  \else\ifx ~\tmp \Arr@hasconn \Arr@expand
  \else\ifx x\tmp
  \else\ifx o\tmp
  \else\ifx `\tmp
  \else\ifx '\tmp
  \else\ifx !\tmp \Arr@expand \addtoArr@@{!}\DN@!{\futurelet\tmp\Arr@}%
  \else\ifx \bgroup\tmp
    \DN@##1{\addtoArr@@{{##1}}\addtoArrx@@{##1}\futurelet\tmp\Arr@}%
  \else\ifx (\tmp \Arr@expand\Arr@expand
    \DN@(##1){\addtoArr@@{(##1)}\addtoArrx@@{|*=/2\Rc/\hbox{\encircle{##1}}}%
      \futurelet\tmp\Arr@}%
  \else\ifx [\tmp \Arr@expand\Arr@expand
    \DN@[##1]{\addtoArr@@{[##1]}\addtoArrx@@{|*\hbox{\enbox{##1}}}%
      \futurelet\tmp\Arr@}%
  \else\ifx /\tmp \addtoArr@@{/}%
    \ifArr@@hasnot \DN@/{\addtoArrx@@{|/.7pt/*\dir{/}}\futurelet\tmp\Arr@}%
    \else \DN@/{\addtoArrx@@{|/-.7pt/*\dir{/}}\futurelet\tmp\Arr@}%
      \Arr@@hasnottrue \fi
  \else\ifx ?\tmp \Arr@expand\addtoArr@@{?}\DN@?{\addtoArrx@@{^\epsilon}%
      \futurelet\tmp\Arr@}%
  \else\ifx +\tmp \Arr@expand\addtoArr@@{+}\DN@+{\addtoArrx@@{^{+}}%
      \futurelet\tmp\Arr@}%
  \else\ifx *\tmp \Arr@expand\addtoArr@@{*}\DN@*{\addtoArrx@@{^{\textstyle*}}%
      \futurelet\tmp\Arr@}%
  \else \let\next@=\Arr@i
  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
  \next@}

\def\Arr@star#1#{\Arr@star@{#1}}
\def\Arr@star@#1#2{\addtoArr@@{*#1{#2}}\addtoArrm@@{*#1{#2}}%
  \futurelet\tmp\Arr@}

\def\Arr@expand{\DNii@##1{\dimen@=##1}\expandafter\nextii@\Arrw@@\relax
  \ifdim\dimen@<1em \def\Arrw@@{{1.5em}}%
  \else\ifdim\dimen@<1.6em \def\Arrw@@{{2.1em}}%
  \else\ifdim\dimen@<2.2em \def\Arrw@@{{2.7em}}%
  \else \advance\dimen@.6em \edef\Arrw@@{{\the\dimen@}}\fi\fi\fi}

\def\Arr@i{%
  \ifingraph@ \DN@{\ingraph@false \Arr@x\GRAPHarr@}%
  \else\if\inxy@ \DN@{\Arr@x\ar}%
  \else
    \expandafter\let\expandafter\tmp
      \csname qsym@\string"\codeof\Arr@@\string"\endcsname
    \ifx\tmp\relax
      \ifx\xyloaded\undefined
        \DN@{\@warning{arrow \string"\codeof\Arr@@\string" undefined}}%
      \else
        \DNii@##1{\mathrel{\UseComputerModernTips
            \xy<0ex,\fontdimen22\textfont2>\Arr@x\ar +/r##1/\endxy}}%
        \DN@{\expandafter\nextii@\Arrw@@}\fi
    \else \let\next@=\tmp \fi
  \fi\fi \next@}

\def\Arr@x#1{%
  %% Eval #1 @\Arrv@@{\Arrm@@}\Arrx@@ ...
  \DN@{\addAT@#1}%
  \DNii@{\expandafter\expandafter\expandafter\next@
   \expandafter\Arrv@@\expandafter{\Arrm@@}}%
  \expandafter\nextii@\Arrx@@}

\newif\ifingraph@

%%% Arrows:

\newqsymbol{"<-"}{\leftarrow}   \newqsymbol{"<-!"}{\longleftarrow}
\newqsymbol{"<="}{\Leftarrow}   \newqsymbol{"<=!"}{\Longleftarrow}
\newqsymbol{"<3"}{\Lleftarrow}

\ifx\xyloaded\undefined \newqsymbol{"</-"}{\nleftarrow}\fi
\newqsymbol{"</="}{\nLeftarrow}

\newqsymbol{"->"}{\rightarrow}  \newqsymbol{"-!>"}{\longrightarrow}
\newqsymbol{"=>"}{\Rightarrow}  \newqsymbol{"=!>"}{\Longrightarrow}
\newqsymbol{"3>"}{\Rrightarrow}

\ifx\xyloaded\undefined \newqsymbol{"-/>"}{\nrightarrow}\fi
\newqsymbol{"=/>"}{\nRightarrow}

\newqsymbol{"<->"}{\leftrightarrow}\newqsymbol{"<-!>"}{\longleftrightarrow}
\newqsymbol{"<=>"}{\Leftrightarrow}\newqsymbol{"<=!>"}{\Longleftrightarrow}

\ifx\xyloaded\undefined \newqsymbol{"</->"}{\nleftrightarrow}\fi
\newqsymbol{"</=>"}{\nLeftrightarrow}

\newqsymbol{"<-|"}{\mapsfrom}   \newqsymbol{"<-!|"}{\longmapsfrom}   
\newqsymbol{"<=|"}{\Mapsfrom}   \newqsymbol{"<=!|"}{\Longmapsfrom}   

\newqsymbol{"|->"}{\mapsto}     \newqsymbol{"|-!>"}{\longmapsto}
\newqsymbol{"|=>"}{\Mapsto}     \newqsymbol{"|=!>"}{\Longmapsto}

\newqsymbol{"<-'"}{\hookleftarrow}
\newqsymbol{"`->"}{\hookrightarrow}

\newqsymbol{"^<-"}{\leftharpoonup}  \newqsymbol{"^->"}{\rightharpoonup}  
\newqsymbol{"_<-"}{\leftharpoondown}\newqsymbol{"_->"}{\rightharpoondown}

\newqsymbol{"<--"}{\dashleftarrow}
\newqsymbol{"-->"}{\dashrightarrow}

\newqsymbol{"<<-"}{\leftarrow\mkern-15mu\leftarrow}
\newqsymbol{"<<="}{\Leftarrow\mkern-15mu\Leftarrow}

\newqsymbol{"->>"}{\rightarrow\mkern-15mu\rightarrow}
\newqsymbol{"=>>"}{\Rightarrow\mkern-15mu\Rightarrow}

\ifx\xyloaded\undefined \newqsymbol{"~>"}{\leadsto}\fi
\ifx\xyloaded\undefined \newqsymbol{"<~>"}{\leftrightsquigarrow}\fi

\ifx\xyloaded\undefined \newqsymbol{"<-<"}{\leftarrowtail}\fi
\ifx\xyloaded\undefined \newqsymbol{">->"}{\rightarrowtail}\fi

\newqsymbol{"-o"}{\multimap}
\newqsymbol{"->o"}{\rightarrow\mkern-15mu\multimap}
\newqsymbol{"->>o"}{\rightarrow\mkern-15mu\rightarrow\mkern-15mu\multimap}

\newqsymbol{"-|>"}{\rightarrowtriangle}
\newqsymbol{"<|-"}{\leftarrowtriangle}
\newqsymbol{"<|-|>"}{\leftrightarrowtriangle}

%%% Xy-pic <dir> additions...

\ifx\xyloaded\undefined \def\inxy@{TF}\else

\newdir{o}{=/4pt/+=/-4pt/!<-.3pt,.5pt>{\circ}}

\newdir{|>}{!/+4.5pt/\dir{|}*:(1,-.2){\NoComputerModernTips\dir^{>}}%
                            *:(1,+.2){\NoComputerModernTips\dir_{>}}}

\newdir{<|}{!/-4.5pt/\dir{|}*:(1,-.2){\NoComputerModernTips\dir_{<}}%
                            *:(1,+.2){\NoComputerModernTips\dir^{<}}}

\newdir{>o} {\dir{o}*!/2pt/\dir{>} }
\newdir2{>o}{\dir{o}*!/2pt/\dir2{>}}
\newdir3{>o}{\dir{o}*!/2pt/\dir3{>}}

\newdir{o<} {\dir{o}*!/-2pt/\dir{<} }
\newdir2{o<}{\dir{o}*!/-2pt/\dir2{<}}
\newdir3{o<}{\dir{o}*!/-2pt/\dir3{<}}

\newdir{>>o} {\dir{o}*!/2pt/\dir{>>} }
\newdir2{>>o}{\dir{o}*!/2pt/\dir2{>>}}
\newdir3{>>o}{\dir{o}*!/2pt/\dir3{>>}}

\newdir{o<<} {\dir{o}*!/-2pt/\dir{<<} }
\newdir2{o<<}{\dir{o}*!/-2pt/\dir2{<<}}
\newdir3{o<<}{\dir{o}*!/-2pt/\dir3{<<}}

\newdir{`}{\dir^{(}}
\newdir{'}{\dir^{)}}

%%% DIAGRAMS: make ` and `` work in Xy-graphs:

\let\krisGRAPH@=\GRAPH@

\def\GRAPH@{\ifx `\tmp \DN@`{\futurelet\tmp\krisGRAPH@q}%
 \else \let\next@=\krisGRAPH@ \fi \next@}

\def\krisGRAPH@q{\ifx `\tmp \DN@`{\ingraph@true\Ord}%
 \else \DN@{\ingraph@true\Arr}\fi \next@}

\def\xyg#1#{\xyg@{#1}}
\def\xyg@#1#2{$~\vcenter{\objectmargin={1pt}\xygraph{~{(1,0),#1:}#2}}~$}

\fi

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% END.

\endinput

%% $Log: qsymbols.sty,v $
% Revision 1.5  1994/10/28  18:19:36  kris
% Added '{..} and documented "...{...}..." <labels>.
%
% Revision 1.4  1994/10/28  15:08:17  kris
% Added boldsymbol support.
%
% Revision 1.3  1994/10/26  16:47:02  kris
% Fixed a few things :-)
%
% Revision 1.2  1994/10/26  02:10:17  kris
% Integrated qarrow; use Xy-pic is an option.
%
% Revision 1.1  1994/10/24  22:55:12  kris
% Initial revision
%
%% Extracted from kris.sty 1.9.
