wg      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw x y z { | } ~                                                                                                     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./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'' Safe-InferredTGiven a sequence of arguments, join them together in a manner that could be used on 7 | the command line, giving preference to the Windows cmd shell quoting conventions. V | For an alternative version, intended for actual running the result in a shell, see !System.Process.showCommandForUser CGiven a string, split into the available arguments. The inverse of . ghijgjih Safe-Inferred klmnop klmnop Safe-Inferred     Safe-Inferred  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~|~}y{z6xwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:987%543210/.-,+*)('&"$#!   !  ! "$#%543210/.-,+*)('&6Bxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:987y{z|~}   Safe-Inferred.qrstuvwxyz{|}~,qrstuvwxyz{|}~ Safe-Inferred2 quantifier for all at least one (i.e., exists)  exactly one less than one does not exist 0For IFunExp standard set of operators includes: 1. Unary operators: # ! - not (logical)  #" - set counting operator + - - negation (arithmetic) 1 max - maximum (created for goals) 1 min - minimum (created for goals) 2. Binary operators:  <=> - equivalence  => - implication ! || - disjunction " xor - exclusive or  && - conjunction  < - less than  > - greater than  = - equality  <= - less than or equal  >"= - greater than or equal  != - inequality ' in - belonging to a set/being a subset + nin - not belonging to a set/not being a subset  + - addition/string concatenation " - - substraction $ * - multiplication  / - division  ++ - set union  -- - set difference  & - set intersection  <: - domain restriction  :> - range restriction % . - relational join 3. Ternary operators # ifthenelse -- if then else Local declaration  disj x1; x2 : X ++ Y  y1 : Y  is disjunct a list of local names "set to which local names refer to a reference to a clafer name Jmodule name - currently not used and empty since we have no module system %name of the clafer being referred to ,identifier refers to a top-level definition string  real number integer number expression with a  unary function, e.g., -1  binary function, e.g., 2 + 3 . ternary function, e.g., if x then 4 else 5 (quantified expression with declarations - e.g., [ all x1; x2 : X | x1.ref != x2.ref ] (This is expression container (parent). 6 It has meta information about an actual expression   the inferred type  /non-empty unique id for expressions with span, "" for noSpan  "position in the input Clafer file  the actual expression  *(Min, Max) integer interval. -1 denotes * RGroup cardinality is specified as an interval. It may also be given by a keyword.  xor 1..1 isKeyword = True ! 1..1 1..1 isKeyword = False A list of superclafers. ! -> overlaping unique (set) & ->> overlapping non-unique (bag) $ : non overlapping (disjoint) Clafer'Es subelement is either a clafer, a constraint, or a goal (objective) G This is a wrapper type needed to have polymorphic lists of elements Goal (optimization objective) whether hard or not (soft) 'the container of the actual expression vClafer has a list of fields that specify its properties. Some fields, marked as (o) are for generating optimized code *the position of the syntax in source code  )whether abstract or not (i.e., concrete) !group cardinality "name declared in the model #a unique identifier $ superclafers %clafer cardinality &(o) global cardinality 'nested elements (Heach file contains exactly one mode. A module is a list of declarations *#always empty for now because we don'$t have syntax for declaring modules +List of top-level elements 2A  supertype of all IR types =,clafer name as declared in the source model >unique identifier of a clafer ? map over IR @foldMap over IR A fold the IR d      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNd      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNe>=2<;:9876543,10/.-()*+ !"#$%&'     ?@ABCDEFGHIJKLMN        !"#$%&'()*+,10/.-2 <;:9876543=>?@ABCDEFGHIJKLMN Safe-Inferred5OPQRSTUVWXYZ[\]^_`abcdefghijOPQRSTUVWXYZ[\]^_`abcdefghijijOhgfedcba`_^]\[ZYXWVUTSRQPOhgfedcba`_^]\[ZYXWVUTSRQPij Safe-Inferred klmnopqrstuv klmnopqrstuv klmnopqrstuvklmnopqrstuv  Safe-Inferredw>maps between fully-, least-partially-qualified names and UIDs x1partially-qualified name, must not begin with ::  | e.g., `Person::name`, chair y)fully-qualified name, must begin with ::  | e.g., `::Person::name`, `::Company::Department::chair` z%a fully- or partially-qualified name {nget the UID of a clafer given a fully qualifed name or potentially many UIDs given a partially qualified name |7get the fully-qualified name of a clafer given its UID }Aget the least-partially-qualified name of a clafer given its UID ~@derive maps between fully-, partially-qualified names, and UIDs wxyz{|}~ >wxyz{|}~ zyxw>~{|}wxyz{|}~ NonenGenerate a JSON list of triples containing a fully-qualified-, least-partially-qualified name, and unique id. J | Both the FQNames and UIDs are brittle. LPQNames are the least brittle. WGenerate a JSON list of tuples containing a least-partially-qualified name and a scope   Safe-Inferred0  . NoneMLL2   Safe-Inferred Safe-Inferred   Safe-Inferred^      !"#$%&'()*+,-./0123456789:;<=>?^      !"#$%&'()*+,-./0123456789:;<=>?^      !"#$%&'()*+,-./0123456789:;<=>?Y      !"#$%&'()*+,-./0123456789:;<=>? Safe-Inferred@<Transform the AST into the intermediate representation (IR) B?desugars enumeration to abstract and global singleton features =@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|=@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|=@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|=@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|NonepEasier to work with. IClafers have links from parents to children. SClafers have links from children to parent. f}~Z}~Z}~N}~  Safe-Inferred+Convert all strings into ints for analysis 3 | Return an inverse map from ints back to strings  Safe-Inferred Safe-Inferred)Generate an XML representation of the IR  Safe-Inferred%Generate an API for the IR in Python                      Safe-Inferred     Safe-Inferred      None !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$%#&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~!"  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~NoneScope inference strategy 9Type of output to be generated at the end of compilation /--  NonehThe full ErrPos requires lots of information that needs to be consistent. Every time we throw an error, n | we need BOTH the (fragId, fragPos) AND modelPos. This makes it easier for developers using ClaferT so they i | only need to provide part of the information and the rest is automatically calculated. The code using 1 | ClaferT is more concise and less error-prone.  |  | modelPos <&- modelPosFromFragPos fragdId fragPos ; | throwErr $ ParserErr (ErrPos fragId fragPos modelPos)  |  | vs  | 5 | throwErr $ ParseErr (ErrFragPos fragId fragPos)  | K | Hopefully making the error handling easier will make it more universal. gPosition relative to the start of the complete model. Will calculate fragId and fragPos automatically. : | The position is relative to the entire complete model. ]Position relative to the start of the fragment. Will calculate model position automatically.  | fragId starts at 0 : | The position is relative to the start of the fragment. 'The fragment where the error occurred. 1Error positions are relative to their fragments. b | For example an error at (Pos 2 3) means line 2 column 3 of the fragment, not the entire model. *The error position relative to the model. 'Clafer keeps track of multiple errors.  1Possible errors that can occur when using Clafer ! | Generate errors using throwErr/ throwErrs:  %Error generated by semantic analysis  Error generated by the parser  Position of the error Generic error $Monad Transformer for using Clafer. Monad for using Clafer. "Throw many errors. #Throw one error. $ Catch errors %Get the ClaferEnv 'Modify the ClaferEnv (?Set the ClaferEnv. Remember to set the env after every change. )Uses the ErrorT convention: ? | Left is for error (a string containing the error message) , | Right is for success (with the result) * Convenience @      !"#$%&'()*;       !"#$%&'()*?!       "#$%&'(*) "        !"#$%&'()*None +!ident level stack, last new line 16ident level of new line, current level or parenthesis C3Add to the global and column positions of a token. : | The column position is only changed if the token is on ( | the same line as the given position. EGet the position of a token. F Get the line number of a token. G"Get the column number of a token. H.Check if a token is one of the given symbols. I+Check if a token is the layout open token. K,Check if a token is the layout close token. M+Get the number of characters in the token. RAInsert a new symbol token at the begninning of a list of tokens. 4+,-./0123456789:;<=>?@ABC!If the token is on the same line 1 as this position, update the column position. -Number of characters to add to the position. DEFGHIJKLMNOPQRPosition of the new token. Symbol in the new token. .The rest of the tokens. These will have their 5 positions updated to make room for the new token. STUVWXYZ[\]^4+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^4234567810-/.+,9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^++,-/.0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^Nonec$Generate the model as HTML document d"Generate the model as plain text 4 | This is used by the graph generator for tooltips 0_`abcdefg !"#$%&'()*+,-h./0123456789:;<i=j>ij]_`abcdefghijcdefghjii]`_abj0_`abcdefg !"#$%&'()*+,-h./0123456789:;<i=j>Nonek,Generate a graph in the simplified notation l9Generate a graph in CVL variability abstraction notation (kl?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdijklklji(kl?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdNone nHow a given name was resolved onon-abstract top-level clafer pabstract clafer qclafer' s ancestor rresolved by a reference sclafer' s descendant t local variable (in constraints) u primitive type: integer, string vthis, parent, children w-this environment is created for each clafer ?mnopqrstuvwxyz{|}~?mnopqrstuvwxyz{|}~?wxyz{|}~nvutsrqpom-mnvutsrqpow xyz{|}~NoneeType inference and checking *fghijklmnopqrstuvewxyz{|}~fghijklmnopqrstuvewxyz{|}~ NoneCCompute scopes for clafers by solving a system of linear equations U<!None$Resolve Non-overlapping inheritance  Resolve overlapping inheritance ,Resolve inherited and default cardinalities Expand inheritance "NoneRun the various resolvers Name resolver #None;Return an appropriate scope analysis for a given strategy $NoneKApply optimizations for unused abstract clafers and inheritance flattening ''''%None-representation of strings in chunks (for line/column numbering) Alloy code generation ! 07th Mayo 2012 Rafael Olaechea L Added Logic to print a goal block in case there is at least one goal. Y      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSY      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSK       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS&NoneTChoco 3 code generation TTTT'NoneU&Result of generation for a given mode Woutput file extension X output text Z&the final environment of the compiler [=Maps source constraint spans in Alloy to the spans in the IR \-Map back from Ints used to represent Strings ]$scopes generated by scope inference `EAdd a new fragment to the model. Fragments should be added in order. JConverts the Err monads (created by the BNFC parser generator) to ClaferT RConverts one Err. liftParseErrs is better if you want to report multiple errors. > | This method will only report one before ceasing execution. aXParses the model into AST. Adding more fragments beyond this point will have no effect. bCompiles the AST into IR. cPSplits the IR into their fragments, and generates the output for each fragment. \ | Might not generate the entire output (for example, Alloy scope and run commands) because $ | they do not belong in fragments. dQSplits the AST into their fragments, and generates the output for each fragment. e$Generates outputs for the given IR. fThe XML Schema of the IR reserved keywords UVWXYZ[\]^_`abcdefb (? !%()*UVWXYZ[\]^_`abcdef8`baedc)*%(UVWXYZ[\]f_^(? ! UVWXYZ[\]^_`abcdef()*+,-./012324546789:;<=>?@ABCDEFGHIHJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        !"#$%&&'())*+,-./01233456789:;<==>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                                                            !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~85C9      !"##$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&''(()*+,,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnoppqrstuvwxyz{|}~6 !!!!!!!!!!!!!!!!!!!!!!!!!""""""""#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%*%%%%%%%%%%%%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A&B'C'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$                                                     K      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF!"#$%GHbIJKLMNOPQQRRSTUVWXYZ[\]^_`abcdefghij k l l m n   o p q r r s t u v w x y z { | } ~                                                            &&&&''''''''' clafer-0.3.5Language.Clafer.SplitJoin Paths_clafer Language.Clafer.Generator.SchemaLanguage.Clafer.Front.AbsclaferLanguage.Clafer.Front.Mapper&Language.Clafer.Intermediate.Intclafer$Language.Clafer.Intermediate.TracingLanguage.Clafer.Generator.StatsLanguage.Clafer.QNameUIDLanguage.Clafer.JSONMetaData!Language.Clafer.Front.PrintclaferLanguage.Clafer.Front.LexclaferLanguage.Clafer.CssLanguage.Clafer.CommentsLanguage.Clafer.Common&Language.Clafer.Intermediate.Desugarer%Language.Clafer.Intermediate.Analysis+Language.Clafer.Intermediate.StringAnalyzer(Language.Clafer.Intermediate.TransformerLanguage.Clafer.Generator.Xml Language.Clafer.Generator.Python0Language.Clafer.Intermediate.SimpleScopeAnalyzerLanguage.Clafer.Front.ErrMLanguage.Clafer.Front.ParclaferLanguage.Clafer.ClaferArgsLanguage.ClaferT$Language.Clafer.Front.LayoutResolverLanguage.Clafer.Generator.HtmlLanguage.Clafer.Generator.Graph)Language.Clafer.Intermediate.ResolverName)Language.Clafer.Intermediate.ResolverType.Language.Clafer.Intermediate.GLPKScopeAnalyzer0Language.Clafer.Intermediate.ResolverInheritance%Language.Clafer.Intermediate.Resolver*Language.Clafer.Intermediate.ScopeAnalysis#Language.Clafer.Optimizer.OptimizerLanguage.Clafer.Generator.AlloyLanguage.Clafer.Generator.ChocoLanguage.ClaferjoinArgs splitArgsversion getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamexsdSpanPosSpanPosPosPosLocId PosLocIdIdent LocIdIdentModId PosModIdIdent ModIdIdentEnumIdPosEnumIdIdent EnumIdIdentQuant PosQuantSome QuantSome PosQuantOneQuantOne PosQuantLone QuantLone PosQuantNoQuantNoDeclPosDeclSetExp PosClaferIdClaferIdPosJoinJoinPosRangeRange PosDomainDomainPosIntersection Intersection PosDifference Difference PosUnionComUnionComPosUnionUnionExp PosESetExpESetExpPosEStrEStr PosEDoubleEDoublePosEIntEIntPosEImpliesElse EImpliesElse PosEMinExpEMinExp PosECSetExpECSetExp PosESumSetExp ESumSetExpPosEDivEDivPosEMulEMulPosESubESubPosEAddEAdd PosQuantExpQuantExpPosENinENinPosEInEInPosENeqENeqPosEGteEGtePosELteELtePosEEqEEqPosEGtEGtPosELtELtPosENegENegPosEAndEAndPosEXorEXorPosEOrEOr PosEImpliesEImpliesPosEIffEIffPosEGMinEGMinPosEGMaxEGMax PosDeclQuant DeclQuantPosDeclQuantDisj DeclQuantDisj PosDeclAllDeclAllPosDeclAllDisj DeclAllDisjNamePosPathPath ExIntegerPosExIntegerNum ExIntegerNumPosExIntegerAst ExIntegerAstNCardPosNCardCardPosCardInterval CardInterval PosCardNumCardNum PosCardAnyCardAny PosCardSomeCardSome PosCardLoneCardLone PosCardEmpty CardEmptyGCardPosGCardInterval GCardInterval PosGCardOptGCardOpt PosGCardMuxGCardMux PosGCardOrGCardOr PosGCardXorGCardXor PosGCardEmpty GCardEmptyInitHow PosInitHow_2 InitHow_2 PosInitHow_1 InitHow_1Init PosInitSomeInitSome PosInitEmpty InitEmptySuperHowPosSuperMArrow SuperMArrow PosSuperArrow SuperArrow PosSuperColon SuperColonSuper PosSuperSome SuperSome PosSuperEmpty SuperEmptyElementPosSubsoftconstraintSubsoftconstraint PosSubgoalSubgoalPosSubconstraint Subconstraint PosClaferUse ClaferUse PosSubclafer SubclaferElementsPosElementsList ElementsListPosElementsEmpty ElementsEmptyAbstract PosAbstractPosAbstractEmpty AbstractEmptyGoalPosGoalSoftConstraintPosSoftConstraint Constraint PosConstraintClafer PosClafer DeclarationPosElementDecl ElementDecl PosEnumDeclEnumDeclModule PosModulePosIdent PosString PosDouble PosIntegernoSpannoPosMappablemapNoderange mapModuleColNoLineNoIQuantIAllISomeIOneILoneINoIDeclisDisjdeclsbodyIExp IClaferIdmodNamesidentisTopIStrIDoubleIIntIFunExpopexps IDeclPExpquantoDeclsbpexpPExpiTypepidinPosexpIntervalIGCard isKeywordintervalISuper isOverlappingsupersIElementIEGoal isMaximize IEConstraintisHardcpexpIEClaferIClafercinPos isAbstractgcardidentuidsupercardglCardelementsIModulemNamemDeclsITypeTClaferTRealTIntegerTStringTBooleanIrIRIGCardIRIDeclIRIQuantIRISuperIRPExpIRIExpIRClaferIRIType IRIElement IRIModuleCNameUIDmapIR foldMapIRfoldIRiMapiFoldMapiFold unWrapIModuleunWrapIElement unWrapIType unWrapIClafer unWrapIExp unWrapPExp unWrapISuper unWrapIQuant unWrapIDecl unWrapIGCardAstAstLocIdAstModId AstEnumIdAstQuantAstDecl AstSetExpAstExpAstName AstExIntegerAstNCardAstCardAstGCard AstInitHowAstInit AstSuperHowAstSuper AstElement AstElements AstAbstractAstGoalAstSoftConstraint AstConstraint AstClaferAstDeclaration AstModule traceIrModuletraceAstModuleStats naClafers nrClafers ncClafers nConstraintsnGoalssglCard statsModule statsClafer statsCard statsElement QNameMapsPQNameFQNameQNamegetUIDs getFQName getLPQNamederiveQNameMapsgetQNameUIDTriplesgenerateJSONnameUIDMapgenerateJSONScopesPrintprtprtListDoc printTreedocrenderparenthconcatSconcatD replicateSmkEscprPrec AlexAccPredAlexAccAlexAccSkipPred AlexAccSkip AlexLastAcc AlexLastSkipAlexNone AlexReturn AlexTokenAlexSkip AlexErrorAlexEOFAlexAddrAlexA# AlexInputPosnPnBTreeBNTokenErrPTTok T_PosIdent T_PosString T_PosDouble T_PosIntegerTCTDTVTITLTS alex_base alex_table alex_check alex_deflt alex_accepttoksharetokenPos posLineCol mkPosTokenprTokeneitherResIdentresWordsunescapeInitTail alexStartPosalexMovetokens alexGetChar alexGetBytealexInputPrevChar alex_action_3 alex_action_4 alex_action_5 alex_action_6 alex_action_7 alex_action_8 alex_action_9alexIndexInt16OffAddralexIndexInt32OffAddr quickIndexalexScan alexScanUser alex_scan_tkn alexAndPredalexPrevCharIsalexPrevCharMatchesalexPrevCharIsOneOfalexRightContextiUnboxheadercss getOptions getFragmentsgetStatsgetGraph getCommentsGEnv identCountMapexpCountstablesClafersIdentResult transIdentmkIdent mkIntegergetSuper getSuperNoArr getSuperId isEqClaferIdidToPExp mkLClaferId mkPLClaferId pExpDefPidPos pExpDefPidpExpDefisParent isClaferName isClaferName' getClaferName elemToClafer toClafers mapHierarchy findHierarchyapplybfs toNodeShallow getSubclafers bfsClaferslurryfst3snd3trd3toTriple toMTripleiNotiCSetiMiniGMaxiGMiniSumSetunOpsiIffiImpliOriXoriAnd logBinOpsiLtiGtiEqiLteiGteiNeqiIniNin relGenBinOps relSetBinOps relBinOpsiPlusiSubiMuliDiviSumSet' arithBinOpsiUnion iDifference iIntersectioniDomainiRangeiJoin setBinOpsbinOps iIfThenElse mkIFunExptoLowerSthisparentchildrenref specialNamesstrTypeintType integerType baseClafermodSepprimitiveTypes isPrimitivevoidf desugarModule sugarModule desugarEnumsdesugarDeclarationsugarDeclaration desugarClafer sugarClafer desugarSuperdesugarSuperHow desugarInitdesugarInitHow desugarName desugarModId sugarModId sugarSuper sugarSuperHow sugarInitHowdesugarConstraintdesugarSoftConstraint desugarGoalsugarConstraintsugarSoftConstraint sugarGoaldesugarAbstract sugarAbstractdesugarElements sugarElementsdesugarElement sugarElementmkArrowConstraintisSuperSomeArrow isSuperArrow desugarGCard isOptionalDefisExIntegerAst sugarGCard desugarCard desugarNCarddesugarExInteger sugarCardsugarExInteger desugarExp desugarExp' desugarOp desugarSetExpdesugarSetExp'sugarExp sugarExp' sugarSetExp sugarSetExp' desugarPathisSet reducePExp reduceIExp reduceNav desugarDecl sugarDecl desugarLocId sugarLocId desugarQuant sugarQuant MatchablematchesAnythingUidabletoClafer fromClafertoUidfromUidInfosclafersSClaferorigUidlowhighgroupLow groupHigh constraintsSSuperColonRef MonadAnalysisclafers withClafersAnalysis AnalysisTwithExtraClafers isConcreteisBase isDerived runAnalysis runAnalysisT claferWithUid parentUidparentOf parentsOf ancestorsOfdirectChildrenOfdirectDescendantsOftopNonRootAncestorrefUidrefOfrefsOfcolonUidcolonOfcolonsOfcolonsTo hierarchy isDirectChildisIndirectChildisChildanything|^|->|:constraintsUnderrootUid convertClafer gatherInfo liftMaybeliftList runListT_foreachforeachM subClafers superClafersfindAllselectsuchThat concatMapMwhenMunlessM fromMaybeT mapMaybeT mapVSupplyTmapLeftmapRight<:>testing comparingsyntaxOfcombinesameAs astrModule astrClafer astrElementastrPExpastrIExp concatStrExp transModule transElement transClafer transPExp transIExptagoptTagtagType genXmlInteger genXmlBoolean genXmlString genXmlIntPair genXmlModule genXmlClafergenXmlAbstract genXmlGCardgenXmlIntervalgenXmlId genXmlUid genXmlSuper genXmlCard genXmlGlCard genXmlElement genXmlAnyOp genXmlPExpgenXmlPositiongenXmlIExpType genXmlIExp genXmlDeclgenXmlQuantTypegenXmlITypeType genXmlITypegenPythonIntegerisNull boolHelpergenPythonBooleangenPythonStringgenPythonIntPairgenPythonModulegenPythonClafergenPythonAbstractgenPythonGCardgenPythonInterval genPythonId genPythonUidgenPythonSuper genPythonCardgenPythonGlCardgenPythonElement genPythonPExpgenPythonPositiongenPythonIExpType declHelper genPythonIExp genPythonDeclgenPythonQuantTypegenPythonITypeTypegenPythonITypesimpleScopeAnalysisBadOk HappyAddrHappyA#HappyStk Happy_IntList HappyConsHappyAny HappyAbsSynhappyIn4 happyOut4happyIn5 happyOut5happyIn6 happyOut6happyIn7 happyOut7happyIn8 happyOut8happyIn9 happyOut9 happyIn10 happyOut10 happyIn11 happyOut11 happyIn12 happyOut12 happyIn13 happyOut13 happyIn14 happyOut14 happyIn15 happyOut15 happyIn16 happyOut16 happyIn17 happyOut17 happyIn18 happyOut18 happyIn19 happyOut19 happyIn20 happyOut20 happyIn21 happyOut21 happyIn22 happyOut22 happyIn23 happyOut23 happyIn24 happyOut24 happyIn25 happyOut25 happyIn26 happyOut26 happyIn27 happyOut27 happyIn28 happyOut28 happyIn29 happyOut29 happyIn30 happyOut30 happyIn31 happyOut31 happyIn32 happyOut32 happyIn33 happyOut33 happyIn34 happyOut34 happyIn35 happyOut35 happyIn36 happyOut36 happyIn37 happyOut37 happyIn38 happyOut38 happyIn39 happyOut39 happyIn40 happyOut40 happyIn41 happyOut41 happyIn42 happyOut42 happyIn43 happyOut43 happyIn44 happyOut44 happyIn45 happyOut45 happyIn46 happyOut46 happyIn47 happyOut47 happyIn48 happyOut48 happyIn49 happyOut49 happyIn50 happyOut50 happyIn51 happyOut51 happyIn52 happyOut52 happyIn53 happyOut53 happyIn54 happyOut54 happyIn55 happyOut55 happyIn56 happyOut56 happyIn57 happyOut57 happyIn58 happyOut58 happyIn59 happyOut59 happyIn60 happyOut60 happyInTok happyOutTokhappyActOffsetshappyGotoOffsetshappyDefActions happyCheck happyTablehappyReduceArr happy_n_termshappy_n_nonterms happyReduce_1happyReduction_1 happyReduce_2happyReduction_2 happyReduce_3happyReduction_3 happyReduce_4happyReduction_4 happyReduce_5happyReduction_5 happyReduce_6happyReduction_6 happyReduce_7happyReduction_7 happyReduce_8happyReduction_8 happyReduce_9happyReduction_9happyReduce_10happyReduction_10happyReduce_11happyReduction_11happyReduce_12happyReduction_12happyReduce_13happyReduction_13happyReduce_14happyReduction_14happyReduce_15happyReduction_15happyReduce_16happyReduction_16happyReduce_17happyReduction_17happyReduce_18happyReduction_18happyReduce_19happyReduction_19happyReduce_20happyReduction_20happyReduce_21happyReduction_21happyReduce_22happyReduction_22happyReduce_23happyReduction_23happyReduce_24happyReduction_24happyReduce_25happyReduction_25happyReduce_26happyReduction_26happyReduce_27happyReduction_27happyReduce_28happyReduction_28happyReduce_29happyReduction_29happyReduce_30happyReduction_30happyReduce_31happyReduction_31happyReduce_32happyReduction_32happyReduce_33happyReduction_33happyReduce_34happyReduction_34happyReduce_35happyReduction_35happyReduce_36happyReduction_36happyReduce_37happyReduction_37happyReduce_38happyReduction_38happyReduce_39happyReduction_39happyReduce_40happyReduction_40happyReduce_41happyReduction_41happyReduce_42happyReduction_42happyReduce_43happyReduction_43happyReduce_44happyReduction_44happyReduce_45happyReduction_45happyReduce_46happyReduction_46happyReduce_47happyReduction_47happyReduce_48happyReduction_48happyReduce_49happyReduction_49happyReduce_50happyReduction_50happyReduce_51happyReduction_51happyReduce_52happyReduction_52happyReduce_53happyReduction_53happyReduce_54happyReduction_54happyReduce_55happyReduction_55happyReduce_56happyReduction_56happyReduce_57happyReduction_57happyReduce_58happyReduction_58happyReduce_59happyReduction_59happyReduce_60happyReduction_60happyReduce_61happyReduction_61happyReduce_62happyReduction_62happyReduce_63happyReduction_63happyReduce_64happyReduction_64happyReduce_65happyReduction_65happyReduce_66happyReduction_66happyReduce_67happyReduction_67happyReduce_68happyReduction_68happyReduce_69happyReduction_69happyReduce_70happyReduction_70happyReduce_71happyReduction_71happyReduce_72happyReduction_72happyReduce_73happyReduction_73happyReduce_74happyReduction_74happyReduce_75happyReduction_75happyReduce_76happyReduction_76happyReduce_77happyReduction_77happyReduce_78happyReduction_78happyReduce_79happyReduction_79happyReduce_80happyReduction_80happyReduce_81happyReduction_81happyReduce_82happyReduction_82happyReduce_83happyReduction_83happyReduce_84happyReduction_84happyReduce_85happyReduction_85happyReduce_86happyReduction_86happyReduce_87happyReduction_87happyReduce_88happyReduction_88happyReduce_89happyReduction_89happyReduce_90happyReduction_90happyReduce_91happyReduction_91happyReduce_92happyReduction_92happyReduce_93happyReduction_93happyReduce_94happyReduction_94happyReduce_95happyReduction_95happyReduce_96happyReduction_96happyReduce_97happyReduction_97happyReduce_98happyReduction_98happyReduce_99happyReduction_99happyReduce_100happyReduction_100happyReduce_101happyReduction_101happyReduce_102happyReduction_102happyReduce_103happyReduction_103happyReduce_104happyReduction_104happyReduce_105happyReduction_105happyReduce_106happyReduction_106happyReduce_107happyReduction_107happyReduce_108happyReduction_108happyReduce_109happyReduction_109happyReduce_110happyReduction_110happyReduce_111happyReduction_111happyReduce_112happyReduction_112happyReduce_113happyReduction_113happyReduce_114happyReduction_114happyReduce_115happyReduction_115happyReduce_116happyReduction_116happyReduce_117happyReduction_117happyReduce_118happyReduction_118happyReduce_119happyReduction_119happyReduce_120happyReduction_120happyReduce_121happyReduction_121happyReduce_122happyReduction_122happyReduce_123happyReduction_123happyReduce_124happyReduction_124happyReduce_125happyReduction_125happyReduce_126happyReduction_126happyReduce_127happyReduction_127happyReduce_128happyReduction_128happyReduce_129happyReduction_129happyReduce_130happyReduction_130 happyNewToken happyError_ happyThen happyReturn happyThen1 happyReturn1 happyError'pModulehappySeqreturnMthenMgppp happyErrormyLexer happyParse happyAccept happyDoActionindexShortOffAddr happyShifthappySpecReduce_0happySpecReduce_1happySpecReduce_2happySpecReduce_3 happyReducehappyMonadReducehappyMonad2Reduce happyDrop happyDropStk happyGoto happyFail notHappyAtAll happyTcHack happyDoSeq happyDontSeq ClaferArgsmodeconsole_outputflatten_inheritancetimeout_analysis no_layout new_layoutcheck_duplicates skip_resolver keep_unusedno_statsschemavalidatenoalloyruncommandtooldir alloy_mappingself_contained add_graphshow_references add_comments ecore2claferscope_strategyafm skip_goals meta_datafile ScopeStrategyFullSimpleNone ClaferModeChocoPythonCVLGraphGraphHtmlXmlAlloyAlloy42clafer mergeArgsmainArgsdefaultClaferArgs ThrowabletoErr PartialErrPos ErrModelSpan pModelSpan ErrModelPos pModelPos ErrFragSpan pFragSpan ErrFragPospFragIdpFragPosErrPosfragIdfragPosmodelPosCErrs ClaferErrserrsCErr SemanticErrParseErrpos ClaferErrmsg ClaferSErrs ClaferSErrClaferTClaferM ClaferEnvargs modelFragscAstcIrfrags irModuleTraceastModuleTracegetAstgetIrmakeEnv throwErrsthrowErr catchErrsgetEnvgetsEnv modifyEnvputEnv runClaferT runClaferLEnvExTokenNewLinePositionLastNlLayEnvlevellevelsinputoutputbrCtrgetToken layoutOpen layoutClose resolveLayoutresolveindentdedenttoToken isExTokenIn isNewLine incrGlobal tokenLookuppositionlinecolumn isTokenIn isLayoutOpen isBracketOpen isLayoutCloseisBracketClose tokenLength addNewLines addNewLines'adjustupdTokenaddToken resLayoutresolveLayout' handleIndentemitreadC eatSpaces emitIndent emitDedentisEofgetc revertLayout revertLayout'printPreComment printCommentprintStandaloneCommentprintInlineCommentgenHtmlgenText genTooltip printModuleprintDeclaration printDecl cleanOutputhighlightErrorsgenSimpleGraph genCVLGraphResolve HowResolved TopClafer AbsClaferAncestor Reference SubclafersBinding TypeSpecialSpecialSEnvcontext ancClafersbindingsresPathgenvaClaferscClafersdefSEnvcheckDuplicateSiblingscheckDuplicateSiblings' checkForJustcheckListDuplicatescheckListDuplicates' isIEClaferresolveModuleNames resolveClafermkAncestorListresolveElement resolvePExp resolveIExp liftError processDecl resolveNavmkPathtoNav'adjustAncestormkPath' resolveNameresolveImmName resolveNoneresolveSpecial resolveBindresolveDescendantsresolveChildrenresolveReferenceresolveChildren'resolveAncestorresolveTopLevel toNodeDeepallInhChildren allChildrenselectChildren findUnique findFirstshowPathisNamespaceConflict filterPaths unionType+++ fromUnionType intersectsresolveTModuleglpkScopeAnalysisresolveNModuleresolveNClafer resolveNSuperresolveNElementresolveNresolveOModuleresolveOClafer resolveOSuperresolveOElement analyzeModule analyzeClafer analyzeGCard analyzeCardanalyzeElementresolveEModuleunrollableModuleunrollabeDeclarationunrollableClafergetDirUnrollablesresolveEClafer renameClafer renameClafer'genIdresolveEInheritanceresolveEElement resolveModule nameModule nameElement nameClafernamePExpnameIExp nameIDeclresolveNamesModulegetScopeStrategyoptimizeModuleoptimizeElementoptimizeClafermultInt multExIntmakeZeroUnusedAbs remUnusedAbs findUnusedAbsgetUniqExtended getExtended expModule expClaferexpSuper expElementexpPExpexpIExpexpDeclexpNavexpNav'split' allUniqueallUniqueClaferallUniqueElementcheckConstraintElementcheckConstraintPExpcheckConstraintIExpcheckConstraintIDecl findDupModulefindDupModule' findDupClaferfindDupElementfindDuplicates markTopModule markTopClafer markTopSupermarkTopElement markTopPExp markTopIExp markTopDeclAlloyEnvlineColmappingIrTraceNoTrace ExactCard UpperCard LowerCardisGroupIrPExppUidConcatsrcPosnodesCStringmkConcat iscPrimitiveflattencconcat cintercalate filterNullcunlines genModulegenScopegenDeclarationGoalsOnlygenDeclarationmkFactmkMetricmkSetshowSet optShowSet genClafertransPrimitive claferDecl genOptCard genRelations genRelNamegenRel genAlloyRelrefType getTargetgenTypegenConstraintsgenParentConstgenOptParentConst genGroupConstmkCard genPathConst isRefPath isSimplePathgenCard genCardCrudegenIntervalCrude genInterval cardConcatcardLowerConcatcardUpperConcat genExIntegergenPExpgenPExp' transformExp genIFunExpoptBrArg interleavebrArggenOp adjustPExp adjustIExp adjustNavgenQuantgenDeclgenDisj mapLineColaddCode mapLineCol' addColumn countLeading countTrailinglinenofirstCol firstLine removerightgetRight genCModuleCompilerResult extension outputCode statistics claferEnvmappingToAlloy stringMap scopesList InputModel VerbosityLaddModuleFragmentparsecompilegenerateFragments generateHtmlgenerate claferIRXSDStateQuotNormcatchIObindirlibdirdatadir libexecdir sysconfdir>-doMap doMapWithSpandoMap2doMap2WithSpandoMap3doMap3WithSpandoMap7lenerrMsgerrMsgMerrMsgR$fMappablePosInteger$fMappablePosDouble$fMappablePosString$fMappablePosIdent$fMappableExInteger$fMappableQuant$fMappableEnumId$fMappableModId$fMappableLocId$fMappableName$fMappableGCard$fMappableCard$fMappableNCard$fMappableSetExp $fMappableExp$fMappableDecl$fMappableInitHow$fMappableInit$fMappableSuperHow$fMappableSuper$fMappableAbstract$fMappableGoal$fMappableSoftConstraint$fMappableConstraint$fMappableClafer$fMappableElement$fMappableElements$fMappableDeclaration$fMappableModule $fMappable[]base GHC.FloattraverseModuletraverseDeclarationtraverseClafertraverseConstrainttraverseSoftConstraint traverseGoaltraverseAbstracttraverseElementstraverseElement traverseSupertraverseSuperHow traverseInittraverseInitHow traverseGCard traverseCard traverseNCardtraverseExInteger traverseName traverseExptraverseSetExp traverseDecl traverseQuanttraverseEnumId traverseModId traverseLocId UIDLpqNameMap UIDFqNameMap FQNameUIDMapFQKeyderiveFQNameUIDMaps addElements addClaferfindUIDsByFQNamereverseOnQualifiergetFQKeygetQNameFromKeyderiveUidLpqNameMapgenerateUIDLpqMapEntrygenerateQNameUIDArrayEntrygenerateLpqNameScopeArrayEntryprettyPrintJSON $fPrintSpan $fPrintPos $fPrintLocId $fPrintModId $fPrintEnumId $fPrintQuant $fPrintDecl $fPrintSetExp $fPrintExp $fPrintName$fPrintExInteger $fPrintNCard $fPrintCard $fPrintGCard$fPrintInitHow $fPrintInit$fPrintSuperHow $fPrintSuper$fPrintElement$fPrintElements$fPrintAbstract $fPrintGoal$fPrintSoftConstraint$fPrintConstraint $fPrintClafer$fPrintDeclaration $fPrintModule$fPrintPosIdent$fPrintPosString$fPrintPosDouble$fPrintPosInteger $fPrintDouble$fPrintInteger $fPrintChar $fPrint[]$fFunctorAlexLastAcc getFragments' getStats' getGraph' getComments'readLine readBlock readBlock'$fMatchableSClafer$fMatchableAnything $fMatchable[] $fUidable[]$fUidableSClafer$fMonadAnalysisVSupplyT$fMonadAnalysisWriterT$fMonadAnalysisReaderT$fMonadAnalysisMaybeT$fMonadAnalysisListT$fMonadAnalysisErrorT$fMonadAnalysisAnalysisT isReference isSuperest analyzeSupersanalyzeConstraintsanalyzeDependencies dependencyanalyzeHierarchy directSuper findClafersfindConstraints childClafers unfoldJoins$fMonadPlusErr $fFunctorErr $fMonadErr$fDefaultScopeStrategy$fDefaultClaferMode ClaferErrPostoErrPosaddPosminusPosinSpan$fThrowableCErr$fClaferErrPosPartialErrPos$fClaferErrPosErrPos$fClaferErrPosSpan $fErrorCErrs $fErrorCErr printElement printElements printClafer printGoal printAbstract printGCard printNCardprintExInteger printName printModId printPosIdentprintPosIdentRef printSuper printSuperHow printCardprintConstraintprintConstraint'printSoftConstraintprintSoftConstraint' printInit printInitHowprintExp printSetExp printQuant printEnumId printIndent printIndentIdprintIndentEnddropUidrestgetUidgetDivIdgetUseIdwhiletrimhighlightErrors'graphSimpleModulegraphSimpleDeclarationgraphSimpleElementgraphSimpleElementsgraphSimpleClafergraphSimpleSupergraphSimpleSuperHow refColourgraphSimpleNamegraphSimpleModIdgraphSimplePosIdentgraphSimpleSetExpgraphCVLModulegraphCVLDeclarationgraphCVLElementgraphCVLElementsgraphCVLClafer graphCVLSupergraphCVLSuperHow graphCVLName graphCVLModIdgraphCVLPosIdentgraphCVLConstraint graphCVLCard graphCVLNCardgraphCVLExInteger graphCVLGCardgraphCVLSetExp choiceCard lowerCardgetExpId htmlNewlinesrunTypeAnalysisMonadTypeAnalysiscurThis localCurThiscurPath localCurPath typeDecls localDecls TypeAnalysisTypeInfo iTypeDeclsiInfoiCurThisiCurPath TypeDecls typeOfUidclosure intersectionnumericcoercestrgetIfThenElseTyperesolveTElementresolveTConstraint resolveTPExp resolveTPExp'addReftypeOfwithType<++>$fMonadAnalysisTypeAnalysis$fMonadTypeAnalysisErrorT$fMonadTypeAnalysisListT$fMonadTypeAnalysisTypeAnalysisParseT ParseStatepsThispsStacktPostLexeme MonadScope ScopeAnalysisLimitAtLeastExactlExprConGEQGTHLEQLTHEQUExprPositiveConstGlobalThisPartstepspartsBetweenbitwidthAnalysisconstantsAnalysismultsimpleAnalysissetConstraints optFormulaparentConstraintsrefConstraintscolonConstraints addChildreneTypeisThisisGlobal parentOfPartoptimizeInConstraintsoptimizeAllConstraintsoptConstraintsUnderconstraintConstraints reverseConscopeConstraint parsePath parsePath2runScopeAnalysis uniqNameSpaceuniqVar testPositive testPositivessmallMgetThisputThispopStackpushThis_this__parent__ref__child_ _directChild__indirectChild_satisfyspanToSourcePos patternMatchsubexpressions$fMonadSupplysParsecT$fMonadSupplysMaybeT$fMonadSupplysListT $fMonadScopem isNotAbstracticlafer iconstraint liftParseErrs liftParseErrkeyWordsdesugaranalyzeaddStats showStats showInterval