sk#      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL 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{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        !"""""""""""""""""""""""""""""""""""#################################################################################### # # # # #$%%%%%%%%%%%%%%%%% %!%"%& 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 . #$%&#&%$& Safe-Inferred '()*+,-./0123(./0123 '()*+,-./0123 Safe-Inferred Safe-Inferred  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~456789:;<=>?@ABCDEFGHIJKLMNOPQ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~}~{|yzwxuvrtspqnolmjkgihdfe^cba`_[]\WZYXTVUQSRJPONMLKCIHGFEDAB>@?<=;:9876543210/.-,+*)('&%$#"!   B  !;:9876543210/.-,+*)('&%$#"! <=>@?ABCIHGFEDJPONMLKQSRTVUWZYX[]\^cba`_dfegihjklmnopqrtsuvwxyz{|}~456789:;<=>?@ABCDEFGHIJKLMNOPQNone4 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 R 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 maximize or minimize whether hard or not (soft) the expression 'the container of the actual expression the actual clafer 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 A  supertype of all IR types ,clafer name as declared in the source model unique identifier of a clafer  map over IR foldMap over IR  fold the IR STU               H  STU     None5 !"#$%&'()*+,-./01VWXYZ[\]^_`abcdefghijklmn !"#$%&'()*+,-./0101/.-,+*)('&%$#"! /.-,+*)('&%$#"! 01VWXYZ[\]^_`abcdefghijklmnNone2+Convert all strings into ints for analysis 3 | Return an inverse map from ints back to strings 23456234562345623456None 789:;<=>?@AB 789:;<=>?@AB 789:;<=>?@AB789:;<=>?@ABNoneC>maps between fully-, least-partially-qualified names and UIDs D1partially-qualified name, must not begin with ::  | e.g., `Person::name`, chair E)fully-qualified name, must begin with ::  | e.g., `::Person::name`, `::Company::Department::chair` F%a fully- or partially-qualified name Gnget the UID of a clafer given a fully qualifed name or potentially many UIDs given a partially qualified name H7get the fully-qualified name of a clafer given its UID IAget the least-partially-qualified name of a clafer given its UID J@derive maps between fully-, partially-qualified names, and UIDs CopqrDsEFGHIJtuvwxyz{|K CDEFGHIJK FEDCJGHIKCopqrDsEFGHIJtuvwxyz{|K NoneLnGenerate 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. MWGenerate a JSON list of tuples containing a least-partially-qualified name and a scope NFgiven the QNameMaps, parse the JSON scopes and return list of scopes OWrite a .cfr-scope file PRead a .cfr-scope file L}M~NOPLMNOPLMNOPL}M~NOP  Safe-Inferred.QRSTUVWXYZ[\] QRSTUVWXYZ[\] UTVWXYZ[QRS\],QRSTUVWXYZ[\] NoneCEncode a Haskell String to a list of Word8 values, in UTF8 format. H^_`abcdefghijklmnopqrstuvwxyz{|}~G^_`abcdefghijklmnopqrstuvwxyz{|}~Gfjihgw~}|{zyxtvuqsropnmklbedc^a`_.^a`_bedcfjihgklmnopqsrtvuw ~}|{zyx  Safe-Inferred  Safe-Inferred  None_  _  _  Z  None <Transform the AST into the intermediate representation (IR)  ?desugars enumeration to abstract and global singleton features =    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG=    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG=    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG=    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGNoneTpEasier to work with. IClafers have links from parents to children. SClafers have links from children to parent. fHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ZHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Zghfcdeijkl`baTUVWXYZ[\]^_QRSmnopqrstuvwxyz{|}~LMNOPJKHINHIJKLMNOPQRST UVWXYZ[\]^_`bacdefghijklmnopqrstuvwxyz{|}~NoneNone)Generate an XML representation of the IR None%Generate an API for the IR in Python NonefCollects the global cardinality and hierarchy information into proper, not necessarily lower, bounds.  Safe-InferredNone      !"#$%&'()*+,-./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 0..  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 @9=" None !ident level stack, last new line 6ident level of new line, current level or parenthesis 3Add 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. Get the position of a token.  Get the line number of a token. "Get the column number of a token. .Check if a token is one of the given symbols. +Check if a token is the layout open token.  ,Check if a token is the layout close token.  +Get the number of characters in the token. AInsert a new symbol token at the begninning of a list of tokens. 4!If the token is on the same line 1 as this position, update the column position. -Number of characters to add to the position.      Position 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. 4     4     +     None!$Generate the model as HTML document ""Generate the model as plain text 4 | This is used by the graph generator for tooltips 0 !"#$%&'(01 !"#$%&'(!"#$%&10' (0 !"#$%&'(None),Generate a graph in the simplified notation *9Generate a graph in CVL variability abstraction notation *)*      !01)*)*10*)*      !None ,How a given name was resolved -non-abstract top-level clafer .abstract clafer /clafer' s ancestor 0resolved by a reference 1clafer' s descendant 2 local variable (in constraints) 3 primitive type: integer, string 4this, parent, children 5-this environment is created for each clafer ?+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi?+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi?56789:;<=>?,43210/.-+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi-+,43210/.-5 6789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiNone"Type inference and checking *#$%&'()*+,-./0123"jkl45m6789n:;<=>?@ABCDEFjklmnnmklj#$%&'()*+,-./0123"jkl45m6789n:;<=>?@ABCDEFNoneoCCompute scopes for clafers by solving a system of linear equations UGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijoklmnopqrstuvwxyz{|}~oo<GHIJKLMNOPQRSUTVVW\[ZYX]ba`_^cdefghijoklmnopqrstuvwxyz{|}~Nonep$Resolve Non-overlapping inheritance u Resolve overlapping inheritance y,Resolve inherited and default cardinalities ~Expand inheritance pqrstuvwxyz{|}~pqrstuvwxyz{|}~pqrstuvwxyz{|}~pqrstuvwxyz{|}~ 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     Y     ^     K      $NoneChoco 3 code generation %None&Result of generation for a given mode output file extension  output text &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. XParses the model into AST. Adding more fragments beyond this point will have no effect. Compiles the AST into IR. PSplits 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.  QSplits the AST into their fragments, and generates the output for each fragment. !$Generates outputs for the given IR. "The XML Schema of the IR reserved keywords  !"dut  !"9! "tu   !"'()*+,-./01234566789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJJKLMNOPQRSTUVWXYZ[\] ^ _ ` a b c d e f g h i j k l m n o p q p r s t s u v w x y z { | } ~                                                                   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYYZ[\]^__`aab cdef  ghijklmnoopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-..l/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{| } ~      !"""""""""""""""""""""""""""""""""""######################_###################################################################$%%%%%%%%%%%%%% % % % % %%y&&&&&&&&&&&&& !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[U\]^_`abcdefgh i j k l m n o p q r s t u v w x y z { | } ~                       q       !"#C$%&'())*+,-.//0123456789:;<=>??@ccABBCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop$q$r$s$%t%u%v%w%x%C%y%z%{%|} clafer-0.3.7Language.Clafer.SplitJoin Language.Clafer.Generator.SchemaLanguage.Clafer.Front.Absclafer&Language.Clafer.Intermediate.Intclafer$Language.Clafer.Intermediate.Tracing+Language.Clafer.Intermediate.StringAnalyzerLanguage.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.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.Clafer Paths_claferjoinArgs splitArgsxsdLocId LocIdIdentModId ModIdIdentEnumId EnumIdIdentQuant QuantSomeQuantOne QuantLoneQuantNotQuantNoDeclSetExpClaferIdJoinRangeDomain Intersection DifferenceUnionComUnionExpESetExpEStrEDoubleEInt EImpliesElseEMinExpECSetExp ESumSetExpEDivEMulESubEAddQuantExpENinEInENeqEGteELteEEqEGtELtENegEAndEXorEOrEImpliesEIffEGMinEGMax DeclQuant DeclQuantDisjDeclAll DeclAllDisjNamePath ExInteger ExIntegerNum ExIntegerAstNCardCard CardIntervalCardNumCardAnyCardSomeCardLone CardEmptyGCard GCardIntervalGCardOptGCardMuxGCardOrGCardXor GCardEmptyInitHow InitHow_2 InitHow_1InitInitSome InitEmptySuperHow SuperMArrow SuperArrow SuperColonSuper SuperSome SuperEmptyElementSubsoftconstraintSubgoal Subconstraint ClaferUse SubclaferElements ElementsList ElementsEmptyAbstract AbstractEmptyGoalSoftConstraint ConstraintClafer Declaration ElementDeclEnumDeclModulePosIdent PosString PosDouble PosInteger SpannablegetSpanSpanPosnoPosnoSpan>-lenColNoLineNoIQuantIAllISomeIOneILoneINoIDecl_isDisj_decls_bodyIExp IClaferId_modName_sident_isTopIStr_istrIDouble_idoubleIInt_iintIFunExp_op_exps IDeclPExp_quant_oDecls_bpexpPExp_iType_pid_inPos_expIntervalIGCard _isKeyword _intervalISuper_isOverlapping_supersIElementIEGoal _isMaximize IEConstraint_isHard_cpexpIEClafer_iClaferIClafer_cinPos _isAbstract_gcard_ident_uid_super_card_glCard _elementsIModule_mName_mDeclsITypeTClaferTRealTIntegerTStringTBooleanIrIRIGCardIRIDeclIRIQuantIRISuperIRPExpIRIExpIRClaferIRIType IRIElement IRIModuleCNameUIDmapIR foldMapIRfoldIRiMapiFoldMapiFold unWrapIModuleunWrapIElement unWrapIType unWrapIClafer unWrapIExp unWrapPExp unWrapISuper unWrapIQuant unWrapIDecl unWrapIGCardmDeclsmNamecardcinPoselementsgcardglCardident isAbstractsuperuidcpexpiClaferisHard isMaximize isOverlappingsupersinterval isKeywordexpiTypeinPospidbpexpexpsidoubleiintisTopistrmodNameoDeclsopquantsidentbodydeclsisDisjAstAstLocIdAstModId AstEnumIdAstQuantAstDecl AstSetExpAstExpAstName AstExIntegerAstNCardAstCardAstGCard AstInitHowAstInit AstSuperHowAstSuper AstElement AstElements AstAbstractAstGoalAstSoftConstraint AstConstraint AstClaferAstDeclaration AstModule traceIrModuletraceAstModule astrModule astrClafer astrElementastrPExpastrIExpStats naClafers nrClafers ncClafers nConstraintsnGoalssglCard statsModule statsClafer statsCard statsElement QNameMapsPQNameFQNameQNamegetUIDs getFQName getLPQNamederiveQNameMapsgetQNameUIDTriplesgenerateJSONnameUIDMapgenerateJSONScopesparseJSONScopeswriteCfrScopeFilereadCfrScopeFilePrintprtprtListDoc printTreedocrenderparenthconcatSconcatD replicateSmkEscprPrecAlexAcc AlexAccSkip AlexAccNone AlexLastAcc AlexLastSkipAlexNone AlexReturn AlexTokenAlexSkip AlexErrorAlexEOFAlexAddrAlexA# AlexInputBytePosnPnBTreeBNTokenErrPTTok T_PosIdent T_PosString T_PosDouble T_PosIntegerTCTDTVTITLTS alex_base alex_table alex_check alex_deflt alex_accepttoksharetokenPos tokenPosn tokenLineCol posLineCol mkPosTokenprTokeneitherResIdentresWordsunescapeInitTail alexStartPosalexMovetokens alexGetBytealexInputPrevChar utf8Encode alex_action_3 alex_action_4 alex_action_5 alex_action_6 alex_action_7 alex_action_8alexIndexInt16OffAddralexIndexInt32OffAddr quickIndexalexScan alexScanUser alex_scan_tkniUnboxheadercss 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 integerTyperealType 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 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 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_128 happyNewToken happyError_ happyThen happyReturn happyThen1 happyReturn1 happyError'pModulehappySeqreturnMthenM happyErrorgppp mkCatSpan mkTokenSpanmyLexer 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 mergeArgsmainArgsargsWithOPTIONSdefaultClaferArgs 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 findDupModule 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 genCModuleCompilerResultNoCompilerResultreason extension outputCode statistics claferEnvmappingToAlloy stringMap scopesList InputModel VerbosityLaddModuleFragmentparsecompilegenerateFragments generateHtmlgenerate claferIRXSDStateQuotNormcatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName$fSpannablePosIdent$fSpannablePosString$fSpannablePosDouble$fSpannablePosInteger$fSpannableLocId$fSpannableModId$fSpannableEnumId$fSpannableQuant$fSpannableDecl$fSpannableSetExp$fSpannableExp$fSpannableName$fSpannableExInteger$fSpannableNCard$fSpannableCard$fSpannableGCard$fSpannableInitHow$fSpannableInit$fSpannableSuperHow$fSpannableSuper$fSpannableElement$fSpannableElements$fSpannableAbstract$fSpannableGoal$fSpannableSoftConstraint$fSpannableConstraint$fSpannableClafer$fSpannableDeclaration$fSpannableModule $fSpannable[]base GHC.Float $fPlatedIExp $fPlatedPExp$fPlatedIClafertraverseModuletraverseDeclarationtraverseClafertraverseConstrainttraverseSoftConstraint traverseGoaltraverseAbstracttraverseElementstraverseElement traverseSupertraverseSuperHow traverseInittraverseInitHow traverseGCard traverseCard traverseNCardtraverseExInteger traverseName traverseExptraverseSetExp traverseDecl traverseQuanttraverseEnumId traverseModId traverseLocId UIDLpqNameMap UIDFqNameMap FQNameUIDMapFQKeyderiveFQNameUIDMaps addElements addClaferfindUIDsByFQNamereverseOnQualifiergetFQKeygetQNameFromKeyderiveUidLpqNameMapgenerateUIDLpqMapEntrygenerateQNameUIDArrayEntrygenerateLpqNameScopeArrayEntryprettyPrintJSON $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 analyzeSupers analyzeRefsanalyzeConstraintsanalyzeDependencies dependencyanalyzeHierarchy directSuper findClafersfindConstraints childClafers unfoldJoins$fAlternativeErr$fMonadPlusErr $fFunctorErr$fApplicativeErr $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 graphCVLModIdgraphCVLPosIdentgraphCVLConstraintgraphCVLSoftConstraint graphCVLGoal 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 liftParseErrkeyWordsnoRealsdesugaranalyzeaddStats showStats showInterval