blob: a276c63fe9bdd0c04b8769b69ae2ce0ba65e89b1 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<typerules:RuleSet xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:typerules="http:///typerules.ecore">
<typerules operator="Or">
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Bool || Bool = Bool" firstOperand="datatypes.Boolean" secondOperand="datatypes.Boolean"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="TOP || * = Bool" firstOperand="TOP" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="* || TOP = Bool" firstOperand="*" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM || * -> TOP" firstOperand="BOTTOM" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* || BOTTOM -> TOP" firstOperand="*" secondOperand="BOTTOM"/>
</typerules>
<typerules operator="And">
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Bool &amp;&amp; Bool=Bool" firstOperand="datatypes.Boolean" secondOperand="datatypes.Boolean"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="* &amp;&amp; TOP = Bool" firstOperand="*" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="TOP &amp;&amp; * = Bool" firstOperand="TOP" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM &amp;&amp; * -> TOP" firstOperand="BOTTOM" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* &amp;&amp; BOTTOM -> TOP" firstOperand="*" secondOperand="BOTTOM"/>
</typerules>
<typerules operator="XOr">
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Bool xor Bool = Bool" firstOperand="datatypes.Boolean" secondOperand="datatypes.Boolean"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="TOP xor * = Bool" firstOperand="TOP" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="* xor TOP = Bool" firstOperand="*" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM xor * -> TOP" firstOperand="BOTTOM" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* xor BOTTOM -> TOP" firstOperand="*" secondOperand="BOTTOM"/>
</typerules>
<typerules operator="Equals">
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="TOP == * -> Boolean" firstOperand="TOP" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="* == TOP -> Boolean" firstOperand="*" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM == * -> TOP" firstOperand="BOTTOM" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* == BOTTOM -> TOP" firstOperand="*" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="MODELELEMENT == MODELELEMENT -> Boolean" firstOperand="MODELELEMENT" secondOperand="MODELELEMENT"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="ENTITY == ENTITY -> Boolean" firstOperand="ENTITY" secondOperand="ENTITY"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="RELATION == RELATION -> Boolean" firstOperand="RELATION" secondOperand="RELATION"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="String == String -> Boolean" firstOperand="datatypes.String" secondOperand="datatypes.String"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Boolean == Boolean -> Boolean" firstOperand="datatypes.Boolean" secondOperand="datatypes.Boolean"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer == Integer -> Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double == Double -> Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer == Double -> Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double == Integer -> Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="MultiplicityKind == MultiplicityKind -> Boolean" firstOperand="datatypes.MultiplicityKind" secondOperand="datatypes.MultiplicityKind"/>
</typerules>
<typerules operator="NotEquals">
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="TOP != * -> Bool" firstOperand="TOP" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="* != TOP -> Bool" firstOperand="*" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM != * -> TOP" firstOperand="BOTTOM" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* != BOTTOM -> TOP" firstOperand="*" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="MODELELEMENT != MODELELEMENT -> Boolean" firstOperand="MODELELEMENT" secondOperand="MODELELEMENT"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="ENTITY != ENTITY -> Boolean" firstOperand="ENTITY" secondOperand="ENTITY"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="RELATION != RELATION -> Boolean" firstOperand="RELATION" secondOperand="RELATION"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="String != String -> Boolean" firstOperand="datatypes.String" secondOperand="datatypes.String"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Boolean != Boolean -> Boolean" firstOperand="datatypes.Boolean" secondOperand="datatypes.Boolean"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer != Integer -> Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double != Double -> Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer != Double -> Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double != Integer -> Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="MultiplicityKind != MultiplicityKind -> Boolean" firstOperand="datatypes.MultiplicityKind" secondOperand="datatypes.MultiplicityKind"/>
</typerules>
<typerules operator="GreaterThan">
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="TOP > * = Bool" firstOperand="TOP" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="* > TOP = Bool" firstOperand="*" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM > * -> TOP" firstOperand="BOTTOM" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* > BOTTOM -> TOP" firstOperand="*" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer > Integer = Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double > Double = Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer > Double = Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double > Integer = Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="MultiplicityKind > MultiplicityKind -> Boolean" firstOperand="datatypes.MultiplicityKind" secondOperand="datatypes.MultiplicityKind"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="String > String -> Boolean" firstOperand="datatypes.String" secondOperand="datatypes.String"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="Boolean" name="String > Double -> Boolean" firstOperand="String" secondOperand="Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="Boolean" name="String > Integer -> Boolean" firstOperand="String" secondOperand="Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="Boolean" name="Double > String -> Boolean" firstOperand="Double" secondOperand="String"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="Boolean" name="Integer > String -> Boolean" firstOperand="Integer" secondOperand="String"/>
</typerules>
<typerules operator="GreaterThanOrEqualTo">
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="TOP >= * = Bool" firstOperand="TOP" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="* >= TOP = Bool" firstOperand="*" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM >= * -> TOP" firstOperand="BOTTOM" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* >= BOTTOM -> TOP" firstOperand="*" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer >= Integer = Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double >= Double = Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer >= Double = Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double >= Integer = Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="MultiplicityKind >= MultiplicityKind -> Boolean" firstOperand="datatypes.MultiplicityKind" secondOperand="datatypes.MultiplicityKind"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="String >= String -> Boolean" firstOperand="datatypes.String" secondOperand="datatypes.String"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="String >= Double -> Boolean" firstOperand="datatypes.String" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="String >= Integer -> Boolean" firstOperand="datatypes.String" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double >= String -> Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.String"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer >= String -> Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.String"/>
</typerules>
<typerules operator="LessThan">
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="TOP &lt; * = Bool" firstOperand="TOP" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="* &lt; TOP = Bool" firstOperand="*" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM &lt; * -> TOP" firstOperand="BOTTOM" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* &lt; BOTTOM -> TOP" firstOperand="*" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer &lt; Integer = Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double &lt; Double = Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer &lt; Double = Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double &lt; Integer = Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="MultiplicityKind &lt; MultiplicityKind -> Boolean" firstOperand="datatypes.MultiplicityKind" secondOperand="datatypes.MultiplicityKind"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="String &lt; String -> Boolean" firstOperand="datatypes.String" secondOperand="datatypes.String"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="String &lt; Double -> Boolean" firstOperand="datatypes.String" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="String &lt; Integer -> Boolean" firstOperand="datatypes.String" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double &lt; String -> Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.String"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer &lt; String -> Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.String"/>
</typerules>
<typerules operator="LessThanOrEqualTo">
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="TOP &lt;= * = Bool" firstOperand="TOP" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="* &lt;= TOP = Bool" firstOperand="*" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM &lt;= * -> TOP" firstOperand="BOTTOM" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* &lt;= BOTTOM -> TOP" firstOperand="*" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer &lt;= Integer = Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double &lt;= Double = Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer &lt;= Double = Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double &lt;= Integer = Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="MultiplicityKind &lt;= MultiplicityKind -> Boolean" firstOperand="datatypes.MultiplicityKind" secondOperand="datatypes.MultiplicityKind"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="String &lt;= String -> Boolean" firstOperand="datatypes.String" secondOperand="datatypes.String"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="String &lt;= Double -> Boolean" firstOperand="datatypes.String" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="String &lt;= Integer -> Boolean" firstOperand="datatypes.String" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Double &lt;= String -> Boolean" firstOperand="datatypes.Double" secondOperand="datatypes.String"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Boolean" name="Integer &lt;= String -> Boolean" firstOperand="datatypes.Integer" secondOperand="datatypes.String"/>
</typerules>
<typerules operator="Plus">
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.String" name="String +* = String" firstOperand="datatypes.String" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.String" name="* + String = String" firstOperand="*" secondOperand="datatypes.String"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="TOP + TOP= TOP" firstOperand="TOP" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="TOP + Boolean = TOP" firstOperand="TOP" secondOperand="datatypes.Boolean"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="Boolean + TOP= TOP" firstOperand="datatypes.Boolean" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="TOP + Integer = TOP" firstOperand="TOP" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="Integer + TOP= TOP" firstOperand="datatypes.Integer" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="TOP + Double = TOP" firstOperand="TOP" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="Double + TOP= TOP" firstOperand="datatypes.Double" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="TOP + MultiplicityKind = TOP" firstOperand="TOP" secondOperand="datatypes.MultiplicityKind"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="MultiplicityKind + TOP= TOP" firstOperand="datatypes.MultiplicityKind" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM + BOTTOM= TOP" firstOperand="BOTTOM" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM + Boolean = TOP" firstOperand="BOTTOM" secondOperand="datatypes.Boolean"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="Boolean + BOTTOM= TOP" firstOperand="datatypes.Boolean" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM + Integer = TOP" firstOperand="BOTTOM" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="Integer + BOTTOM= TOP" firstOperand="datatypes.Integer" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM + Double = TOP" firstOperand="BOTTOM" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="Double + BOTTOM= TOP" firstOperand="datatypes.Double" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM + MultiplicityKind = TOP" firstOperand="BOTTOM" secondOperand="datatypes.MultiplicityKind"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="MultiplicityKind + BOTTOM= TOP" firstOperand="datatypes.MultiplicityKind" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Integer" name="Integer + Integer = Integer" firstOperand="datatypes.Integer" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Double" name="Double + Double = Double" firstOperand="datatypes.Double" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Double" name="Double + Integer = Double" firstOperand="datatypes.Double" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Double" name="Integer + Double = Double" firstOperand="datatypes.Integer" secondOperand="datatypes.Double"/>
</typerules>
<typerules operator="Minus">
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="TOP - * = TOP" firstOperand="TOP" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* - TOP = TOP" firstOperand="*" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM - * -> TOP" firstOperand="BOTTOM" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* - BOTTOM -> TOP" firstOperand="*" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Integer" name="Integer - Integer = Integer" firstOperand="datatypes.Integer" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Double" name="Double - Double = Double" firstOperand="datatypes.Double" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Double" name="Double - Integer = Double" firstOperand="datatypes.Double" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Double" name="Integer - Double = Double" firstOperand="datatypes.Integer" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="-TOP = TOP" operand="TOP"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="-BOTTOM = TOP" operand="BOTTOM"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Integer" name="-Integer = Integer" operand="datatypes.Integer"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Double" name="-Double = Double" operand="datatypes.Double"/>
</typerules>
<typerules operator="Multiply">
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="TOP * * = TOP" firstOperand="TOP" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* * TOP = TOP" firstOperand="*" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM * * -> TOP" firstOperand="BOTTOM" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* * BOTTOM -> TOP" firstOperand="*" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Integer" name="Integer * Integer = Integer" firstOperand="datatypes.Integer" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Double" name="Double * Double = Double" firstOperand="datatypes.Double" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Double" name="Double * Integer = Double" firstOperand="datatypes.Double" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Double" name="Integer * Double = Double" firstOperand="datatypes.Integer" secondOperand="datatypes.Double"/>
</typerules>
<typerules operator="Division">
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="TOP / * = TOP" firstOperand="TOP" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* / TOP = TOP" firstOperand="*" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM / * -> TOP" firstOperand="BOTTOM" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* / BOTTOM -> TOP" firstOperand="*" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Integer" name="Integer / Integer = Integer" firstOperand="datatypes.Integer" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Double" name="Double / Double = Double" firstOperand="datatypes.Double" secondOperand="datatypes.Double"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Double" name="Double / Integer = Double" firstOperand="datatypes.Double" secondOperand="datatypes.Integer"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Double" name="Integer / Double = Double" firstOperand="datatypes.Integer" secondOperand="datatypes.Double"/>
</typerules>
<typerules operator="Remainder">
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="TOP % * = TOP" firstOperand="TOP" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* % TOP = TOP" firstOperand="*" secondOperand="TOP"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="BOTTOM % * -> TOP" firstOperand="BOTTOM" secondOperand="*"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="TOP" name="* % BOTTOM -> TOP" firstOperand="*" secondOperand="BOTTOM"/>
<judgements xsi:type="typerules:BinaryTypeJudgement" result="datatypes.Integer" name="Integer % Integer = Integer" firstOperand="datatypes.Integer" secondOperand="datatypes.Integer"/>
</typerules>
<typerules operator="Aggregate">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Boolean" name="aggregation(RELATION) = Boolean" operand="RELATION"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="aggergation(BOTTOM) = TOP" operand="BOTTOM"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Boolean" name="aggregation(TOP) = Boolean" operand="TOP"/>
</typerules>
<typerules operator="Source">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Boolean" name="source(RELATION) = MODELELEMENT" operand="MODELELEMENT"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="source(BOTTOM) = TOP" operand="BOTTOM"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="MODELELEMENT" name="source(TOP) = MODELELEMENT" operand="TOP"/>
<judgements xsi:type="typerules:CustomTypeJudgement" name="typeSource">
<operands>operand</operands>
</judgements>
</typerules>
<typerules operator="Target">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="MODELELEMENT" name="target(RELATION) = MODELELEMENT" operand="RELATION"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="target(BOTTOM) = TOP" operand="BOTTOM"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="MODELELEMENT" name="target(TOP) = MODELELEMENT" operand="TOP"/>
<judgements xsi:type="typerules:CustomTypeJudgement" name="typeTarget">
<operands>operand</operands>
</judgements>
</typerules>
<typerules operator="ElementReference">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="MODELELEMENT" name="ref(String) = MODELELEMENT" operand="datatypes.String"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="ref(BOTTOM) = TOP" operand="BOTTOM"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="MODELELEMENT" name="ref(TOP) = MODELELEMENT" operand="TOP"/>
<judgements xsi:type="typerules:CustomTypeJudgement" name="typeElementReference">
<operands>operand</operands>
</judgements>
</typerules>
<typerules operator="FullyQualifiedName">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.String" name="fqn(MODELELEMENT) = String" operand="MODELELEMENT"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="fqn(BOTTOM) = TOP" operand="BOTTOM"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.String" name="fqn(TOP) = String" operand="TOP"/>
</typerules>
<typerules operator="Name">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.String" name="name(MODELELEMENT) = String" operand="MODELELEMENT"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="name(BOTTOM) = TOP" operand="BOTTOM"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.String" name="name(TOP) = String" operand="TOP"/>
</typerules>
<typerules operator="Value">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.String" name="value(ENTITY) = String" operand="ENTITY"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="value(BOTTOM) = TOP" operand="BOTTOM"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.String" name="value(TOP) = String" operand="TOP"/>
</typerules>
<typerules operator="Inverse">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="RELATION" name="inverse(RELATION) = RELATION" operand="RELATION"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="source(BOTTOM) = TOP" operand="BOTTOM"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Boolean" name="source(TOP) = Boolean" operand="TOP"/>
<judgements xsi:type="typerules:CustomTypeJudgement" result="" name="typeInverse">
<operands>operand</operands>
</judgements>
</typerules>
<typerules operator="Multiplicity">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.MultiplicityKind" name="aggregation(RELATION) = MultiplicityKind" operand="RELATION"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="aggergation(BOTTOM) = TOP" operand="BOTTOM"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.MultiplicityKind" name="aggregation(TOP) = MultiplicityKind" operand="TOP"/>
</typerules>
<typerules operator="ToString">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.String" name="toString(*) = String" operand="*"/>
</typerules>
<typerules operator="ToInt">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Integer" name="toInt(TOP) = Integer" operand="TOP"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Integer" name="toInt(Integer) = Integer" operand="datatypes.Integer"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Integer" name="toInt(String) = Integer" operand="datatypes.String"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Integer" name="toInt(Double) = Integer" operand="datatypes.Double"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="toInt(BOTTOM) = TOP" operand="BOTTOM"/>
</typerules>
<typerules operator="ToDouble">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Double" name="toDouble(TOP) = Double" operand="TOP"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Double" name="toDouble(Integer) = Double" operand="datatypes.Integer"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Double" name="toDouble(String) = Double" operand="datatypes.String"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Double" name="toDouble(Double) = Double" operand="datatypes.Double"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="toDouble(BOTTOM) = TOP" operand="BOTTOM"/>
</typerules>
<typerules operator="ToBoolean">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Boolean" name="toBoolean(TOP) = Boolean" operand="TOP"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Boolean" name="toBoolean(Integer) = Boolean" operand="datatypes.Integer"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Boolean" name="toBoolean(String) = Boolean" operand="datatypes.String"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Boolean" name="toBoolean(Double) = Boolean" operand="datatypes.Double"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Boolean" name="toBoolean(Boolean) = Boolean" operand="datatypes.Boolean"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="toBoolean(BOTTOM) = TOP" operand="BOTTOM"/>
</typerules>
<typerules operator="ToMultiplicity">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.MultiplicityKind" name="toMultiplicity(TOP) = MultiplicityKind" operand="TOP"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.MultiplicityKind" name="toMultiplicity(MultiplicityKind) = MultiplicityKind" operand="datatypes.MultiplicityKind"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.MultiplicityKind" name="toMultiplicity(String) = MultiplicityKind" operand="datatypes.String"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Integer" name="toInt(Double) = Integer" operand="datatypes.Double"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="toMultiplicity(BOTTOM) = TOP" operand="BOTTOM"/>
</typerules>
<typerules operator="Not">
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Boolean" name="!Boolean = Boolean" operand="datatypes.Boolean"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="datatypes.Boolean" name="!TOP = Boolean" operand="TOP"/>
<judgements xsi:type="typerules:UnaryTypeJudgement" result="TOP" name="!BOTTOM = TOP" operand="BOTTOM"/>
</typerules>
</typerules:RuleSet>