J      !"#$%&'()*+,-./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 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[\]^_`abcdefghijklmnopqrstuvw x y z { | } ~                                                         !"""""""""""""""""""""""""""########$$$$$$$$$$$$$$$$$$$$& Safe-InferredGiven a sequence of arguments, join them together in a manner that could be used on | the command line, giving preference to the Windows cmd shell quoting conventions. | 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 . %None& Safe-Inferred   Safe-InferredNone;<BEncode a Haskell String to a list of Word8 values, in UTF8 format.H  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJG  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIH'()*+DE  FGH,-&%$#"! ./0123456789:;<=>?@ABC JI.    &%$#"! '()*+,-./0123456789:;<=>?@ABCDEFGHIJ Safe-Inferred+0KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ҧb~}|{zyxwvutsrqponmlkjihgfedcYa`_^]\[ZWXQVUTSROPMNKLBKLMNOPQVUTSRWXYa`_^]\[Zb#~}|{zyxwvutsrqponmlkjihgfedc Safe-Inferred.      .     ,     None+=! quantifier "for all #at least one (i.e., exists) $ exactly one %less than one &does not exist 'For IFunExp standard set of operators includes: 1. Unary operators: ! - not (logical) # - set counting operator - - negation (arithmetic) max - maximum (created for goals) 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 6Local 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 0,identifier refers to a top-level definition 1*the UID of the bound IClafer, if resolved 2string 4 real number 6integer number 8expression with a unary function, e.g., -1 binary function, e.g., 2 + 3 ternary function, e.g., if x then 4 else 5 ;Xquantified expression with declarations e.g., [ all x1; x2 : X | x1.ref != x2.ref ] ?'Embedes reference to a resolved Clafer @^This is expression container (parent). It has meta information about an actual expression  Bthe inferred type C=non-empty unique id for expressions with span, "" for noSpan D"position in the input Clafer file Ethe actual expression F*(Min, Max) integer interval. -1 denotes * GGroup 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 I'whether given by keyword: or, xor, mux KUA type of reference. -> values unique (set) ->> values non-unique (bag) Mwhether set or bag NOthe only allowed reference expressions are IClafer and set expr. (++, **, --s) OClafer's subelement is either a clafer, a constraint, or a goal (objective) This is a wrapper type needed to have polymorphic lists of elements PGoal (optimization objective) Qwhether maximize or minimize S%whether hard constraint or assertion T'the container of the actual expression Vthe actual clafer WvClafer has a list of fields that specify its properties. Some fields, marked as (o) are for generating optimized code Y*the position of the syntax in source code Z)whether abstract or not (i.e., concrete) [group cardinality \name declared in the model ]a unique identifier ^]"root" if top-level, "" if unresolved or for root clafer, otherwise UID of the parent clafer _Osuperclafer - only allowed PExp is IClaferId. Nothing = default super "clafer" `reference type, bag or set aclafer cardinality b(o) global cardinality cnested elements dHeach file contains exactly one mode. A module is a list of declarations f/always empty (no syntax for declaring modules) gList of top-level elements ithe type is an intersection of the listed clafers supports having paths in the inheritance hierarchy supports multiple inheritance nA "supertype" of all IR types yfile:/ ftp: or http:/ prefixed URL z,clafer name as declared in the source model {unique identifier of a clafer | map over IR }foldMap over IR ~ fold the IR  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~{zynxwvutsrqpohmlkjidefgWXYZ[\]^_`abcOURPVSTQTKLMNGHIJF@ABCDE?,;8642-<=>9:753./01'()*+!&%$#" |}~Z !&%$#"'()*+,;8642-<=>9:753./01?@ABCDEFGHIJKLMNOURPVSTQTW XYZ[\]^_`abcdefghmlkjin xwvutsrqpoyz{|}~None3   None3=HM_Convert all strings into ints for analysis | Return an inverse map from ints back to strings  None>maps between fully-, least-partially-qualified names and UIDs ;partially-qualified name, must not begin with :: | e.g., `Person::name`, chair 3fully-qualified name, must begin with :: | e.g., `::Person::name`, `::Company::Department::chair` %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       { {      NoneGenerate a JSON list of triples containing a fully-qualified-, least-partially-qualified name, and unique id. | 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 Egiven the QNameMaps, parse the JSON scopes and return list of scopes Write a .cfr-scope file Read a .cfr-scope file  None5 !"#$%&'()*+ !"#$%&'()*+  Safe-Inferred None+3=HM +the clafer for which the match is computed  parent of the head clafer  'parent of the super of the head clafer  target of the head clafer 'super of the target of the head clafer :super of the head clafer (must exist, otherwise no match) 'parent of the super of the head clafer 'target of the super of the head clafer Returns only [] or [_] Returns only [] or [_] !Returns only [] or [_] or [_, _] **Finds all super clafers according to sFun +,Finds hierarchy and transforms each element ,Utraverse the inheritance hierarchy upwards to find a clafer with the given uidToFind -Utraverse the containment hierarchy upwards to find a clafer with the given uidToFind .'assumes that isProperNesting m == True &This represents a match of this shape superClafersParent / <> ?1| * parentsSuperClafer / [=] superClafer --*-> superClafersTarget *|   parentClafer | |?2 <> *| [=] targetsSuperClafer * | / | *| headClafer -----*-----> targetClafer KThe clafers are obtained by navigating from the headClafer by following the links marked by * The link marked by ?1 is checked for correctness of nesting (isProperNesting): - _uid parentsSuperClafer == _parentUID superClafer The link marked by ?2 is checked for correctness of redefinition (isProperRefinement): - proper subtyping, bag to set, proper cardinality restriction Redefinition occurs when the name of headClafer is the same as the name of superClafer (isProperRedefinition): - isProperNesting && isProperRefinement && (_ident headClafer) == (_ident superClafer) /Vassumes that isProperNesting m == True and isProperRefinement m == (True, True, True) 0btry to match the nested inheritance pattern ^ only available after the parentUIDs were computed y=reserved keywords which cannot be used as clafer identifiers {      !"#$%&'()*+,-./0:whether the name of headClafer is the same as superClafer 123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{{ !"#$%&'()*+,-     ./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{l       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{None |Choco 3 code generation |,-./|||,-./None@representation of strings in chunks (for line/column numbering) }~}~}~ } ~None Choco 3 code generation 01230123None)Generate an XML representation of the IR NoneHM<Transform the AST into the intermediate representation (IR) ?desugars enumeration to abstract and global singleton features ;;;;NoneNonefCollects the global cardinality and hierarchy information into proper, not necessarily lower, bounds. 456789:;<= 456789:;<= Safe-Inferred >?@ABCDE >?@ABCDE Safe-InferredNone *+-./02345689:;=?BCDGHJKM      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  None+Scope inference strategy 9Type of output to be generated at the end of compilation 1/1  None3HMAlloy code generation 07th Mayo 2012 Rafael Olaechea Added Logic to print a goal block in case there is at least one goal. FFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~?FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None:Return an appropriate scope analysis for a given strategy NoneHMThe full ErrPos requires lots of information that needs to be consistent. Every time we throw an error, | we need BOTH the (fragId, fragPos) AND modelPos. This makes it easier for developers using ClaferT so they | only need to provide part of the information and the rest is automatically calculated. The code using | ClaferT is more concise and less error-prone. | | modelPos <- modelPosFromFragPos fragdId fragPos | throwErr $ ParserErr (ErrPos fragId fragPos modelPos) | | vs | | throwErr $ ParseErr (ErrFragPos fragId fragPos) | | Hopefully making the error handling easier will make it more universal. Position 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. Error positions are relative to their fragments. | 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. _Possible 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. This simulates a field in the ClaferEnv that will always recompute the map, since the IR always changes and the map becomes obsolete  This simulates a field in the ClaferEnv that will always recompute the map, since the IR always changes and the map becomes obsolete maps from a UID to an IClafer with the given UID  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 ?     :     >     "      None3 !ident level stack, last new line 6ident level of new line, current level or parenthesis .Add 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. 0Get the position of a token. 1 Get the line number of a token. 2"Get the column number of a token. 3.Check if a token is one of the given symbols. 4+Check if a token is the layout open token. 6,Check if a token is the layout close token. 8+Get the number of characters in the token. =AInsert a new symbol token at the begninning of a list of tokens. 4 !"#$%&'()*+,-.SIf the token is on the same line as this position, update the column position. -Number of characters to add to the position. /0123456789:;<=Position of the new token. Symbol in the new token. dThe rest of the tokens. These will have their positions updated to make room for the new token. >?@ABCDEFGHI4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI+ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHINoneN$Generate the model as HTML document OVGenerate the model as plain text | This is used by the graph generator for tooltips 0JKLMNOPQRSTUHJKLMNOPQRSTUNOPQRSTHKJLMU0JKLMNOPQRSTUNoneV,Generate a graph in the simplified notation W9Generate a graph in CVL variability abstraction notation +VWVWVW+VWNone3XKApply optimizations for unused abstract clafers and inheritance flattening XYZ[\]^_`abcdefghijklmnopqrstuvXYZ[\]^_`abcdefghijklmnopqrstuvXYZ[\]^_`abcdefghijklmnopqrstuvXYZ[\]^_`abcdefghijklmnopqrstuv None3 xHow a given name was resolved ynon-abstract top-level clafer zabstract clafer {clafer's ancestor |resolved by a reference }clafer's descendant ~ local variable (in constraints) $primitive type: "integer", "string" )"this", "parent", "children", and "root" ,this environment is created for each clafer @wxyz{|}~@wxyz{|}~@x~}|{zyw.wx~}|{zy !None234BType inference and checking This function is similar to , but takes into account more ancestors to be able to combine clafers of different types, but with a common ancestor: Inputs: t1 is of type B t2 is of type C B : A C : A Outputs: the resulting type is: A, and the type combination is valid 4     (     "None3$Resolve Non-overlapping inheritance  Resolve overlapping inheritance ,Resolve inherited and default cardinalities Expand inheritance #None3Run the various resolvers Name resolver $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 Run the Clafer compiler. mURL = Nothing means compile the top-level module mURL = Just url means compile an imported module from the given url 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 Converts 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. 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 " !ddz}~   8dz   }~  !"'()*+*,-.-/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{||}~      !"#$%&'()*+,-./0123456789:;<=>>?@ABCDEFGHIJKLMNOPQRSTUVVWXYZ[\\]^__`abcdefghijjklmnopqrstuvvwxyz{|}~                                                               ! " # $ % & ' ( ) * + , - . / 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{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv w x y z {  | } ~                                    (                   !"""""""""""""""""""""""""""########$$$$$$$$$$$$$$$$$$$$%&&&&&&&&&&&&&                                     ! " # $ % &'()*'()*+,-./012*3456789:;;<=>>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~T!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$$$$$$$$$$$$$$ clafer-0.3.10Language.Clafer.SplitJoin Language.Clafer.Generator.SchemaLanguage.Clafer.Front.LexClaferLanguage.Clafer.Front.AbsClafer!Language.Clafer.Front.PrintClafer&Language.Clafer.Intermediate.IntclaferLanguage.Clafer.Generator.Stats+Language.Clafer.Intermediate.StringAnalyzerLanguage.Clafer.QNameUIDLanguage.Clafer.JSONMetaData$Language.Clafer.Intermediate.TracingLanguage.Clafer.CssLanguage.Clafer.CommonLanguage.Clafer.Generator.Choco Language.Clafer.Generator.Concat Language.Clafer.Generator.PythonLanguage.Clafer.Generator.Xml&Language.Clafer.Intermediate.Desugarer(Language.Clafer.Intermediate.Transformer0Language.Clafer.Intermediate.SimpleScopeAnalyzerLanguage.Clafer.CommentsLanguage.Clafer.Front.ErrMLanguage.Clafer.Front.ParClaferLanguage.Clafer.ClaferArgsLanguage.Clafer.Generator.Alloy*Language.Clafer.Intermediate.ScopeAnalysisLanguage.ClaferT$Language.Clafer.Front.LayoutResolverLanguage.Clafer.Generator.HtmlLanguage.Clafer.Generator.Graph#Language.Clafer.Optimizer.Optimizer)Language.Clafer.Intermediate.ResolverName)Language.Clafer.Intermediate.ResolverType0Language.Clafer.Intermediate.ResolverInheritance%Language.Clafer.Intermediate.ResolverLanguage.ClaferGetURL Paths_claferjoinArgs splitArgsxsdAlexAcc 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_tkniUnbox$fFunctorAlexLastAccLocId LocIdIdentModId ModIdIdentEnumId EnumIdIdentQuant QuantSomeQuantOne QuantLoneQuantNotQuantNoDeclSetExpClaferIdJoinRangeDomain Intersection DifferenceUnionComUnionExpESetExpEStrEDoubleEInt EImpliesElseEMinExpECSetExp EProdSetExp ESumSetExpERemEDivEMulESubEAddQuantExpENinEInENeqEGteELteEEqEGtELtENegEAndEXorEOrEImpliesEIffEGMinEGMax DeclQuant DeclQuantDisjDeclAll DeclAllDisjNamePath ExInteger ExIntegerNum ExIntegerAstNCardCard CardIntervalCardNumCardAnyCardSomeCardLone CardEmptyGCard GCardIntervalGCardOptGCardMuxGCardOrGCardXor GCardEmptyInitHow InitDefault InitConstantInitInitSome InitEmpty Reference ReferenceBag ReferenceSetReferenceEmptySuper SuperSome SuperEmptyElementSubsoftconstraintSubgoal Subconstraint ClaferUse SubclaferElements ElementsList ElementsEmptyAbstract AbstractEmptyGoalSoftConstraint ConstraintClafer Declaration ElementDeclEnumDeclModulePosIdent PosString PosDouble PosInteger SpannablegetSpanSpanPosnoPosnoSpan>-len$fSpannableLocId$fSpannableModId$fSpannableEnumId$fSpannableQuant$fSpannableDecl$fSpannableSetExp$fSpannableExp$fSpannableName$fSpannableExInteger$fSpannableNCard$fSpannableCard$fSpannableGCard$fSpannableInitHow$fSpannableInit$fSpannableReference$fSpannableSuper$fSpannableElement$fSpannableElements$fSpannableAbstract$fSpannableGoal$fSpannableSoftConstraint$fSpannableConstraint$fSpannableClafer$fSpannableDeclaration$fSpannableModule$fSpannablePosIdent$fSpannablePosString$fSpannablePosDouble$fSpannablePosInteger $fSpannable[]PrintprtprtListDoc printTreedocrenderparenthconcatSconcatD replicateSmkEscprPrec $fPrintLocId $fPrintModId $fPrintEnumId $fPrintQuant $fPrintDecl $fPrintSetExp $fPrintExp $fPrintName$fPrintExInteger $fPrintNCard $fPrintCard $fPrintGCard$fPrintInitHow $fPrintInit$fPrintReference $fPrintSuper$fPrintElement$fPrintElements$fPrintAbstract $fPrintGoal$fPrintSoftConstraint$fPrintConstraint $fPrintClafer$fPrintDeclaration $fPrintModule$fPrintPosIdent$fPrintPosString$fPrintPosDouble$fPrintPosInteger $fPrintDouble$fPrintInteger $fPrintChar $fPrint[]ColNoLineNoIQuantIAllISomeIOneILoneINoIDecl_isDisj_decls_bodyIExp IClaferId_modName_sident_isTop_bindingIStr_istrIDouble_idoubleIInt_iintIFunExp_op_exps IDeclPExp_quant_oDecls_bpexp ClaferBindingPExp_iType_pid_inPos_expIntervalIGCard _isKeyword _interval IReference_isSet_refIElementIEGoal _isMaximize IEConstraint_isHard_cpexpIEClafer_iClaferIClafer_cinPos _isAbstract_gcard_ident_uid _parentUID_super _reference_card_glCard _elementsIModule_mName_mDeclsITypeTClaferTRealTIntegerTStringTBooleanIrIRIGCardIRIDeclIRIQuant IRIReferenceIRPExpIRIExpIRClaferIRIType IRIElement IRIModuleURLCNameUIDmapIR foldMapIRfoldIRiMapiFoldMapiFold unWrapIModuleunWrapIElement unWrapIType unWrapIClafer unWrapIExp unWrapPExpunWrapIReference unWrapIQuant unWrapIDecl unWrapIGCard $fPlatedIExp $fPlatedPExp$fPlatedIClafer$fPlatedIModulemDeclsmNamecardcinPoselementsgcardglCardident isAbstract parentUID referencesuperuidcpexpiClaferisHard isMaximizeisSetrefinterval isKeywordexpiTypeinPospidbindingbpexpexpsidoubleiintisTopistrmodNameoDeclsopquantsidentbodydeclsisDisj $fToJSONIType$fToJSONIModule$fToJSONIClafer$fToJSONIElement$fToJSONIReference$fToJSONIGCard $fToJSONPExp $fToJSONIExp $fToJSONIDecl $fToJSONPos $fToJSONSpan$fToJSONIQuantStats naClafers nrClafers ncClafers nConstraintsnGoalssglCard statsModule statsClafer statsCard statsElement astrModule astrClafer astrElementastrPExpastrIExp QNameMapsPQNameFQNameQNamegetUIDs getFQName getLPQNamederiveQNameMapsgetQNameUIDTriplesgenerateJSONnameUIDMapgenerateJSONScopesparseJSONScopeswriteCfrScopeFilereadCfrScopeFileAstAstLocIdAstModId AstEnumIdAstQuantAstDecl AstSetExpAstExpAstName AstExIntegerAstNCardAstCardAstGCard AstInitHowAstInit AstReferenceAstSuper AstElement AstElements AstAbstractAstGoalAstSoftConstraint AstConstraint AstClaferAstDeclaration AstModule traceIrModuletraceAstModuleheadercssGEnv identCountMapexpCountstablesClafers uidClaferMapNestedInheritanceMatch _headClafer _parentClafer_parentsSuperClafer _targetClafer_targetsSuperClafer _superClafer_superClafersParent_superClafersTarget UIDIClaferMapIdentResult transIdentmkIdent mkIntegergetSuper getReferencegetSuperAndReference getSuperId isEqClaferId mkPLClaferId pExpDefPidPos pExpDefPidpExpDefisParent isClaferName isClaferName' getClaferName isTopLevel elemToClafer toClaferscreateUidIClaferMap findIClafer findHierarchy mapHierarchyfindUIDinSupersfindUIDinParentsisProperNestingisProperRefinementisRedefinitionmatchNestedInheritanceapplybfs toNodeShallow getSubclafers bfsClaferslurryfst3snd3trd3toTriple toMTripleiNotiCSetiMiniGMaxiGMiniSumSetiProdSetunOpsiIffiImpliOriXoriAnd logBinOpsiLtiGtiEqiLteiGteiNeqiIniNin relGenBinOps relSetBinOps relBinOpsiPlusiSubiMuliDiviRemiSumSet' arithBinOpsiUnion iDifference iIntersectioniDomainiRangeiJoin setBinOpsbinOps iIfThenElse mkIFunExptoLowerS rootIdentrootUID thisIdent parentIdentrefIdent childrenIdent specialNames isSpecial stringTypeintType integerTyperealType booleanType baseClafermodSepprimitiveTypes isPrimitive keywordIdentsvoidfsafeTail genCModuleIrTraceNoTrace ExactCard UpperCard LowerCardisGroupIrPExppUidPositionConcatsrcPosnodesCStringmkConcat mapToCStr iscPrimitiveflatten+++cconcat cintercalate filterNullisNullcunlinesgenPythonModuletagoptTagtagType genXmlInteger genXmlBoolean genXmlString genXmlIntPair genXmlModule genXmlClafergenXmlAbstract genXmlGCardgenXmlIntervalgenXmlId genXmlUidgenXmlParentUid genXmlSupergenXmlReference genXmlCard genXmlGlCard genXmlElement genXmlAnyOp genXmlPExpgenXmlPositiongenXmlIExpType genXmlIExp genXmlDeclgenXmlQuantTypegenXmlITypeType genXmlIType desugarModule sugarModule desugarEnumsdesugarDeclarationsugarDeclaration desugarClafergetPExpClaferIdent sugarClafer desugarSuperdesugarReference desugarInitdesugarInitHow desugarName desugarModId sugarModId sugarSupersugarReference sugarInitHowdesugarConstraintdesugarSoftConstraint desugarGoalsugarConstraintsugarSoftConstraint sugarGoaldesugarAbstract sugarAbstractdesugarElements sugarElementsdesugarElement sugarElement desugarGCard isOptionalDefisExIntegerAst sugarGCard desugarCard desugarNCarddesugarExInteger sugarCardsugarExInteger desugarExp desugarExp' desugarOp desugarSetExpdesugarSetExp'sugarExp sugarExp' sugarSetExp sugarSetExp' desugarPathisSetExp reducePExp reduceIExp reduceNav desugarDecl sugarDecl desugarLocId sugarLocId desugarQuant sugarQuant transModule transElement transClafer transPExp transIExpsimpleScopeAnalysis getOptions getFragmentsgetStatsgetGraph getCommentsBadOk$fAlternativeErr$fMonadPlusErr $fFunctorErr$fApplicativeErr $fMonadErr HappyAddrHappyA#HappyStk Happy_IntList HappyConsHappyAny HappyAbsSynhappyIn8 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 happyIn61 happyOut61 happyInTok happyOutTokhappyActOffsetshappyGotoOffsetshappyDefActions happyCheck happyTablehappyReduceArr happy_n_termshappy_n_nonterms 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_130happyReduce_131happyReduction_131happyReduce_132happyReduction_132happyReduce_133happyReduction_133happyReduce_134happyReduction_134 happyNewToken happyError_ happyThen happyReturn happyThen1 happyReturn1 happyError'pModulepClafer pConstraintpSoftConstraintpGoalhappySeqreturnMthenM happyErrormyLexergppp mkCatSpan mkTokenSpan 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 ScopeStrategySimpleNone ClaferModeChocoPythonCVLGraphGraphHtmlJSONXmlAlloyAlloy42clafer mergeArgsmainArgsretrieveModelFromURLargsWithOPTIONSdefaultClaferArgs$fDefaultScopeStrategy$fDefaultClaferMode genModulegetScopeStrategy ThrowabletoErr PartialErrPos ErrModelSpan pModelSpan ErrModelPos pModelPos ErrFragSpan pFragSpan ErrFragPospFragIdpFragPosErrPosfragIdfragPosmodelPosCErrs ClaferErrserrsCErr SemanticErrParseErrpos ClaferErrmsg ClaferSErrs ClaferSErrClaferTClaferM ClaferEnvargs modelFragscAstcIrfragsastModuleTrace irModuleTrace uidIClaferMapgetAstgetIrmakeEnv throwErrsthrowErr catchErrsgetEnvgetsEnv modifyEnvputEnv runClaferT runClaferLEnvExTokenNewLineLastNlLayEnvlevellevelsinputoutputbrCtrgetToken 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 genCVLGraphoptimizeModuleoptimizeElementoptimizeClafermultInt multExIntmakeZeroUnusedAbs remUnusedAbs findUnusedAbsgetUniqExtended getExtended expModule expClafer expElementexpPExpexpIExpexpDeclexpNavexpNav'split' allUniquecheckConstraintElementcheckConstraintPExpcheckConstraintIExpcheckConstraintIDecl findDupModule markTopModule markTopClafermarkTopElement markTopPExp markTopIExp markTopDeclResolve HowResolved TopClafer AbsClaferAncestor SubclafersBinding TypeSpecialSpecialSEnvclaferscontext subClafers ancClafersbindingsresPathgenvaClaferscClafersdefSEnvcheckDuplicateSiblingscheckDuplicateSiblings' checkForJustcheckListDuplicatescheckListDuplicates' isIEClaferresolveModuleNames resolveClafermkAncestorListresolveElement resolvePExp resolveIExp liftError processDecl resolveNavmkPathtoTupletoNav'adjustAncestormkPath' resolveNameresolveImmName resolveNoneresolveSpecial resolveBindresolveDescendantsresolveChildrenresolveReferenceresolveChildren' liftMayberesolveAncestorresolveTopLevel toNodeDeepallInhChildren allChildrenselectChildren findUnique findFirstshowPathisNamespaceConflict filterPathsresolveTModuleresolveNModuleresolveNClafer resolveNSuperresolveNElementresolveNresolveHierarchyresolveOModuleresolveOClaferresolveOReferenceresolveOElement analyzeModule analyzeClafer analyzeGCard analyzeCardanalyzeElementresolveEModuleunrollableModuleunrollabeDeclarationunrollableClafergetDirUnrollablesresolveEClafer renameClafer renameClafer'genIdresolveEInheritanceresolveEElementresolveRedefinition resolveModule nameModule nameElement nameClafernamePExpnameIExp nameIDeclresolveNamesModuleCompilerResultNoCompilerResultreason extension outputCode statistics claferEnvmappingToAlloy stringMap scopesList InputModel runCompileraddModuleFragmentparsedesugarcompile generateHtmlgenerate claferIRXSDStateQuotNormgetURLcatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamebase GHC.Float UIDLpqNameMap UIDFqNameMap FQNameUIDMapFQKeyderiveFQNameUIDMaps addElements addClaferfindUIDsByFQNamereverseOnQualifiergetFQKeygetQNameFromKeyderiveUidLpqNameMapgenerateUIDLpqMapEntrygenerateQNameUIDArrayEntrygenerateLpqNameScopeArrayEntryprettyPrintJSONtraverseModuletraverseDeclarationtraverseClafertraverseConstrainttraverseSoftConstraint traverseGoaltraverseAbstracttraverseElementstraverseElement traverseSupertraverseReference traverseInittraverseInitHow traverseGCard traverseCard traverseNCardtraverseExInteger traverseName traverseExptraverseSetExp traverseDecl traverseQuanttraverseEnumId traverseModId traverseLocId isNotAbstracticlafer iconstraint childClafers analyzeSupers analyzeRefsanalyzeConstraintsanalyzeDependencies dependencyanalyzeHierarchy directSuperfindConstraints unfoldJoins getFragments' getStats' getGraph' getComments'readLine readBlock readBlock'AlloyEnvlineColmappingGenEnv claferargs forScopesgenDeclarationGoalsOnlygenDeclarationmkFact genAssertNamemkAssertmkMetricmkSetshowSet optShowSet genClafer claferDecl genOptCard genRelations genRelNamegenRel genAlloyRelrefType getTargetgenTypegenConstraintsgenSetUniquenessConstraintgenParentSubrelationConstriantgenParentConstgenOptParentConst genGroupConstmkCardgenCard genCardCrudegenIntervalCrude genInterval cardConcatcardLowerConcatcardUpperConcat genExIntegergenPExpgenPExp' transformExp genIFunExpoptBrArg interleavebrArggenOp adjustPExp adjustIExp adjustNavgenQuantgenDeclgenDisj mapLineColaddCode mapLineCol' addColumn countLeading countTrailinglinenofirstCol firstLine removerightgetRight ClaferErrPostoErrPosaddPosminusPosinSpan$fThrowableCErr$fClaferErrPosPartialErrPos$fClaferErrPosErrPos$fClaferErrPosSpan printElement printElements printClafer printGoal printAbstract printGCard printNCardprintExInteger printName printModId printPosIdentprintPosIdentRef printSuperprintReference printCardprintConstraintprintConstraint'printAssertionprintAssertion' printInit printInitHowprintExp printSetExp printQuant printEnumId printIndent printIndentIdprintIndentEnddropUidrestgetUidgetDivIdgetUseIdwhiletrimhighlightErrors'graphSimpleModulegraphSimpleDeclarationgraphSimpleElementgraphSimpleElementsgraphSimpleClaferparentgraphSimpleSupergraphSimpleReference refColourgraphSimpleNamegraphSimpleModIdgraphSimplePosIdentgraphSimpleSetExpgraphCVLModulegraphCVLDeclarationgraphCVLElementgraphCVLElementsgraphCVLClafer graphCVLSupergraphCVLReference graphCVLName graphCVLModIdgraphCVLPosIdentgraphCVLConstraintgraphCVLSoftConstraint graphCVLGoal graphCVLCard graphCVLNCardgraphCVLExInteger graphCVLGCardgraphCVLSetExp choiceCard lowerCardgetExpId htmlCharsrunTypeAnalysisgetIfThenElseType intersectionMonadTypeAnalysiscurThis localCurThiscurPath localCurPath typeDecls localDecls TypeAnalysisTypeInfo iTypeDeclsiUIDIClaferMapiCurThisiCurPath TypeDecls typeOfUid unionType fromUnionType claferWithUidparentOfrefOf hierarchy hierarchyMapisIndirectChildisChildclosurenumericcoercestrresolveTElementresolveTConstraint resolveTPExp resolveTPExp'addReftypeOfwithType<++>liftListforeachM comparingsyntaxOfsameAs$fMonadTypeAnalysisExceptT$fMonadTypeAnalysisListT$fMonadTypeAnalysisTypeAnalysis liftParseErrs liftParseErrsavesummarysummary' runValidate validateAlloyiExpBasedChecksiClaferBasedChecksanalyzeaddStats showStats showInterval