B      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe& !FlatZinc solutions parser9(c) Some Guy, 2013 Someone Else, 2014 GPL-3 .Klara Marntirosian <klara.mar@cs.kuleuven.be>  experimental Safe35Given the path of the file where the solution(s) have been printed, this function reads the file, parses the solution(s) and prints them.2+MiniZinc abstract syntax tree9(c) Some Guy, 2013 Someone Else, 2014 GPL-3 .Klara Marntirosian <klara.mar@cs.kuleuven.be>  experimental SafeQDThe type for representing the three different kinds of solve items. 4The type of a MiniZinc instantiation representation. A par instantiation in MiniZinc. A var instantiation in MiniZinc.DThe type of a MiniZinc's function, test or predicate representation.hRepresents MiniZinc unary operators. Next to each constructor is indicated the operator it represents.  not + -xThe type of MiniZinc binary operators' representation. Next to each constructor is indicated the operator it represents. > < >= <= == = != + - * /! div" mod# <->$ ->% <-& /\' \/( in) subset* superset+ union,  intersect- ++. diff/ symdiff0 ..2-The type of a MiniZinc's type representation.7Set t translates to set of t.8 Array ts ti translates to array [ts] of ti. 9 The list type: Option type;,A constrained type using the integer range.  Range a b translates to a .. b.<&A constrained type using set literals.=<A constrained type using a previously defined set parameter.?3The type of a MiniZinc expression's representation.@)Represents the MiniZinc special variable _.AA MiniZinc variableBMiniZinc boolean valueCMiniZinc integer valueDMiniZinc float valueEMiniZinc string valueF.MiniZinc arrays constructed with the MiniZinc .. operator.  Interval a b translates to [a .. b].GSetLit literals\ translates to a MiniZinc set the elements of which are the represented expressions in the literals list.HMiniZinc set comprehension. The first argument of the constructor represents the head expression of the comprehension, while the second represents the comprehension tail.IDMiniZinc 1-dimensional arrays defined with literals, similar to the SetLit constructor.J3MiniZinc 2-dimensional arrays defined with literalsK0MiniZinc array comprehension. Syntax similar to SetComp constructor.L Represents an array element. In ArrayElem name is, the argument name$ is the identifier of the array and isI is the list of indexes that specify the desired element. The length of is: must be equal to the number of dimensions of the array.MBi op exp1 exp2E represents the MiniZinc expression that applies the binary operator op on exp1 and exp2.N U op exp1D represents the MiniZinc expression that applies the unary operator op on exp1.OCall name args+ represents a call to the function or test name on arguments args.PThe if-then-else conditional. If the first argument of the constructor is an empty list, the translation to MiniZinc will fail. ITE [(cond, expr1)] expr2/, where the list is a singleton, translates to !if cond then exp1 else exp2 endifD. If the list contains more than one pairs, then the corresponding  elseif-then% pairs are inserted before the final else expression.Qlet-in expression. In Let items expr, the elements of items represent the bindings in the expr expression. Although items is of type [Items], only Item values constructed by Declare and  ConstraintD will translate to a syntactically correct MiniZinc let expression.RA generator call expression.SsThe type of a MiniZinc's top-level program item representation. MiniZinc defines 8 kinds of items. This module defines a representation for 12 kinds of items. The additional 4 come from representing MiniZinc commented lines and empty lines as items, and from using 3 distinct Item constructors for representing user defined calls (predicates, tests and functions).TCommented lineU Include itemV&Variable declaration item. The value Declare i t name maybe_exp- represents the declaration a variable named name of type t and inst i. Use Just expression in place of  maybe_expF to represent the value that initializes the declared variable. Use Nothing in place of  maybe_exp< to represent a variable declaration without initialization.WAssignment item. Assign name exp represents the assignment of exp to the variable name.XConstraint itemY Solve itemZOutput item. The use of this item might cause errors in parsing the solution(s) of the model. Recommended use for testing purposes only.[User-defined predicate. Pred name args exp< represents the MiniZinc definition of a predicate called name2, the parameters of which are the elements of the args list. exp0 represents the optional body of the predicate.\)User-defined test. Syntax similar to the Pred constructor.])User-defined function. Syntax similar to Pred and Test constructors. The additional TypeInstZ represents the type of the returning value of the function and the inst of the function.^9Annotation item. Use of annotations is not supported yet._/Represents an empty line in the MiniZinc model.`=An abbreviation for the type of a represented MiniZinc model.atUser defined function, test or predicate in MiniZinc. The argument of this constructor is the name of the function.b7Prefix notation of a MiniZinc built-in binary operator.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~`STUVWXYZ[\]^_?@ABCDEFGHIJKLMNOPQR23456789:;<=> !"#$%&'()*+,-./01abd~xyofrpgswunhijklmezvt{|}qc  S   !"#$%&'()*+,-./012 3456789:;<=>?@ABCDEFGHIJKLMNOPQRS TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~MiniZinc pretty-printer9(c) Some Guy, 2013 Someone Else, 2014 BSD3 .Klara Marntirosian <klara.mar@cs.kuleuven.be>  experimental SafeJPrints the represented MiniZinc model. Essentially, this function applies ) on each element of the specified model.1Prints an item of the represented model. Example:aprintItem $ Pred "even" [(Dec, Int, "x")] (Just (Bi Eq (Bi Mod (Var "x") (IConst 2)) (IConst 0)))predicate even(var int: x) = x mod 2 = 0;APrints the represented MiniZinc expressions of a model. Examples:hprintExpr $ SetComp (Bi Times (IConst 2) (Var "i")) ([(["i"], Interval (IConst 1) (IConst 5))], Nothing){2 * i | i in 1..5}}printExpr $ Let [Declare Dec Int "x" (Just (IConst 3)), Declare Dec Int "y" (Just (IConst 4))] (Bi BPlus (Var "x") (Var "y"))let {var int: x = 3; var int: y = 4;}in x + y     ``     &Integration of MiniZinc 2.0 in Haskell9(c) Some Guy, 2013 Someone Else, 2014 BSD3 .Klara Marntirosian <klara.mar@cs.kuleuven.be>  experimental SafeInteractively runs a model and outputs its solution(s). The function first prompts the user for the paths of the file in which the represented MiniZinc model will be printed and the data file if required. Then asks the user to choose between supported solvers and the desired number of solutions (only one or all supported for now). Finally, it uses the chosen solver and parses the solution(s).(Runs a model and parses its solution(s)."Writes the model's data file. The `$ of the argument must contain only  Assignment items. The modelLThe path of the file in which the represented MiniZinc model will be printed;The path of the data file if required, else an empty stringQThe chose solver ("fd" for the G12/FD built-in solver or empty string for choco3):"0" for all solutions, empty string for the first solution  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^ _`abcdefghijklmnopqrstuvwxyz{|}~     haske_C9X620kPxMl6XbPEw600afInterfaces.FZSolutionParserInterfaces.MZASTInterfaces.MZPrinterInterfaces.MZinHaskellInterfaces.Auxiliary getSolutionFilenameIdentParamTypeInst GeneratorCompTailSolveSatisfyMinimizeMaximizeInstParDecFuncCNamePrefBopUopNotUPlusUMinusBopGtLtGteLteEqqEqNeqBPlusBMinusTimesDivIDivModLRarrowRarrowLarrowAndOrInSubSuperUnionIntersConcatDiffSDiffRangeOpAsFuncVarTypeBoolIntFloatStringSetArrayListOptRangeElemsAOSAnyExprAnonVarVarBConstIConstFConstSConstIntervalSetLitSetCompArrayLit ArrayLit2D ArrayComp ArrayElemBiUCallITELetGenCallItemCommentIncludeDeclareAssign ConstraintOutputPredTestFunction AnnotationEmptyMZModeluserDprefbopmz_abortmz_abs mz_absentmz_acosmz_acosh mz_array1d mz_array2d mz_array3d mz_array4d mz_array5d mz_array6dmz_array_unionmz_asinmz_asinh mz_assertmz_atanmz_atanh mz_bool2intmz_cardmz_ceil mz_concatmz_cosmz_coshmz_deoptmz_dom mz_dom_array mz_dom_sizemz_expmz_fixmz_floor mz_forall mz_index_setmz_index_set_1of2mz_index_set_2of2 mz_int2float mz_is_fixedmz_join mz_lengthmz_lb mz_lb_arraymz_lnmz_logmz_log10mz_log2mz_maxmz_min mz_occursmz_powmz_round mz_set2arraymz_show mz_show_float mz_show_intmz_sinmz_sinhmz_sqrtmz_summz_tanmz_tanhmz_tracemz_ub mz_ub_array mz_xorall printModel printItem printExpr iTestModel testModel writeData ConfigurationConfigminizinc chocosolver chocoparser antlr_path dropEmptymakeConfchococonf_mzconf_csconf_cpconf_an parser_choco parser_mz parser_cs parser_cp parser_an emptyConfconfFile parseConfig parserLineparserr configurespaceFixmakePath runParserparseWithLeftOvermanyTilltryanyTokenanyChar endOfLinechareof<|>string$fMonoidConfigurationMValueMErrorMIntMFloatMBoolMStringMArrayMSetSolutiongetPairsgroupBySolution groupString makePairsusefullcleanvarNamedigitsepBy sepEndBy1betweenmany1 digitValue ascendDecimaloppositenaturalintboolfloatsetintMboolMfloatMstringMsetM indexRange arraySizesextractfixDimsfix1Dimarrayscalarparserparsemz_array_intersect mz_exists mz_product printEITExprprintParensExprprec printTypeInst printVarType printCompTailprintGenerator printInst printFuncprintBopprintUop printSolve printParam commaSepDoc lineSepExprcommaSep commaSepExprisAtomicescape escapeChar