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