// A
bin := "\amalg" // \(\amalg \)
cmp := "\approx" // \(\approx \)
cmp := "\approxeq" // \(\approxeq \)
cmp := "\Arrowvert" // \(\Arrowvert \)
cmp := "\arrowvert" // \(\arrowvert \)
cmp := "\asymp" // \(\asymp \)
// B
cmp := "\backsim" // \(\backsim \)
cmp := "\backsimeq" // \(\backsimeq \)
cmp := "\bar" // \(\bar \)
cmp := "\barwedge" // \(\barwedge \)
cmp := "\between" // \(\between \)
bin := "\bigcap" // \(\bigcap \)
bin := "\bigcirc" // \(\bigcirc \)
bin := "\bigcup" // \(\bigcup \)
bin := "\bigodot" // \(\bigodot \)
bin := "\bigoplus" // \(\bigoplus \)
bin := "\bigotimes" // \(\bigotimes \)
bin := "\bigsqcup" // \(\bigsqcup \)
bin := "\bigtriangledown" // \(\bigtriangledown \)
bin := "\bigtriangleup" // \(\bigtriangleup \)
bin := "\biguplus" // \(\biguplus \)
bin := "\bigvee" // \(\bigvee \)
bin := "\bigwedge" // \(\bigwedge \)
bin := "\bowtie" // \(\bowtie \)
bin := "\Box" // \(\Box \)
bin := "\boxdot" // \(\boxdot \)
bin := "\boxminus" // \(\boxminus \)
bin := "\boxplus" // \(\boxplus \)
bin := "\boxtimes" // \(\boxtimes \)
cmp := "\Bumpeq" // \(\Bumpeq \)
cmp := "\bumpeq" // \(\bumpeq \)
// C
bin := "\Cap" // \(\Cap \)
bin := "\cdot" // \(\cdot \)
bin := "\cdotp" // \(\cdotp \)
cmp := "\circeq" // \(\circeq \)
bin := "\circledast" // \(\circledast \)
bin := "\circledcirc" // \(\circledcirc \)
bin := "\circleddash" // \(\circleddash \)
cmp := "\cong" // \(\cong \)
bin := "\coprod" // \(\coprod \)
bin := "\Cup" // \(\Cup \)
cmp := "\curlyeqprec" // \(\curlyeqprec \)
cmp := "\curlyeqsucc" // \(\curlyeqsucc \)
bin := "\curlyvee" // \(\curlyvee \)
bin := "\curlywedge" // \(\curlywedge \)
// D
arr := "\dashleftarrow" // \(\dashleftarrow \)
arr := "\dashrightarrow" // \(\dashrightarrow \)
bin := "\divideontimes" // \(\divideontimes \)
cmp := "\doteq" // \(\doteq \)
cmp := "\Doteq" // \(\Doteq \)
cmp := "\doteqdot" // \(\doteqdot \)
bin := "\dotplus" // \(\dotplus \)
bin := "\doublebarwedge" // \(\doublebarwedge \)
bin := "\doublecap" // \(\doublecap \)
bin := "\doublecup" // \(\doublecup \)
bin := "\Downarrow" // \(\Downarrow \)
bin := "\downarrow" // \(\downarrow \)
bin := "\downdownarrows" // \(\downdownarrows \)
bin := "\downharpoonleft" // \(\downharpoonleft \)
bin := "\downharpoonright" // \(\downharpoonright \)
// E
cmp := "\eqcirc" // \(\eqcirc \)
cmp := "\eqsim" // \(\eqsim \)
cmp := "\eqslantgtr" // \(\eqslantgtr \)
cmp := "\eqslantless" // \(\eqslantless \)
cmp := "\equiv" // \(\equiv \)
// F
bin := "\fallingdotseq" // \(\fallingdotseq \)
// G
cmp := "\geqslant" // \(\geqslant \)
arr := "\gets" // \(\gets \)
cmp := "\gg" // \(\gg \)
cmp := "\ggg" // \(\ggg \)
cmp := "\gggtr" // \(\gggtr \)
cmp := "\gnapprox" // \(\gnapprox \)
cmp := "\gnsim" // \(\gnsim \)
cmp := "\gtrapprox" // \(\gtrapprox \)
cmp := "\gtrdot" // \(\gtrdot \)
cmp := "\gtreqless" // \(\gtreqless \)
cmp := "\gtreqqless" // \(\gtreqqless \)
cmp := "\gtrless" // \(\gtrless \)
cmp := "\gtrsim" // \(\gtrsim \)
cmp := "\gvertneqq" // \(\gvertneqq \)
// H
arr := "\hookleftarrow" // \(\hookleftarrow \)
arr := "\hookrightarrow" // \(\hookrightarrow \)
// I
// J
bin := "\Join" // \(\Join \)
// K
// L
arr := "\leadsto" // \(\leadsto \)
arr := "\Leftarrow" // \(\Leftarrow \)
arr := "\leftarrow" // \(\leftarrow \)
arr := "\leftarrowtail" // \(\leftarrowtail \)
arr := "\leftharpoondown" // \(\leftharpoondown \)
arr := "\leftharpoonup" // \(\leftharpoonup \)
arr := "\leftleftarrows" // \(\leftleftarrows \)
arr := "\Leftrightarrow" // \(\Leftrightarrow \)
arr := "\leftrightarrow" // \(\leftrightarrow \)
cmp := "\leftrightarrows" // \(\leftrightarrows \)
cmp := "\leftrightharpoons" // \(\leftrightharpoons \)
arr := "\leftrightsquigarrow" // \(\leftrightsquigarrow \)
cmp := "\leqslant" // \(\leqslant \)
cmp := "\lessapprox" // \(\lessapprox \)
cmp := "\lessdot" // \(\lessdot \)
cmp := "\lesseqgtr" // \(\lesseqgtr \)
cmp := "\lesseqqgtr" // \(\lesseqqgtr \)
cmp := "\lessgtr" // \(\lessgtr \)
cmp := "\lesssim" // \(\lesssim \)
arr := "\Lleftarrow" // \(\Lleftarrow \)
cmp := "\lll" // \(\lll \)
cmp := "\llless" // \(\llless \)
cmp := "\lnapprox" // \(\lnapprox \)
cmp := "\lnot" // \(\lnot \)
cmp := "\lnsim" // \(\lnsim \)
arr := "\Longleftarrow" // \(\Longleftarrow \)
arr := "\longleftarrow" // \(\longleftarrow \)
arr := "\Longleftrightarrow" // \(\Longleftrightarrow \)
arr := "\longleftrightarrow" // \(\longleftrightarrow \)
arr := "\longmapsto" // \(\longmapsto \)
arr := "\Longrightarrow" // \(\Longrightarrow \)
arr := "\longrightarrow" // \(\longrightarrow \)
cmp := "\ltimes" // \(\ltimes \)
cmp := "\lvertneqq" // \(\lvertneqq \)
// M
arr := "\mapsto" // \(\mapsto \)
// N
cmp := "\ncong" // \(\ncong \)
cmp := "\ngeqslant" // \(\ngeqslant \)
cmp := "\ni" // \(\ni \)
cmp := "\nleqslant" // \(\nleqslant \)
cmp := "\nparallel" // \(\nparallel \)
cmp := "\nprec" // \(\nprec \)
cmp := "\npreceq" // \(\npreceq \)
cmp := "\nsim" // \(\nsim \)
cmp := "\nsucc" // \(\nsucc \)
cmp := "\nsucceq" // \(\nsucceq \)
cmp := "\ntriangleleft" // \(\ntriangleleft \)
cmp := "\ntrianglelefteq" // \(\ntrianglelefteq \)
cmp := "\ntriangleright" // \(\ntriangleright \)
cmp := "\ntrianglerighteq" // \(\ntrianglerighteq \)
// O
bin := "\odot" // \(\odot \)
bin := "\ominus" // \(\ominus \)
bin := "\oplus" // \(\oplus \)
bin := "\oslash" // \(\oslash \)
//bin := "\otimes" // \(\otimes \)
// P
cmp := "\perp" // \(\perp \)
bin := "\pm" // \(\pm \)
cmp := "\prec" // \(\prec \)
cmp := "\precapprox" // \(\precapprox \)
cmp := "\preccurlyeq" // \(\preccurlyeq \)
cmp := "\preceq" // \(\preceq \)
cmp := "\precnapprox" // \(\precnapprox \)
cmp := "\precneqq" // \(\precneqq \)
cmp := "\precnsim" // \(\precnsim \)
cmp := "\precsim" // \(\precsim \)
bin := "\prod" // \(\prod \)
cmp := "\propto" // \(\propto \)
// Q
// R
cmp := "\rhd" // \(\rhd \)
arr := "\Rightarrow" // \(\Rightarrow \)
arr := "\rightarrow" // \(\rightarrow \)
arr := "\rightarrowtail" // \(\rightarrowtail \)
arr := "\rightharpoondown" // \(\rightharpoondown \)
arr := "\rightharpoonup" // \(\rightharpoonup \)
arr := "\rightleftarrows" // \(\rightleftarrows \)
arr := "\rightleftharpoons" // \(\rightleftharpoons \)
arr := "\rightleftharpoons" // \(\rightleftharpoons \)
arr := "\rightrightarrows" // \(\rightrightarrows \)
arr := "\rightsquigarrow" // \(\rightsquigarrow \)
arr := "\Rrightarrow" // \(\Rrightarrow \)
cmp := "\rtimes" // \(\rtimes \)
// S
bin := "\setminus" // \(\setminus \)
cmp := "\sim" // \(\sim \)
cmp := "\simeq" // \(\simeq \)
cmp := "\smallsetminus" // \(\smallsetminus \)
bin := "\sqcap" // \(\sqcap \)
bin := "\sqcup" // \(\sqcup \)
cmp := "\sqsubset" // \(\sqsubset \)
cmp := "\sqsubseteq" // \(\sqsubseteq \)
cmp := "\sqsupset" // \(\sqsupset \)
cmp := "\sqsupseteq" // \(\sqsupseteq \)
bin := "\square" // \(\square \)
cmp := "\Subset" // \(\Subset \)
cmp := "\succ" // \(\succ \)
cmp := "\succapprox" // \(\succapprox \)
cmp := "\succcurlyeq" // \(\succcurlyeq \)
cmp := "\succeq" // \(\succeq \)
cmp := "\succnapprox" // \(\succnapprox \)
cmp := "\succneqq" // \(\succneqq \)
cmp := "\succnsim" // \(\succnsim \)
cmp := "\succsim" // \(\succsim \)
cmp := "\Supset" // \(\Supset \)
// T
cmp := "\thickapprox" // \(\thickapprox \)
cmp := "\thicksim" // \(\thicksim \)
bin := "\times" // \(\times \)
arr := "\to" // \(\to \)
bin := "\triangle" // \(\triangle \)
bin := "\triangledown" // \(\triangledown \)
cmp := "\triangleleft" // \(\triangleleft \)
cmp := "\trianglelefteq" // \(\trianglelefteq \)
cmp := "\triangleq" // \(\triangleq \)
cmp := "\triangleright" // \(\triangleright \)
cmp := "\trianglerighteq" // \(\trianglerighteq \)
arr := "\twoheadleftarrow" // \(\twoheadleftarrow \)
arr := "\twoheadrightarrow" // \(\twoheadrightarrow \)
// U
cmp := "\unlhd" // \(\unlhd \)
cmp := "\unrhd" // \(\unrhd \)
bin := "\Uparrow" // \(\Uparrow \)
bin := "\uparrow" // \(\uparrow \)
bin := "\Updownarrow" // \(\Updownarrow \)
bin := "\updownarrow" // \(\updownarrow \)
bin := "\upharpoonleft" // \(\upharpoonleft \)
bin := "\upharpoonright" // \(\upharpoonright \)
bin := "\uplus" // \(\uplus \)
bin := "\upuparrows" // \(\upuparrows \)
// V
cmp := "\varsubsetneq" // \(\varsubsetneq \)
cmp := "\varsubsetneqq" // \(\varsubsetneqq \)
cmp := "\varsupsetneq" // \(\varsupsetneq \)
cmp := "\varsupsetneqq" // \(\varsupsetneqq \)
cmp := "\veebar" // \(\veebar \)
// W
// X
arr := "\xleftarrow" // \(\xleftarrow \)
arr := "\xrightarrow" // \(\xrightarrow \)
// Y
// Z
// The precedences here are a hack: so many operators.
// The general effect is: except for keyword logic connectives,
// these operations are all done AFTER any ASCII art ops
// and, only one is allowed per sub-expression: you must use parens
// if you use more than one. We'll fix this for some key operations later,
// particularly the setwise and logic connectors. However, the comparisons
// are at the right precedence.
// (fact is, I don't know what half the operators are for anyhow .. )
x[stuple_pri] := x[>stuple_pri] "\brace" x[>stuple_pri] =># "(Infix)";
x[stuple_pri] := x[>stuple_pri] "\brack" x[>stuple_pri] =># "(Infix)";
x[scomparison_pri]:= x[>scomparison_pri] bin x[>scomparison_pri]
// set ops (note: no setminus, its a standard binop at the moment ;)
// note: no \Cap or other variants .. would interfere with chain
// there's no reason at all to chain these anyhow, they're standard left assoc operators
// All arrows are right associative .. hmm ..
x[sarrow_pri] := x[scase_literal_pri] arr x[sarrow_pri]