E/      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~          j !"Neutral terms. #$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP+For treating quantifiers in a uniform way. QRS+The use of Bind indicates the scope of the  bound identifier. TUVWXYZ[\]^_`abcdefgh+Smart constructor for lambda abstractions. iSmart constructor for split. #Smart constructor for quantifiers. 0Smart constructor for multiple Pi applications. j0Smart constructor for multiple Pi applications. Smart constructor for Pi. 3Smart constructor for multiple Sigma applications. k3Smart constructor for multiple Sigma applications. Smart constructor for Sigma. l&Smart constructor for function space. mSmart constructor for product. nopqrstuv.Locations are always equal. This allows us to 6 derive equality for the abstract syntax that ignores  the locations. d !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvdS56:789VXW! ^_=Y`eabcdZ"('&%$#[]\PRQU;<>ONMLKJIHGFEDCBA@?T)43210/.-,+*mlnovhfgqpjkirstuc! !"('&%$##$%&'() 43210/.-,+**+,-./0123456678989:;<<=>ONMLKJIHGFEDCBA@??@ABCDEFGHIJKLMNOPRQQRSTUVXWWXYZ[]\\]^__`eabcdabcdefghijklmnopqrstuv,wxyz{|}~'wxyz{|}~'wxyz{|}~'wxyz{|}~ /Takes a name, a scope, and potentially a type. : It extends the environment and the scope with that name. Updates the environment. !Locally updates the environment. 9Context for printing. Determines whether parentheses are  required. /Prints parens if the current context is higher  than a certain limit.       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  1Takes a term and an (unevaluated) type. We first 2 handle the cases that may potentially change the 3 environment. If none of those cases match, we can ( safely evaluate the type and call check'.  Infers a type and evaluates it.    !""#$%&'()*+,-./0123456789(::&;<=>>'?@ABCDEFG HIJKLMNOPQRSMTUVWGXY?TZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ uts^  _   |xw !"!#!$!%&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&JKLKMKNKOKPKQKRSTSUSVSWSXSXSYSZS[S\S]S^S_S`SaSbScSdSeSfSgShSiSjSklmlnlnlolplplqlrllsltlulvlwlxlylzl{l|l}l~lllllllllllllllllllllll                 pisigma-0.2Language.PiSigma.Syntax#Language.PiSigma.Util.String.Parser%Language.PiSigma.Util.String.InternalLanguage.PiSigma.LexerLanguage.PiSigma.ParserLanguage.PiSigma.EvaluateLanguage.PiSigma.NormaliseLanguage.PiSigma.PrettyLanguage.PiSigma.EqualityLanguage.PiSigma.CheckbaseGHC.EnumEnumStringappend fromString isPrefixOflinesnullreadFilespantoStringunconsunlinesconcatputStrLn EnvEntriesEnvemptyEextEsetEgetEprtEPrtInfonameexpandEnvEntryClosureIdNeNUnfoldNForceNCaseNSplit:..NVarValVFoldVRecVBoxVLabelVEnumVPairVLamVLiftVQVTypeBoxedgetScopeputScopeClosScopeTermUnfoldFoldRecForceBoxLiftCaseLabelSplitPairAppLamQTypeLetVarPiSigmaSigmaPiBindProgEntryDefnDeclNamePhraseGetLocgetLocLocfilenamelinecolumnUnknown locMessagedeclslamsplitpissigmas->--*- emptyScope extendScope lookupScope lookupContyltytforcetliftlabelParseranglesbracesbrackets charLiteralcoloncommacommaSep commaSep1decimaldotfloat hexadecimal identifierintegerlexemenaturalnaturalOrFloatoctaloperatorparensreserved reservedOpsemisemiSepsemiSep1squares stringLiteralsymbol whiteSpacelocationlocate locReserved locReservedOp locSymboltokArrtokForcetokLamtokLiftsTermsProgsPhrases2TermsparseEvalunEvalruncatchEgetEnvgetIddecldecl'tdecldefn'letnletn'substlookupIdforceevalevalPrognfquotePrint evalPrintPretty fromPrettyeq checkProginferqpis'pisigmas'sigmaset$fEqLoc nonIdentStr opLetterStr pisigmaDef tokenParsersourcePosToLocsLabelsNameprefixOperator infixOperatoratomatomOrApplicationsEntrysBranchEvalErrsetEnvdefnevalAppevalId evalSplitevalCaseunfoldNfnf'Varsfreshqq PrintContextMsgMsgDMsgSMsgTMsgCMsgV prettyTerm prettyEntrybindingbranches contextParens mpppc-0.1.0%Text.PrettyPrint.MPPPC.OneDim.Display putPretty hPutPrettyhPutSimplePretty.Text.PrettyPrint.MPPPC.OneDim.Combinators.FillfillSepfillCat fillBreakfillwidth/Text.PrettyPrint.MPPPC.OneDim.Combinators.Aligntupled semiBraceslistindenthang encloseSepalign-Text.PrettyPrint.MPPPC.OneDim.Combinators.Seqspaces quotesSingle quotesDoubleenclose0Text.PrettyPrint.MPPPC.OneDim.Combinators.Layoutvsepvcat softBreaksoftLinesep punctuatenestingnest lineBreakhsephcatgroupfoldcatbeside<$><$$><+><>-Text.PrettyPrint.MPPPC.OneDim.Combinators.Tok quoteSingle quoteDoublespace parenRight parenLeftequals bracketRight bracketLeft braceRight braceLeft backslash angleRight angleLeft.Text.PrettyPrint.MPPPC.OneDim.Combinators.Primtextflattenemptychar.Text.PrettyPrint.MPPPC.OneDim.Combinators.ANSI deUnderline underlinedeBoldbold onDullWhite onDullCyan onDullMagenta onDullBlue onDullYellow onDullGreen onDullRed onDullBlackonWhiteonCyan onMagentaonBlueonYellowonGreenonRedonBlack dullWhitedullCyan dullMagentadullBlue dullYellow dullGreendullRed dullBlackwhitecyanmagentablueyellowgreenredblack$Text.PrettyPrint.MPPPC.OneDim.Render renderSeqrenderSimplePretty renderCompact renderPrettyNilConsPretties$Text.PrettyPrint.MPPPC.OneDim.Pretty stUnderlining stIntensity stBackground stForeground FormatStateEmptyCharTextLineCatNestUnionColumnNestingColor Intensify Underline RestoreFormat SimpleEmpty SimpleChar SimpleText SimpleLine SimpleSGR SimplePretty Text.PrettyPrint.MPPPC.PrintableunTokTokunSeqSeqwordsunwordstokSpacetokSemitokQuoteSingletokQuoteDouble tokParenRight tokParenLeft tokNewline tokEqualstokDottokCommatokColontokBracketRighttokBracketLeft tokBraceRight tokBraceLeft tokBackslash tokAngleRight tokAngleLefttaketailsplitAtseqEmpty singletonreverse replicateisNullpacklengthhPutSeqhPutTokheadconschunk PrintableEqualeqBindeqBox throwErrorcexpectedexpectedButFoundduplicateLabelsnonLinearSplitdeclaredButNotDefined declaredTwice notDeclHere checkProg'checkcheck'infer'inferVar