L      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ~                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""###################################################### # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''((((((((((((((((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n)o)p)q)r)s)t)u)v)w)x)y*z*{+|+}+~+++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-...................................////////////////0000000000000 0 0 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1U1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1w1x1y1z1{1|1}1~11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222?NoneMNone;=NN   SafeOH !"#$%&! "#$%&Safe%;=FTP',+*)( '()*+,)*+,'()*+,Safe;=>?FTW~ 2#produce a fresh constraint variable5the constraints6 the labels7^add a constraint to the current state, and return whether the resulting state is consistent8run a computation9,mark the current state, and return its label:Qmark the current state as discontinued, yet return a label that is usable n times; go to the state with given label<PWriterT decoration of a solver useful for producing statistics during solving 03124;:98765456789:;789:;0213230213456789:;Safe[>Type of mixin functions.?Mixin composition.@$Turn a mixin into a closed function.AMixin identity function.Identity for mixin composition: )mixinId <@> f == f f <@> mixinId == fBMixin lift function mixin . mixinLift = id>?@AB>?@AB?5Safe &'<FQTV^'CVGeneralization of the search tree data type, allowing monad transformer decoration.`showCDIHFGEJKPLMNOQRSTUVWXYZ[\]^_`aJKLMNOPQSTUVWXYZ[\]^`aRCDEFGHI_CDEFGHIJKLMNOPG2U3None <>FQTV_klmoqpnuvrswtxyzxyzklmnopqrstuvwklm nopqrstuvw None<>?FITa6}~}~} ~ None &'<>FQRTVb 3SafeQVdr;      !"#$%&'()*+,-./0123456789:;<=>?@ABC3456789:;<=>?@A4Safe;=e5SafeQVfADEFDGH6SafeVfu     IJKL !"#$%&MNOPQRSTUVWXYZ[\]^_`abcdefg'()*+,-./0123456789:;<=>?@ABChijklmnopqrstuvwxyz{|}~hijklmn7SafeQVi(     IJKL !"#$%&MNOPQRSTUVWXYZ[\]^_`abcdefg'()*+,-./0123456789:;<=>?@ABChijklmnopqrstuvwxyz{|}~8Safe;=>?Al     IJKL !"#$%&MNOPQRSTUVWXYZ[\]^_`abcdefg'()*+,-./0123456789:;<=>?@ABChijklmnopqrstuvwxyz{|}~9Safep:Safep     IJKL !"#$%&MNOPQRSTUVWXYZ[\]^_`abcdefg'()*+,-./0123456789:;<=>?@ABChijklmnopqrstuvwxyz{|}~;Safe;=>?STtl 9 9 <Safeu"=Safe ;<=>?FQSTVvshift focus to leftshift focus to right         >Safe;=STwG?Safe<STw !"#$%&'()*+,-./012345678 !"#$%(*) Safe;=x      !"#$%&'()*+,-./0123456789:;<=>LK@     H !"#$%&'()*+,-?G./01234I5FEDCBA6789:;<=>JNM /      Safe~+`ablkjihfecgdmnopqrstuvwxyz{|}~-nmoabcdefghijklp`qrstuvwxyz{|}~a bcdefghijkl Safe;=>?9:None;=KhNone&';=>?K- None;<=CKOQSTV*^%./0123     ^./0123%     ;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[None::None<;;None<QV*<=<=None<z>>None<?@?@None AANoneJBCDEFGHIJKLMNOPQRSTUVWXYZ[\FGJKIHLMNOPQRSTUVWXYZ[\BCDE\ ]^_`abcdeNone<]^]^None;=QV_`abcdefghijklmnopqrsdemonprsl_`aqfhijgkbc_`None ;<=CKOQSTV4{|}~}~{|{|}~None<QVNone<^None<NoneNone<QVV None!None<"Safe0;=fShow instance | --Data types | --gEq instance | --0ExprKey: Provides ordering over expressions | --**fh4#None0;=KQVnW      !"#$%&'()W      %&"$!'()# ijklmno#     $Safe06Lwalk through expressionspHelper functions |--PDTransform expressions over one type to expressions over another | --VUCheck whether an expression is possibly referring to terms with a given property | --q>Count how many references to terms an expression contains | --\Simplify expressions | --_>Turn expressions over expressions into simply expressions | --IJKLMNOPQRSTUVWXYZ[\]^_`abcdPRTQSUYZ[VWX_`a\]^LMNOIJKbcdIJKLMNO%Safe;<=>?v(convertion from/to expression types | --x integer operators/functions | --list operators/functions | -- boolean operators/functions | --Built-in class instances | --#relational operators/functions | --1mnopqrstuvwxyz{|}~4xyz{|}~nqpvwtursopqmnmnopqrstuvwn5x6y6z7{7|7}4~49 9 9 5234444&Safe0;<=k"" rstu'NoneK\ v definition of a decomposer monadwthe state for the DCMonadbase instance of DecompDataxbase state for the DCMonadKtransform an expression into a graph, taking and returning an updated stateEeasier version of decomposeEx that does not require or return a stateysdecomposition states can be stacked, this function tests whether a property hold for a state or any of its parentsz$Decomposition of special values | --{%Real decomposers for expressions | --v|}w~ (None ;<=>?FKTƼdA solver needs to be an instance of this FDSolver class in order to create an FDInstance around it.+edefinition of FDInstance, a Solver wrapper that adds power to post boolean expressions as constraintsRa label for an FDInstance; must store the FDState plus the Solver's internal stateOstate kept by FDInstance, in addition to the underlying solver's internal state/expression representing unprocessed constraintsmodel being processed now[private data for the decomposer (kept to optimize constraints which aren't added in one go)Iwhen adding constraints, the EGEdgeId's occurring in the decomposed model&expressions that need to be decomposedvariable counter$already introduced integer variablestermsconstants/expressions needed sets of possible types.which variables are being decomposed right now)which nodes are unified with which others$already introduced boolean variablestermsconstants/expressions 'already introduced collection variablestermsconstants/expressions db of specifierssolver is failed?level of nestinglevels of dummynessinitial FDState state >run the second argument as long as the first one produces true&helper function to combine two Maybe's;[lift a monad action for the underlying solver to a monad action for an FDInstance around itRmark all new edges(=constraints) of a model given in graph-form as to-be-processedadd an int termadd a bool termadd a col termmnoqprstuvwxyz{|}~      !$"#%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTc+      !"#$;M%&'()*57968:?@L3IJKEFGDONPRQSH><=BCA1240,/.-T       !"#$'()*+)Nonej nopqrstuvwx nopqrstuvwx*NoneFTyzyz+None0j#{|}~#{|}~{ |}~ ,None>?FKTw 44-None<FT.None&';<=>?FQTVц6FHVxyz{|+6+xyz{|HVF 44234444544/None <FQTVԯFHFVxyz{|+0Safe0;=>?Vw  1Safe   ('&%$#"! )43210/.-,+*59876:HGFEDCBA@?>=<;ILKJM\[ZYXWVUTSRQPON]^ba`_cdjihgfeklqponmrutsvxwy~}|{zyz{|}~vwxrstuklmnopqcdefghij]^_`abMNOPQRSTUVWXYZ[\IJKL:;<=>?@ABCDEFGH56789)*+,-./01234 !"#$%&'(        !"#$%&'() *+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~2Safe;=ޤ@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`Sabcdefghijklmnopqrstuvwxyz{|}~u                                                   t                       ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K K L M N O O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                         !                                                        H      !"#$%&'()*+,-./0123456789:;<=>?@~ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~yx  !""""""""""""""""""""""""""""o""""""""""">""""""""""""""""""""################################### # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#x#y#z#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|%}%~%%%%%%%%%%%%%%%%%%%%%E%%%%%%%%%%%%%%%%b%\%^%]%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''(((((((((((((( ( ( ( ( (((((((((((((((((((( (!("("(#($(%(&('('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t)u)v)w)x)y)z){)|)})~)**++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,-.......b.\.].^.............~............////////////////0000000000000001111111111111111 1 1 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/1011121314151$161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1K1L1M1N1O1P1P1Q1R1S1T1U1V1W1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r1s1t1u1v1v1w1x1y1z1{1|1|1}1~11111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222                3 3!3"3#3$3%3&3'3(3(3)3*3+3,3-3.3/5051525053456789898:8;8;8<8=8=8>8?8?8@8A8A8B8C8C8D8E8E8F8G8G8H8I8I8J6K6L6M6N6O6P6Q6R6S6T6U6V6W6X6Y6Z6[6\6]6^6_6`6a6b6c6d6e6f6g6h6i6j6k6l6m6n6o6p6q6r6s6t6u6v7w7x7y7z7z7{7|77}7~77777777777777777777777777777777777777777888888888888888888888889999999h99999999999999:;;;;;;;;;;~;;;<<<========h============>>>>>>>???????????????????v???? ? ? ?    !""#$%&''(uu)*+,-./0"1"2"3#4#5#6#7#7##8$9$:&;&<&=&>'?'@'A'B'C'D'?''@'E'F''G'H'I'J'K'L'M'N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(2(p(O(q(r(P(s(t(u(v(w(x(y(z({(|(}(~(,P,P,,,,,,,,,,,,,.......0222L2N2&monadiccp-0.7.7-LdvWf8eo26GLAuFateqH1VControl.CP.DebugControl.CP.FD.OvertonFD.DomainControl.CP.PriorityQueueControl.CP.QueueControl.CP.SolverControl.Mixin.MixinControl.CP.SearchTreeControl.CP.TransformersControl.CP.EnumTerm!Control.CP.ComposableTransformersControl.Search.LanguageControl.Search.GeneratorInfoControl.Search.SStateTControl.Search.MemoControl.Search.MemoReaderControl.Search.Generator!Control.Search.Combinator.Success Control.Search.Combinator.RepeatControl.Search.Combinator.PrintControl.Search.Combinator.OrControl.Search.Combinator.For!Control.Search.Combinator.FailureControl.Search.Combinator.BaseControl.Search.Combinator.AndControl.Search.StatControl.Search.ConstraintsControl.Search.Combinator.PostControl.Search.Combinator.Until"Control.Search.Combinator.OrRepeatControl.Search.Combinator.OnceControl.Search.Combinator.MiscControl.Search.Combinator.LetControl.Search.Combinator.IfData.Expr.DataControl.CP.FD.GraphData.Expr.UtilData.Expr.SugarControl.CP.FD.ModelControl.CP.FD.DecomposeControl.CP.FD.FDControl.CP.FD.SolversControl.CP.FD.SimpleFDControl.CP.FD.SearchSpec.Data!Control.CP.FD.OvertonFD.OvertonFDControl.CP.FD.OvertonFD.SugarControl.CP.FD.InterfaceControl.CP.FD.Example Data.LinearLanguage.CPP.Syntax.ASTLanguage.CPP.PrettyControl.Monatron.MonadTControl.Monatron.AutoInstancesControl.Monatron.CodensityControl.Monatron.TransformerControl.Monatron.OperationsControl.Monatron.AutoLiftControl.Monatron.MonadControl.Monatron.MonatronControl.Monatron.OpenControl.Monatron.IdTControl.Monatron.ZipperControl.Monatron.MonadInfoControl.Monatron.ZipperExamplesdebugimdebugToDomaintoDomainDomainsizemember isSubsetOfelems intersectionunion differencenull singleton isSingletonfilterLessThanfilterGreaterThanfindMaxfindMinempty shiftDomain mapDomain absDomain $fEqDomain $fToDomaina $fToDomain() $fToDomain(,) $fToDomain[]$fToDomainIntSet$fToDomainDomain $fShowDomain PriorityQueueis_emptyminKey minKeyValueinsert deleteMindeleteMinAndInsertQueueElememptyQisEmptyQpopQpushQ$fQueuePriorityQueue $fQueueSeq $fQueue[]TermHelpnewvarhelpSolver ConstraintLabeladdrunmarkmarkngoto$fSolverWriterT$fTermWriterTtMixin<@>mixinmixinId mixinLift MonadTree TreeSolveraddTofalse\/existslabelTreeFailReturnTryAddNewVar transformTreemapTreebindTree insertTree/\truedisjconjdisj2primaddCaddTexistforalluntreeindentshowTree $fShowTree $fMonadTree$fApplicativeTree $fFunctorTree$fMonadTreeStateT$fMonadTreeWriterT$fMonadTreeReaderT$fMonadTreeContT$fMonadTreeTree NodeBoundedSTDepthBoundedST Transformer EvalState TreeState ForSolver ForResultleftTrightTnextTinitTreturnTendTevaleval'continue$fTransformerDepthBoundedST$fTransformerNodeBoundedSTEnumTerm TermBaseType getDomainSize getDomainsetValue splitDomain splitDomainsgetValue defaultOrder enumerator enumerate assignment assignments firstFailinOrder middleOutendsOut levelList labelling RestartST SealedCSTSealNewBoundBoundCBranchBoundSTCBBST Composition:-CSolutionBoundSTCSBSTCFirstSolutionSTCFSST CIdentityCSTCIST CRandomSTCRSTCLimitedDiscrepancySTCLDSTCDepthBoundedSTCDBSTCNodeBoundedSTCNBST CTransformer CTreeState CForSolver CForResultsolverestart$fTransformerTStack$fCTransformerCNodeBoundedST$fCTransformerCDepthBoundedST#$fCTransformerCLimitedDiscrepancyST$fCTransformerCRandomST$fCTransformerCIdentityCST$fCTransformerCFirstSolutionST$fCTransformerCSolutionBoundST$fCTransformerComposition$fCTransformerCBranchBoundST$fCTransformerSealedCST$fTransformerRestartST Simplifiablesimplify Statement IfThenElsePushSkipSeqAssignAbortPrintSHookPostFoldIFoldBFoldBIFoldDeleteBlock DebugOutput DebugValueEqCNqCLtCLqCGtCGqCTrueCFalseCValueIValBVal RootSpaceMinusPlusMultDivModAbsVarRefDerefCloneFieldField'PFieldLtGqGtEq BaseContinueAndOrNotVHookMaxAVarElemAVarSize BAVarElem BAVarSizeIVarMinDomMaxDomDegreeWDegreeUbRegretLbRegretMedianRandomNullNewBaseCondAssignedDummyMaxValMinValTypePointer SpaceTypeIntBoolUnionSTypeTHookStructPrettyprettyXpretty PrettyFlagsgenModeGenModeModeUnk ModeGecodeModeFZModeMCP spacetypexsspace renderVardivValue&&&|||@>@>=@<=@==@->@=>@<lex simplValue$==$/=$<$<=$>$>=neginlinercommentdecinc>>><==assignifthenseqs simplStmt $fPrettyType$fPrettyStruct $fShow(->)$fEq(->) $fOrd(->) $fShow(->)0 $fEq(->)0 $fOrd(->)0 $fPrettyValue $fNumValue$fPrettyConstraint$fPrettyStatement$fSemigroupStatement$fMonoidStatement$fSimplifiableValue$fSimplifiableStatement $fEqGenMode$fEqPrettyFlags $fShowType$fEqType $fOrdType $fShowStruct $fEqStruct $fOrdStruct $fShowValue $fEqValue $fOrdValue$fEqConstraint$fOrdConstraint$fShowConstraint $fEqStatement$fOrdStatement$fShowStatementInfo baseTstatepathabort_commit_oldclonefield stackField treeStateType evalStateTypespace@@tstate tstate_typeestate estate_type withCommitonAbortonCommit onCommit'withPathwithBase withClone withField resetPath resetCommit shiftCommit resetAbort shiftAbort resetClone resetInfomkInfoinfonewinfocommitabort primClonecloneIt$fEqInfo $fOrdInfoSStateTTup2fst2snd2sstateT runSStateT$fStateMzSStateT$fMMonadTSStateT$fFMonadTSStateT$fMonadFixSStateT$fMonadTSStateTMemoMgetMemosetMemoMemoTunMemoTMemoInfomemoMap memoCountmemoRead MemoValuememoIdmemoCodememoUsed memoFieldsMemoKeymemoFnmemoInfo memoStack memoExtra memoStatement memoParams initMemoInforunMemoT$fMonadInfoTMemoT$fMemoMt $fMemoMMemoT $fEqMemoKey $fOrdMemoKey $fMonadTMemoT $fStateMMemoT$fFMonadTMemoT MemoReaderT unMemoReaderT memoReaderT deMemoReaderTrunMemoReaderTmodelMemoReaderT$fReaderMsMemoReaderT$fFMonadTMemoReaderT$fMonadInfoTMemoReaderT$fMonadTMemoReaderTSearchCombinerrunnerSearchmkeval runsearchMkEvalSeqPosOutSFirstSSecondSEvalstructs treeState_ evalState_ nextSameH nextDiffH pushLeftH pushRightHbodyHinitHaddHreturnHfailHtryHtryLH startTryH intArraysE boolArraysEintVarsEdeleteHtoString canBranchcompleteEvalableVarInfoM lookupVarInfo setVarInfoVarId commentEvalentryinitsinitemkCopymkUpdatemseqsmapEnextSamenextDiffpushLeft pushRightbodyEaddEreturnEinitEfailEtryE startTryEtryE_deleteEcacheStatementmemomemoLoop cachedCommit cachedAbort cachedClonerReaderT seqSwitch numSwitch@++@ ref_count ref_countxref_count_type cloneBase@>>>@@$@.rpextractCombiners buildCombinermmapsearch$fMonadInfoTGenModeT $fGenModeMt$fGenModeMGenModeT$fMonadInfoTVarInfoT $fVarInfoMt$fVarInfoMVarInfoT$fMonadInfoTHookStatsT $fHookStatsMt$fHookStatsMHookStatsT $fEvalablem $fMemoablem$fMemoable(->)$fSemigroupProgramString$fMonoidProgramString$fMonadTGenModeT$fReaderMGenModeT$fFMonadTGenModeT $fOrdVarId $fEqVarId $fShowVarId$fMonadTVarInfoT$fStateMVarInfoT$fFMonadTVarInfoT$fMonadHookStatsT$fStateMHookStatsT$fFMonadTHookStatsT$fMonadTHookStatsT $fShowSeqPosdummyrepeatprtdbg<|>forforeachfailure foldVarSel ifoldVarSel bfoldVarSel bifoldVarSelvlabelilabel int_assignglabelgblabelmaxVminVlbVubVdomsizeV lbRegretV ubRegretVdegreeVdomSizeDegreeVwDegreeVdomSizeWDegreeVrandomVminDmaxDmeanDmedianDrandomDandN<&>StatIValuereadStatevalStatappStat constStat#>#=#<#>=#<=#/notStat depthStatdiscrepancyStat nodesStat solutionsStatvarStat failsStattimeStat $fNum(->) $fBoundedStat $fNumStat$fEqStat $fShowStat ConstraintGenConstraintExprcvarscbvarscvarcvalclvarcopctruecfalse cexprStatVal cexprStatMin cexprStatMax cexprStatMedpostlimitglimituntilorRepeatonceonceOldbbminldsdbslet'set'if'BoolExprBoolTerm BoolConstBoolAndBoolOrBoolNotBoolCondRelBoolAllBoolAnyColEqual BoolEqualAllDiffSortedDomExprRelEREqualERDiffERLessColExprColTermColListColRangeColMapColSliceColCatExprExprHoleConstAtColSizeChannel<<>> $fOrdBoolExpr $fOrdColExpr $fOrdExpr $fEqBoolExpr $fEqColExpr$fEqExpr$fShowBoolExpr $fShowColExpr $fShowExpr $fShowFn(->)$fShowFnBoolExpr$fShowFnColExpr $fShowFn[] $fShowFnExpr $fShowExprRel $fEqExprRel $fOrdExprRelEGModel egmParamsegmVars egmNEdgesegmEdgesegmLinksEGEdgeegeConsegeLinks EGTypeDataboolDataintDatacolDataEGVarIdunVarIdEGEdgeId EGConsArgsEGColPar EGBoolParEGPar EGParColTerm EGPTColParam EGParBoolTerm EGPTBoolParam EGParTerm EGPTParamEGConstraintSpec EGIntValue EGBoolValue EGColValue EGIntExtern EGBoolExtern EGColExternEGPlusEGMinusEGMultEGDivEGModEGAbsEGAtEGFoldEGSize EGChannelEGListEGRangeEGMapEGSliceEGCatEGAndEGOrEGEquivEGNotEGEqualEGDiffEGLessEGAllEGAnyEGSorted EGAllDiffEGDom EGCondEqual EGCondInt EGVarType EGBoolType EGIntType EGColType baseTypeData egTypeDataMap egTypeGet egTypeMod externMap emptyModel filterModeladdEdgeunifyIdsfindEdge pruneNodes unifyNodesaddNodedelNode baseGraphpresentgetConnectedEdges$fDisplayDisplayData$fDisplayEGModel$fDisplayEGEdge $fEqEGVarType$fShowEGVarType$fShowEGParTerm $fEqEGParTerm$fOrdEGParTerm$fShowEGParBoolTerm$fEqEGParBoolTerm$fOrdEGParBoolTerm$fShowEGParColTerm$fEqEGParColTerm$fOrdEGParColTerm $fEqEGEdgeId $fOrdEGEdgeId$fShowEGEdgeId $fEqEGVarId $fOrdEGVarId $fShowEGVarId $fEqEGModel $fShowEGModel $fEqEGEdge $fShowEGEdge$fEqEGConstraintSpec$fShowEGConstraintSpec$fEqEGTypeData$fShowEGTypeData WalkResultWalkSkip WalkDescend WalkPhaseWalkPre WalkSingleWalkPost transform transformEx colTransformcolTransformEx boolTransformboolTransformEx propertyEx colPropertyExboolPropertyExproperty colProperty boolProperty colSimplify boolSimplifycollapse colCollapse boolCollapsewalkcolWalkboolWalk$fOrdWalkPhase $fEqWalkPhase$fEnumWalkPhase$fShowWalkPhase$fOrdWalkResult$fEqWalkResult$fEnumWalkResult$fShowWalkResult ExprRange@: ExprClass@=@/= ToBoolExpr toBoolExpr ToColExpr toColExprToExprtoExpr@+@-@*@/@%@?@??!@!!@..@++xfoldxsumlistxheadxtailslicexmaploopallloopanyforanychannel@||@&&invsortedsSortedallDiffallDiffD$fIntegralExpr $fEnumExpr $fRealExpr $fNumExpr $fToExprtabt$fToExprtabBoolExpr$fToExprttccbbInt$fToExprtabExpr$fToExprttccbbInteger$fToColExprtaba$fToColExprtab[]$fToColExprtabExpr$fToColExprtabColExpr$fToBoolExprtabb$fToBoolExprtabBoolExpr$fToBoolExprttccbbBool$fExprClasstcbColExpr$fExprClasstcbBoolExpr$fExprClasstcbExpr$fExprRangetcbColExpr$fExprRangetcb(,) ToModelColasCol ToModelIntasExpr ToModelBoolasBool ModelTermType newModelTermModel ModelColArg ModelBoolArg ModelIntArgModelCol ModelBoolModelIntModelFunctions ForNewBool ForNewInt ForNewCol ModelBoolTerm ModelBoolVar ModelBoolPar ModelExtra ModelColTerm ModelColVar ModelColPar ModelIntTerm ModelIntVar ModelIntPar showModelmodelVariantIntmodelVariantColmodelVariantBoolcte$fOrdModelFunctions$fEqModelFunctions$fShowModelFunctions$fOrdModelIntros$fModelTermTypeColExpr$fModelTermTypeExpr$fModelTermTypeBoolExpr$fToModelBoolt $fToModelIntt $fToModelColt$fShowModelIntTerm$fShowModelColTerm$fShowModelBoolTerm$fShowModelIntros$fEqModelIntros$fOrdModelColTerm$fEqModelColTerm$fOrdModelIntTerm$fEqModelIntTerm$fOrdModelBoolTerm$fEqModelBoolTerm DecompDatadecompBoolLookupdecompIntLookupdecompColLookupbaseDecompData decomposeEx decompose$fMonadDCMonad$fApplicativeDCMonad$fFunctorDCMonad$fMonadStateDCMonadFDSolver FDIntTerm FDBoolTerm FDIntSpec FDBoolSpec FDColSpec FDIntSpecTypeFDBoolSpecType FDColSpecTypefdIntSpec_constfdBoolSpec_constfdColSpec_constfdColSpec_listfdIntSpec_termfdBoolSpec_termfdColSpec_size fdIntVarSpec fdBoolVarSpec fdTypeReqBool fdTypeReqInt fdTypeReqCol fdTypeVarInt fdTypeVarBool fdSpecify fdColInspect fdProcess fdEqualBool fdEqualInt fdEqualColfdConstrainIntTermfdSplitIntDomainfdSplitBoolDomain FDSpecInfo FDSpecInfoCol fdspColSpec fdspColVar fdspColVal fdspColTypes FDSpecInfoInt fdspIntSpec fdspIntVar fdspIntVal fdspIntTypesFDSpecInfoBool fdspBoolSpec fdspBoolVar fdspBoolVal fdspBoolTypesSpecFn SpecFnRes SpecResult SpecResNone SpecResSpec SpecResUnify FDInstancesetMinimizeVargetMinimizeVargetMinimizeTerm boundMinimizerunFD procSubModelprocSubModelExgetLevelspecSubModelEx getBoolSpec_ getBoolSpec getIntSpec_ getIntSpec getColSpec_ getColSpecliftFDspecInfoBoolTermspecInfoIntTermfdSpecInfo_specgetEdgemarkEdgenewColnewIntnewBoolgetSingleIntTerm getIntTerm getBoolTerm getColTerm getColItems getIntVal getBoolVal getColVal setFailedaddFD getDefIntSpecgetDefBoolSpec getDefColSpecgetFullIntSpecgetFullBoolSpecgetFullColSpecfdNewvar$fEnumTermFDInstanceBoolExpr$fEnumTermFDInstanceExpr$fTermFDInstanceColExpr$fTermFDInstanceBoolExpr$fTermFDInstanceExpr$fShowFDSpecInfoCol$fShowFDSpecInfoInt$fShowFDSpecInfoBool$fOrdFDSpecInfoCol$fEqFDSpecInfoCol$fOrdFDSpecInfoInt$fEqFDSpecInfoInt$fOrdFDSpecInfoBool$fEqFDSpecInfoBool$fShowTermTypeSpec$fSolverFDInstance $fEqTermType $fOrdTermType$fBoundedTermType$fEnumTermType$fShowTermType$fMonadFDInstance$fApplicativeFDInstance$fFunctorFDInstance$fMonadStateFDInstancedfsbfspfsnbdbbbsbfsitraldsimple_fdSpecifysimple_fdProcess SearchSpec Labelling CombineSeq CombineParTryOnce LimitSolCount LimitDepthLimitNodeCountLimitDiscrepancy BranchBoundPrintSolLabelIntLabelCol LabelBoolConstraintRefsVarRefValRefVarExprOptimDirectionMaximizeMinimizeVarStat DLowerBound DUpperBoundDDomSize DLowerRegret DUpperRegretDDegree DWDregreeDRandomDMedianDDummy mmapSearch$fShowLabelling $fEqVarStat $fOrdVarStat $fShowVarStat$fEqOptimDirection$fOrdOptimDirection$fShowOptimDirection$fEqConstraintRefs$fOrdConstraintRefs$fShowConstraintRefs$fShowSearchSpecFDVar OvertonFD OConstraint OHasValueOSameODiffOLessOLessEqOAddOSubOMultOAbs fd_domain fd_objectivelookup $fOrdFDState $fEqFDState $fShowVarInfo$fEnumTermOvertonFDFDVar$fTermOvertonFDFDVar$fSolverOvertonFD $fOrdFDVar $fEqFDVar $fShowFDVar$fShowOConstraint$fEqOConstraint $fShowFDState$fMonadOvertonFD$fApplicativeOvertonFD$fFunctorOvertonFD$fMonadStateOvertonFD$fFDSolverOvertonFDvalcolListlabelColallin$fSolverDummySolver$fFunctorDummySolver$fApplicativeDummySolver$fMonadDummySolver$fTermDummySolvert$fModelExprClassTree$fModelExprClassBoolExpr$fModelExprClassColExpr$fModelExprClassExprExampleMinModel ExampleModel postMinimizerunSolvelabeller example_mainexample_min_mainexample_sat_mainexample_sat_main_voidexample_min_main_voidexample_sat_main_singleexample_min_main_singleexample_sat_main_single_exprexample_min_main_single_exprexample_sat_main_coll_exprexample_min_main_coll_exprLinear termToLinearintegerToLinear constToLinear linearToListlinearToListExgetCoef linearMultlinearMultiply linearToConst linearToTerm $fNumLinear $fShowLinear $fOrdLinear $fEqLinear CPPBinaryOpCPPOpMulCPPOpDivCPPOpRmdCPPOpAddCPPOpSubCPPOpShlCPPOpShrCPPOpLeCPPOpGrCPPOpLeqCPPOpGeqCPPOpEqCPPOpNeqCPPOpAndCPPOpOrCPPOpXor CPPOpLAndCPPOpLOr CPPUnaryOp CPPOpPreInc CPPOpPostInc CPPOpPreDec CPPOpPostDecCPPOpAdrCPPOpInd CPPOpPlus CPPOpMinus CPPOpCompCPPOpNeg CPPAssignOpCPPAssOp CPPAssOpMul CPPAssOpDiv CPPAssOpRmd CPPAssOpAdd CPPAssOpSub CPPAssOpShl CPPAssOpShr CPPAssOpAnd CPPAssOpOr CPPAssOpXorCPPConst CPPConstInt CPPConstChar CPPConstFloatCPPConstStringCPPExprCPPComma CPPAssign CPPBinaryCPPUnaryCPPCondCPPCast CPPSizeOfExpr CPPSizeOfTypeCPPIndexCPPCall CPPMemberCPPVarCPPNew CPPBlockItem CPPStatement CPPBlockDecl CPPCommentCPPStatCPPLabelCPPCase CPPDefault CPPSimple CPPCompound CPPVerbStatCPPIf CPPSwitchCPPWhileCPPForCPPGotoCPPContCPPBreak CPPReturn CPPDelete CPPConstr cppConstrStor cppConstrArgs cppConstrBody cppConstrInitCPPDef cppDefName cppDefRetType cppDefStor cppDefQual cppDefArgs cppDefBodyCPPDecl cppDeclNamecppType cppTypeQual cppTypeStor cppDeclInitCPPInit CPPInitValue CPPInitCall CPPInitArrayCPPQual CPPQualConstCPPQualVolatile CPPStorSpecCPPAuto CPPRegister CPPStatic CPPExtern CPPTypedef CPPInline CPPVirtualCPPType CPPTypePrimCPPArrayCPPPtrCPPRefCPPTempl CPPVisibility CPPPublic CPPProtected CPPPrivateCPPClass cppClassNamecppClassInherit cppClassDecls cppClassDefscppClassConstrs CPPNamespace CPPElementCPPElemNamespace CPPElemDecl CPPElemDef CPPElemClass CPPMacroStmCPPMacroIncludeUserCPPMacroIncludeSysCPPMacroDefinecppMacroDefNamecppMacroDefArgscppMacroDefExprCPPFile cppMacroStmcppUsing cppTranslUnit$fEqCPPMacroStm$fOrdCPPMacroStm$fShowCPPMacroStm$fEqCPPVisibility$fOrdCPPVisibility$fShowCPPVisibility$fEqCPPStorSpec$fOrdCPPStorSpec$fShowCPPStorSpec $fEqCPPQual $fOrdCPPQual $fShowCPPQual $fEqCPPConst $fOrdCPPConst$fShowCPPConst$fEqCPPAssignOp$fOrdCPPAssignOp$fShowCPPAssignOp$fEqCPPUnaryOp$fOrdCPPUnaryOp$fShowCPPUnaryOp$fEqCPPBinaryOp$fOrdCPPBinaryOp$fShowCPPBinaryOp $fEqCPPExpr $fOrdCPPExpr $fShowCPPExpr $fEqCPPType $fOrdCPPType $fShowCPPType $fEqCPPInit $fOrdCPPInit $fShowCPPInit $fEqCPPDecl $fOrdCPPDecl $fShowCPPDecl $fEqCPPStat $fOrdCPPStat $fShowCPPStat$fEqCPPBlockItem$fOrdCPPBlockItem$fShowCPPBlockItem $fEqCPPConstr$fOrdCPPConstr$fShowCPPConstr $fEqCPPDef $fOrdCPPDef $fShowCPPDef $fEqCPPClass $fOrdCPPClass$fShowCPPClass$fEqCPPElement$fOrdCPPElement$fShowCPPElement$fEqCPPNamespace$fOrdCPPNamespace$fShowCPPNamespace $fEqCPPFile $fOrdCPPFile $fShowCPPFilecodegen$fPrettyCPPFile$fPrettyCPPClass$fPrettyCPPNamespace$fPrettyCPPElement$fPrettyCPPMacroStm$fPrettyCPPBlockItem $fPretty(,)$fPrettyCPPDef$fPrettyCPPDecl$fPrettyCPPType $fPretty(,)0 $fPretty(,,,)$fPrettyCPPVisibility $fPretty[]$fPrettyCPPStorSpec$fPrettyCPPQual$fPrettyCPPStat$fPrettyEither $fPrettyMaybe$fPrettyCPPConst$fPrettyCPPExpr$fToStringCPPAssignOpSetRangeNilBranchNBSTDBST BBEvalStateBBP CEvalStateinitCTleftCTrightCTnextCTreturnCT completeCTTStackbase Control.MonadguardGHC.BasejoinMonad>>=>>returnfailFunctorfmapData.TraversablemapMsequencemfilter<$!>unless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterMforM Data.Foldablemsum sequence_forM_mapM_ Data.FunctorvoidapliftM5liftM4liftM3liftM2liftMwhen=<< MonadPlusmzeromplusFCompCompdeCompMMonadTflift monoidalTFMonadTtmap'FunctorDfmapDMonadTlifttreturntbindtmapmtmap Codensity codensity runCodensity unCodensityMonoidmemptymappendmconcat Data.MonoidDualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProductFirstgetFirstLastgetLastAltgetAltStepTListTContTExcTReaderTWriterTStateTstateT runStateTwriterT runWriterT runReaderTreaderTexcTrunExcTrunContTcontTrunListTlistTemptyLappendL foldListT collectListTstepTrunStepT caseStepT unfoldStepTTrunTLunLLSigNilTConsTCunCXunXRunRWunWSunSListOpZeroListPlusListStepOpContOpCallCCWriterOpTraceHandleOpHandleThrowOpThrowReaderOpAskInEnvStateOpGetPutAlgModelExtModeltoAlg liftModel liftAlgModel liftExtModel modelStateTgetXputX modelReaderTaskXinEnvXlocalXmodelThrowExcTmodelHandleExcT modelThrowIO modelHandleIOthrowXhandleX modelWriterTtraceX modelContTabortXcallCCXcallccX modelStepTstepX modelListT zeroListX plusListXListM listModelContM contModelExcM throwModel handleModelReaderM readerModelWriterM writerModelStateM stateModelgetputtellasklocalthrowhandlecallCCmZeromPlusCont ExceptionReaderWriterStateLiftrunLiftIdrunIdstaterunStatewriter runWriterreader runReader exception runExceptioncontrunContversion:<:injOpenFixInout:+:InrInlfixinjectfoldFixIdTrunIdTleftLrightL:><:Viewtofrom:>runL runZipperzipperiovlifthcompvcomprstateIsogetvputv MonadInfoTtminfo MonadInfominfoMInfomiIncExpr3LitM4RegMemRetrieveStoreCountEnvfmaskevalMem2litvarstoreretrieveevalLitevalVareval4test handleExcSSunSS ProgramStringheader functionsmainpcomment FunctionDeffunNamefunArgsfunBodySearchCombinerElemmapperMemoablememox HookStatsM hookCalled HookStatsT unHookStatsTHookStatnCallsVarInfoT unVarInfoTGenModeMgetFlagsgetModeGenModeT unGenModeT treeStateL leftChild_L rightChild_LaddLtryL intArraysL boolArraysLintVarsLShowFn equalExprshowFnDisplaydisplay displayer DisplayData unEGEdgeIdrelCheckvarrefs ModelIntrosNewBoolNewIntNewColDCMonadDCState baseDCState stateProperty decomposeBoolrealDecomposeBoolExdcsDatadcsModel cseMapBool cseMapInt cseMapCol cseParent cseImportscseNIds cseLockedcseLevelFDLabelFDStatefdsExprfdsModel fdsDecomp fdsNewEdges fdsForceBoolfdsVars fdsIntVarsfdsIntVarTypes fdsIntVarBusy fdsIntUnifies fdsBoolVars fdsColVarsfdsDb fdsFailedfdsLevel fdsDummyLevel baseFDStatewhileMjoinWith initForModel addIntVar addBoolVar addColVar TermTypeSpecFDSBoolFDSIntFDSColTermTypeFDTBoolFDTIntFDTCol unFDInstancefdlStatefdlLabel fdsDoneEdges fdsForcedBool fdsForceInt fdsForcedInt fdsForceColfdsBoolVarTypesfdsBoolVarBusyfdsBoolUnifiesfdsColVarTypes fdsColVarBusy fdsColUnifiesfdsMinimizeVarfdsMinimizeTerm varSupplyvarMap objectiveVarInfodelayedConstraintsdomainunFDVarunFD.<..<=.ModelExprClass DummyTermEQHelp DummySolverToString prettyPrec