Wdn      !"#$%&'()*+,-./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 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{|}~      !"#$%&'()*+,- . / 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#$Safe!"Given 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 .nopqnopq$NonerrrSafe stuvwx stuvwxNoneBHBEncode a Haskell String to a list of Word8 values, in UTF8 format.R  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZQ ! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYR89"#$%&'()*+,-./01 !:;<=>?@ABCDEFGHIJKLMNOPQRS234567UVWXYT Z 3   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZSafe05efghijklmnopqrstuvwxyz{|}~     efghijklmnopqrstuvwxyz{|}~     stuvwxyz{|}~qrklmnopijghefJefghijklmnopqrs,tuvwxyz{|}~     Safe2      2     0     None0B" quantifier#does not exist$ less than one% exactly one&at least one (i.e., exists)'for all(For IFunExp standard set of operators includes: 1. Unary operators: ! - not (logical) # - set counting operator - - negation (arithmetic) max - maximum (created for goals and maximum of a set) min - minimum (created for goals and minimum of a set) 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 else3Local declaration disj x1; x2 : X ++ Y y1 : Y* is disjunct+a list of local names,!set to which local names refer to.Vquantified expression with declarations e.g., [ all x1; x2 : X | x1.ref != x2.ref ]/{expression with a unary function, e.g., -1 binary function, e.g., 2 + 3 ternary function, e.g., if x then 4 else 50integer number1 real number2&double-precision floating point number3string4a reference to a clafer name>Imodule 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 definitionA)the UID of the bound IClafer, if resolvedB&Embedes reference to a resolved ClaferC]This is expression container (parent). It has meta information about an actual expression Ethe inferred typeF<non-empty unique id for expressions with span, "" for noSpanG!position in the input Clafer fileHthe actual expressionI)(Min, Max) integer interval. -1 denotes *JGroup cardinality is specified as an interval. It may also be given by a keyword. xor 1..1 isKeyword = True 1..1 1..1 isKeyword = FalseL&whether given by keyword: or, xor, muxNRA type of reference. -> values unique (set) ->> values non-unique (bag)Pwhether set or bagQNthe only allowed reference expressions are IClafer and set expr. (++, **, --s)RClafer's subelement is either a clafer, a constraint, or a goal (objective) This is a wrapper type needed to have polymorphic lists of elementsUGoal (optimization objective)Vthe actual claferW$whether hard constraint or assertionX&the container of the actual expressionYwhether maximize or minimizeZuClafer 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 identifiera"root" if top-level concrete, "clafer" if top-level abstract, "" if unresolved or for root clafer, otherwise UID of the parent claferbNsuperclafer - only allowed PExp is IClaferId. Nothing = default super "clafer"creference type, bag or setdclafer cardinalitye(o) global cardinalityfnested elementsgGeach file contains exactly one mode. A module is a list of declarationsi.always empty (no syntax for declaring modules)jList of top-level elementst UIDHrepresents an inheritance hierarchy obtained using @Common.findHierarchyumust only be a TClassvmust only be a TClassw IType*is a list of basic types (not union types)xA "supertype" of all IR typesfile:/ ftp: or http:/ prefixed URL+clafer name as declared in the source modelunique identifier of a clafer map over IRfoldMap over IR fold the IRPDatatype used for JSON output. See Language.Clafer.gatherObjectivesAndAttributes !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~xyz{|}~klmnopqrstuvwghijZ[\]^_`abcdefRSTUVWXYXNOPQJKLMICDEFGHB-./0123456789:;<=>?@A()*+,"#$%&'! a !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYXZ [\]^_`abcdefghijk lmnopqrstuvwx yz{|}~None:                     None:DOT]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`, chair2fully-qualified name, must begin with :: | e.g., `::Person::name`, `::Company::Department::chair`$a fully- or partially-qualified namemget the UID of a clafer given a fully qualifed name or potentially many UIDs given a partially qualified name6get the fully-qualified name of a clafer given its UID@get the least-partially-qualified name of a clafer given its UID?derive maps between fully-, partially-qualified names, and UIDsyz{|}~  yz{|}~ 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.VGenerate a JSON list of tuples containing a least-partially-qualified name and a scope Dgiven the QNameMaps, parse the JSON scopes and return list of scopes!Write a .cfr-scope file"Read a .cfr-scope file !" !" !" !" None4#$%&'()*+,-./0123456789:;<=>#$%&'()*+,-./0123456789:;<=><=#$%&'()*+,-./0123456789:;>#$%&'()*+,-./0123456789:;<=> NoneABABABAB None0:DOTL*the clafer for which the match is computedMparent of the head claferN&parent of the super of the head claferOtargets of the head claferP&super of the target of the head claferQ9super of the head clafer (must exist, otherwise no match)R&parent of the super of the head claferS'targets of the super of the head claferYReturns only [] or [_]ZReturns a list of any length[Returns a list of any lengthl)Finds all super clafers according to sFunm+Finds hierarchy and transforms each elementnTtraverse the inheritance hierarchy upwards to find a clafer with the given uidToFindoTtraverse the containment hierarchy upwards to find a clafer with the given uidToFindp&assumes that isProperNesting m == True%This represents a match of this shapesuperClafersParent / <> ?1| * parentsSuperClafer / [=] superClafer --*-> superClafersTarget *|   parentClafer | |?2 <> *| [=] targetsSuperClafer * | / | *| headClafer -----*-----> targetClaferSThe 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 - top-level abstract clafers which extend nested abstract clafers are made into siblings of their supers (see  +https://github.com/gsdlab/clafer/issues/67)` 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)qUassumes that isProperNesting m == True and isProperRefinement m == (True, True, True)r`try to match the nested inheritance pattern ^ only available after the parentUIDs were computed<reserved keywords which cannot be used as clafer identifiers|CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr9whether the name of headClafer is the same as superClaferstuvwxyz{|}~|CDGEFHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~|UVWXYZ[\]^_`abcdefghTijklmnoJKLMNOPQRSpqrstuvwxyz{|}~CDEFGHImCDEFGHIJ KLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None#Choco 3 code generationNone?representation of strings in chunks (for line/column numbering)  5NoneOT;Transform the AST into the intermediate representation (IR)>desugars enumeration to abstract and global singleton features8     8     8     8     NoneNone# SingObj"MGet TClafer for a given Clafer can only be called after inheritance resolver#XGet TClafer for a given Clafer by its UID can only be called after inheritance resolver$XGet TClafer for a given Clafer by its UID can only be called after inheritance resolver%xGet TMap for a given reference Clafer. Nothing for non-reference clafers. can only be called after inheritance resolver&yGet TMap for a given Clafer by its UID. Nothing for non-reference clafers. can only be called after inheritance resolver+9Union the two given types >>> TString +++ TString TStringWUnions with only one type should be collapsed. >>> TUnion [TString] +++ TString TStringTString +++ TInteger!TUnion {_un = [TString,TInteger]}TString +++ TUnion [TInteger]!TUnion {_un = [TString,TInteger]}TUnion [TString] +++ TInteger!TUnion {_un = [TString,TInteger]}%TUnion [TString] +++ TUnion[TInteger]!TUnion {_un = [TString,TInteger]}>TUnion [TString] +++ TUnion[TInteger] +++ TInteger +++ TString!TUnion {_un = [TString,TInteger]}-Should return TUnion {_un = [TClafer {_hi = [Alice,Student,Person]},TClafer {_hi = [Bob,Employee,Person5]}]} >>> tClaferAlice +++ tClaferBob TClafer {_hi = [Alice,Student,Person,Bob,Employee]}tClaferAlice +++ tClaferAlice,TClafer {_hi = ["Alice","Student","Person"]}Z(TClafer {_hi = ["A", "X"]} +++ TClafer {_hi = ["B", "X"]}) +++ TClafer {_hi = ["C", "X"]}!TClafer {_hi = ["A","X","B","C"]}ZTClafer {_hi = ["A", "X"]} +++ (TClafer {_hi = ["B", "X"]} +++ TClafer {_hi = ["C", "X"]})!TClafer {_hi = ["A","X","B","C"]}-_Intersection of two types. >>> runListT $ intersection undefined TString TString [Just TString]2runListT $ intersection undefined TInteger TString [Nothing]0runListT $ intersection undefined TInteger TReal [Just TReal]6runListT $ intersection undefined tDrefMapDOB TInteger[Just TInteger]lCannot assign a TReal to a map to TInteger >>> runListT $ intersection undefined tDrefMapDOB TReal [Nothing]lCannot assign a TReal to a map to TInteger >>> runListT $ intersection undefined TReal tDrefMapDOB [Nothing]2runListT $ intersection undefined TClafer {_hi = [A,X,B,C]} TClafer {_hi = [X]} [ Just TClafer {_hi = [X]].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/vCompute the type of sequential composition of two types >>> runListT $ composition undefined TString TString [Nothing]1runListT $ composition undefined TInteger TString [Nothing]/runListT $ composition undefined TInteger TReal [Nothing]5runListT $ composition undefined tDrefMapDOB TInteger=[Just (TMap {_so = TClafer {_hi = ["DOB"]}, _ta = TInteger})]Cannot assign a TReal to a map to TInteger, should return [Nothing] >>> runListT $ composition undefined tDrefMapDOB TReal [Just (TMap {_so = TClafer {_hi = [DOB]}, _ta = TReal})]qCannot assign a TInteger to a map to TInteger >>> runListT $ composition undefined TInteger tDrefMapDOB [Nothing]kCannot assign a TReal to a map to TInteger >>> runListT $ composition undefined TReal tDrefMapDOB [Nothing]ArunListT $ composition undefined tDrefMapDOB (TMap TReal TString)<[Just (TMap {_so = TClafer {_hi = ["DOB"]}, _ta = TString})]The following should return [Nothing] >>> runListT $ composition undefined (TMap TString TReal) (TMap TInteger TString) [Just (TMap {_so = TString, _ta = TString})]59Return the type if it's possible to coerce the right type$coerceRight TString TInteger NothingcoerceRight TInteger TInteger Just TIntegercoerceRight TDouble TInteger Just TDoublecoerceRight TReal TDouble Just TRealcoerceRight TInteger TDoubleNothingcoerceRight TDouble TRealNothing !"#$%&'()*+,-./012345 !"#$%&'()*+,-./012345 !"#$%&'()*+,-./012345 !"#$%&'()*+,-./012345None6eCollects the global cardinality and hierarchy information into proper, not necessarily lower, bounds. 666 6Safe 789:;789:;789:; 789:;Safe<=>?@ABC<=><=>CBA@?<=>?@ABCNone /023459:;<=?@ABDFIJKNOQRTHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   OPNQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~LMJKHI   HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~   J9 K9 None0$Scope inference strategy'8Type of output to be generated at the end of compilation+   !"#$%&'()*+,-./0123456)  # !"$%&',*(.+)-/01234+'()*+,-.6$%&5   !"#/01234    !"#$%&'()*+,-./0123456None:OTAAlloy code generationGAAA@ANoneE9Return an appropriate scope analysis for a given strategyEEEENoneOTHuThe 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.IPosition 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.KPosition relative to the start of the complete model. Will calculate fragId and fragPos automatically. | The position is relative to the entire complete model.T&The fragment where the error occurred.UError 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.V)The error position relative to the model.W&Clafer keeps track of multiple errors.Z]Possible errors that can occur when using Clafer | Generate errors using throwErr/throwErrs:[ Generic error\Error generated by the parser]$Error generated by semantic analysis_Position of the errord#Monad Transformer for using Clafer.eMonad for using Clafer.oThis simulates a field in the ClaferEnv that will always recompute the map, since the IR always changes and the map becomes obsoletepThis 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 UIDtThrow many errors.uThrow one error.v Catch errorswGet the ClaferEnvyModify the ClaferEnvz>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@FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~;FGHIJKLMNOPQRSTUVWXYZ[\]_^`abcdefghijklmnopqrstuvwxyz{|?fghijklmnopsqredZ[\]^_^_^WXYcba`RSTUVHIJKLMNMOPQtuvwxyz|{FG"FGH IJKLMNMOPQRSTUVWXYZ[\]^_^_^`abcdefghijklmnopqrstuvwxyz{|}~None:  ident level stack, last new line5ident level of new line, current level or parenthesisAdd 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.@Insert a new symbol token at the begninning of a list of tokens.4QIf the token is on the same line 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.bThe rest of the tokens. These will have their positions updated to make room for the new token.44+None#Generate the model as HTML documentTGenerate the model as plain text | This is used by the graph generator for tooltips0      !"<==<0      !"None+Generate a graph in the simplified notation8Generate a graph in CVL variability abstraction notation+#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK<==<+#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKNone:JApply optimizations for unused abstract clafers and inheritance flatteningNone: How a given name was resolved:"this", "parent", "dref", "root", "clafer", and "children"#primitive type: "integer", "string"local variable (in constraints)clafer's descendantresolved by a referenceclafer's ancestorabstract clafernon-abstract top-level clafer+this environment is created for each clafer HDepending on how resolved construct a navigation path from 'context env'A      !"#$%&'()A      !"#$%&'()A      !"#$%&'()/       !"#$%&'() None#9:;IL"Phase one: only process referencesM-Phase two: only process constraints and goalsNType inference and checking-OLMPQRSTUVWXYZ[\]^_`Nabcdef-ghijklmnopqrst./0--OLMPQRSTUVWXYZ[\]^_`Nabcdef-ghijklmnopqrst./0!None#:6#Resolve Non-overlapping inheritance<Resolve overlapping inheritance@+Resolve inherited and default cardinalitiesEExpand inheritance6789:;<=>?@ABCDEFGHIJKLMNOPQ6789:;<=>?@ABCDEFGHIJKLMNOPQ6789:;<=>?@ABCDEFGHIJKLMNOPQ6789:;<=>?@ABCDEFGHIJKLMNOPQ"None:RRun the various resolversS Name resolverRSTUVWXYRSTUVWXYRSTUVWXYRSTUVWXY#None#Z%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 IRa,Map back from Ints used to represent Stringsb#scopes generated by scope inferencefRun the Clafer compiler. mURL = Nothing means compile the top-level module mURL = Just url means compile an imported module from the given urlgDAdd a new fragment to the model. Fragments should be added in order.uIConverts the Err monads (created by the BNFC parser generator) to ClaferTvConverts one Err. liftParseErrs is better if you want to report multiple errors. | This method will only report one before ceasing execution.hWParses the model into AST. Adding more fragments beyond this point will have no effect.jCompiles the AST into IR.kPSplits the AST into their fragments, and generates the output for each fragment.l#Generates outputs for the given IR.$Z[\]^_`abcdefwxyz{|}guvhijk~l]gC<=>  # !"$%&',(.+)-/01234cfghijklmnqrswz{|Z[\]^ad_c`befghijkl7fgjhilk{|cwzZ[\]^_`abcdeCgfghijklmnrqsZ [\]^_`abcdefwxyz{|}guvhijk~l%&'()*+,-./.01213456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./01234567899:;<=>?@ABCDEFGHIJKLMNOPQRSSTUVWXYYZ[\\]^_`abcdefgghijklmnopqrsstuvwxyz{|}~          ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L L M N O P Q R 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:;<=>?@DABCDEFGHIJKLMNNOPQRRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRRSTUVWXYZ[\]^_`WZabccdefghijklmnopqrstuvwxyz{|}~      ! " # $ % & ' ( ) *!+!,!-!.!/!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#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#abcd$efghijk  l m n o p q r s t u v w x y z { | } ~                     YlJ      !"#$%&'()*+,-./0    12 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#hi"clafer-0.4.4-XeevqZMpf33nmyUG80V8xLanguage.Clafer.SplitJoin Paths_claferLanguage.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.Intermediate.Desugarer(Language.Clafer.Intermediate.Transformer'Language.Clafer.Intermediate.TypeSystem0Language.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.ClaferGetURLjoinArgs splitArgsversion getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameAlexAcc AlexAccNone AlexAccSkip AlexLastAccAlexNone AlexLastSkip AlexReturnAlexEOF AlexErrorAlexSkip AlexTokenAlexAddrAlexA# AlexInputBytePosnPnBTreeNBTokenPTErrTokTSTLTITVTDTC T_PosInteger T_PosDouble T_PosReal T_PosString T_PosIdentT_PosLineCommentT_PosBlockComment T_PosAlloy T_PosChoco alex_tab_size alex_base alex_table alex_check alex_deflt alex_accepttoksharetokenPos tokenPosn tokenLineCol posLineCol mkPosTokenprTokeneitherResIdentresWordsunescapeInitTail alexStartPosalexMovetokens alexGetBytealexInputPrevChar utf8Encode alex_action_1 alex_action_2 alex_action_3 alex_action_4 alex_action_5 alex_action_6 alex_action_7 alex_action_8 alex_action_9alex_action_10alex_action_11alexIndexInt16OffAddralexIndexInt32OffAddr quickIndexalexScan alexScanUser alex_scan_tkn$fFunctorAlexLastAcc$fEqTok $fShowTok$fOrdTok $fShowBTree$fEqPosn $fShowPosn $fOrdPosn $fEqToken $fShowToken $fOrdTokenLocId LocIdIdentModId ModIdIdentEnumId EnumIdIdentQuantQuantNoQuantNot QuantLoneQuantOne QuantSomeDeclExp EDeclAllDisjEDeclAllEDeclQuantDisj EDeclQuant EImpliesElseEIffEImpliesEOrEXorEAndENegELtEGtEEqELteEGteENeqEInENin EQuantExpEAddESubEMulEDivERemEGMaxEGMinESumEProdECardEMinExpEDomainERangeEUnion EUnionCom EDifference EIntersectionEIntersectionDeprecatedEJoinClaferIdEIntEDoubleERealEStrNamePath ExInteger ExIntegerAst ExIntegerNumNCardCard CardEmptyCardLoneCardSomeCardAnyCardNum CardIntervalGCard GCardEmptyGCardXorGCardOrGCardMuxGCardOpt GCardIntervalInitHow InitConstant InitDefaultInit InitEmptyInitSome ReferenceReferenceEmpty ReferenceSet ReferenceBagSuper SuperEmpty SuperSomeElement Subclafer ClaferUse SubconstraintSubgoal SubAssertionElements ElementsEmpty ElementsListAbstract AbstractEmptyGoalGoalMinDeprecatedGoalMaxDeprecated GoalMinimize GoalMaximize Assertion ConstraintClafer DeclarationEnumDecl ElementDeclModulePosChocoPosAlloyPosBlockCommentPosLineCommentPosIdent PosStringPosReal PosDouble PosInteger SpannablegetSpanSpanPosnoPosnoSpan>-len$fSpannableLocId$fSpannableModId$fSpannableEnumId$fSpannableQuant$fSpannableDecl$fSpannableExp$fSpannableName$fSpannableExInteger$fSpannableNCard$fSpannableCard$fSpannableGCard$fSpannableInitHow$fSpannableInit$fSpannableReference$fSpannableSuper$fSpannableElement$fSpannableElements$fSpannableAbstract$fSpannableGoal$fSpannableAssertion$fSpannableConstraint$fSpannableClafer$fSpannableDeclaration$fSpannableModule$fSpannablePosChoco$fSpannablePosAlloy$fSpannablePosBlockComment$fSpannablePosLineComment$fSpannablePosIdent$fSpannablePosString$fSpannablePosReal$fSpannablePosDouble$fSpannablePosInteger $fSpannable[]$fEqPos$fOrdPos $fShowPos $fReadPos $fDataPos $fGenericPos$fEqSpan $fOrdSpan $fShowSpan $fReadSpan $fDataSpan $fGenericSpan$fEqPosInteger$fOrdPosInteger$fShowPosInteger$fReadPosInteger$fDataPosInteger$fGenericPosInteger $fEqPosDouble$fOrdPosDouble$fShowPosDouble$fReadPosDouble$fDataPosDouble$fGenericPosDouble $fEqPosReal $fOrdPosReal $fShowPosReal $fReadPosReal $fDataPosReal$fGenericPosReal $fEqPosString$fOrdPosString$fShowPosString$fReadPosString$fDataPosString$fGenericPosString $fEqPosIdent $fOrdPosIdent$fShowPosIdent$fReadPosIdent$fDataPosIdent$fGenericPosIdent$fEqPosLineComment$fOrdPosLineComment$fShowPosLineComment$fReadPosLineComment$fDataPosLineComment$fGenericPosLineComment$fEqPosBlockComment$fOrdPosBlockComment$fShowPosBlockComment$fReadPosBlockComment$fDataPosBlockComment$fGenericPosBlockComment $fEqPosAlloy $fOrdPosAlloy$fShowPosAlloy$fReadPosAlloy$fDataPosAlloy$fGenericPosAlloy $fEqPosChoco $fOrdPosChoco$fShowPosChoco$fReadPosChoco$fDataPosChoco$fGenericPosChoco $fEqAbstract $fOrdAbstract$fShowAbstract$fReadAbstract$fDataAbstract$fGenericAbstract $fEqInitHow $fOrdInitHow $fShowInitHow $fReadInitHow $fDataInitHow$fGenericInitHow $fEqExInteger$fOrdExInteger$fShowExInteger$fReadExInteger$fDataExInteger$fGenericExInteger $fEqNCard $fOrdNCard $fShowNCard $fReadNCard $fDataNCard$fGenericNCard$fEqCard $fOrdCard $fShowCard $fReadCard $fDataCard $fGenericCard $fEqGCard $fOrdGCard $fShowGCard $fReadGCard $fDataGCard$fGenericGCard $fEqQuant $fOrdQuant $fShowQuant $fReadQuant $fDataQuant$fGenericQuant $fEqEnumId $fOrdEnumId $fShowEnumId $fReadEnumId $fDataEnumId$fGenericEnumId $fEqModId $fOrdModId $fShowModId $fReadModId $fDataModId$fGenericModId$fEqName $fOrdName $fShowName $fReadName $fDataName $fGenericName $fEqLocId $fOrdLocId $fShowLocId $fReadLocId $fDataLocId$fGenericLocId$fEqDecl $fOrdDecl $fShowDecl $fReadDecl $fDataDecl $fGenericDecl$fEqExp$fOrdExp $fShowExp $fReadExp $fDataExp $fGenericExp$fEqInit $fOrdInit $fShowInit $fReadInit $fDataInit $fGenericInit $fEqReference$fOrdReference$fShowReference$fReadReference$fDataReference$fGenericReference $fEqSuper $fOrdSuper $fShowSuper $fReadSuper $fDataSuper$fGenericSuper$fEqGoal $fOrdGoal $fShowGoal $fReadGoal $fDataGoal $fGenericGoal $fEqAssertion$fOrdAssertion$fShowAssertion$fReadAssertion$fDataAssertion$fGenericAssertion$fEqConstraint$fOrdConstraint$fShowConstraint$fReadConstraint$fDataConstraint$fGenericConstraint $fEqElement $fOrdElement $fShowElement $fReadElement $fDataElement$fGenericElement $fEqElements $fOrdElements$fShowElements$fReadElements$fDataElements$fGenericElements $fEqClafer $fOrdClafer $fShowClafer $fReadClafer $fDataClafer$fGenericClafer$fEqDeclaration$fOrdDeclaration$fShowDeclaration$fReadDeclaration$fDataDeclaration$fGenericDeclaration $fEqModule $fOrdModule $fShowModule $fReadModule $fDataModule$fGenericModulePrintprtprtListDoc printTreedocrenderparenthconcatSconcatD replicateSmkEscprPrec $fPrintLocId $fPrintModId $fPrintEnumId $fPrintQuant $fPrintDecl $fPrintExp $fPrintName$fPrintExInteger $fPrintNCard $fPrintCard $fPrintGCard$fPrintInitHow $fPrintInit$fPrintReference $fPrintSuper$fPrintElement$fPrintElements$fPrintAbstract $fPrintGoal$fPrintAssertion$fPrintConstraint $fPrintClafer$fPrintDeclaration $fPrintModule$fPrintPosChoco$fPrintPosAlloy$fPrintPosBlockComment$fPrintPosLineComment$fPrintPosIdent$fPrintPosString$fPrintPosReal$fPrintPosDouble$fPrintPosInteger $fPrintDouble$fPrintInteger $fPrintChar $fPrint[]ColNoLineNoIQuantINoILoneIOneISomeIAllIDecl_isDisj_decls_bodyIExp IDeclPExpIFunExpIIntIRealIDoubleIStr IClaferId_quant_oDecls_bpexp_op_exps_iint_ireal_idouble_istr_modName_sident_isTop_binding ClaferBindingPExp_iType_pid_inPos_expIntervalIGCard _isKeyword _interval IReference_isSet_refIElementIEClafer IEConstraintIEGoal_iClafer_isHard_cpexp _isMaximizeIClafer_cinPos _isAbstract_gcard_ident_uid _parentUID_super _reference_card_glCard _elementsIModule_mName_mDeclsITypeTBooleanTStringTIntegerTDoubleTRealTClaferTMapTUnion_hi_so_ta_unIr IRIModule IRIElementIRITypeIRClaferIRIExpIRPExp IRIReferenceIRIQuantIRIDeclIRIGCardURLCNameUIDmapIR foldMapIRfoldIRiMapiFoldMapiFold unWrapIModuleunWrapIElement unWrapIType unWrapIClafer unWrapIExp unWrapPExpunWrapIReference unWrapIQuant unWrapIDecl unWrapIGCard $fPlatedIExp $fPlatedPExp$fPlatedIClafer$fPlatedIModule $fEqIType $fOrdIType $fShowIType $fDataIType $fEqIGCard $fOrdIGCard $fShowIGCard $fDataIGCard $fEqIQuant $fOrdIQuant $fShowIQuant $fDataIQuant$fEqIExp $fOrdIExp $fShowIExp $fDataIExp $fEqIDecl $fOrdIDecl $fShowIDecl $fDataIDecl$fEqPExp $fOrdPExp $fShowPExp $fDataPExp$fEqIReference$fOrdIReference$fShowIReference$fDataIReference $fEqIClafer $fOrdIClafer $fShowIClafer $fDataIClafer $fEqIElement $fOrdIElement$fShowIElement$fDataIElement $fEqIModule $fOrdIModule $fShowIModule $fDataIModule$fEqIr$fShowIrhisotaunmDeclsmNamecardcinPoselementsgcardglCardident isAbstract parentUID referencesuperuidcpexpiClaferisHard isMaximizeisSetrefinterval isKeywordexpiTypeinPospidbindingbpexpexpsidoubleiintirealisTopistrmodNameoDeclsopquantsidentbodydeclsisDisj $fToJSONIType$fToJSONIModule$fToJSONIClafer$fToJSONIElement$fToJSONIReference$fToJSONIGCard $fToJSONPExp $fToJSONIExp $fToJSONIDeclObjectivesAndAttributes _qualities _attributes $fToJSONPos $fToJSONSpan$fToJSONIQuant$fToJSONObjectivesAndAttributesStats naClafers nrClafers ncClafers nConstraintsnGoalssglCard statsModule statsClafer statsCard statsElement $fShowStats astrModule astrClafer astrReference astrElementastrPExpastrIExp QNameMapsPQNameFQNameQNamegetUIDs getFQName getLPQNamederiveQNameMapsgetQNameUIDTriplesgenerateJSONnameUIDMapgenerateJSONScopesparseJSONScopeswriteCfrScopeFilereadCfrScopeFileAst AstModuleAstDeclaration AstClafer AstConstraint AstAssertionAstGoal AstAbstract AstElements AstElementAstSuper AstReferenceAstInit AstInitHowAstGCardAstCardAstNCard AstExIntegerAstNameAstExpAstDeclAstQuant AstEnumIdAstModIdAstLocId traceIrModuletraceAstModule printAstNode$fEqAst $fShowAstheadercssGEnv identCountMapexpCountstablesClafers uidClaferMapNestedInheritanceMatch _headClafer _parentClafer_parentsSuperClafer _targetClafer_targetsSuperClafer _superClafer_superClafersParent_superClafersTarget UIDIClaferMapResult transIdentmkIdent mkIntegergetSuper getReferencegetSuperAndReference getSuperId getRefIds isEqClaferId mkPLClaferId pExpDefPidpExpDefisParent isClaferName isClaferName' getClaferName isTopLevel elemToClafer toClaferscreateUidIClaferMap findIClaferisTopLevelByUID findHierarchy mapHierarchyfindUIDinSupersfindUIDinParentsisProperNestingisProperRefinementisRedefinitionmatchNestedInheritanceapplybfs toNodeShallow getSubclafers bfsClaferslurryfst3snd3trd3toTriple toMTripleiNotiCSetiMiniMaximumiMinimum iMaximize iMinimizeiSumSetiProdSetunOpsiIffiImpliOriXoriAnd logBinOpsiLtiGtiEqiLteiGteiNeqiIniNin relGenBinOps relSetBinOps relBinOpsiPlusiSubiMuliDiviRem arithBinOpsiUnion iDifference iIntersectioniDomainiRangeiJoin setBinOpsbinOps iIfThenElse mkIFunExptoLowerS rootIdentrootUID thisIdent parentIdent drefIdent childrenIdent specialNames isSpecial stringTypeintType integerTyperealType doubleType booleanType baseClafermodSepprimitiveTypes isPrimitive keywordIdentssafeTail$fShowNestedInheritanceMatch$fEqGEnv $fShowGEnv genCModuleIrTraceIrPExp LowerCard UpperCard ExactCardNoTracepUidisGroupPositionConcatCStringsrcPosnodesmkConcat mapToCStr iscPrimitiveflatten+++cconcat cintercalate filterNullisNullcunlines $fEqIrTrace $fShowIrTrace $fEqConcat $fShowConcat desugarModule sugarModule desugarEnumsdesugarDeclarationsugarDeclaration desugarClafergetPExpClaferIdent sugarClafer desugarSuperdesugarReference desugarInitdesugarInitHow desugarName desugarModId sugarModId sugarSupersugarReference sugarInitHowdesugarConstraintdesugarAssertion desugarGoalmkMinimizeMaximizePExpsugarConstraintsugarAssertion sugarGoaldesugarAbstract sugarAbstractdesugarElements sugarElementsdesugarElement sugarElement desugarGCard isOptionalDefisExIntegerAst sugarGCard desugarCard desugarNCarddesugarExInteger sugarCardsugarExInteger desugarExp desugarExp' desugarOpsugarExp sugarExp' desugarPathisSetExp reducePExp reduceIExp reduceNav desugarDecl sugarDecl desugarLocId sugarLocId desugarQuant sugarQuant transModule transElement transClafer transPExp transIExp rootTClafer claferTClafernumeric isTInteger isTString isTBoolean getTClafergetTClaferByUIDgetTClaferFromIExp getDrefTMapgetDrefTMapByUID hierarchy hierarchyMap unionType fromUnionType collapseUnion intersectiongetIfThenElseType composition addHierarchyclosuregetTMaps getTClaferscoerce coerceRightsimpleScopeAnalysis getOptions getFragmentsgetStatsgetGraph getCommentsOkBad$fAlternativeErr$fMonadPlusErr $fFunctorErr$fApplicativeErr $fMonadErr $fReadErr $fShowErr$fEqErr$fOrdErr 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 happyIn62 happyOut62 happyIn63 happyOut63 happyIn64 happyOut64 happyIn65 happyOut65 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_134happyReduce_135happyReduction_135happyReduce_136happyReduction_136happyReduce_137happyReduction_137happyReduce_138happyReduction_138happyReduce_139happyReduction_139happyReduce_140happyReduction_140happyReduce_141happyReduction_141happyReduce_142happyReduction_142 happyNewToken happyError_ happyThen happyReturn happyThen1 happyReturn1 happyError'pModulepClafer pConstraint pAssertionpGoalhappySeqreturnMthenM 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_statsvalidatetooldir alloy_mappingself_contained add_graphshow_references add_comments ecore2claferscope_strategyafm meta_datafile ScopeStrategyNoneSimple ClaferModeAlloyJSONHtmlGraphCVLGraphChococlafer mergeArgsmainArgsretrieveModelFromURLargsWithOPTIONSdefaultClaferArgs$fDefaultScopeStrategy$fDefaultClaferMode$fEqClaferMode$fShowClaferMode$fOrdClaferMode$fDataClaferMode$fEqScopeStrategy$fShowScopeStrategy$fDataScopeStrategy$fEqClaferArgs$fShowClaferArgs$fDataClaferArgs genModule $fShowGenEnv $fEqAlloyEnv$fShowAlloyEnvgetScopeStrategy ThrowabletoErr PartialErrPos ErrFragPos ErrFragSpan ErrModelPos ErrModelSpanpFragIdpFragPos pFragSpan pModelPos pModelSpanErrPosfragIdfragPosmodelPosCErrs ClaferErrserrsCErr ClaferErrParseErr SemanticErrmsgpos ClaferSErrs ClaferSErrClaferTClaferM ClaferEnvargs modelFragscAstcIrfragsastModuleTrace otherTokens irModuleTrace uidIClaferMapgetAstgetIrmakeEnv throwErrsthrowErr catchErrsgetEnvgetsEnv modifyEnvputEnv runClaferT runClafer$fThrowableCErr$fClaferErrPosPartialErrPos$fClaferErrPosErrPos$fClaferErrPosSpan$fShowClaferEnv $fShowCErr $fShowCErrs $fShowErrPos$fShowPartialErrPosLEnvExTokenNewLineLastNlLayEnvlevellevelsinputoutputbrCtrgetToken layoutOpen layoutClose resolveLayoutresolveindentdedenttoToken isExTokenIn isNewLine incrGlobal tokenLookuppositionlinecolumn isTokenIn isLayoutOpen isBracketOpen isLayoutCloseisBracketClose tokenLength addNewLines addNewLines'adjustupdTokenaddToken resLayoutresolveLayout' handleIndentemitreadC eatSpaces emitIndent emitDedentisEofgetc revertLayout revertLayout' $fShowLayEnv $fShowExTokenprintPreComment printCommentprintStandaloneCommentprintInlineCommentgenHtmlgenText genTooltip printModuleprintDeclaration printDecl cleanOutputhighlightErrorsgenSimpleGraph genCVLGraphoptimizeModuleoptimizeElementoptimizeClafermultInt multExIntmakeZeroUnusedAbs remUnusedAbs findUnusedAbsgetUniqExtended getExtended expModule expClafer expElementexpPExpexpIExpexpDeclexpNavexpNav'split' allUniquecheckConstraintElementcheckConstraintPExpcheckConstraintIExpcheckConstraintIDecl findDupModule markTopModule markTopClafermarkTopElement markTopPExp markTopIExp markTopDeclResolve HowResolvedSpecial TypeSpecialBinding SubclafersAncestor AbsClafer TopClaferSEnvclaferscontext subClafers ancClafersbindingsresPathgenvaClaferscClafersdefSEnvcheckDuplicateSiblingscheckDuplicateSiblings' checkForJustcheckListDuplicatescheckListDuplicates' isIEClaferresolveModuleNames resolveClafermkAncestorListresolveElement resolvePExp liftError processDecl resolveNavmkPathtoTupletoNav'adjustAncestormkPath'resolveTopLevelName resolveNameresolveImmName resolveNoneresolveSpecial resolveBindresolveDescendantsresolveChildrenresolveReferenceresolveChildren' liftMayberesolveAncestorresolveTopLevelresolveTopLevelOnly toNodeDeepallInhChildren allChildrenselectChildren findUnique findFirstshowPathisNamespaceConflict filterPaths $fShowSEnv$fEqHowResolved$fShowHowResolvedresolveTModule$fMonadTypeAnalysisExceptT$fMonadTypeAnalysisListT$fMonadTypeAnalysisTypeAnalysis$fMonadErrorTypeAnalysis$fMonadTypeAnalysis$fFunctorTypeAnalysis$fMonadReaderTypeAnalysis$fApplicativeTypeAnalysisresolveNModuleresolveNClafer resolveNSuperresolveNElementresolveNresolveHierarchyresolveOModuleresolveOClaferresolveOReferenceresolveOElement analyzeModule analyzeClafer analyzeGCard analyzeCardanalyzeElementresolveEModuleunrollableModuleunrollabeDeclarationunrollableClafergetDirUnrollablesresolveEClafer renameClafer renameClafer'genIdresolveEInheritanceresolveEElementresolveRedefinition!relocateTopLevelAbstractToParents resolveModule nameModule nameElement nameClafernamePExpnameIExp nameIDeclresolveNamesModuleCompilerResultNoCompilerResult extension outputCode statistics claferEnvmappingToAlloy stringMap scopesListreason InputModel runCompileraddModuleFragmentparsedesugarcompile generateHtmlgenerate$fShowCompilerResultStateNormQuotgetURLcatchIObindirlibdirdatadir libexecdir sysconfdir UIDLpqNameMap UIDFqNameMap FQNameUIDMapFQKeyderiveFQNameUIDMaps addElements addClaferfindUIDsByFQNamereverseOnQualifiergetFQKeygetQNameFromKeyderiveUidLpqNameMapgenerateUIDLpqMapEntrygenerateQNameUIDArrayEntrygenerateLpqNameScopeArrayEntryprettyPrintJSONtraverseModuletraverseDeclarationtraverseClafertraverseConstrainttraverseAssertion traverseGoaltraverseAbstracttraverseElementstraverseElement traverseSupertraverseReference traverseInittraverseInitHow traverseGCard traverseCard traverseNCardtraverseExInteger traverseName traverseExp traverseDecl traverseQuanttraverseEnumId traverseModId traverseLocId analyzeSupers analyzeRefsanalyzeConstraintsanalyzeDependencies dependencyanalyzeHierarchy directSuperfindConstraints childClafers unfoldJoins getFragments' getStats' getGraph' getComments'readLine readBlock readBlock'AlloyEnvlineColmappingGenEnv claferargs forScopesgenAlloyEscapesgenDeclarationmkFact genAssertNamemkAssertmkSetshowSet optShowSet genClafer claferDecl genOptCard genRelations genRelName genRefNamegenRel genAlloyRelrefType getTargetgenTypegenConstraintsgenSetUniquenessConstraintgenParentSubrelationConstriantgenRefSubrelationConstriantgenParentConstgenOptParentConst genGroupConstmkCardgenCard genCardCrudegenIntervalCrude genInterval cardConcatcardLowerConcatcardUpperConcat genExIntegergenPExpgenPExp' transformExp genIFunExpoptBrArg interleavebrArggenOp adjustPExp adjustIExp adjustNavgenQuantgenDeclgenDisj mapLineColaddCode mapLineCol' addColumn countLeading countTrailinglinenofirstCol firstLine removerightgetRight ClaferErrPostoErrPosaddPosminusPosinSpanprintDeprecated printElement printElements printClafer printGoal printAbstract printGCard printNCardprintExInteger printName printModId printPosIdentprintPosIdentRef printSuperprintReference printCardprintConstraintprintConstraint'printAssertionprintAssertion' printInit printInitHowprintExp printQuant printEnumId printIndent printIndentIdprintIndentEnddropUidrestgetUidgetDivIdgetUseIdwhiletrimhighlightErrors'graphSimpleModulegraphSimpleDeclarationgraphSimpleElementgraphSimpleElementsgraphSimpleClaferparentgraphSimpleSupergraphSimpleReference refColourgraphSimpleNamegraphSimpleModIdgraphSimplePosIdentgraphSimpleExpgraphCVLModulegraphCVLDeclarationgraphCVLElementgraphCVLElementsgraphCVLClafer graphCVLSupergraphCVLReference graphCVLName graphCVLModIdgraphCVLPosIdentgraphCVLConstraintgraphCVLAssertion graphCVLGoal graphCVLCard graphCVLNCardgraphCVLExInteger graphCVLGCard graphCVLExp choiceCard lowerCardgetExpId htmlChars TAReferences TAExpressionsrunTypeAnalysisTAModeMonadTypeAnalysiscurThis localCurThiscurPath localCurPath typeDecls localDecls TypeAnalysisTypeInfo iTypeDeclsiUIDIClaferMapiCurThisiCurPath TypeDecls typeOfUid claferWithUidparentOfisIndirectChildisChildstrshowTyperesolveTElementresolveTConstraint resolveTPExp resolveTPExp'addDrefaddSometypeOfwithType<++>liftList comparingsyntaxOfsameAs liftParseErrs liftParseErrsavesummarysummary' runValidate validateAlloy validateChoco validateGraphiExpBasedChecksiClaferBasedChecksanalyzeaddStats showStats showIntervalgatherObjectivesAndAttributes