
<!--
     File isoamsb.ent produced by the XSL script entities.xsl
     from input data in unicode.xml.

     Please report any errors to David Carlisle
     via the public W3C list www-math@w3.org.

     The numeric character values assigned to each entity
     (should) match the Unicode assignments in Unicode 4.0.

     Entity names in this file are derived from files carrying the
     following notice:

     (C) International Organization for Standardization 1986
     Permission to copy in any form is granted for use with
     conforming SGML systems and applications as defined in
     ISO 8879, provided this notice is included in all copies.

-->


<!-- 
     Version: $Id: isoamsb.ent,v 1.2 2003/12/08 15:14:43 davidc Exp $

       Public identifier: ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN//XML
       System identifier: http://www.w3.org/2003/entities/iso8879/isoamsb.ent

     The public identifier should always be used verbatim.
     The system identifier may be changed to suit local requirements.

     Typical invocation:

       <!ENTITY % isoamsb PUBLIC
         "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN//XML"
         "http://www.w3.org/2003/entities/iso8879/isoamsb.ent"
       >
       %isoamsb;

-->

<!ENTITY amalg            "&#x02A3F;" ><!--AMALGAMATION OR COPRODUCT -->
<!ENTITY Barwed           "&#x02306;" ><!--PERSPECTIVE -->
<!ENTITY barwed           "&#x02305;" ><!--PROJECTIVE -->
<!ENTITY Cap              "&#x022D2;" ><!--DOUBLE INTERSECTION -->
<!ENTITY coprod           "&#x02210;" ><!--N-ARY COPRODUCT -->
<!ENTITY Cup              "&#x022D3;" ><!--DOUBLE UNION -->
<!ENTITY cuvee            "&#x022CE;" ><!--CURLY LOGICAL OR -->
<!ENTITY cuwed            "&#x022CF;" ><!--CURLY LOGICAL AND -->
<!ENTITY diam             "&#x022C4;" ><!--DIAMOND OPERATOR -->
<!ENTITY divonx           "&#x022C7;" ><!--DIVISION TIMES -->
<!ENTITY intcal           "&#x022BA;" ><!--INTERCALATE -->
<!ENTITY lthree           "&#x022CB;" ><!--LEFT SEMIDIRECT PRODUCT -->
<!ENTITY ltimes           "&#x022C9;" ><!--LEFT NORMAL FACTOR SEMIDIRECT PRODUCT -->
<!ENTITY minusb           "&#x0229F;" ><!--SQUARED MINUS -->
<!ENTITY oast             "&#x0229B;" ><!--CIRCLED ASTERISK OPERATOR -->
<!ENTITY ocir             "&#x0229A;" ><!--CIRCLED RING OPERATOR -->
<!ENTITY odash            "&#x0229D;" ><!--CIRCLED DASH -->
<!ENTITY odot             "&#x02299;" ><!--CIRCLED DOT OPERATOR -->
<!ENTITY ominus           "&#x02296;" ><!--CIRCLED MINUS -->
<!ENTITY oplus            "&#x02295;" ><!--CIRCLED PLUS -->
<!ENTITY osol             "&#x02298;" ><!--CIRCLED DIVISION SLASH -->
<!ENTITY otimes           "&#x02297;" ><!--CIRCLED TIMES -->
<!ENTITY plusb            "&#x0229E;" ><!--SQUARED PLUS -->
<!ENTITY plusdo           "&#x02214;" ><!--DOT PLUS -->
<!ENTITY prod             "&#x0220F;" ><!--N-ARY PRODUCT -->
<!ENTITY rthree           "&#x022CC;" ><!--RIGHT SEMIDIRECT PRODUCT -->
<!ENTITY rtimes           "&#x022CA;" ><!--RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT -->
<!ENTITY sdot             "&#x022C5;" ><!--DOT OPERATOR -->
<!ENTITY sdotb            "&#x022A1;" ><!--SQUARED DOT OPERATOR -->
<!ENTITY setmn            "&#x02216;" ><!--SET MINUS -->
<!ENTITY sqcap            "&#x02293;" ><!--SQUARE CAP -->
<!ENTITY sqcup            "&#x02294;" ><!--SQUARE CUP -->
<!ENTITY ssetmn           "&#x02216;" ><!--SET MINUS -->
<!ENTITY sstarf           "&#x022C6;" ><!--STAR OPERATOR -->
<!ENTITY sum              "&#x02211;" ><!--N-ARY SUMMATION -->
<!ENTITY timesb           "&#x022A0;" ><!--SQUARED TIMES -->
<!ENTITY top              "&#x022A4;" ><!--DOWN TACK -->
<!ENTITY uplus            "&#x0228E;" ><!--MULTISET UNION -->
<!ENTITY wreath           "&#x02240;" ><!--WREATH PRODUCT -->
<!ENTITY xcirc            "&#x025EF;" ><!--LARGE CIRCLE -->
<!ENTITY xdtri            "&#x025BD;" ><!--WHITE DOWN-POINTING TRIANGLE -->
<!ENTITY xutri            "&#x025B3;" ><!--WHITE UP-POINTING TRIANGLE -->
