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