!~S      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq r s t u v w x y z { | } ~                                   ! " # $ % & ' ( ) * + , - . / 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 (C) 2017-18 Jakub Daniel BSD-style (see the file LICENSE)*Jakub Daniel <jakub.daniel@protonmail.com> experimentalSafe,-FQV expressionsKType constructors (usually functors) that produce types that can be equated expressions!Indexed types that can be equated(C) 2017-18 Jakub Daniel BSD-style (see the file LICENSE)*Jakub Daniel <jakub.daniel@protonmail.com> experimentalSafe,-FQV expressions7Type constructors (usually functors) that can be folded(C) 2017-18 Jakub Daniel BSD-style (see the file LICENSE)*Jakub Daniel <jakub.daniel@protonmail.com> experimentalSafe,-F expressionsS: for indexed type constructors (most importantly functors)(C) 2017-18 Jakub Daniel BSD-style (see the file LICENSE)*Jakub Daniel <jakub.daniel@protonmail.com> experimentalNone,-FQV k expressionsA functor in indexed category expressions+A fixpoint of a functor in indexed category expressionsIndexed catamorphism(C) 2017-18 Jakub Daniel BSD-style (see the file LICENSE)*Jakub Daniel <jakub.daniel@protonmail.com> experimentalNone&',-;FQSTVd.Y ! expressionsA universe of recognized sorts" expressionsbooleans (true, false)# expressionsintegers (..., -1, 0, 1, ...)$ expressionsarrays indexed by % sort, containing elements of & sort5 expressions@An expression of some sort (obtained for example during parsing)7 expressions/Some sort (obtained for example during parsing)9 expressionsTries to convert some sort (7) to a requested sort.: expressionsDConverts a statically sorted expression to a dynamically sorted one.; expressions Tries to convert an expression (5L) of some sort to an expression of requested sort. Performs no conversions.< expressions-Parser that accepts sort definitions such as bool, int,  array int int, array int (array ...)."  ()* +,!"#$%&56789:;<"!"#$%&  ()* +,7856<:9;(C) 2017-18 Jakub Daniel BSD-style (see the file LICENSE)*Jakub Daniel <jakub.daniel@protonmail.com> experimentalNone,-FQV3C expressions:Type constructors (usually functors) that can be traversedE expressions1Maps a monadic action over a traversable functor.CDECDE(C) 2017-18 Jakub Daniel BSD-style (see the file LICENSE)*Jakub Daniel <jakub.daniel@protonmail.com> experimentalNone ,-;=>?FQSTV:G expressions+Inclusion relation for indexed sum functorsJ expressionsSum of two indexed functorsM expressionsInject a component into a sum.N expressions%Try to unpack a sum into a component.O expressionsEmbed a subset in a superset.P expressions'Try to restrict a superset to a subset. FGHIJKLMNOP JKLGHIFMNOPJ8(C) 2017-18 Jakub Daniel BSD-style (see the file LICENSE)*Jakub Daniel <jakub.daniel@protonmail.com> experimentalNone,-;=>?FSTVM\ expressionsExpressions that can be parsed^ expressions:Context-sensitive parser that remembers sorts of variables_ expressions2Parsing context assigning sorts to known variables` expressionsiTries to parse the entire input text and produce an expression in desired language and with desired sort.a expressionsLike `D but allows adding initial assumption about sorts of some variables.b expressionsMatches a given character.c expressionsMatches first of many choices.d expressionsMatches a given decimal number.e expressionsMatches a given digit.f expressionsMatches any character.g expressionsMatches one or more times.h expressions<Matches one or more times, separated by specified separator.i expressionsMatches a signed number.j expressionsMatches space.k expressionsMatches a given string.l expressions-Matches identifier that starts with [a-zA-Z'_#] and is followed by [a-zA-Z'_#0-9].m expressionsLabels parser.n expressions?Asserts what sort is assigned to a variable in current context.o expressions/Variable assumes sort based on current context.\]^_`abcdefghijklmno_^\]`abcdefghijklmno (C) 2017-18 Jakub Daniel BSD-style (see the file LICENSE)*Jakub Daniel <jakub.daniel@protonmail.com> experimentalNone&',-;<=>?FQSTVSq expressions9A functor representing a conditional value (if-then-else)s expressions2A smart constructor for an if-then-else expressionqrsqrs (C) 2017-18 Jakub Daniel BSD-style (see the file LICENSE)*Jakub Daniel <jakub.daniel@protonmail.com> experimentalNone&',-;<=>?FQSTVX$z expressionsUA functor representing an equality predicate between two expressions of matching sort| expressions-A smart constructor for an equality predicatez{|z{||7 (C) 2017-18 Jakub Daniel BSD-style (see the file LICENSE)*Jakub Daniel <jakub.daniel@protonmail.com> experimentalNone&',-;<=>?FQSTV] expressions.A functor representing array-theoretic terms ( and " also known as "read" and "write") expressionsA smart constructor for select expressionsA smart constructor for store (C) 2017-18 Jakub Daniel BSD-style (see the file LICENSE)*Jakub Daniel <jakub.daniel@protonmail.com> experimentalNone&',-;<=>?FQSTVkG  expressions=A functor representing linear integer arithmetic: constants ( ), addition ( or ), multiplication ( or ), divisibility predicate () and ordering (, , , ). expressions)A smart constructor for integer constants expressions'A smart constructor for binary addition expressions/A smart constructor for a binary multiplication expressions+A smart constructor for a variadic addition expressions1A smart constructor for a variadic multiplication expressions0A smart constructor for a divisibility predicate expressionsA smart constructor for < expressionsA smart constructor for > expressionsA smart constructor for <= expressionsA smart constructor for >=89 77777 (C) 2017-18 Jakub Daniel BSD-style (see the file LICENSE)*Jakub Daniel <jakub.daniel@protonmail.com> experimentalNone&',-;<=>?FQSTVH/ expressionsjA functor representing a mono-sorted existential quantifier binding a number of variables within a formula expressionshA functor representing a mono-sorted universal quantifier binding a number of variables within a formula expressions8A functor representing a logical connective for negation expressions;A functor representing a logical connective for disjunction expressions;A functor representing a logical connective for conjunction expressionstSubstitution that given an expression produces replacement if the expression is to be replaced or nothing otherwise. expressionsZA functor representing a sorted variable, each variable is identified by its name and sort expressions#Type of names assigned to variables expressions4Bounded lattices that support complementing elementscomplement . complement = id expressions#A language obtained as fixpoint of  expressions#A language obtained as fixpoint of  expressions#A language obtained as fixpoint of  expressions#A language obtained as fixpoint of  expressions#A language obtained as fixpoint of  expressionsA language consisting solely of variables (useful for listing variables outside of any particular context, such as bound variables of quantified formula) expressionsA functor much like , with quantifiers over booleans and integers expressionsA functor representing the language of quantifier-free linear integer arithmetic and array theories in first order logic (much like " with additional array variables, , and ) expressionsA functor much like , with quantifiers over booleans and integers expressionsA functor representing the language of quantifier-free linear integer arithmetic theory in first order logic (integer constants, integer variables, addition, multiplication, divisibility, ordering) expressionsA functor representing propositional logic embedded in first order logic (quantifier-free, boolean variables aka propositions, logical connectives , , , equality of propositions) expressionsA smart constructor for variables of any sort in any language Takes the variable name and infers the target language and sort from context. var "a" :: Lia 'IntegralSort  expressionsLCollects a list of all variables occurring in an expression (bound or free). expressionsZA simple constructor of substitutions that replaces the latter expression with the former. expressionsExecutes a substitution. expressions decomposes a boolean combination (formed with conjunctions and disjunctions, preferably in negation normal form) into its constituents. expressions) decomposes a conjunction into conjuncts. expressions) decomposes a disjunction into disjuncts. expressions*A smart constructor for binary conjunction expressions*A smart constructor for binary disjunction expressions9A smart constructor for implication (an abbreviation for  not a .|. b) expressionsBA smart constructor for reversed implication (an abbreviation for  a .|. not b) expressions1A smart constructor for if-and-only-if connective expressions#A smart constructor for disequality expressionsLogical tautology expressionsLogical contradiction expressions,A smart constructor for variadic conjunction expressions,A smart constructor for variadic disjunction expressions A smart constructor for negation expressions1Test whether an expression contains a quantifier. expressions6Tests whether an expression is free of any quantifier. expressionsACollects a list of all free variables occurring in an expression. expressions7A smart constructor for universally quantified formulae expressions9A smart constructor for existentially quantified formulae expressionsXPropagates negation toward boolean atoms (across conjunction, disjunction, quantifiers). expressionsVPuts an expression into prenex form (quantifier prefix and a quantifier-free formula). expressionsUReplaces non-variable and non-constant arguments to uninterpreted functions (such as  and `) with a fresh bound (universally or existentially) variable that is bound to the original term. expressions Replaces ( with an instance of its axiomatization.  ()* +,!"#$&56789:;<CDEFGHIJKLMNOP\]^_`abcdefghijklmnoqrsz{|^  ()* +,!"#$&56789:;<654437T !"#$%&'()*++,-./01234*56789:;<=>?@ABCDDEEFGHIJKLMNOPQRSTUVWXYZ[\]^_`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&expressions-0.2-Br7keYHSGKqJSiJjlThFejData.Expression.Sort Data.Expression.Utils.Indexed.Eq&Data.Expression.Utils.Indexed.Foldable"Data.Expression.Utils.Indexed.Show%Data.Expression.Utils.Indexed.Functor)Data.Expression.Utils.Indexed.Traversable!Data.Expression.Utils.Indexed.SumData.Expression.ParserData.Expression.IfThenElseData.Expression.EqualityData.Expression.ArrayData.Expression.ArithmeticData.Expression'singletons-2.4.1-CPkrVyNL0Sy7pQw5p6j80u!Data.Singletons.Prelude.InstancesSTuple2STuple3STuple4STuple5STuple6STuple7STrueSFalseSGTSEQSLTSTuple0Data.Singletons.Internal applySingSLambdaSingIEq1ieq1IEqieq IFoldableifoldIShowishowIFunctorimapindexIFixunIFixicata$fEqIFix $fIEqiIFix $fShowIFixSort BooleanSort IntegralSort ArraySortelement$fEqSort SBooleanSort SIntegralSort SArraySortsIndexsElement$fSingISortArraySort$fSingISortIntegralSort$fSingISortBooleanSort$fSingKindSort'$fSuppressUnusedWarnings(->)ElementSym0%$fSuppressUnusedWarnings(->)IndexSym0)$fSuppressUnusedWarnings(->)ArraySortSym1)$fSuppressUnusedWarnings(->)ArraySortSym0DynamicallySorted DynamicSort toStaticSorttoDynamicallySortedtoStaticallySorted parseSort $fShowSing $fShowSort $fSDecideSort$fEqDynamicSort$fShowDynamicallySorted$fEqDynamicallySorted ITraversable itraverseimapM:<<::<:injprj:+:InLInRinjectmatchembedrestrict $fIShowkk:+:$fITraversablei:+:$fIFoldablei:+: $fIEq1i:+:$fIFunctori:+: $f:<:kf:+: $f:<:kf:+:0$f:<:iff $f:<<:kf:+: $f:<<:kf:+:0 $f:<<:iff ParseableparserParserContextparse parseWithcharchoicedecimaldigitlettermany1sepBy1signedspacestring identifier assertSort assumeSort$fParseable(->):+:h IfThenElseF IfThenElseite$fParseable(->)IfThenElseFf$fIShowSortSortIfThenElseF$fITraversableSortIfThenElseF$fIFoldableSortIfThenElseF$fIFunctorSortIfThenElseF$fIEq1SortIfThenElseF EqualityFEquals.=.$fParseable(->)EqualityFf$fIShowkSortEqualityF$fITraversableSortEqualityF$fIFoldableSortEqualityF$fIFunctorSortEqualityF$fIEq1SortEqualityFArrayFSelectStoreselectstore$fParseable(->)ArrayFf$fIShowSortSortArrayF$fITraversableSortArrayF$fIFoldableSortArrayF$fIFunctorSortArrayF$fIEq1SortArrayF ArithmeticFConstAddMulDividesLessThancnst.+..*.addmul.\..<..>..<=..>=.$fParseable(->)ArithmeticFf$fIShowSortSortArithmeticF$fITraversableSortArithmeticF$fIFoldableSortArithmeticF$fIFunctorSortArithmeticF$fIEq1SortArithmeticFUnstoreFlattenPrenexNNFMaybeQuantified ExistentialFExists UniversalFForall NegationFNot DisjunctionFOr ConjunctionFAnd SubstitutionrunSubstitutionVarFVar VariableNameComplementedLattice complementALiaQFALiaLiaQFLiaQFLogicALiaFQFALiaFLiaFQFLiaFQFLogicFvarvarsfor substituteliterals conjuncts disjuncts.&..|..->..<-..<->../=.truefalseandornot isQuantifiedisQuantifierFreefreevarsforallexistsnnfprenexflattenunstore$fParseable(->)VarFf$fIShowkSortVarF$fITraversableSortVarF$fIFoldableSortVarF$fIFunctorSortVarF$fIEq1SortVarF$fMonoidSubstitution$fSemigroupSubstitution$fParseable(->)ConjunctionFf$fIShowSortSortConjunctionF$fITraversableSortConjunctionF$fIFoldableSortConjunctionF$fIFunctorSortConjunctionF$fIEq1SortConjunctionF$fParseable(->)DisjunctionFf$fIShowSortSortDisjunctionF$fITraversableSortDisjunctionF$fIFoldableSortDisjunctionF$fIFunctorSortDisjunctionF$fIEq1SortDisjunctionF$fParseable(->)NegationFf$fIShowSortSortNegationF$fITraversableSortNegationF$fIFoldableSortNegationF$fIFunctorSortNegationF$fIEq1SortNegationF$fComplementedLatticeIFix$fBoundedLatticeIFix$fBoundedMeetSemiLatticeIFix$fBoundedJoinSemiLatticeIFix $fLatticeIFix$fMeetSemiLatticeIFix$fJoinSemiLatticeIFix$fComplementedLatticeIFix0$fBoundedLatticeIFix0$fBoundedMeetSemiLatticeIFix0$fBoundedJoinSemiLatticeIFix0$fLatticeIFix0$fMeetSemiLatticeIFix0$fJoinSemiLatticeIFix0$fComplementedLatticeIFix1$fBoundedLatticeIFix1$fBoundedMeetSemiLatticeIFix1$fBoundedJoinSemiLatticeIFix1$fLatticeIFix1$fMeetSemiLatticeIFix1$fJoinSemiLatticeIFix1$fParseable(->)UniversalFf$fIShowSortSortUniversalF$fITraversableSortUniversalF$fIFoldableSortUniversalF$fIFunctorSortUniversalF$fIEq1SortUniversalF$fParseable(->)ExistentialFf$fIShowSortSortExistentialF$fITraversableSortExistentialF$fIFoldableSortExistentialF$fIFunctorSortExistentialF$fIEq1SortExistentialF$fComplementedLatticeIFix2$fBoundedLatticeIFix2$fBoundedMeetSemiLatticeIFix2$fBoundedJoinSemiLatticeIFix2$fLatticeIFix2$fMeetSemiLatticeIFix2$fJoinSemiLatticeIFix2$fComplementedLatticeIFix3$fBoundedLatticeIFix3$fBoundedMeetSemiLatticeIFix3$fBoundedJoinSemiLatticeIFix3$fLatticeIFix3$fMeetSemiLatticeIFix3$fJoinSemiLatticeIFix3$fMaybeQuantifiedkf$fMaybeQuantifiedk:+:!$fMaybeQuantifiedSortExistentialF$fMaybeQuantifiedSortUniversalF$fMaybeQuantifiedSortVarF $fHasDualfg $fHasDual:+:h$fHasDualExistentialFg$fHasDualUniversalFg$fHasDualDisjunctionFg$fHasDualConjunctionFg$fHasDualNegationFg$fNNFf$fMaybeQuantified'fg$fMaybeQuantified':+:h$fMaybeQuantified'ExistentialFg$fMaybeQuantified'UniversalFg $fPrenexf $fBindkfg$fBind(->):+:h$fBind(->)ExistentialFg$fBind(->)UniversalFg $fBind'fg $fBind':+:h$fBind'DisjunctionFg$fBind'ConjunctionFg$fBind'ArithmeticFg $fBind'VarFg$fMaybeQuantified''fg$fMaybeQuantified'':+:h $fMaybeQuantified''ExistentialFg$fMaybeQuantified''UniversalFg$fMaybeQuantified''ArrayFg $fFlattenf $fForallkfg$fForall(->):+:h$fForall(->)UniversalFg$fAxiomatizedfg$fAxiomatized:+:h$fAxiomatizedArrayFg $fUnstorefbaseGHC.ShowShow