# -*- mode: Perl -*-
# /=====================================================================\ #
# |  amssymb                                                            | #
# | Implementation for LaTeXML                                          | #
# |=====================================================================| #
# | Part of LaTeXML:                                                    | #
# |  Public domain software, produced as part of work done by the       | #
# |  United States Government & not subject to copyright in the US.     | #
# |---------------------------------------------------------------------| #
# | Bruce Miller <bruce.miller@nist.gov>                        #_#     | #
# | http://dlmf.nist.gov/LaTeXML/                              (o o)    | #
# \=========================================================ooo==U==ooo=/ #
package LaTeXML::Package::Pool;
use strict;
use warnings;
use LaTeXML::Package;

RequirePackage('amsfonts');

#======================================================================
# Lowercase Greek letters
DefMath('\digamma',  "\x{03DD}");    # GREEK SMALL LETTER DIGAMMA
DefMath('\varkappa', "\x{03F0}");    # GREEK KAPPA SYMBOL

#======================================================================
# Hebrew
DefMath('\beth',   "\x{2136}");    # BET SYMBOL
DefMath('\daleth', "\x{2138}");    # DALET SYMBOL
DefMath('\gimel',  "\x{2137}");    # GIMEL SYMBOL

#======================================================================
# Miscellaneous
# \hbar  in LaTeX
DefMath('\hslash', "\x{210F}", role => 'ID', meaning => 'Planck-constant-over-2-pi');
DefMath('\vartriangle',  "\x{25B3}");
DefMath('\triangledown', "\x{25BD}");
# \square, \lozenge in amsfonts
DefMath('\circledS', "\x{24C8}");
# \angle in tex
DefMath('\measuredangle', "\x{2221}");
DefMath('\nexists', "\x{2204}", role => 'FUNCTION', meaning => 'not-exists');
# \mho in latex
DefMath('\Finv',              "\x{2132}");
DefMath('\Game',              "\x{2141}");
DefMath('\Bbbk',              "\x{1D55C}");
DefMath('\backprime',         "\x{2035}");
DefMath('\varnothing',        "\x{2205}", role => 'ID', meaning => 'empty-set');
DefMath('\blacktriangle',     "\x{25B2}");
DefMath('\blacktriangledown', "\x{25BC}");
DefMath('\blacksquare',       "\x{25A0}");
DefMath('\blacklozenge',      "\x{25C6}");
DefMath('\bigstar',           "\x{2605}");
DefMath('\sphericalangle',    "\x{2222}");
DefMath('\complement', "\x{2201}", meaning => 'complement');
DefMath('\eth',        UTF(0xF0));
DefMath('\diagup',     "\x{2571}");
DefMath('\diagdown',   "\x{2572}");

#======================================================================
# Binary operators
DefMath('\dotplus',        "\x{2214}", role => 'ADDOP');                                  # DOT PLUS
DefMath('\smallsetminus',  "\x{2216}", role => 'ADDOP', meaning => 'set-minus');
DefMath('\Cap',            "\x{22D2}", role => 'ADDOP', meaning => 'double-intersection');
DefMath('\doublecap',      "\x{22D2}", role => 'ADDOP', meaning => 'double-intersection');
DefMath('\Cup',            "\x{22D3}", role => 'ADDOP', meaning => 'double-union');
DefMath('\doublecup',      "\x{22D3}", role => 'ADDOP', meaning => 'double-union');
DefMath('\barwedge',       "\x{22BC}", role => 'ADDOP', meaning => 'not-and');
DefMath('\veebar',         "\x{22BB}", role => 'ADDOP', meaning => 'exclusive-or');
DefMath('\doublebarwedge', "\x{2A5E}", role => 'ADDOP');
DefMath('\boxminus',      "\x{229F}", role => 'ADDOP');    # SQUARED MINUS
DefMath('\boxtimes',      "\x{22A0}", role => 'MULOP');    # SQUARED TIMES
DefMath('\boxdot',        "\x{22A1}", role => 'MULOP');    # SQUARED DOT OPERATOR
DefMath('\boxplus',       "\x{229E}", role => 'ADDOP');    # SQUARED PLUS
DefMath('\divideontimes', "\x{22C7}", role => 'MULOP');    # DIVISION TIMES
DefMath('\ltimes', "\x{22C9}", role => 'MULOP', meaning => 'left-normal-factor-semidirect-product');
DefMath('\rtimes', "\x{22CA}", role => 'MULOP', meaning => 'right-normal-factor-semidirect-product');
DefMath('\leftthreetimes',  "\x{22CB}", role => 'MULOP', meaning => 'left-semidirect-product');
DefMath('\rightthreetimes', "\x{22CC}", role => 'MULOP', meaning => 'right-semidirect-product');
DefMath('\curlywedge',      "\x{22CF}", role => 'ADDOP', meaning => 'and');
DefMath('\curlyvee',        "\x{22CE}", role => 'ADDOP', meaning => 'or');
DefMath('\circleddash', "\x{229D}", role => 'ADDOP');      # CIRCLED DASH
DefMath('\circledast',  "\x{229B}", role => 'MULOP');      # CIRCLED ASTERISK OPERATOR
DefMath('\circledcirc', "\x{229A}", role => 'MULOP');      # CIRCLED RING OPERATOR
DefMath('\centerdot',   "\x{2219}", role => 'MULOP');      # CIRCLED DOT OPERATOR
DefMath('\intercal',    "\x{22BA}", role => 'ADDOP');      # INTERCALATE

#======================================================================
# Binary relations
DefMath('\leqq', "\x{2266}", role => 'RELOP',
  meaning => 'less-than-or-equals');
DefMath('\leqslant', "\x{2A7D}", role => 'RELOP',
  meaning => 'less-than-or-equals');
DefMath('\eqslantless', "\x{2A95}", role => 'RELOP',
  meaning => 'less-than-or-equals');
DefMath('\lesssim', "\x{2272}", role => 'RELOP',
  meaning => 'less-than-or-similar-to');
DefMath('\lessapprox', "\x{2A85}", role => 'RELOP',
  meaning => 'less-than-or-approximately-equals');
DefMath('\approxeq', "\x{224A}", role => 'RELOP',
  meaning => 'approximately-equals-or-equals');
DefMath('\lessdot', "\x{22D6}", role => 'RELOP');    # LESS-THAN WITH DOT
DefMath('\lll', "\x{22D8}", role => 'RELOP',
  meaning => 'very-much-less-than');                 # VERY MUCH LESS-THAN
DefMath('\llless', "\x{22D8}", role => 'RELOP',
  meaning => 'very-much-less-than');                 # VERY MUCH LESS-THAN
DefMath('\lessgtr', "\x{2276}", role => 'RELOP',
  meaning => 'less-than-or-greater-than');
DefMath('\lesseqgtr', "\x{22DA}", role => 'RELOP',
  meaning => 'less-than-or-equals-or-greater-than');
DefMath('\lesseqqgtr', "\x{2A8B}", role => 'RELOP',
  meaning => 'less-than-or-equals-or-greater-than');
DefMath('\doteqdot', "\x{2251}", role => 'RELOP',
  meaning => 'geometrically-equals');
DefMath('\Doteq', "\x{2251}", role => 'RELOP',
  meaning => 'geometrically-equals');
DefMath('\risingdotseq', "\x{2253}", role => 'RELOP',
  meaning => 'image-of-or-approximately-equals');
DefMath('\fallingdotseq', "\x{2252}", role => 'RELOP',
  meaning => 'approximately-equals-or-image-of');
DefMath('\backsim', "\x{223D}", role => 'RELOP');    # REVERSED TILDE
DefMath('\backsimeq', "\x{224C}", role => 'RELOP'); # ALL EQUAL TO; Note: this has double rather than single bar!!!
DefMath('\subseteqq', "\x{2AC5}", role => 'RELOP',
  meaning => 'subset-of-or-equals');
DefMath('\Subset', "\x{22D0}", role => 'RELOP',
  meaning => 'double-subset-of');
# \sqsubset in tex
DefMath('\preccurlyeq', "\x{227C}", role => 'RELOP',
  meaning => 'precedes-or-equals');
DefMath('\curlyeqprec', "\x{22DE}", role => 'RELOP',
  meaning => 'equals-or-preceeds');
DefMath('\precsim', "\x{227E}", role => 'RELOP',
  meaning => 'precedes-or-equivalent-to');
DefMath('\precapprox', "\x{2AB7}", role => 'RELOP',
  meaning => 'precedes-or-approximately-equals');
# \vartriangleleft, trianglelefteq in amsfonts
DefMath('\vDash',      "\x{22A8}", role => 'RELOP');    # TRUE
DefMath('\Vvdash',     "\x{22AA}", role => 'RELOP');    # TRIPLE VERTICAL BAR RIGHT TURNSTILE
DefMath('\smallsmile', "\x{2323}", role => 'RELOP');    # SMILE (small ?)
DefMath('\smallfrown', "\x{2322}", role => 'RELOP');    # FROWN (small ?)
DefMath('\bumpeq', "\x{224F}", role => 'RELOP',
  meaning => 'difference-between');
DefMath('\Bumpeq', "\x{224E}", role => 'RELOP',
  meaning => 'geometrically-equals');
DefMath('\geqq', "\x{2267}", role => 'RELOP',
  meaning => 'greater-than-or-equals');
DefMath('\geqslant', "\x{2A7E}", role => 'RELOP',
  meaning => 'greater-than-or-equals');
DefMath('\eqslantgtr', "\x{2A96}", role => 'RELOP',
  meaning => 'greater-than-or-equals');
DefMath('\gtrsim', "\x{2273}", role => 'RELOP',
  meaning => 'greater-than-or-equivalent-to');
DefMath('\gtrapprox', "\x{2A86}", role => 'RELOP',
  meaning => 'greater-than-or-approximately-equals');
DefMath('\eqsim',  "\x{2242}", role => 'RELOP');    # MINUS TILDE
DefMath('\gtrdot', "\x{22D7}", role => 'RELOP');    # GREATER-THAN WITH DOT
DefMath('\ggg', "\x{22D9}", role => 'RELOP',
  meaning => 'very-much-greater-than');
DefMath('\gggtr', "\x{22D9}", role => 'RELOP',
  meaning => 'very-much-greater-than');
DefMath('\gtrless', "\x{2277}", role => 'RELOP',
  meaning => 'greater-than-or-less-than');
DefMath('\gtreqless', "\x{22DB}", role => 'RELOP',
  meaning => 'greater-than-or-equals-or-less-than');
DefMath('\gtreqqless', "\x{2A8C}", role => 'RELOP',
  meaning => 'greater-than-or-equals-or-less-than');
DefMath('\eqcirc',    "\x{2256}", role => 'RELOP');    # RING IN EQUAL TO
DefMath('\circeq',    "\x{2257}", role => 'RELOP');    # RING EQUAL TO
DefMath('\triangleq', "\x{225C}", role => 'RELOP');    # DELTA EQUAL TO
DefMath('\thicksim',  "\x{223C}", role => 'RELOP');    # TILDE OPERATOR; Not thick!!!
DefMath('\thickapprox', "\x{2248}", role => 'RELOP',
  meaning => 'approximately-equals');
DefMath('\supseteqq', "\x{2AC6}", role => 'RELOP',
  meaning => 'superset-of-or-equals');
DefMath('\Supset', "\x{22D1}", role => 'RELOP',
  meaning => 'double-superset-of');
# \sqsupset in TeX
DefMath('\succcurlyeq', "\x{227D}", role => 'RELOP',
  meaning => 'succeeds-or-equals');
DefMath('\curlyeqsucc', "\x{22DF}", role => 'RELOP',
  meaning => 'equals-or-succeeds');
DefMath('\succsim', "\x{227F}", role => 'RELOP',
  meaning => 'succeeds-or-equivalent-to');
DefMath('\succapprox', "\x{2AB8}", role => 'RELOP',
  meaning => 'succeeds-or-approximately-equals');
# \vartriangleright, \trianglerighteq in amsfonts
DefMath('\Vdash', "\x{22A9}", role => 'RELOP',
  meaning => 'forces');
DefMath('\shortmid', "\x{2223}", role => 'RELOP',
  meaning => 'divides');
DefMath('\shortparallel', "\x{2225}", role => 'RELOP',
  meaning => 'parallel-to');
DefMath('\between', "\x{226C}", role => 'RELOP',
  meaning => 'between');
DefMath('\pitchfork', "\x{22D4}", role => 'RELOP',
  meaning => 'proper-intersection');
DefMath('\varpropto', "\x{221D}", role => 'RELOP',
  meaning => 'proportional-to');
DefMath('\blacktriangleleft', "\x{25C0}", role => 'RELOP');    # BLACK LEFT-POINTING TRIANGLE
DefMath('\therefore', "\x{2234}", role => 'METARELOP',
  meaning => 'therefore');
DefMath('\backepsilon',        "\x{03F6}", role => 'RELOP');  # GREEK REVERSED LUNATE EPSILON SYMBOL
DefMath('\blacktriangleright', "\x{25B6}", role => 'RELOP');  # BLACK RIGHT-POINTING TRIANGLE
DefMath('\because', "\x{2235}", role => 'METARELOP',
  meaning => 'because');

#======================================================================
# Negated relations
# NOTE: There are several here that I couldn't find, but all
# were negations of other symbols. I've used 0338 COMBINING LONG SOLIDUS OVERLAY
# to create them, but I don't know if that's right.

DefMath('\nless', "\x{226E}", role => 'RELOP',
  meaning => 'not-less-than');
DefMath('\nleq', "\x{2270}", role => 'RELOP',
  meaning => 'not-less-than-nor-greater-than');
DefMath('\nleqslant', "\x{2A7D}\x{0338}", role => 'RELOP',
  meaning => 'not-less-than-nor-equals');
DefMath('\nleqq', "\x{2266}\x{0338}", role => 'RELOP',
  meaning => 'not-less-than-nor-equals');
DefMath('\lneq', "\x{2A87}", role => 'RELOP',
  meaning => 'less-than-and-not-equals');
DefMath('\lneqq', "\x{2268}", role => 'RELOP',
  meaning => 'less-than-and-not-equals');
DefMath('\lvertneqq', "\x{2268}", role => 'RELOP',
  meaning => 'less-than-and-not-equals');
DefMath('\lnsim', "\x{22E6}", role => 'RELOP',
  meaning => 'less-than-and-not-equivalent-to');
DefMath('\lnapprox', "\x{2A89}", role => 'RELOP',
  meaning => 'less-than-and-not-approximately-equals');
DefMath('\nprec', "\x{2280}", role => 'RELOP',
  meaning => 'not-precedes');
DefMath('\npreceq', "\x{22E0}", role => 'RELOP',
  meaning => 'not-precedes-nor-equals');    # Using slant equals?
DefMath('\precneqq', "\x{2AB5}", role => 'RELOP',
  meaning => 'precedes-and-not-equals');
DefMath('\precnsim', "\x{22E8}", role => 'RELOP',
  meaning => 'precedes-and-not-equivalent-to');
DefMath('\precnapprox', "\x{2AB9}", role => 'RELOP',
  meaning => 'precedes-and-not-approximately-equals');
DefMath('\nsim', "\x{2241}", role => 'RELOP',
  meaning => 'not-similar-to');             # NOTE TILDE
DefMath('\nshortmid', "\x{2224}", role => 'RELOP',
  meaning => 'not-divides');                # DOES NOT DIVIDE; Note: not short!
DefMath('\nmid', "\x{2224}", role => 'RELOP',
  meaning => 'not-divides');                # DOES NOT DIVIDE
DefMath('\nvdash', "\x{22AC}", role => 'RELOP',
  meaning => 'not-proves');
DefMath('\nVdash', "\x{22AE}", role => 'RELOP',
  meaning => 'not-forces');
DefMath('\ntriangleleft', "\x{22EA}", role => 'RELOP',
  meaning => 'not-subgroup-of');
DefMath('\ntrianglelefteq', "\x{22EC}", role => 'RELOP',
  meaning => 'not-subgroup-of-nor-equals');
DefMath('\nsubseteq', "\x{2288}", role => 'RELOP',
  meaning => 'not-subset-of-nor-equals');
DefMath('\nsubseteqq', "\x{2AC5}\x{0338}", role => 'RELOP',
  meaning => 'not-subset-of-nor-equals');
DefMath('\subsetneq', "\x{228A}", role => 'RELOP',
  meaning => 'subset-of-and-not-equals');
DefMath('\varsubsetneq', "\x{228A}", role => 'RELOP',
  meaning => 'subset-of-and-not-equals');
DefMath('\subsetneqq', "\x{2ACB}", role => 'RELOP',
  meaning => 'subset-of-and-not-equals');
DefMath('\varsubsetneqq', "\x{2ACB}", role => 'RELOP',
  meaning => 'subset-of-and-not-equals');
DefMath('\supsetneq', "\x{228B}", role => 'RELOP',
  meaning => 'superset-of-and-not-equals');
DefMath('\varsupsetneq', "\x{228B}", role => 'RELOP',
  meaning => 'superset-of-and-not-equals');
DefMath('\supsetneqq', "\x{2ACC}", role => 'RELOP',
  meaning => 'superset-of-and-not-equals');
DefMath('\varsupsetneqq', "\x{2ACC}", role => 'RELOP',
  meaning => 'superset-of-and-not-equals');

DefMath('\ngtr', "\x{226F}", role => 'RELOP',
  meaning => 'not-greater-than');
DefMath('\ngeq', "\x{2271}", role => 'RELOP',
  meaning => 'not-greater-than-nor-equals');
DefMath('\ngeqslant', "\x{2A7E}\x{0338}", role => 'RELOP',
  meaning => 'not-greater-than-nor-equals');
DefMath('\ngeqq', "\x{2267}\x{0338}", role => 'RELOP',
  meaning => 'not-greater-than-nor-equals');
DefMath('\gneq', "\x{2A88}", role => 'RELOP',
  meaning => 'greater-than-and-not-equals');
DefMath('\gneqq', "\x{2269}", role => 'RELOP',
  meaning => 'greater-than-and-not-equals');
DefMath('\gvertneqq', "\x{2269}", role => 'RELOP',
  meaning => 'greater-than-and-not-equals');
DefMath('\gnsim', "\x{22E7}", role => 'RELOP',
  meaning => 'greater-than-and-not-equivalent-to');
DefMath('\gnapprox', "\x{2A8A}", role => 'RELOP',
  meaning => 'greater-than-and-not-approximately-equals');
DefMath('\nsucc', "\x{2281}", role => 'RELOP',
  meaning => 'not-succeeds');
DefMath('\nsucceq', "\x{22E1}", role => 'RELOP',
  meaning => 'not-succeeds-nor-equals');
DefMath('\succneqq', "\x{2AB6}", role => 'RELOP',
  meaning => 'succeeds-and-not-equals');
DefMath('\succnsim', "\x{22E9}", role => 'RELOP',
  meaning => 'succeeds-and-not-equivalent-to');
DefMath('\succnapprox', "\x{2ABA}", role => 'RELOP',
  meaning => 'succeeds-and-not-approximately-equals');
DefMath('\ncong', "\x{2247}", role => 'RELOP',
  meaning => 'not-approximately-equals');
DefMath('\nshortparallel', "\x{2226}", role => 'RELOP',
  meaning => 'not-parallel-to');
DefMath('\nparallel', "\x{2226}", role => 'RELOP',
  meaning => 'not-parallel-to');
DefMath('\nvDash', "\x{22AD}", role => 'RELOP');    # NOT TRUE
DefMath('\nVDash', "\x{22AF}", role => 'RELOP'); # NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
DefMath('\ntriangleright', "\x{22EB}", role => 'RELOP',
  meaning => 'not-contains');
DefMath('\ntrianglerighteq', "\x{22ED}", role => 'RELOP',
  meaning => 'not-contains-nor-equals');
DefMath('\nsupseteq', "\x{2289}", role => 'RELOP',
  meaning => 'not-superset-of-nor-equals');
DefMath('\nsupseteqq', "\x{2AC6}\x{0338}", role => 'RELOP',
  meaning => 'not-superset-of-nor-equals');

#======================================================================
# Arrows
DefMath('\leftleftarrows',   "\x{21C7}", role => 'ARROW');   # LEFTWARDS PAIRED ARROWS
DefMath('\leftrightarrows',  "\x{21C6}", role => 'ARROW');   # LEFTWARDS ARROW OVER RIGHTWARDS ARROW
DefMath('\Lleftarrow',       "\x{21DA}", role => 'ARROW');   # LEFTWARDS TRIPLE ARROW
DefMath('\twoheadleftarrow', "\x{219E}", role => 'ARROW');   # LEFTWARDS TWHO HEADED ARROW
DefMath('\leftarrowtail',    "\x{21A2}", role => 'ARROW');   # LEFTWARDS ARROW WITH TAIL
DefMath('\looparrowleft',    "\x{21AB}", role => 'ARROW');   # leftwards arrow with loop
DefMath('\leftrightharpoons', "\x{21CB}", role => 'ARROW'); # LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON
DefMath('\curvearrowleft',    "\x{21B6}", role => 'ARROW'); # ANTICLOCKWISE TOP SEMICIRCLE ARROW
DefMath('\circlearrowleft',   "\x{21BA}", role => 'ARROW'); # ANTICLOCKWISE OPEN CIRCLE ARROW
DefMath('\Lsh',               "\x{21B0}", role => 'ARROW'); # UPWAARDS ARROW WITH TIP LEFTWARDS
DefMath('\upuparrows',        "\x{21C8}", role => 'ARROW'); # UPWARDS PAIRED ARROWS
DefMath('\upharpoonleft',     "\x{21BF}", role => 'ARROW'); # UPWARDS HARPOON WITH BARB LEFTWARDS
DefMath('\rightrightarrows',  "\x{21C9}", role => 'ARROW'); # RIGHTWARDS PAIRED ARROWS
DefMath('\rightleftarrows',   "\x{21C4}", role => 'ARROW'); # RIGHTWARDS ARROW OVER LEFTWARD ARROW
DefMath('\Rrightarrow',       "\x{21DB}", role => 'ARROW'); # RIGHTWARDS TRIPLE ARROW
DefMath('\twoheadrightarrow', "\x{21A0}", role => 'ARROW'); # RIGHTWARDS TWO HEADED ARROW
DefMath('\rightarrowtail',    "\x{21A3}", role => 'ARROW'); # RIGHTWARDS ARROW WITH TAIL
DefMath('\looparrowright',    "\x{21AC}", role => 'ARROW'); # RIGHTWARDS ARROW WITH LOOP
# \rightleftharpoons  21CC # RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON ; in amsfonts
DefMath('\curvearrowright',  "\x{21B7}", role => 'ARROW');   # CLOCKWISE TOP SEMICIRCLE ARROW
DefMath('\circlearrowright', "\x{21BB}", role => 'ARROW');   # CLOCKWISE OPEN CIRCLE ARROW
DefMath('\Rsh',              "\x{21B1}", role => 'ARROW');   # UPWAARDS ARROW WITH TIP RIGHTWARDS
DefMath('\downdownarrows',   "\x{21CA}", role => 'ARROW');   # DOWNWARDS PAIRED ARROWS
DefMath('\upharpoonright',   "\x{21BE}", role => 'ARROW');   # UPWARDS HARPOON WITH BARB RIGHTWARDS
DefMath('\restriction',      "\x{21BE}", role => 'ARROW');   # UPWARDS HARPOON WITH BARB RIGHTWARDS
                                                             # (same as \upharpoonright)
DefMath('\downharpoonleft',  "\x{21C3}", role => 'ARROW');   # DOWNWARDS HARPOON WITH BARB LEFTWARDS
DefMath('\multimap',         "\x{22B8}", role => 'ARROW');   # MULTIMAP
DefMath('\leftrightsquigarrow', "\x{21AD}", role => 'ARROW');    # LEFT RIGHT WAVE ARROW
DefMath('\downharpoonright', "\x{21C2}", role => 'ARROW');  # DOWNWARDS HARPOON WITH BARB RIGHTWARDS
# \rightsquigarrow amsfonts

#======================================================================
# Negated arrows
DefMath('\nleftarrow',      "\x{219A}", role => 'ARROW');    # LEFTWARDS ARROW WITH STROKE
DefMath('\nLeftarrow',      "\x{21CD}", role => 'ARROW');    # LEFTWARDS DOUBLE ARROW WITH STROKE
DefMath('\nleftrightarrow', "\x{21AE}", role => 'ARROW');    # LEFT RIGHT ARROW WITH STROKE
DefMath('\nrightarrow',     "\x{219B}", role => 'ARROW');    # RIGHTWARDS ARROW WITH STROKE
DefMath('\nRightarrow',     "\x{21CF}", role => 'ARROW');    # LEFTWARDS DOUBLE ARROW WITH STROKE
DefMath('\nLeftrightarrow', "\x{21CE}", role => 'ARROW');    # LEFT RIGHT DOUBLE ARROW WITH STROKE

#======================================================================
1;