never executed always true always false
    1 {-# LANGUAGE DeriveGeneric, DeriveDataTypeable, DeriveFunctor, DeriveTraversable, DeriveFoldable #-}
    2 {-# LANGUAGE UndecidableInstances #-}
    3 
    4 module Conjure.Language.Expression.Op.Internal.Generated
    5     ( Op(..)
    6     , valuesInIntDomain
    7     , OpActive(..)
    8     , OpAllDiff(..)
    9     , OpAllDiffExcept(..)
   10     , OpAnd(..)
   11     , OpApart(..)
   12     , OpAtLeast(..)
   13     , OpAtMost(..)
   14     , OpAttributeAsConstraint(..)
   15     , OpCatchUndef(..)
   16     , OpDefined(..)
   17     , OpDiv(..)
   18     , OpDontCare(..)
   19     , OpDotLeq(..)
   20     , OpDotLt(..)
   21     , OpEq(..)
   22     , OpFactorial(..)
   23     , OpFlatten(..)
   24     , OpFreq(..)
   25     , OpGCC(..)
   26     , OpGeq(..)
   27     , OpGt(..)
   28     , OpHist(..)
   29     , OpIff(..)
   30     , OpImage(..)
   31     , OpImageSet(..)
   32     , OpImply(..)
   33     , OpIn(..)
   34     , OpIndexing(..)
   35     , OpIntersect(..)
   36     , OpInverse(..)
   37     , OpLeq(..)
   38     , OpLexLeq(..)
   39     , OpLexLt(..)
   40     , OpLt(..)
   41     , OpMakeTable(..)
   42     , OpMax(..)
   43     , OpMin(..)
   44     , OpMinus(..)
   45     , OpMod(..)
   46     , OpNegate(..)
   47     , OpNeq(..)
   48     , OpNot(..)
   49     , OpOr(..)
   50     , OpParticipants(..)
   51     , OpParts(..)
   52     , OpParty(..)
   53     , OpPow(..)
   54     , OpPowerSet(..)
   55     , OpPreImage(..)
   56     , OpPred(..)
   57     , OpProduct(..)
   58     , OpRange(..)
   59     , OpRelationProj(..)
   60     , OpRestrict(..)
   61     , OpSlicing(..)
   62     , OpSubsequence(..)
   63     , OpSubset(..)
   64     , OpSubsetEq(..)
   65     , OpSubstring(..)
   66     , OpSucc(..)
   67     , OpSum(..)
   68     , OpSupset(..)
   69     , OpSupsetEq(..)
   70     , OpTable(..)
   71     , OpTildeLeq(..)
   72     , OpTildeLt(..)
   73     , OpToInt(..)
   74     , OpToMSet(..)
   75     , OpToRelation(..)
   76     , OpToSet(..)
   77     , OpTogether(..)
   78     , OpTransform(..)
   79     , OpTrue(..)
   80     , OpTwoBars(..)
   81     , OpUnion(..)
   82     , OpXor(..)
   83     ) where
   84 
   85 -- conjure
   86 import Conjure.Prelude
   87 import Conjure.Language.Expression.Op.Internal.Common
   88 
   89 import Conjure.Language.Expression.Op.Active
   90 import Conjure.Language.Expression.Op.AllDiff
   91 import Conjure.Language.Expression.Op.AllDiffExcept
   92 import Conjure.Language.Expression.Op.And
   93 import Conjure.Language.Expression.Op.Apart
   94 import Conjure.Language.Expression.Op.AtLeast
   95 import Conjure.Language.Expression.Op.AtMost
   96 import Conjure.Language.Expression.Op.AttributeAsConstraint
   97 import Conjure.Language.Expression.Op.CatchUndef
   98 import Conjure.Language.Expression.Op.Defined
   99 import Conjure.Language.Expression.Op.Div
  100 import Conjure.Language.Expression.Op.DontCare
  101 import Conjure.Language.Expression.Op.DotLeq
  102 import Conjure.Language.Expression.Op.DotLt
  103 import Conjure.Language.Expression.Op.Eq
  104 import Conjure.Language.Expression.Op.Factorial
  105 import Conjure.Language.Expression.Op.Flatten
  106 import Conjure.Language.Expression.Op.Freq
  107 import Conjure.Language.Expression.Op.GCC
  108 import Conjure.Language.Expression.Op.Geq
  109 import Conjure.Language.Expression.Op.Gt
  110 import Conjure.Language.Expression.Op.Hist
  111 import Conjure.Language.Expression.Op.Iff
  112 import Conjure.Language.Expression.Op.Image
  113 import Conjure.Language.Expression.Op.ImageSet
  114 import Conjure.Language.Expression.Op.Imply
  115 import Conjure.Language.Expression.Op.In
  116 import Conjure.Language.Expression.Op.Indexing
  117 import Conjure.Language.Expression.Op.Intersect
  118 import Conjure.Language.Expression.Op.Inverse
  119 import Conjure.Language.Expression.Op.Leq
  120 import Conjure.Language.Expression.Op.LexLeq
  121 import Conjure.Language.Expression.Op.LexLt
  122 import Conjure.Language.Expression.Op.Lt
  123 import Conjure.Language.Expression.Op.MakeTable
  124 import Conjure.Language.Expression.Op.Max
  125 import Conjure.Language.Expression.Op.Min
  126 import Conjure.Language.Expression.Op.Minus
  127 import Conjure.Language.Expression.Op.Mod
  128 import Conjure.Language.Expression.Op.Negate
  129 import Conjure.Language.Expression.Op.Neq
  130 import Conjure.Language.Expression.Op.Not
  131 import Conjure.Language.Expression.Op.Or
  132 import Conjure.Language.Expression.Op.Participants
  133 import Conjure.Language.Expression.Op.Parts
  134 import Conjure.Language.Expression.Op.Party
  135 import Conjure.Language.Expression.Op.Pow
  136 import Conjure.Language.Expression.Op.PowerSet
  137 import Conjure.Language.Expression.Op.PreImage
  138 import Conjure.Language.Expression.Op.Pred
  139 import Conjure.Language.Expression.Op.Product
  140 import Conjure.Language.Expression.Op.Range
  141 import Conjure.Language.Expression.Op.RelationProj
  142 import Conjure.Language.Expression.Op.Restrict
  143 import Conjure.Language.Expression.Op.Slicing
  144 import Conjure.Language.Expression.Op.Subsequence
  145 import Conjure.Language.Expression.Op.Subset
  146 import Conjure.Language.Expression.Op.SubsetEq
  147 import Conjure.Language.Expression.Op.Substring
  148 import Conjure.Language.Expression.Op.Succ
  149 import Conjure.Language.Expression.Op.Sum
  150 import Conjure.Language.Expression.Op.Supset
  151 import Conjure.Language.Expression.Op.SupsetEq
  152 import Conjure.Language.Expression.Op.Table
  153 import Conjure.Language.Expression.Op.TildeLeq
  154 import Conjure.Language.Expression.Op.TildeLt
  155 import Conjure.Language.Expression.Op.ToInt
  156 import Conjure.Language.Expression.Op.ToMSet
  157 import Conjure.Language.Expression.Op.ToRelation
  158 import Conjure.Language.Expression.Op.ToSet
  159 import Conjure.Language.Expression.Op.Together
  160 import Conjure.Language.Expression.Op.Transform
  161 import Conjure.Language.Expression.Op.True
  162 import Conjure.Language.Expression.Op.TwoBars
  163 import Conjure.Language.Expression.Op.Union
  164 import Conjure.Language.Expression.Op.Xor
  165 
  166 data Op x
  167     = MkOpActive (OpActive x)
  168     | MkOpAllDiff (OpAllDiff x)
  169     | MkOpAllDiffExcept (OpAllDiffExcept x)
  170     | MkOpAnd (OpAnd x)
  171     | MkOpApart (OpApart x)
  172     | MkOpAtLeast (OpAtLeast x)
  173     | MkOpAtMost (OpAtMost x)
  174     | MkOpAttributeAsConstraint (OpAttributeAsConstraint x)
  175     | MkOpCatchUndef (OpCatchUndef x)
  176     | MkOpDefined (OpDefined x)
  177     | MkOpDiv (OpDiv x)
  178     | MkOpDontCare (OpDontCare x)
  179     | MkOpDotLeq (OpDotLeq x)
  180     | MkOpDotLt (OpDotLt x)
  181     | MkOpEq (OpEq x)
  182     | MkOpFactorial (OpFactorial x)
  183     | MkOpFlatten (OpFlatten x)
  184     | MkOpFreq (OpFreq x)
  185     | MkOpGCC (OpGCC x)
  186     | MkOpGeq (OpGeq x)
  187     | MkOpGt (OpGt x)
  188     | MkOpHist (OpHist x)
  189     | MkOpIff (OpIff x)
  190     | MkOpImage (OpImage x)
  191     | MkOpImageSet (OpImageSet x)
  192     | MkOpImply (OpImply x)
  193     | MkOpIn (OpIn x)
  194     | MkOpIndexing (OpIndexing x)
  195     | MkOpIntersect (OpIntersect x)
  196     | MkOpInverse (OpInverse x)
  197     | MkOpLeq (OpLeq x)
  198     | MkOpLexLeq (OpLexLeq x)
  199     | MkOpLexLt (OpLexLt x)
  200     | MkOpLt (OpLt x)
  201     | MkOpMakeTable (OpMakeTable x)
  202     | MkOpMax (OpMax x)
  203     | MkOpMin (OpMin x)
  204     | MkOpMinus (OpMinus x)
  205     | MkOpMod (OpMod x)
  206     | MkOpNegate (OpNegate x)
  207     | MkOpNeq (OpNeq x)
  208     | MkOpNot (OpNot x)
  209     | MkOpOr (OpOr x)
  210     | MkOpParticipants (OpParticipants x)
  211     | MkOpParts (OpParts x)
  212     | MkOpParty (OpParty x)
  213     | MkOpPow (OpPow x)
  214     | MkOpPowerSet (OpPowerSet x)
  215     | MkOpPreImage (OpPreImage x)
  216     | MkOpPred (OpPred x)
  217     | MkOpProduct (OpProduct x)
  218     | MkOpRange (OpRange x)
  219     | MkOpRelationProj (OpRelationProj x)
  220     | MkOpRestrict (OpRestrict x)
  221     | MkOpSlicing (OpSlicing x)
  222     | MkOpSubsequence (OpSubsequence x)
  223     | MkOpSubset (OpSubset x)
  224     | MkOpSubsetEq (OpSubsetEq x)
  225     | MkOpSubstring (OpSubstring x)
  226     | MkOpSucc (OpSucc x)
  227     | MkOpSum (OpSum x)
  228     | MkOpSupset (OpSupset x)
  229     | MkOpSupsetEq (OpSupsetEq x)
  230     | MkOpTable (OpTable x)
  231     | MkOpTildeLeq (OpTildeLeq x)
  232     | MkOpTildeLt (OpTildeLt x)
  233     | MkOpToInt (OpToInt x)
  234     | MkOpToMSet (OpToMSet x)
  235     | MkOpToRelation (OpToRelation x)
  236     | MkOpToSet (OpToSet x)
  237     | MkOpTogether (OpTogether x)
  238     | MkOpTransform (OpTransform x)
  239     | MkOpTrue (OpTrue x)
  240     | MkOpTwoBars (OpTwoBars x)
  241     | MkOpUnion (OpUnion x)
  242     | MkOpXor (OpXor x)
  243     deriving (Eq, Ord, Show, Data, Functor, Traversable, Foldable, Typeable, Generic)
  244 
  245 instance Serialize x => Serialize (Op x)
  246 instance Hashable  x => Hashable  (Op x)
  247 instance ToJSON    x => ToJSON    (Op x) where toJSON = genericToJSON jsonOptions
  248 instance FromJSON  x => FromJSON  (Op x) where parseJSON = genericParseJSON jsonOptions
  249 
  250 
  251 instance OpActive x :< Op x where
  252     inject = MkOpActive
  253     project (MkOpActive x) = return x
  254     project _ = failDoc "projecting OpActive"
  255 instance OpAllDiff x :< Op x where
  256     inject = MkOpAllDiff
  257     project (MkOpAllDiff x) = return x
  258     project _ = failDoc "projecting OpAllDiff"
  259 instance OpAllDiffExcept x :< Op x where
  260     inject = MkOpAllDiffExcept
  261     project (MkOpAllDiffExcept x) = return x
  262     project _ = failDoc "projecting OpAllDiffExcept"
  263 instance OpAnd x :< Op x where
  264     inject = MkOpAnd
  265     project (MkOpAnd x) = return x
  266     project _ = failDoc "projecting OpAnd"
  267 instance OpApart x :< Op x where
  268     inject = MkOpApart
  269     project (MkOpApart x) = return x
  270     project _ = failDoc "projecting OpApart"
  271 instance OpAtLeast x :< Op x where
  272     inject = MkOpAtLeast
  273     project (MkOpAtLeast x) = return x
  274     project _ = failDoc "projecting OpAtLeast"
  275 instance OpAtMost x :< Op x where
  276     inject = MkOpAtMost
  277     project (MkOpAtMost x) = return x
  278     project _ = failDoc "projecting OpAtMost"
  279 instance OpAttributeAsConstraint x :< Op x where
  280     inject = MkOpAttributeAsConstraint
  281     project (MkOpAttributeAsConstraint x) = return x
  282     project _ = failDoc "projecting OpAttributeAsConstraint"
  283 instance OpCatchUndef x :< Op x where
  284     inject = MkOpCatchUndef
  285     project (MkOpCatchUndef x) = return x
  286     project _ = failDoc "projecting OpCatchUndef"
  287 instance OpDefined x :< Op x where
  288     inject = MkOpDefined
  289     project (MkOpDefined x) = return x
  290     project _ = failDoc "projecting OpDefined"
  291 instance OpDiv x :< Op x where
  292     inject = MkOpDiv
  293     project (MkOpDiv x) = return x
  294     project _ = failDoc "projecting OpDiv"
  295 instance OpDontCare x :< Op x where
  296     inject = MkOpDontCare
  297     project (MkOpDontCare x) = return x
  298     project _ = failDoc "projecting OpDontCare"
  299 instance OpDotLeq x :< Op x where
  300     inject = MkOpDotLeq
  301     project (MkOpDotLeq x) = return x
  302     project _ = failDoc "projecting OpDotLeq"
  303 instance OpDotLt x :< Op x where
  304     inject = MkOpDotLt
  305     project (MkOpDotLt x) = return x
  306     project _ = failDoc "projecting OpDotLt"
  307 instance OpEq x :< Op x where
  308     inject = MkOpEq
  309     project (MkOpEq x) = return x
  310     project _ = failDoc "projecting OpEq"
  311 instance OpFactorial x :< Op x where
  312     inject = MkOpFactorial
  313     project (MkOpFactorial x) = return x
  314     project _ = failDoc "projecting OpFactorial"
  315 instance OpFlatten x :< Op x where
  316     inject = MkOpFlatten
  317     project (MkOpFlatten x) = return x
  318     project _ = failDoc "projecting OpFlatten"
  319 instance OpFreq x :< Op x where
  320     inject = MkOpFreq
  321     project (MkOpFreq x) = return x
  322     project _ = failDoc "projecting OpFreq"
  323 instance OpGCC x :< Op x where
  324     inject = MkOpGCC
  325     project (MkOpGCC x) = return x
  326     project _ = failDoc "projecting OpGCC"
  327 instance OpGeq x :< Op x where
  328     inject = MkOpGeq
  329     project (MkOpGeq x) = return x
  330     project _ = failDoc "projecting OpGeq"
  331 instance OpGt x :< Op x where
  332     inject = MkOpGt
  333     project (MkOpGt x) = return x
  334     project _ = failDoc "projecting OpGt"
  335 instance OpHist x :< Op x where
  336     inject = MkOpHist
  337     project (MkOpHist x) = return x
  338     project _ = failDoc "projecting OpHist"
  339 instance OpIff x :< Op x where
  340     inject = MkOpIff
  341     project (MkOpIff x) = return x
  342     project _ = failDoc "projecting OpIff"
  343 instance OpImage x :< Op x where
  344     inject = MkOpImage
  345     project (MkOpImage x) = return x
  346     project _ = failDoc "projecting OpImage"
  347 instance OpImageSet x :< Op x where
  348     inject = MkOpImageSet
  349     project (MkOpImageSet x) = return x
  350     project _ = failDoc "projecting OpImageSet"
  351 instance OpImply x :< Op x where
  352     inject = MkOpImply
  353     project (MkOpImply x) = return x
  354     project _ = failDoc "projecting OpImply"
  355 instance OpIn x :< Op x where
  356     inject = MkOpIn
  357     project (MkOpIn x) = return x
  358     project _ = failDoc "projecting OpIn"
  359 instance OpIndexing x :< Op x where
  360     inject = MkOpIndexing
  361     project (MkOpIndexing x) = return x
  362     project _ = failDoc "projecting OpIndexing"
  363 instance OpIntersect x :< Op x where
  364     inject = MkOpIntersect
  365     project (MkOpIntersect x) = return x
  366     project _ = failDoc "projecting OpIntersect"
  367 instance OpInverse x :< Op x where
  368     inject = MkOpInverse
  369     project (MkOpInverse x) = return x
  370     project _ = failDoc "projecting OpInverse"
  371 instance OpLeq x :< Op x where
  372     inject = MkOpLeq
  373     project (MkOpLeq x) = return x
  374     project _ = failDoc "projecting OpLeq"
  375 instance OpLexLeq x :< Op x where
  376     inject = MkOpLexLeq
  377     project (MkOpLexLeq x) = return x
  378     project _ = failDoc "projecting OpLexLeq"
  379 instance OpLexLt x :< Op x where
  380     inject = MkOpLexLt
  381     project (MkOpLexLt x) = return x
  382     project _ = failDoc "projecting OpLexLt"
  383 instance OpLt x :< Op x where
  384     inject = MkOpLt
  385     project (MkOpLt x) = return x
  386     project _ = failDoc "projecting OpLt"
  387 instance OpMakeTable x :< Op x where
  388     inject = MkOpMakeTable
  389     project (MkOpMakeTable x) = return x
  390     project _ = failDoc "projecting OpMakeTable"
  391 instance OpMax x :< Op x where
  392     inject = MkOpMax
  393     project (MkOpMax x) = return x
  394     project _ = failDoc "projecting OpMax"
  395 instance OpMin x :< Op x where
  396     inject = MkOpMin
  397     project (MkOpMin x) = return x
  398     project _ = failDoc "projecting OpMin"
  399 instance OpMinus x :< Op x where
  400     inject = MkOpMinus
  401     project (MkOpMinus x) = return x
  402     project _ = failDoc "projecting OpMinus"
  403 instance OpMod x :< Op x where
  404     inject = MkOpMod
  405     project (MkOpMod x) = return x
  406     project _ = failDoc "projecting OpMod"
  407 instance OpNegate x :< Op x where
  408     inject = MkOpNegate
  409     project (MkOpNegate x) = return x
  410     project _ = failDoc "projecting OpNegate"
  411 instance OpNeq x :< Op x where
  412     inject = MkOpNeq
  413     project (MkOpNeq x) = return x
  414     project _ = failDoc "projecting OpNeq"
  415 instance OpNot x :< Op x where
  416     inject = MkOpNot
  417     project (MkOpNot x) = return x
  418     project _ = failDoc "projecting OpNot"
  419 instance OpOr x :< Op x where
  420     inject = MkOpOr
  421     project (MkOpOr x) = return x
  422     project _ = failDoc "projecting OpOr"
  423 instance OpParticipants x :< Op x where
  424     inject = MkOpParticipants
  425     project (MkOpParticipants x) = return x
  426     project _ = failDoc "projecting OpParticipants"
  427 instance OpParts x :< Op x where
  428     inject = MkOpParts
  429     project (MkOpParts x) = return x
  430     project _ = failDoc "projecting OpParts"
  431 instance OpParty x :< Op x where
  432     inject = MkOpParty
  433     project (MkOpParty x) = return x
  434     project _ = failDoc "projecting OpParty"
  435 instance OpPow x :< Op x where
  436     inject = MkOpPow
  437     project (MkOpPow x) = return x
  438     project _ = failDoc "projecting OpPow"
  439 instance OpPowerSet x :< Op x where
  440     inject = MkOpPowerSet
  441     project (MkOpPowerSet x) = return x
  442     project _ = failDoc "projecting OpPowerSet"
  443 instance OpPreImage x :< Op x where
  444     inject = MkOpPreImage
  445     project (MkOpPreImage x) = return x
  446     project _ = failDoc "projecting OpPreImage"
  447 instance OpPred x :< Op x where
  448     inject = MkOpPred
  449     project (MkOpPred x) = return x
  450     project _ = failDoc "projecting OpPred"
  451 instance OpProduct x :< Op x where
  452     inject = MkOpProduct
  453     project (MkOpProduct x) = return x
  454     project _ = failDoc "projecting OpProduct"
  455 instance OpRange x :< Op x where
  456     inject = MkOpRange
  457     project (MkOpRange x) = return x
  458     project _ = failDoc "projecting OpRange"
  459 instance OpRelationProj x :< Op x where
  460     inject = MkOpRelationProj
  461     project (MkOpRelationProj x) = return x
  462     project _ = failDoc "projecting OpRelationProj"
  463 instance OpRestrict x :< Op x where
  464     inject = MkOpRestrict
  465     project (MkOpRestrict x) = return x
  466     project _ = failDoc "projecting OpRestrict"
  467 instance OpSlicing x :< Op x where
  468     inject = MkOpSlicing
  469     project (MkOpSlicing x) = return x
  470     project _ = failDoc "projecting OpSlicing"
  471 instance OpSubsequence x :< Op x where
  472     inject = MkOpSubsequence
  473     project (MkOpSubsequence x) = return x
  474     project _ = failDoc "projecting OpSubsequence"
  475 instance OpSubset x :< Op x where
  476     inject = MkOpSubset
  477     project (MkOpSubset x) = return x
  478     project _ = failDoc "projecting OpSubset"
  479 instance OpSubsetEq x :< Op x where
  480     inject = MkOpSubsetEq
  481     project (MkOpSubsetEq x) = return x
  482     project _ = failDoc "projecting OpSubsetEq"
  483 instance OpSubstring x :< Op x where
  484     inject = MkOpSubstring
  485     project (MkOpSubstring x) = return x
  486     project _ = failDoc "projecting OpSubstring"
  487 instance OpSucc x :< Op x where
  488     inject = MkOpSucc
  489     project (MkOpSucc x) = return x
  490     project _ = failDoc "projecting OpSucc"
  491 instance OpSum x :< Op x where
  492     inject = MkOpSum
  493     project (MkOpSum x) = return x
  494     project _ = failDoc "projecting OpSum"
  495 instance OpSupset x :< Op x where
  496     inject = MkOpSupset
  497     project (MkOpSupset x) = return x
  498     project _ = failDoc "projecting OpSupset"
  499 instance OpSupsetEq x :< Op x where
  500     inject = MkOpSupsetEq
  501     project (MkOpSupsetEq x) = return x
  502     project _ = failDoc "projecting OpSupsetEq"
  503 instance OpTable x :< Op x where
  504     inject = MkOpTable
  505     project (MkOpTable x) = return x
  506     project _ = failDoc "projecting OpTable"
  507 instance OpTildeLeq x :< Op x where
  508     inject = MkOpTildeLeq
  509     project (MkOpTildeLeq x) = return x
  510     project _ = failDoc "projecting OpTildeLeq"
  511 instance OpTildeLt x :< Op x where
  512     inject = MkOpTildeLt
  513     project (MkOpTildeLt x) = return x
  514     project _ = failDoc "projecting OpTildeLt"
  515 instance OpToInt x :< Op x where
  516     inject = MkOpToInt
  517     project (MkOpToInt x) = return x
  518     project _ = failDoc "projecting OpToInt"
  519 instance OpToMSet x :< Op x where
  520     inject = MkOpToMSet
  521     project (MkOpToMSet x) = return x
  522     project _ = failDoc "projecting OpToMSet"
  523 instance OpToRelation x :< Op x where
  524     inject = MkOpToRelation
  525     project (MkOpToRelation x) = return x
  526     project _ = failDoc "projecting OpToRelation"
  527 instance OpToSet x :< Op x where
  528     inject = MkOpToSet
  529     project (MkOpToSet x) = return x
  530     project _ = failDoc "projecting OpToSet"
  531 instance OpTogether x :< Op x where
  532     inject = MkOpTogether
  533     project (MkOpTogether x) = return x
  534     project _ = failDoc "projecting OpTogether"
  535 instance OpTransform x :< Op x where
  536     inject = MkOpTransform
  537     project (MkOpTransform x) = return x
  538     project _ = failDoc "projecting OpTransform"
  539 instance OpTrue x :< Op x where
  540     inject = MkOpTrue
  541     project (MkOpTrue x) = return x
  542     project _ = failDoc "projecting OpTrue"
  543 instance OpTwoBars x :< Op x where
  544     inject = MkOpTwoBars
  545     project (MkOpTwoBars x) = return x
  546     project _ = failDoc "projecting OpTwoBars"
  547 instance OpUnion x :< Op x where
  548     inject = MkOpUnion
  549     project (MkOpUnion x) = return x
  550     project _ = failDoc "projecting OpUnion"
  551 instance OpXor x :< Op x where
  552     inject = MkOpXor
  553     project (MkOpXor x) = return x
  554     project _ = failDoc "projecting OpXor"
  555 
  556 instance ( Pretty x
  557          , ExpressionLike x
  558          , ReferenceContainer x
  559          , TypeOf x
  560          , Domain () x :< x
  561          ) => TypeOf (Op x) where
  562     typeOf (MkOpActive x) = typeOf x
  563     typeOf (MkOpAllDiff x) = typeOf x
  564     typeOf (MkOpAllDiffExcept x) = typeOf x
  565     typeOf (MkOpAnd x) = typeOf x
  566     typeOf (MkOpApart x) = typeOf x
  567     typeOf (MkOpAtLeast x) = typeOf x
  568     typeOf (MkOpAtMost x) = typeOf x
  569     typeOf (MkOpAttributeAsConstraint x) = typeOf x
  570     typeOf (MkOpCatchUndef x) = typeOf x
  571     typeOf (MkOpDefined x) = typeOf x
  572     typeOf (MkOpDiv x) = typeOf x
  573     typeOf (MkOpDontCare x) = typeOf x
  574     typeOf (MkOpDotLeq x) = typeOf x
  575     typeOf (MkOpDotLt x) = typeOf x
  576     typeOf (MkOpEq x) = typeOf x
  577     typeOf (MkOpFactorial x) = typeOf x
  578     typeOf (MkOpFlatten x) = typeOf x
  579     typeOf (MkOpFreq x) = typeOf x
  580     typeOf (MkOpGCC x) = typeOf x
  581     typeOf (MkOpGeq x) = typeOf x
  582     typeOf (MkOpGt x) = typeOf x
  583     typeOf (MkOpHist x) = typeOf x
  584     typeOf (MkOpIff x) = typeOf x
  585     typeOf (MkOpImage x) = typeOf x
  586     typeOf (MkOpImageSet x) = typeOf x
  587     typeOf (MkOpImply x) = typeOf x
  588     typeOf (MkOpIn x) = typeOf x
  589     typeOf (MkOpIndexing x) = typeOf x
  590     typeOf (MkOpIntersect x) = typeOf x
  591     typeOf (MkOpInverse x) = typeOf x
  592     typeOf (MkOpLeq x) = typeOf x
  593     typeOf (MkOpLexLeq x) = typeOf x
  594     typeOf (MkOpLexLt x) = typeOf x
  595     typeOf (MkOpLt x) = typeOf x
  596     typeOf (MkOpMakeTable x) = typeOf x
  597     typeOf (MkOpMax x) = typeOf x
  598     typeOf (MkOpMin x) = typeOf x
  599     typeOf (MkOpMinus x) = typeOf x
  600     typeOf (MkOpMod x) = typeOf x
  601     typeOf (MkOpNegate x) = typeOf x
  602     typeOf (MkOpNeq x) = typeOf x
  603     typeOf (MkOpNot x) = typeOf x
  604     typeOf (MkOpOr x) = typeOf x
  605     typeOf (MkOpParticipants x) = typeOf x
  606     typeOf (MkOpParts x) = typeOf x
  607     typeOf (MkOpParty x) = typeOf x
  608     typeOf (MkOpPow x) = typeOf x
  609     typeOf (MkOpPowerSet x) = typeOf x
  610     typeOf (MkOpPreImage x) = typeOf x
  611     typeOf (MkOpPred x) = typeOf x
  612     typeOf (MkOpProduct x) = typeOf x
  613     typeOf (MkOpRange x) = typeOf x
  614     typeOf (MkOpRelationProj x) = typeOf x
  615     typeOf (MkOpRestrict x) = typeOf x
  616     typeOf (MkOpSlicing x) = typeOf x
  617     typeOf (MkOpSubsequence x) = typeOf x
  618     typeOf (MkOpSubset x) = typeOf x
  619     typeOf (MkOpSubsetEq x) = typeOf x
  620     typeOf (MkOpSubstring x) = typeOf x
  621     typeOf (MkOpSucc x) = typeOf x
  622     typeOf (MkOpSum x) = typeOf x
  623     typeOf (MkOpSupset x) = typeOf x
  624     typeOf (MkOpSupsetEq x) = typeOf x
  625     typeOf (MkOpTable x) = typeOf x
  626     typeOf (MkOpTildeLeq x) = typeOf x
  627     typeOf (MkOpTildeLt x) = typeOf x
  628     typeOf (MkOpToInt x) = typeOf x
  629     typeOf (MkOpToMSet x) = typeOf x
  630     typeOf (MkOpToRelation x) = typeOf x
  631     typeOf (MkOpToSet x) = typeOf x
  632     typeOf (MkOpTogether x) = typeOf x
  633     typeOf (MkOpTransform x) = typeOf x
  634     typeOf (MkOpTrue x) = typeOf x
  635     typeOf (MkOpTwoBars x) = typeOf x
  636     typeOf (MkOpUnion x) = typeOf x
  637     typeOf (MkOpXor x) = typeOf x
  638 
  639 instance ( OpActive x :< x
  640          , OpAllDiff x :< x
  641          , OpAllDiffExcept x :< x
  642          , OpAnd x :< x
  643          , OpApart x :< x
  644          , OpAtLeast x :< x
  645          , OpAtMost x :< x
  646          , OpAttributeAsConstraint x :< x
  647          , OpCatchUndef x :< x
  648          , OpDefined x :< x
  649          , OpDiv x :< x
  650          , OpDontCare x :< x
  651          , OpDotLeq x :< x
  652          , OpDotLt x :< x
  653          , OpEq x :< x
  654          , OpFactorial x :< x
  655          , OpFlatten x :< x
  656          , OpFreq x :< x
  657          , OpGCC x :< x
  658          , OpGeq x :< x
  659          , OpGt x :< x
  660          , OpHist x :< x
  661          , OpIff x :< x
  662          , OpImage x :< x
  663          , OpImageSet x :< x
  664          , OpImply x :< x
  665          , OpIn x :< x
  666          , OpIndexing x :< x
  667          , OpIntersect x :< x
  668          , OpInverse x :< x
  669          , OpLeq x :< x
  670          , OpLexLeq x :< x
  671          , OpLexLt x :< x
  672          , OpLt x :< x
  673          , OpMakeTable x :< x
  674          , OpMax x :< x
  675          , OpMin x :< x
  676          , OpMinus x :< x
  677          , OpMod x :< x
  678          , OpNegate x :< x
  679          , OpNeq x :< x
  680          , OpNot x :< x
  681          , OpOr x :< x
  682          , OpParticipants x :< x
  683          , OpParts x :< x
  684          , OpParty x :< x
  685          , OpPow x :< x
  686          , OpPowerSet x :< x
  687          , OpPreImage x :< x
  688          , OpPred x :< x
  689          , OpProduct x :< x
  690          , OpRange x :< x
  691          , OpRelationProj x :< x
  692          , OpRestrict x :< x
  693          , OpSlicing x :< x
  694          , OpSubsequence x :< x
  695          , OpSubset x :< x
  696          , OpSubsetEq x :< x
  697          , OpSubstring x :< x
  698          , OpSucc x :< x
  699          , OpSum x :< x
  700          , OpSupset x :< x
  701          , OpSupsetEq x :< x
  702          , OpTable x :< x
  703          , OpTildeLeq x :< x
  704          , OpTildeLt x :< x
  705          , OpToInt x :< x
  706          , OpToMSet x :< x
  707          , OpToRelation x :< x
  708          , OpToSet x :< x
  709          , OpTogether x :< x
  710          , OpTransform x :< x
  711          , OpTrue x :< x
  712          , OpTwoBars x :< x
  713          , OpUnion x :< x
  714          , OpXor x :< x) => SimplifyOp Op x where
  715     simplifyOp (MkOpActive x) = simplifyOp x
  716     simplifyOp (MkOpAllDiff x) = simplifyOp x
  717     simplifyOp (MkOpAllDiffExcept x) = simplifyOp x
  718     simplifyOp (MkOpAnd x) = simplifyOp x
  719     simplifyOp (MkOpApart x) = simplifyOp x
  720     simplifyOp (MkOpAtLeast x) = simplifyOp x
  721     simplifyOp (MkOpAtMost x) = simplifyOp x
  722     simplifyOp (MkOpAttributeAsConstraint x) = simplifyOp x
  723     simplifyOp (MkOpCatchUndef x) = simplifyOp x
  724     simplifyOp (MkOpDefined x) = simplifyOp x
  725     simplifyOp (MkOpDiv x) = simplifyOp x
  726     simplifyOp (MkOpDontCare x) = simplifyOp x
  727     simplifyOp (MkOpDotLeq x) = simplifyOp x
  728     simplifyOp (MkOpDotLt x) = simplifyOp x
  729     simplifyOp (MkOpEq x) = simplifyOp x
  730     simplifyOp (MkOpFactorial x) = simplifyOp x
  731     simplifyOp (MkOpFlatten x) = simplifyOp x
  732     simplifyOp (MkOpFreq x) = simplifyOp x
  733     simplifyOp (MkOpGCC x) = simplifyOp x
  734     simplifyOp (MkOpGeq x) = simplifyOp x
  735     simplifyOp (MkOpGt x) = simplifyOp x
  736     simplifyOp (MkOpHist x) = simplifyOp x
  737     simplifyOp (MkOpIff x) = simplifyOp x
  738     simplifyOp (MkOpImage x) = simplifyOp x
  739     simplifyOp (MkOpImageSet x) = simplifyOp x
  740     simplifyOp (MkOpImply x) = simplifyOp x
  741     simplifyOp (MkOpIn x) = simplifyOp x
  742     simplifyOp (MkOpIndexing x) = simplifyOp x
  743     simplifyOp (MkOpIntersect x) = simplifyOp x
  744     simplifyOp (MkOpInverse x) = simplifyOp x
  745     simplifyOp (MkOpLeq x) = simplifyOp x
  746     simplifyOp (MkOpLexLeq x) = simplifyOp x
  747     simplifyOp (MkOpLexLt x) = simplifyOp x
  748     simplifyOp (MkOpLt x) = simplifyOp x
  749     simplifyOp (MkOpMakeTable x) = simplifyOp x
  750     simplifyOp (MkOpMax x) = simplifyOp x
  751     simplifyOp (MkOpMin x) = simplifyOp x
  752     simplifyOp (MkOpMinus x) = simplifyOp x
  753     simplifyOp (MkOpMod x) = simplifyOp x
  754     simplifyOp (MkOpNegate x) = simplifyOp x
  755     simplifyOp (MkOpNeq x) = simplifyOp x
  756     simplifyOp (MkOpNot x) = simplifyOp x
  757     simplifyOp (MkOpOr x) = simplifyOp x
  758     simplifyOp (MkOpParticipants x) = simplifyOp x
  759     simplifyOp (MkOpParts x) = simplifyOp x
  760     simplifyOp (MkOpParty x) = simplifyOp x
  761     simplifyOp (MkOpPow x) = simplifyOp x
  762     simplifyOp (MkOpPowerSet x) = simplifyOp x
  763     simplifyOp (MkOpPreImage x) = simplifyOp x
  764     simplifyOp (MkOpPred x) = simplifyOp x
  765     simplifyOp (MkOpProduct x) = simplifyOp x
  766     simplifyOp (MkOpRange x) = simplifyOp x
  767     simplifyOp (MkOpRelationProj x) = simplifyOp x
  768     simplifyOp (MkOpRestrict x) = simplifyOp x
  769     simplifyOp (MkOpSlicing x) = simplifyOp x
  770     simplifyOp (MkOpSubsequence x) = simplifyOp x
  771     simplifyOp (MkOpSubset x) = simplifyOp x
  772     simplifyOp (MkOpSubsetEq x) = simplifyOp x
  773     simplifyOp (MkOpSubstring x) = simplifyOp x
  774     simplifyOp (MkOpSucc x) = simplifyOp x
  775     simplifyOp (MkOpSum x) = simplifyOp x
  776     simplifyOp (MkOpSupset x) = simplifyOp x
  777     simplifyOp (MkOpSupsetEq x) = simplifyOp x
  778     simplifyOp (MkOpTable x) = simplifyOp x
  779     simplifyOp (MkOpTildeLeq x) = simplifyOp x
  780     simplifyOp (MkOpTildeLt x) = simplifyOp x
  781     simplifyOp (MkOpToInt x) = simplifyOp x
  782     simplifyOp (MkOpToMSet x) = simplifyOp x
  783     simplifyOp (MkOpToRelation x) = simplifyOp x
  784     simplifyOp (MkOpToSet x) = simplifyOp x
  785     simplifyOp (MkOpTogether x) = simplifyOp x
  786     simplifyOp (MkOpTransform x) = simplifyOp x
  787     simplifyOp (MkOpTrue x) = simplifyOp x
  788     simplifyOp (MkOpTwoBars x) = simplifyOp x
  789     simplifyOp (MkOpUnion x) = simplifyOp x
  790     simplifyOp (MkOpXor x) = simplifyOp x
  791 
  792 instance (Pretty x, ExpressionLike x) => Pretty (Op x) where
  793     prettyPrec prec (MkOpActive x) = prettyPrec prec x
  794     prettyPrec prec (MkOpAllDiff x) = prettyPrec prec x
  795     prettyPrec prec (MkOpAllDiffExcept x) = prettyPrec prec x
  796     prettyPrec prec (MkOpAnd x) = prettyPrec prec x
  797     prettyPrec prec (MkOpApart x) = prettyPrec prec x
  798     prettyPrec prec (MkOpAtLeast x) = prettyPrec prec x
  799     prettyPrec prec (MkOpAtMost x) = prettyPrec prec x
  800     prettyPrec prec (MkOpAttributeAsConstraint x) = prettyPrec prec x
  801     prettyPrec prec (MkOpCatchUndef x) = prettyPrec prec x
  802     prettyPrec prec (MkOpDefined x) = prettyPrec prec x
  803     prettyPrec prec (MkOpDiv x) = prettyPrec prec x
  804     prettyPrec prec (MkOpDontCare x) = prettyPrec prec x
  805     prettyPrec prec (MkOpDotLeq x) = prettyPrec prec x
  806     prettyPrec prec (MkOpDotLt x) = prettyPrec prec x
  807     prettyPrec prec (MkOpEq x) = prettyPrec prec x
  808     prettyPrec prec (MkOpFactorial x) = prettyPrec prec x
  809     prettyPrec prec (MkOpFlatten x) = prettyPrec prec x
  810     prettyPrec prec (MkOpFreq x) = prettyPrec prec x
  811     prettyPrec prec (MkOpGCC x) = prettyPrec prec x
  812     prettyPrec prec (MkOpGeq x) = prettyPrec prec x
  813     prettyPrec prec (MkOpGt x) = prettyPrec prec x
  814     prettyPrec prec (MkOpHist x) = prettyPrec prec x
  815     prettyPrec prec (MkOpIff x) = prettyPrec prec x
  816     prettyPrec prec (MkOpImage x) = prettyPrec prec x
  817     prettyPrec prec (MkOpImageSet x) = prettyPrec prec x
  818     prettyPrec prec (MkOpImply x) = prettyPrec prec x
  819     prettyPrec prec (MkOpIn x) = prettyPrec prec x
  820     prettyPrec prec (MkOpIndexing x) = prettyPrec prec x
  821     prettyPrec prec (MkOpIntersect x) = prettyPrec prec x
  822     prettyPrec prec (MkOpInverse x) = prettyPrec prec x
  823     prettyPrec prec (MkOpLeq x) = prettyPrec prec x
  824     prettyPrec prec (MkOpLexLeq x) = prettyPrec prec x
  825     prettyPrec prec (MkOpLexLt x) = prettyPrec prec x
  826     prettyPrec prec (MkOpLt x) = prettyPrec prec x
  827     prettyPrec prec (MkOpMakeTable x) = prettyPrec prec x
  828     prettyPrec prec (MkOpMax x) = prettyPrec prec x
  829     prettyPrec prec (MkOpMin x) = prettyPrec prec x
  830     prettyPrec prec (MkOpMinus x) = prettyPrec prec x
  831     prettyPrec prec (MkOpMod x) = prettyPrec prec x
  832     prettyPrec prec (MkOpNegate x) = prettyPrec prec x
  833     prettyPrec prec (MkOpNeq x) = prettyPrec prec x
  834     prettyPrec prec (MkOpNot x) = prettyPrec prec x
  835     prettyPrec prec (MkOpOr x) = prettyPrec prec x
  836     prettyPrec prec (MkOpParticipants x) = prettyPrec prec x
  837     prettyPrec prec (MkOpParts x) = prettyPrec prec x
  838     prettyPrec prec (MkOpParty x) = prettyPrec prec x
  839     prettyPrec prec (MkOpPow x) = prettyPrec prec x
  840     prettyPrec prec (MkOpPowerSet x) = prettyPrec prec x
  841     prettyPrec prec (MkOpPreImage x) = prettyPrec prec x
  842     prettyPrec prec (MkOpPred x) = prettyPrec prec x
  843     prettyPrec prec (MkOpProduct x) = prettyPrec prec x
  844     prettyPrec prec (MkOpRange x) = prettyPrec prec x
  845     prettyPrec prec (MkOpRelationProj x) = prettyPrec prec x
  846     prettyPrec prec (MkOpRestrict x) = prettyPrec prec x
  847     prettyPrec prec (MkOpSlicing x) = prettyPrec prec x
  848     prettyPrec prec (MkOpSubsequence x) = prettyPrec prec x
  849     prettyPrec prec (MkOpSubset x) = prettyPrec prec x
  850     prettyPrec prec (MkOpSubsetEq x) = prettyPrec prec x
  851     prettyPrec prec (MkOpSubstring x) = prettyPrec prec x
  852     prettyPrec prec (MkOpSucc x) = prettyPrec prec x
  853     prettyPrec prec (MkOpSum x) = prettyPrec prec x
  854     prettyPrec prec (MkOpSupset x) = prettyPrec prec x
  855     prettyPrec prec (MkOpSupsetEq x) = prettyPrec prec x
  856     prettyPrec prec (MkOpTable x) = prettyPrec prec x
  857     prettyPrec prec (MkOpTildeLeq x) = prettyPrec prec x
  858     prettyPrec prec (MkOpTildeLt x) = prettyPrec prec x
  859     prettyPrec prec (MkOpToInt x) = prettyPrec prec x
  860     prettyPrec prec (MkOpToMSet x) = prettyPrec prec x
  861     prettyPrec prec (MkOpToRelation x) = prettyPrec prec x
  862     prettyPrec prec (MkOpToSet x) = prettyPrec prec x
  863     prettyPrec prec (MkOpTogether x) = prettyPrec prec x
  864     prettyPrec prec (MkOpTransform x) = prettyPrec prec x
  865     prettyPrec prec (MkOpTrue x) = prettyPrec prec x
  866     prettyPrec prec (MkOpTwoBars x) = prettyPrec prec x
  867     prettyPrec prec (MkOpUnion x) = prettyPrec prec x
  868     prettyPrec prec (MkOpXor x) = prettyPrec prec x
  869 
  870 instance (VarSymBreakingDescription x, ExpressionLike x) => VarSymBreakingDescription (Op x) where
  871     varSymBreakingDescription (MkOpActive x) = varSymBreakingDescription x
  872     varSymBreakingDescription (MkOpAllDiff x) = varSymBreakingDescription x
  873     varSymBreakingDescription (MkOpAllDiffExcept x) = varSymBreakingDescription x
  874     varSymBreakingDescription (MkOpAnd x) = varSymBreakingDescription x
  875     varSymBreakingDescription (MkOpApart x) = varSymBreakingDescription x
  876     varSymBreakingDescription (MkOpAtLeast x) = varSymBreakingDescription x
  877     varSymBreakingDescription (MkOpAtMost x) = varSymBreakingDescription x
  878     varSymBreakingDescription (MkOpAttributeAsConstraint x) = varSymBreakingDescription x
  879     varSymBreakingDescription (MkOpCatchUndef x) = varSymBreakingDescription x
  880     varSymBreakingDescription (MkOpDefined x) = varSymBreakingDescription x
  881     varSymBreakingDescription (MkOpDiv x) = varSymBreakingDescription x
  882     varSymBreakingDescription (MkOpDontCare x) = varSymBreakingDescription x
  883     varSymBreakingDescription (MkOpDotLeq x) = varSymBreakingDescription x
  884     varSymBreakingDescription (MkOpDotLt x) = varSymBreakingDescription x
  885     varSymBreakingDescription (MkOpEq x) = varSymBreakingDescription x
  886     varSymBreakingDescription (MkOpFactorial x) = varSymBreakingDescription x
  887     varSymBreakingDescription (MkOpFlatten x) = varSymBreakingDescription x
  888     varSymBreakingDescription (MkOpFreq x) = varSymBreakingDescription x
  889     varSymBreakingDescription (MkOpGCC x) = varSymBreakingDescription x
  890     varSymBreakingDescription (MkOpGeq x) = varSymBreakingDescription x
  891     varSymBreakingDescription (MkOpGt x) = varSymBreakingDescription x
  892     varSymBreakingDescription (MkOpHist x) = varSymBreakingDescription x
  893     varSymBreakingDescription (MkOpIff x) = varSymBreakingDescription x
  894     varSymBreakingDescription (MkOpImage x) = varSymBreakingDescription x
  895     varSymBreakingDescription (MkOpImageSet x) = varSymBreakingDescription x
  896     varSymBreakingDescription (MkOpImply x) = varSymBreakingDescription x
  897     varSymBreakingDescription (MkOpIn x) = varSymBreakingDescription x
  898     varSymBreakingDescription (MkOpIndexing x) = varSymBreakingDescription x
  899     varSymBreakingDescription (MkOpIntersect x) = varSymBreakingDescription x
  900     varSymBreakingDescription (MkOpInverse x) = varSymBreakingDescription x
  901     varSymBreakingDescription (MkOpLeq x) = varSymBreakingDescription x
  902     varSymBreakingDescription (MkOpLexLeq x) = varSymBreakingDescription x
  903     varSymBreakingDescription (MkOpLexLt x) = varSymBreakingDescription x
  904     varSymBreakingDescription (MkOpLt x) = varSymBreakingDescription x
  905     varSymBreakingDescription (MkOpMakeTable x) = varSymBreakingDescription x
  906     varSymBreakingDescription (MkOpMax x) = varSymBreakingDescription x
  907     varSymBreakingDescription (MkOpMin x) = varSymBreakingDescription x
  908     varSymBreakingDescription (MkOpMinus x) = varSymBreakingDescription x
  909     varSymBreakingDescription (MkOpMod x) = varSymBreakingDescription x
  910     varSymBreakingDescription (MkOpNegate x) = varSymBreakingDescription x
  911     varSymBreakingDescription (MkOpNeq x) = varSymBreakingDescription x
  912     varSymBreakingDescription (MkOpNot x) = varSymBreakingDescription x
  913     varSymBreakingDescription (MkOpOr x) = varSymBreakingDescription x
  914     varSymBreakingDescription (MkOpParticipants x) = varSymBreakingDescription x
  915     varSymBreakingDescription (MkOpParts x) = varSymBreakingDescription x
  916     varSymBreakingDescription (MkOpParty x) = varSymBreakingDescription x
  917     varSymBreakingDescription (MkOpPow x) = varSymBreakingDescription x
  918     varSymBreakingDescription (MkOpPowerSet x) = varSymBreakingDescription x
  919     varSymBreakingDescription (MkOpPreImage x) = varSymBreakingDescription x
  920     varSymBreakingDescription (MkOpPred x) = varSymBreakingDescription x
  921     varSymBreakingDescription (MkOpProduct x) = varSymBreakingDescription x
  922     varSymBreakingDescription (MkOpRange x) = varSymBreakingDescription x
  923     varSymBreakingDescription (MkOpRelationProj x) = varSymBreakingDescription x
  924     varSymBreakingDescription (MkOpRestrict x) = varSymBreakingDescription x
  925     varSymBreakingDescription (MkOpSlicing x) = varSymBreakingDescription x
  926     varSymBreakingDescription (MkOpSubsequence x) = varSymBreakingDescription x
  927     varSymBreakingDescription (MkOpSubset x) = varSymBreakingDescription x
  928     varSymBreakingDescription (MkOpSubsetEq x) = varSymBreakingDescription x
  929     varSymBreakingDescription (MkOpSubstring x) = varSymBreakingDescription x
  930     varSymBreakingDescription (MkOpSucc x) = varSymBreakingDescription x
  931     varSymBreakingDescription (MkOpSum x) = varSymBreakingDescription x
  932     varSymBreakingDescription (MkOpSupset x) = varSymBreakingDescription x
  933     varSymBreakingDescription (MkOpSupsetEq x) = varSymBreakingDescription x
  934     varSymBreakingDescription (MkOpTable x) = varSymBreakingDescription x
  935     varSymBreakingDescription (MkOpTildeLeq x) = varSymBreakingDescription x
  936     varSymBreakingDescription (MkOpTildeLt x) = varSymBreakingDescription x
  937     varSymBreakingDescription (MkOpToInt x) = varSymBreakingDescription x
  938     varSymBreakingDescription (MkOpToMSet x) = varSymBreakingDescription x
  939     varSymBreakingDescription (MkOpToRelation x) = varSymBreakingDescription x
  940     varSymBreakingDescription (MkOpToSet x) = varSymBreakingDescription x
  941     varSymBreakingDescription (MkOpTogether x) = varSymBreakingDescription x
  942     varSymBreakingDescription (MkOpTransform x) = varSymBreakingDescription x
  943     varSymBreakingDescription (MkOpTrue x) = varSymBreakingDescription x
  944     varSymBreakingDescription (MkOpTwoBars x) = varSymBreakingDescription x
  945     varSymBreakingDescription (MkOpUnion x) = varSymBreakingDescription x
  946     varSymBreakingDescription (MkOpXor x) = varSymBreakingDescription x