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