#C|      !"#$%&'()*+,-./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&uvwxyz{|}~''''''''''''''''''''''''''''''''''''''''''''''''((((((((((((((((((((((((()))))))))))***********++++,,,,,,,,, , , , , ,,,,,,,,,,,-------- -!-"-#-$-%-&-'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;/</=/>/?/@/A/B/C/D/E/F/G0H0I0J0K0L0M0N0O1P1Q1R1S1T1U1V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e3f3g3h3i3j3k3l3m4n4o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~44555555555666666666666666666666777777888888888999999999999999999999999:::::::::;;;;;;<<<<<<<<<<<<<========================>>>>>>>>>>>>>>>> > > > > >>>>>>????@@@@@@@@@ @!@"@#@$@%@&@'@(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8B9C:C;C<C=C>C?C@CACBCCCDCECFCGCHCICJCKCLCMCNCOCPCQCRCSCTCUCVCWCXDYDZD[D\D]D^D_D`DaDbDcDdDeDfDgDhDiDjDkDlDmDnDoDpDqDrDsDtDuDvDwDxEyEzE{E|E}E~FFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJKKKK K K K K KKKKKKKKKKKLLLLMMMM M!M"M#M$M%M&M'M(M)M*M+M,M-M.M/M0M1M2M3M4M5M6M7M8M9M:M;M<M=M>M?M@MAMBMCMDMEMFMGMHMIMJMKMLMMMNMOMPMQMRMSMTMUMVMWMXMYMZM[M\M]N^N_N`NaNbNcNdNeNfNgNhNiNjNkOlOmOnOoOpOqPrPsPtPuPvPwPxPyPzP{P|P}P~PPPPPPQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTUVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXX X X X X XXXXXXXXXXXXXXXXXXX X!X"X#X$X%X&X'X(X)X*X+X,X-X.X/X0X1X2X3X4X5X6X7X8X9X:X;X<X=X>X?X@XAXBXCXDXEXFXGXHXIXJXKXLYMYNYOYPYQYRYSYTYUYVYWYXYYYZZ[Z\Z]Z^Z_Z`ZaZbZcZdZeZfZgZh[i[j[k[l[m[n[o[p\q\r]s]t]u]v]w]x]y]z]{]|]}]~]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^__``abbbbbbbcccdeeeeeeeeeeeeeeeeeeeffffffffggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiijklmmnnn n n n n nnnoorbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None_/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ P/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~P|{yzvwxtulmnopqrsghijkbcdefa_`XYZ[\]^STUVWLMNOPQRABCDEFGHIJK<=>?@;:9856741230/}~)/0123456789:;<=>?@A BCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ bastiaan.heeren@ou.nl  provisional portable (depends on ghc) SafeEncode a string to UTF8 format.Decode an UTF8 format string to unicode points(Encode a string to UTF8 format (monadic)8Decode an UTF8 format string to unicode points (monadic)1Test whether the argument is a proper UTF8 string2Test whether all characters are in the range 0-255/QuickCheck internal encoding/decoding functions !"#$% !"#$%bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe&'()*+,-./01&'()*+,-./01bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe 23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 2 bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None4UU bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None Safe bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe Safe/List of symbols defined in calculus1 dictionaryxThis symbol is used to express ordinary differentiation of a unary function. The single argument is the unary function. This symbol is used to express the nth-iterated ordinary differentiation of a unary function. The first argument is n, and the second the unary function. This symbol is used to express partial differentiation of a function of more than one variable. It has two arguments, the first is a list of integers which index the variables of the function, the second is the function. pThis symbol is used to represent indefinite integration of unary functions. The argument is the unary function. This symbol is used to represent definite integration of unary functions. It takes two arguments; the first being the range (e.g. a set) of integration, and the second the function. Safe-List of symbols defined in linalg2 dictionaryThis symbol represents an n-ary function used to construct (or describe) vectors. Vectors in this CD are considered to be row vectors and must therefore be transposed to be considered as column vectors. sThis symbol is an n-ary constructor used to represent rows of matrices. Its arguments should be members of a ring. vThis symbol is an n-ary matrix constructor which requires matrixrow's as arguments. It is used to represent matrices. Safe ,List of symbols defined in logic1 dictionaryThis symbol is used to show that two boolean expressions are logically equivalent, that is have the same boolean value for any inputs. zThis symbol represents the logical not function which takes one boolean argument, and returns the opposite boolean value. This symbol represents the logical and function which is an n-ary function taking boolean arguments and returning a boolean value. It is true if all arguments are true or false otherwise. This symbol represents the logical xor function which is an n-ary function taking boolean arguments and returning a boolean value. It is true if there are an odd number of true arguments or false otherwise. This symbol represents the logical or function which is an n-ary function taking boolean arguments and returning a boolean value. It is true if any of the arguments are true or false otherwise. This symbol represents the logical implies function which takes two boolean expressions as arguments. It evaluates to false if the first argument is true and the second argument is false, otherwise it evaluates to true. /This symbol represents the boolean value true. 0This symbol represents the boolean value false. Safe +List of symbols defined in nums1 dictionaryThis symbol represents the constructor function for integers, specifying the base. It takes two arguments, the first is a positive integer to denote the base to which the number is represented, the second argument is a string which contains an optional sign and the digits of the integer, using 0-9a-z (as a consequence of this no radix greater than 35 is supported). Base 16 and base 10 are already covered in the encodings of integers. This symbol represents the constructor function for rational numbers. It takes two arguments, the first is an integer p to denote the numerator and the second a nonzero integer q to denote the denominator of the rational p/q. .A symbol to represent the notion of infinity. This symbol represents the base of the natural logarithm, approximately 2.718. See Abramowitz and Stegun, Handbook of Mathematical Functions, section 4.1. .This symbol represents the square root of -1. vA symbol to convey the notion of pi, approximately 3.142. The ratio of the circumference of a circle to its diameter. A symbol to convey the notion of the gamma constant as defined in Abramowitz and Stegun, Handbook of Mathematical Functions, section 6.1.3. It is the limit of 1 + 12 + 1Q3 + ... + 1/m - ln m as m tends to infinity, this is approximately 0.5772 15664. A symbol to convey the notion of not-a-number. The result of an ill-posed floating computation. See IEEE standard for floating point representations. Safe,List of symbols defined in quant1 dictionaryThis symbol represents the universal ("for all") quantifier which takes two arguments. It must be placed within an OMBIND element. The first argument is the bound variables (placed within an OMBVAR element), and the second is an expression. This symbol represents the existential ("there exists") quantifier which takes two arguments. It must be placed within an OMBIND element. The first argument is the bound variables (placed within an OMBVAR element), and the second is an expression. Safe/List of symbols defined in relation1 dictionary5This symbol represents the binary equality function. This symbol represents the binary less than function which returns true if the first argument is less than the second, it returns false otherwise. This symbol represents the binary greater than function which returns true if the first argument is greater than the second, it returns false otherwise.7This symbol represents the binary inequality function. This symbol represents the binary less than or equal to function which returns true if the first argument is less than or equal to the second, it returns false otherwise. This symbol represents the binary greater than or equal to function which returns true if the first argument is greater than or equal to the second, it returns false otherwise. MThis symbol is used to denote the approximate equality of its two arguments. Safe-List of symbols defined in transc1 dictionaryThis symbol represents a binary log function; the first argument is the base, to which the second argument is log'ed. It is defined in Abramowitz and Stegun, Handbook of Mathematical Functions, section 4.1 This symbol represents the ln function (natural logarithm) as described in Abramowitz and Stegun, section 4.1. It takes one argument. Note the description in the CMP/FMP of the branch cut. If signed zeros are in use, the inequality needs to be non-strict. ~This symbol represents the exponentiation function as described in Abramowitz and Stegun, section 4.2. It takes one argument. sThis symbol represents the sin function as described in Abramowitz and Stegun, section 4.3. It takes one argument. sThis symbol represents the cos function as described in Abramowitz and Stegun, section 4.3. It takes one argument. sThis symbol represents the tan function as described in Abramowitz and Stegun, section 4.3. It takes one argument. sThis symbol represents the sec function as described in Abramowitz and Stegun, section 4.3. It takes one argument. sThis symbol represents the csc function as described in Abramowitz and Stegun, section 4.3. It takes one argument. sThis symbol represents the cot function as described in Abramowitz and Stegun, section 4.3. It takes one argument. tThis symbol represents the sinh function as described in Abramowitz and Stegun, section 4.5. It takes one argument. tThis symbol represents the cosh function as described in Abramowitz and Stegun, section 4.5. It takes one argument. tThis symbol represents the tanh function as described in Abramowitz and Stegun, section 4.5. It takes one argument. tThis symbol represents the sech function as described in Abramowitz and Stegun, section 4.5. It takes one argument. tThis symbol represents the csch function as described in Abramowitz and Stegun, section 4.5. It takes one argument. tThis symbol represents the coth function as described in Abramowitz and Stegun, section 4.5. It takes one argument. This symbol represents the arcsin function. This is the inverse of the sin function as described in Abramowitz and Stegun, section 4.4. It takes one argument. This symbol represents the arccos function. This is the inverse of the cos function as described in Abramowitz and Stegun, section 4.4. It takes one argument. This symbol represents the arctan function. This is the inverse of the tan function as described in Abramowitz and Stegun, section 4.4. It takes one argument. _This symbol represents the arcsec function as described in Abramowitz and Stegun, section 4.4. _This symbol represents the arccsc function as described in Abramowitz and Stegun, section 4.4. _This symbol represents the arccot function as described in Abramowitz and Stegun, section 4.4. `This symbol represents the arcsinh function as described in Abramowitz and Stegun, section 4.6. `This symbol represents the arccosh function as described in Abramowitz and Stegun, section 4.6. `This symbol represents the arctanh function as described in Abramowitz and Stegun, section 4.6. `This symbol represents the arcsech function as described in Abramowitz and Stegun, section 4.6. `This symbol represents the arccsch function as described in Abramowitz and Stegun, section 4.6. `This symbol represents the arccoth function as described in Abramowitz and Stegun, section 4.6. Safe+List of symbols defined in list1 dictionary This symbol represents a mapping function which may be used to construct lists, it takes as arguments a function from X to Y and a list over X in that order. The value that is returned is a list of values in Y. The argument list may be a set or an integer_interval. QThis symbol represents the suchthat function which may be used to construct lists, it takes two arguments. The first argument should be the set which contains the elements of the list, the second argument should be a predicate, that is a function from the set to the booleans which describes if an element is to be in the list returned. nThis symbol denotes the list construct which is an n-ary function. The list entries must be given explicitly. Safe *List of symbols defined in fns1 dictionaryThe domainofapplication element denotes the domain over which a given function is being applied. It is intended in MathML to be a more general alternative to specification of this domain using such quantifier elements as bvar, lowlimit or condition. cThis symbol denotes the domain of a given function, which is the set of values it is defined over. This symbol denotes the range of a function, that is a set that the function will map to. The single argument should be the function whos range is being queried. It should be noted that this is not necessarily equal to the image, it is merely required to contain the image. xThis symbol denotes the image of a given function, which is the set of values the domain of the given function maps to. HThe identity function, it takes one argument and returns the same value.[This symbol is used to describe the left inverse of its argument (a function). This inverse may only be partially defined because the function may not have been surjective. If the function is not surjective the left inverse function is ill-defined without further stipulations. No other assumptions are made on the semantics of this left inverse. ^This symbol is used to describe the right inverse of its argument (a function). This inverse may only be partially defined because the function may not have been surjective. If the function is not surjective the right inverse function is ill-defined without further stipulations. No other assumptions are made on the semantics of this right inverse. FThis symbol is used to describe the inverse of its argument (a function). This inverse may only be partially defined because the function may not have been surjective. If the function is not surjective the inverse function is ill-defined without further stipulations. No assumptions are made on the semantics of this inverse. fThis symbol represents the function which forms the left-composition of its two (function) arguments. $This symbol is used to represent anonymous functions as lambda expansions. It is used in a binder that takes two further arguments, the first of which is a list of variables, and the second of which is an expression, and it forms the function which is the lambda extraction of the expression    Safe ,List of symbols defined in arith1 dictionaryaThe symbol to represent the n-ary function to return the least common multiple of its arguments. iThe symbol to represent the n-ary function to return the gcd (greatest common divisor) of its arguments.  <The symbol representing an n-ary commutative function plus.  <This symbol denotes unary minus, i.e. the additive inverse.  dThe symbol representing a binary minus function. This is equivalent to adding the additive inverse.  :The symbol representing an n-ary multiplication function.  This symbol represents a (binary) division function denoting the first argument right-divided by the second, i.e. divide(a,b)=a*inverse(b). It is the inverse of the multiplication function defined by the symbol times in this CD.#This symbol represents a power function. The first argument is raised to the power of the second argument. When the second argument is not an integer, powering is defined in terms of exponentials and logarithms for the complex and real numbers. This operator can represent general powering. A unary operator which represents the absolute value of its argument. The argument should be numerically valued. In the complex case this is often referred to as the modulus. A binary operator which represents its first argument "lowered" to its n'th root where n is the second argument. This is the inverse of the operation represented by the power symbol defined in this CD. Care should be taken as to the precise meaning of this operator, in particular which root is represented, however it is here to represent the general notion of taking n'th roots. As inferred by the signature relevant to this symbol, the function represented by this symbol is the single valued function, the specific root returned is the one indicated by the first CMP. Note also that the converse of the second CMP is not valid in general. An operator taking two arguments, the first being the range of summation, e.g. an integral interval, the second being the function to be summed. Note that the sum may be over an infinite interval. An operator taking two arguments, the first being the range of multiplication e.g. an integral interval, the second being the function to be multiplied. Note that the product may be over an infinite interval.                        bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  !"#$%&'()*E       !"#$%&'()*%$#" !'&%*)( !"#$%&'()*bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None?>First argument indicates whether the table has a header or notL-Renders as teletype or monospaced Ideas.Text.MRenders as italic text style.NRenders as bold text style.,+!"#$%,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP&H      +,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP(+,./-012345679>?@DBAG8=;<:CEFHIJKLMNOP'+!"#$%,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP&bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None+QRSTUVWXYZ'()* QRSTUVWXYZ QRSTUVWXYZQRSTUVWXYZ'()*bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NonedcRepresents a common misconception. In certain (most) situations, the two objects are not the same. [\]^_`abcd [\]^_`abcd [\]^_`abcd[\]^_`abcdbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None+eee+ebastiaan.heeren@ou.nl  provisional portable (depends on ghc) None8fghijk,-./0lmnopqrstuvwxyz{|12}34~56789:;<=>?@ABCDEFGHfghijklmnopqrstuvwxyz{|}~uvwxyz{tqrslmnop~}|fghijk$fghijk,-./0lmnopqrstuvwxyz{|12}34~56789:;<=>?@ABCDEFGHbastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe|A menu offers choices and preferences. It stores singleton bindings (thus acting as a finite map) and one special element (). It is an instance of the I and J type classes.Laws: ,   are all associative, and have  as their unit element.Nothing to choose from.Normal (unbiased) choice.Left-preference.Left-biased choice.-One of the alternatives in a list (unbiased).Singleton binding$Special element for denoting success4Equality with a comparison function for the elements*Returns all elements that are in the menu.YReturns only the best elements that are in the menu with respect to left-biased choices.KReturns only the best elements that are in the menu, with a given ordering.Is the menu empty?*Get an element from the menu by its index.(Only keep the best elements in the menu.5Generalized monadic bind, with the arguments flipped.DMaps a function over a menu that also takes the index of an element.!KLMNOPQRSTUVKLMNOPQRSTUVKNOPbastiaan.heeren@ou.nl  provisional portable (depends on ghc) SafeWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~WXYZbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None+         bastiaan.heeren@ou.nl  provisional portable (depends on ghc) SafeEConstruct a (named) test suite containing test cases and other suites_Turn a QuickCheck property into the test suite. The first argument is a label for the property[Turn a QuickCheck property into the test suite, also providing a test configuration (Args)#All errors are turned into warningsS                         ! " # $ % & ' ( ) * + , - . /H      ,<                         ! " # $ % & ' ( ) * + , - . /bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None !"#$%&'()*+,-..-,+)$,+#"&%('-* !!bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe+;N 0 1 0 1bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe>L 2 3 4 2 3 4"bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe>L 5      6 7 8 9 : ;           5      6 7 8 9 : ;#bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None>CLFor a minimal complete definition, provide an implemention for downs or allDowns. All other functions need an implementation as well, except for change. Note that a constructor (a -> f a) is not included in the type class to allow additional type class constraints on type a.d < = > ? @ A B C D E F G H I J K L M N !"# O$%&'()*+,-./0123456789:; 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, !"#$%&'()*+,-./0123456789:;<=>?@-#$%$ !"&'()*+,-./0456789123:;<=>?@J < = > ? @ A B C D E F G H I J K L M N !"# O$%&'()*+,-./0123456789:; 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$bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None t uAB vC w x y z { |DE } ~ABCDEABCED t uAB vC w x y z { |DE } ~ x y z%bastiaan.heeren@ou.nl  provisional portable (depends on ghc) SafeU&Type class for bi-directional arrows.  - should be used instead of arr8 from the arrow interface. Minimal complete definition:  -.Y,Instances should satisfy the following law:  getSingleton . singleton == Just\A type class for functors that can be applied to a value. Transformation, Rule, and Strategy are all instances of this type class.^Returns zero or one results_>Checks whether the functor is applicable (at least one result)`8If not applicable, return the current value (as default)aMSame as apply, except that the result (at most one) is returned in some monad#FGHIJKLMNOPQRSTUVWXYZ[\]Returns zero or more results^_`ab c FGHIJKLMNOPQRSTUVWXYZ[\]^_`abc\]^_`abYZ[UVWXQRSTcOPKLMNFGHIJFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab c V&bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None+ dCType classfor accessing (and changing) the identifier of an entity.g3Type class for labeling entities with an identifieri Type class i- for constructing identifiers. Examples are newId "algebra.equation", newId ("a", "b", "c"), and newId () for the empty identifier.lAbstract data type for identifiers with a hierarchical name, carrying a description. The data type provides a fast comparison implementation.m8Appends two identifiers. Both parameters are overloaded.n?Get the unqualified part of the identifier (i.e., last string).oUGet the list of qualifiers of the identifier (i.e., everything but the last string).pGet the qualified part of the identifier. If the identifier consists of more than one part, the parts are separated by a period ( ).qGet the current description.riGive a description for the current entity. If there already is a description, both strings are combined.sShow the identifier.t2Compare two identifiers based on their names. Use compare+ for a fast ordering based on hash values.)defghijkl m nopqrst 1      defghijklmnopqrstlijkmdefnoprqstgh defghijkl m nopqrst mbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"C~Minimal complete definition: toView or both match and build.generalized monadic variant of match#Specialized version of traverseViewGuvwxyz {|} ~   9 uvwxyz{|}~;  ~}z{|{|wxyuv4uvwxyz {|} ~   'bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None+E   012   (bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None;N$A type class for types as references,A data type for references (without a value)  Identifier A pretty-printer A parser Conversion to/from term2           )bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"       *bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None$Abstract data type for substitutionsReturns the empty substitution Returns a singleton substitution Turns a list into a substitutionCombines two substitutions. The left-hand side substitution is first applied to the co-domain of the right-hand side substitutionsLookups a variable in a substitution. Nothing indicates that the variable is not in the domain of the substitution/Returns the domain of a substitution (as a set)Apply the substitution     +bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneThis function returns the difference, except that the returned terms should be logically equivalent. Nothing can signal that there is no difference, or that the terms to start with are not equivalent.  ,bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None,                                !                      -bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe%Tests whether the derivation is empty+Returns the number of steps in a derivationAll terms in a derivationAll steps in a derivation ZThe triples of a derivation, consisting of the before term, the step, and the after term.&7Apply a monadic function to each term, and to each step  !"#$%&    !"#$%& !"#$%&  !"#$%&   .bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe(The root of the tree)Is this node an endpoint?* All branches+aConstructs a node without branches; the boolean indicates whether the node is an endpoint or not,=Branches are attached after the existing ones (order matters) 'Returns the annotations at a given node.$Returns all subtrees at a given node/eReturns all leafs, i.e., final results in derivation. Be careful: the returned list may be very long0dThe argument supplied is the maximum number of steps; if more steps are needed, Nothing is returned2Restrict the height of the tree (by cutting off branches at a certain depth). Nodes at this particular depth are turned into endpoints39Restrict the width of the tree (by cutting off branches). FCommit to the left-most derivation (even if this path is unsuccessful) kFilter out intermediate steps, and merge its branches (and endpoints) with the rest of the derivation tree8-All possible derivations (returned in a list)9The first derivation (if any):2Return a random derivation (if any exists at all)' ()*+,- ./0123  456789:   '()*+,-./0123456789:'()*+,-()*./023165479:8' ()*+,- ./0123  456789:   /bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe>L<1The type associated with a step in the first set.="The ready predicate (we are done).>The firsts set.AThe empty sequence.BPrepend a symbol to a sequence.CAppend two sequences.DSingleton sequence.ESequential composition. ;<=>?@ABCDEF ;<=>?@ABCDEF ?@ABCDE;<=>F;<=>?@ABCDEF BC0bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe GHIJKLMN ! "GHIJKLMNIHGJLMKN GHIJKLMN ! "1bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None OPQRS # $T % & 'UOPQRSTUQRSTPOU OPQRS # $T % & 'U2bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None3579;N$VWXYZ ( )[ * + , -\] . / 0^_`a 1bcd 2 3 4 5 6 7 8 9 : ; <VWXYZ[\]^_`abcdXYZ[[\]^_VWbcd`aVWXYZ ( )[ * + , -\] . / 0^_`a 1bcd 2 3 4 5 6 7 8 9 : ; <]pbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None?VWXYZ[\]^_`abcd3bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None3579;N = >e ? @fg Ahijkl B C D E F G Hefghijklgefhijkl = >e ? @fg Ahijkl B C D E F G Hf4bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"INnAAbstract data type for a context: a context stores an envrionent.rConstruct a contextw-Lift a rule to operate on a term in a contextxWApply a function at top-level. Afterwards, try to return the focus to the old position$m I J Kn L M Nopqrstu O P Q R S T Uvwxyz{|}~ V W X Ymnopqrstuvwxyz{|}~nropqmstuwvyzx{|}~m I J Kn L M Nopqrstu O P Q R S T Uvwxyz{|}~ V W X Y5bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None Z [ \ ] ^ _ ` a b c d   Z [ \ ] ^ _ ` a b c d6bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"IN=A type class for constructing a transformation. If possible,  makeTransK should be used. Use specialized constructor functions for disambiguation.Overloaded variant of transLiftContextOverloaded variant of transLiftContext; ignores result, e f g h i j k l m n o p q r s t u v w x y z {  e f g h i j k l m n o p q r s t u v w x y z {7bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None | |8bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None } ~     } ~  9bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None7)Abstract data type for representing rules Unique identifier of the rule 2Inspect whether or not the rule is buggy (unsound) uReturns whether or not the rule is minor (i.e., an administrative step that is automatically performed by the system)NA special (minor) rule that is never applicable (i.e., this rule always fails)7A special (minor) rule that always returns the identityaA special (minor) rule that checks a predicate (and returns the identity if the predicate holds)2Perform the function after the rule has been fired(  !  qbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneG:bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None     ;bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe>L6Process data type with efficient support for sequencesUGeneralized equality of processes, which takes an equality function for the symbols.      <bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None>LVA path encodes a location in a strategy. Paths are represented as a list of integers.<The error prefix (i.e., without a location in the strategy).4Make a prefix from a core strategy and a start term.cConstruct a prefix by replaying a path in a core strategy: the third argument is the current term.UTransforms the prefix such that only major steps are kept in the remaining strategy.The searchModePrefix transformation changes the process in such a way that all intermediate states can only be reached by one path. A prerequisite is that symbols are unique (or only used once).Returns the current Path.The empty path.             =bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneIN!    >bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None>ILN .A strategy which is labeled with an identifier)Type class to turn values into strategies!Abstract data type for strategiesLabels a strategy with an identifier. Labels are used to identify substrategies and to specialize feedback messages. The first argument of  can be of type  K, in which case the string is used as identifier (and not as description).!Removes the label from a strategy1Construct the empty prefix for a labeled strategy^Construct a prefix for a path and a labeled strategy. The third argument is the current term.gConstruct a prefix for a list of paths and a labeled strategy. The third argument is the current term.^Construct a prefix for a path and a labeled strategy. The third argument is the initial term.EReturns a list of all major rules that are part of a labeled strategyAApply a function to all the rules that make up a labeled strategy jUse a function as do-after hook for all rules in a labeled strategy, but also use the function beforehand CUse a function as do-after hook for all rules in a labeled strategy,                  (        ?bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None?Returns a list of all strategy locations, paired with the label  @bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None4#Allows all permutations of the list#3Apply a certain strategy or do nothing (non-greedy)$@Apply a certain strategy if this is possible (greedy version of #)%8Repeat a strategy zero or more times (greedy version of  )&:Apply a certain strategy at least once (greedy version of !)'RApply the strategies from the list exhaustively (until this is no longer possible)   !"#$%&' !"#$%&' !"#$%&'   !"#$%&'Abastiaan.heeren@ou.nl  provisional portable (depends on ghc) None>L7?Apply a strategy at least once, but collapse into a single step!()*+,-. / 012 34567 ()*+,-./01234567/0()*+,-.1245673()*+,-.  / 012 34567 Bbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None8 888 Cbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None:<Put two strategies in sequence (first do this, then do that);=Choose between the two strategies (either do this or do that)<Interleave two strategies=Alternate two strategies>/Prefixing a basic rule to a strategy atomically?FInitial prefixes (allows the strategy to stop succesfully at any time)@:The strategy that always succeeds (without doing anything)AThe strategy that always failsB5Makes a strategy atomic (w.r.t. parallel composition)C)Puts a list of strategies into a sequenceD)Combines a list of alternative strategiesE)Merges a list of strategies (in parallel)H#Allows all permutations of the listI1Repeat a strategy zero or more times (non-greedy)J3Apply a certain strategy at least once (non-greedy)K*Apply a strategy a certain number of timesL3Apply a certain strategy or do nothing (non-greedy)MeChecks whether a predicate holds for the current term. The check is considered to be a minor step.NCheck whether or not the argument strategy cannot be applied: the result strategy only succeeds if this is not the case (otherwise it fails).O8Repeat a strategy zero or more times (greedy version of I)P:Apply a certain strategy at least once (greedy version of J)Q@Apply a certain strategy if this is possible (greedy version of L)RaChoose between the two strategies, with a preference for steps from the left hand-side strategy.StLeft-biased choice: if the left-operand strategy can be applied, do so. Otherwise, try the right-operand strategyT2Repeat the strategy as long as the predicate holdsU-Repeat the strategy until the predicate holdsVRApply the strategies from the list exhaustively (until this is no longer possible)W]Create a strategy from a dependency graph with strategies as nodes Does not check for cycles9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW:;<=>?@ABCDEFGHIJKLMNOPQRSTUV9W9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVW:;<=>RSDbastiaan.heeren@ou.nl  provisional portable (depends on ghc) Noneqleft-most innermost traversal.rleft-most outermost traversal.;X Y Z [\]^_`abcd efghijklmnopqrstuvw XYZ[\]^_`abcdefghijklmnopqrstuvw YZX[\]^_`abcdefghikmnopjlqrstuvw*X    Y Z [\]^_`abcd efghijklmnopqrstuvw Ebastiaan.heeren@ou.nl  provisional portable (depends on ghc) Nonexyz{|}xyz{|}xyz{|}xyz{|}xyz{|rbastiaan.heeren@ou.nl  provisional portable (depends on ghc) Noned  ()*+,-./012345679:;<=>?@ABCDEHIJKLMNOPQRSTUVWXYZ[\]^cdefghijklmnopqrstuvw}8:;<=>@AB?CD}EHIJKLMNOPQSRVTU9W  bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneC5Minimal complete definition: inverse or appendInverse~   ~~~   Fbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None3Not all monoids are idempotent (see: idempotentFor)Gbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneC=                          %                        Hbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneIbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneC/  ! " # $ % & ' ( ) * + , - . / 0  ! " # $ % & ' ( ) * + , - . / 0Jbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None 1 2 3 4 5 1 2 3 4 5Kbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneCG& 6      7 8 9 : ; < = > ? @ A B C D E F G H           6      7 8 9 : ; < = > ? @ A B C D E F G HLbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None;N I J K L M N O P Q R S I J K L M N O P Q R SMbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None+IN6# The status of an exercise class.$<A released exercise that has undergone some thorough testing%4A released exercise, possibly with some deficiencies&%An exercise that is under development'-An exercise for experimentation purposes only(1For constructing an empty exercise, use function = or >.*6Identifier that uniquely determines the exercise: see d) for how to use values with identifiers.+The status of the exercise.,QParser for expressions of the exercise class, which either results in an error ( T) or a result ( U).-hPretty-printer for expressions of the exercise class. Pretty-printing should be the inverse of parsing..UTests wether two expressions (with their contexts) are semantically equivalent. Use LF for defining the equivalence check when the context is not relevant./Tests wether two expressions (with their contexts) are syntactically the same, or nearly so. Expressions that are similar must also be equivalent. Use L: if the context is not relevant for the similarity check.0Predicate suitable identifies which expressions can be solved by the strategy of the exercise class. It acts as the pre-condition of the strategy.1Predicate ready checks if an expression is in a solved form (accepted as a final solution). It acts as the post-condition of the strategy.2=The rewrite strategy that specifies how to solve an exercise.3Is it possible to restart the rewrite strategy at any point in time? Restarting the strategy is needed when a student deviates from the strategy (detour). By default, restarting is assumed to be possible.4PAre there extra rules, possibly buggy, that do not appear in the strategy? Use B to get all rules.5The rule ordering is a tiebreaker in situations where more than one rule can be used (e.g. feedback services onefirst and derivation; other feedback services return all possible rules).6A navigator is needed for traversing the expression and for using the traversal strategy combinators. By default, an exercise has no navigator.7<A finite list of examples, each with an assigned difficulty.89A generator for random exercises of a certain difficulty.9DAn exercise generator for testing purposes (including corner cases).:%Conversion to and from the (generic) L datatype. Needed for representing the expression in the OpenMath standard.;iRepresentation of the type of expression: this provides a back door for exercise-specific functionality.<OExtra exercise-specific properties, not used by the default feedback services.=The =H constructor function provides sensible defaults for all fields of the ( record.>In addition to the defaults of =$, this constructor sets the fields -, /, and :.?$Pretty print a value in its context.@,Checks if an expression is in a solved form.AGChecks if the expression is suitable and can be solved by the strategy.B3Returns a sorted list of rules, without duplicates.C4Finds a rule of an exercise based on its identifier.DMakes a rule ordering based on a list of values with identifiers (e.g., a list of rules). Rules with identifiers that are not in the list are considered after the rules in the list, and are sorted based on their identifier.EAn exercise with the status $ or %FAn exercise that is not publicGuParser for difficulty levels, which ignores non-alpha charactes (including spaces) and upper/lower case distinction.H4Assigns a difficulty level to a list of expressions.J>Returns the examples of an exercise class lifted to a context.K6Puts a value into a context with an empty environment.LYFunction for defining equivalence or similarity without taking the context into account.M,Encapsulates a type representation (use for ; field).NLCast from polymorphic type (to exercise-specific type). This only works if ;( contains the right type representation.OLCast to polymorphic type (from exercise-specific type). This only works if ;( contains the right type representation.P7Set an exercise-specific property (with a dynamic type)Q5Get an exercise-specific property (of a dynamic type)R}Makes a random exercise generator from a QuickCheck generator; the exercise generator ignores the difficulty level. See the 8 field.SnMakes a random exercise generator based on a QuickCheck generator for a particular difficulty level. See the 8 field.T`Returns a random exercise of a certain difficulty with some random number generator. The field 8W is used; if this is not defined (i.e., Nothing), one of the examples is used instead.UCReturns a list of randomly generated terms of a certain difficulty.VhShows the default derivation for a given start term. The specified rule ordering is used for selection.WVShows all derivations for a given start term. Warning: there can be many derivations.XiPrints the default derivation for a given start term. The specified rule ordering is used for selection.YWPrints all derivations for a given start term. Warning: there can be many derivations.Z`Adds the difference of the environments in a derivation to the steps. Bindings with identifier locationH are ignored. This utility function is useful for printing derivations.J V W !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY XZ[\ Y Z [ \ ] ^A !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\A()*+,-./0123456789:;<=>?@ABCD#$%&'EF" !GHIJKLMNOPQRSTUVWXYZ[\, V W !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY XZ[\ Y Z [ \ ] ^Nbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None]^_`abcdefghij ]^_`abcdefghiab]^_`jcdefghi ]^_`abcdefghijObastiaan.heeren@ou.nl  provisional portable (depends on ghc) NonekAlias for strategy combinator faillAlias for strategy combinator notmAlias for strategy combinator repeatnAlias for strategy combinator  replicateoAlias for strategy combinator sequencepAlias for strategy combinator untilklmnop       "#$%,3FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&VWXYZ[\]^_`abcdmnopqrstuvwxyz{|}~  ()*+,-./012345679:;<=>?@BDEHIJLMPQRSTVWXYZ[\]^cdefghijklmnopqrstuvw} !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\klmnopklmnopklmnopPbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None>L _EProduces a 80 bit random number, represented as 20 hexadecimal digitsq `rstuvwx ayz{|}~ _ b c d e>qrstuvwxyz{|}~qrstuvw~z{|}rstyuvw>xq `rstuvwx ayz{|}~ _ b c d eQbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneIN f g h f g hRbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None%$% Sbastiaan.heeren@ou.nl provisionalportable (depends on ghc)None4KThe Record datatype is based on the Ideas Request Logging Schema version 2.0Add record information from the Request datatypeAAdd record information from the state (userid, sessionid, taskid)& i j k l m n o i j k l m n oTbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None p q r s t u v  p q r s t u vUbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None w x y z { | w x y z { |Vbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneWbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None) } ~   } ~  Xbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"345IN\      !"# $%&'( )*+,-./0123456789:;<=>?@ABCDEFGHIJK N      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKP#$%&'$%      !"(>:92;<=3?HI.7/41DGF,@A6*)-+5JBEC08K9       !"# $%&'( )*+,-./0123456789:;<=>?@ABCDEFGHIJK  -Ybastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneLMNOPQRST UVWXYLMNOPQRSTUVWXYVWQORSTUMNLPYXLMNOPQRST UVWXYZbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None357Z[\]^_`abcdefg Z[\]^_`abcdefgZ[\]^_`abcedfgZ [\]^_`abcdefg [bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None357 hijklm nohijklmnonhijklmohijklm no\bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Nonepq pqqppq ]bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Nonerstuvwxyz{|}~ rstuvwxyz{|}~rstuvwxyz{|}~ r stuvwxyz{|}~ ^bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneING       z             :        _bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"              `bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"              abastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"                          bbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None357>L !DContinue with a prefix until a certain strategy location is reached.  " # ! $ % " # ! $ %cbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"IN & ' ( ) * + , - & ' ( ) * + , -dbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  . / 0 1 2 3 4 5  . / 0 1 2 3 4 5ebastiaan.heeren@ou.nl  provisional portable (depends on ghc) None$ 6 7 8 9 : ; < = > ? @ A B C D E F  6 7 8 9 : ; < = > ? @ A B C D E Ffbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None357  G  Ggbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!" H I J K L M N O P Q R S T U V W X H I J K L M N O P Q R S T U V W Xhbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneIN8 Y Z [ \ ] ^ _ ` a b.." Y Z [ \ ] ^ _ ` a bibastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"2 c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  2 c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  jbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  kbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None    lbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  mbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None+ + nbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None                        obastiaan.heeren@ou.nl  provisional portable (depends on ghc) None #rstuvwxyz{|}~# stustvstwsxysz{st|st}st~stststststststststsssssxsxsxsxsxsxsxsxsx                              ! " # $ % & '()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                       ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7!8!8!9!:!:!;!<!=!>!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!NOPQRSTUVWXYZ[\]^_`abcdefgh"i"j"k"l"v"m"n"o"p"q"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*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-{-|-}-~-....................////////////0000000011111112222222222222223333333344444444444444444445555555556666666666666666666667777778888888889999999 9 9 9 9 9999999999999:::::: :!:":#;$;%;&;';(;n<)<*<+<,<-<.</<0<1<2<3<4<5=6=6=7=8=8=9=:=:=;=<=<===>=?=@=A=B=C==D=E=F==G>H>I>J>K>L>M>N>h>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@uAvAwAxAyAzA{A|A}A~AAAAAAgABCCCCCCCmCCChCCCiCCCkCnCoCpCqCCCsCtCrCCCCCuCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEjElEEEyEFGFFFFFFFFFFFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHHHHHHHHH H H I I I IIIIIIIIIIIIIIIIIIIII I!I"I#I$I%J&J'J(J)J*J+J,J-J.J/J0J1J2J3J4K5K5K6K7K7K8K9K9K:K;K;K<K=K>K?KKK@KALBLCLDLEMFMGMHMIMJMKMLMMMMNMOMPMQMRMSMTMUMVMWMXMYMMZM[M\M]M^M_M`MaMbMcMdMeMfMgMhMiMjMkMlMmMnMoMMpMqMrMsMtMuMvMwMxMyMzM{M|M}M~MMMMMNNNNNNNNNNNNNNOOOOOOPPPPPPPPPPPPPPPPPYPPQQQQQRRRRRRRRRRRRRRRRRRSRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTUVVVVWWWWWWWWWWWWWW W W WBW W WWWWWWWWWWWXXXXXQXKXXXXXXXX6X XXXXXX XX!X"X#X$X%X&X'X(X)XX*X+X,X-X.XX/X0X1X2X3X4X5X6X7X8X9X:X;X<X=X>X?X@XAXBXCXDXEXFXGXHXIXJXKXLXMXNXOXPXQXRXSXTXUXVYWYXYYYZY[Y\Y]YY^YY_Y`YaYbZcZdZZeZfZgZhZiZjZkZlZmZYZZ[[[e[n[i[k[o[p\q\r]s]t]u]v]w]x]y]z]{]]]|]}]~]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^__``abbnbbbbbcccde6eeeeeeeeeeeeeeeeeeffffffffggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiijklmmnnnnnnnnnnoo      !"#$%&'()*+,*+-*+.*+/*+0*+1*+2*34*35*3**36*37*38*9:*;<*;=*;>*;?*;@*;A*;B*;C*;D*;E*;F*;G*;<*;H*I*IJ*IK*IL*IM*IN*IO*IP*IQ*IR*IS*IT*IU*I*I*IV*IW*Xr*XY*XZ*[\*[]*[^*[_*`a*`b*`c*de*df*dg*dh*di*dj*dk*dl*dm*dn*do*dp*dq*dr*ds*do*dt*d*du*dv*dq*d*wx*wy*wz*w{*w|*w*w}*w~*w*w*w*w*wn*w*w*w*w*w*w*wh*w*w*w*w*w*w*w*w**************  P O                                                                            u sssssssssssssssssssssssssssz;      sx!sx"##($%&'()*+,-./01201301401501601708908:08;08<08=08>08?08@08A08B08C08D08E08F08G08G08H08I08J08K08L08M08N08O08P08Q08R080808S08T080UV0UW0UA0UX0U@0UY0UZ0U[0U\0U]0U^0U_0U`0Uh0U0Ua0Ub0Uc0Ud0Ue0Uf0Ug0Uh0Ui0Uj0Uk0Uu0Ul0Um0Un0Un0op0oq0oq0or0o0o0os0ot0ou0ov0ow0ox0oy0oz0oz0o{0o|0o|0o}0o~0o~0o0o0o0o0o0o0o0o0o0o;0o;0o0o0o0o0o00000000000000000000000000000000000000000000X0000000   n                     U                   !!O"""""""##########y# # # # # # # # # # #^# # # # # # # # # # # # # # # # # # # # # # # # !# "# ## $# %# &# '# (# )# *# +# ,$ -$ -$ .$ /$V$ 0$ 1$ 2$ 3$ 4$ 5% 6% 7% 8% 9% :sx ;&& <& =& >& ?& @& 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' {' |' }' ~' ' ' ' ' ( ( (U( (( (7(:( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ) ) ) ) ) )) ) ) ) ) ) ) ) ) ** * * * + + + , , , , , , , , , , , , , , , , , , , , -- - - . . . . .. . / 0 0 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 33 3 3 3 3 3 3 4 44 4 4 4 4 4 4 4 4 4 4 4 4 4 4 55 5'5 5 5 5 5 5 5 5 6 6&6 6D6:6 6 6 6 66 6 6 6 6 6 6 6 6 6 6 6 6 7 8 8 8 8 8 !8 "9 9 #9 $99 %9 &9 '9 (9 )9 *9 +9 ,9 -9 .9 /9 0: 1: 2: 3; 4; 5; 6; 7; 8; 9; :<)<*< ;< << =< >< ?< @< A< B< C= = D= E= F= G= H= I= J= Ksx> L>> > M> N> O> P> Q> R> S> T> U> V> W> X> Y> Z> [? \? ]@@ ^@ _A `A aA bA cA dA eA fA gA hA iA jA kA lA mA nA oA pB qB rB sB tD uD vD wD wD xD yD zD {D |D }DD ~DD D D D D D D D D D DD D D          GnG G G G G G G G G G G G G G G G G G G G G G G G G G G G I I I I I I I I I I I I I I I I I I J J J J J K K K K K K K K K K K K K K K K K K K LL UL L L L L VL L L L s  s  M M M M M M M M M P PP P P P P Q Q Q S S S S S S S T T T T T T T U U UU U U WWW W W W W W W W KW XXX X X X X X X X X X X X Y Z [ \ !\\ "\ #\ $\ %\ &\ '\\ (\ )\ *\ +\ \\ ,\ -\ .\ /\\ 0] 1] 2^^^ 3^ 4^ 5^ 6^ 7^^^ 8^ 9^^3^4^ :^ ;^ <^ =^ >^ ?^ @^ A^ B^ C^ D^ E^ F^ G^ H^ I^ J^ K^ L^ M^ N^ O^ P^ Q^ R^ Sst Tst Usx Vsx Ws Xus X Ys X Zs X [s X \s X ]s X ^s X _s X `s X as X ast bst cst dst est fst gst hst ist ist jst kst kst lsx msx nsx osxnsx psxsxsx q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ {_ |_ }` t` v` w` z` |` }` ~` {` ` ` ` a a a a aa a a a a a a a b bb b b c c c c c c c cd d d d d d d d e e e e e e e e e e e e e e e e e fg g g g g g g g g g g g g g g g g h h h h h h h h h h i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i ii i i i i i i i i i i i i i i j k k k k k k k k k l l l l l l lm m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m !m "m #m $m %m &m 'no (o )o * +ideas_HozpuujDvt929Pu6gDC2d0Ideas.Common.ViewIdeas.Text.ParsingIdeas.Common.Traversal.UtilsIdeas.Common.Algebra.GroupIdeas.Common.Utils.UniplateIdeas.Text.XML.DocumentIdeas.Text.UTF8Ideas.Text.XML.UnicodeIdeas.Text.XML.ParserIdeas.Text.XML.InterfaceIdeas.Main.RevisionIdeas.Text.OpenMath.Symbol(Ideas.Text.OpenMath.Dictionary.Calculus1&Ideas.Text.OpenMath.Dictionary.Linalg2%Ideas.Text.OpenMath.Dictionary.Logic1$Ideas.Text.OpenMath.Dictionary.Nums1%Ideas.Text.OpenMath.Dictionary.Quant1(Ideas.Text.OpenMath.Dictionary.Relation1&Ideas.Text.OpenMath.Dictionary.Transc1$Ideas.Text.OpenMath.Dictionary.List1#Ideas.Text.OpenMath.Dictionary.Fns1%Ideas.Text.OpenMath.Dictionary.Arith1Ideas.Text.XMLIdeas.Text.HTMLIdeas.Text.OpenMath.ObjectIdeas.Text.OpenMath.FMPIdeas.Text.OpenMath.TestsIdeas.Text.JSONIdeas.Common.Strategy.ChoiceIdeas.Common.Utils.QuickCheckIdeas.Common.Utils.StringRefIdeas.Common.Utils.TestSuiteIdeas.Common.UtilsIdeas.Common.Traversal.Iterator Ideas.Common.Traversal.NavigatorIdeas.Common.Traversal.TestsIdeas.Common.ClassesIdeas.Common.IdIdeas.Common.Rewriting.TermIdeas.Common.Environment"Ideas.Common.Rule.EnvironmentMonad#Ideas.Common.Rewriting.Substitution!Ideas.Common.Rewriting.DifferenceIdeas.Common.CyclicTreeIdeas.Common.DerivationIdeas.Common.DerivationTreeIdeas.Common.Strategy.SequenceIdeas.Common.Rewriting.AC"Ideas.Common.Rewriting.Unification"Ideas.Common.Rewriting.RewriteRuleIdeas.Common.Algebra.LawIdeas.Common.Context!Ideas.Common.Rewriting.Confluence Ideas.Common.Rule.TransformationIdeas.Common.Rule.ParameterIdeas.Common.Rule.RecognizerIdeas.Common.Rule.AbstractIdeas.Common.Strategy.SymbolIdeas.Common.Strategy.ProcessIdeas.Common.Strategy.Prefix"Ideas.Common.Strategy.StrategyTreeIdeas.Common.Strategy.AbstractIdeas.Common.Strategy.LocationIdeas.Common.Strategy.Derived#Ideas.Common.Strategy.ConfigurationIdeas.Encoding.StrategyInfo!Ideas.Common.Strategy.CombinatorsIdeas.Common.Strategy.TraversalIdeas.Common.Strategy.LegacyIdeas.Common.Algebra.GroupLawsIdeas.Common.Algebra.FieldIdeas.Common.Algebra.FieldLawsIdeas.Common.Algebra.Boolean Ideas.Common.Algebra.BooleanLawsIdeas.Common.Algebra.SmartGroupIdeas.Common.PredicateIdeas.Common.ExerciseIdeas.Common.ExerciseTestsIdeas.Common.LibraryIdeas.Service.StateIdeas.Encoding.OpenMathSupportIdeas.Service.RequestIdeas.Main.LoggingIdeas.Main.OptionsIdeas.Encoding.RulePresenterIdeas.Encoding.RulesInfo#Ideas.Service.FeedbackScript.SyntaxIdeas.Service.TypesIdeas.Service.BasicServicesIdeas.Service.DiagnoseIdeas.Service.Submit#Ideas.Service.FeedbackScript.ParserIdeas.Service.DomainReasonerIdeas.Encoding.EncoderIdeas.Encoding.DecoderJSONIdeas.Encoding.DecoderXMLIdeas.Encoding.EncoderJSON"Ideas.Service.ProblemDecompositionIdeas.Encoding.EvaluatorIdeas.Encoding.ModeJSON Ideas.Service.FeedbackScript.RunIdeas.Service.FeedbackTextIdeas.Encoding.EncoderXMLIdeas.Encoding.LinkManagerIdeas.Encoding.EncoderHTMLIdeas.Main.DocumentationIdeas.Encoding.ModeXMLIdeas.Main.BlackBoxTestsIdeas.Service.ServiceList%Ideas.Service.FeedbackScript.AnalysisIdeas.Main.DefaultIdeas.Common.RewritingIdeas.Common.RuleIdeas.Common.Strategybase Control.Arrowarrfirst|||GHC.Base<*> Control.Monad>=>&&&***secondArrow zeroArrow ArrowZero<+> ArrowPlus+++rightleft ArrowChoice Data.Monoid<>Control.Category>>><<< Data.Functor<$><**>mconcatmappendmemptyMonoid<$<**>mplusunipl_H8mkpdtkJGDJiWQISvaoxyData.Generics.Uniplate.Direct||*|-|*plate!Data.Generics.Uniplate.OperationsparaholescontextsrewriteMrewrite transformM transformchildrenuniversedescendMdescenduniplateUniplateExternalTextDecl ConditionalIncludeIgnorePublicID ExternalIDSystemPublic EntityValueAttValue EntityDefAttDef DefaultDeclRequiredImpliedValueFixedAttTypeIdType IdRefType IdRefsType EntityType EntitiesType NmTokenType NmTokensType StringTypeEnumerationType NotationTypeCPChoiceSequence QuestionMarkStarPlusCPName ContentSpecEmptyAnyMixedChildren DocTypeDecl ElementDecl AttListDecl EntityDecl NotationDecl DTDParameterDTDConditionalDTDContentElementname attributescontentXMLTaggedCharDataCDATA ReferenceXMLDoc versionInfoencoding standalonedtd externalsroot ParameterCharRef EntityRef Attribute:= AttributesName prettyXML prettyElementencodedecodeencodeMdecodeMisUTF8allBytes propEncodingisLetter isExtenderisDigitisCombiningChardecodingUnbalancedError NotClosed NotOpened parseSimplecompleteskipnaturalOrFloatfloat<..>rangesstopOnbalanceddocument extSubset extParsedEnt compactXML normalizeparseXML findAttribute findChildren findChildgetData ideasVersion ideasRevisionideasLastChangedSymbol makeSymbol extraSymbol dictionary symbolName showSymbol calculus1List diffSymbol nthdiffSymbolpartialdiffSymbol intSymbol defintSymbol linalg2List vectorSymbolmatrixrowSymbol matrixSymbol logic1ListequivalentSymbol notSymbol andSymbol xorSymbolorSymbol impliesSymbol trueSymbol falseSymbol nums1ListbasedIntegerSymbolrationalSymbolinfinitySymboleSymboliSymbolpiSymbol gammaSymbol naNSymbol quant1List forallSymbol existsSymbol relation1ListeqSymbolltSymbolgtSymbol neqSymbol leqSymbol geqSymbol approxSymbol transc1List logSymbollnSymbol expSymbol sinSymbol cosSymbol tanSymbol secSymbol cscSymbol cotSymbol sinhSymbol coshSymbol tanhSymbol sechSymbol cschSymbol cothSymbol arcsinSymbol arccosSymbol arctanSymbol arcsecSymbol arccscSymbol arccotSymbol arcsinhSymbol arccoshSymbol arctanhSymbol arcsechSymbol arccschSymbol arccothSymbol list1List mapSymbolsuchthatSymbol listSymbolfns1ListdomainofapplicationSymbol domainSymbol rangeSymbol imageSymbolidentitySymbolleftInverseSymbolrightInverseSymbol inverseSymbolleftComposeSymbol lambdaSymbol arith1List lcmSymbol gcdSymbol plusSymbolunaryMinusSymbol minusSymbol timesSymbol divideSymbol powerSymbol absSymbol rootSymbol sumSymbol productSymbol XMLBuilderBuildXML.=. unescapedbuildertagstringtextelementemptyTagInXMLtoXML listToXMLfromXML listFromXMLAttrListAttr parseXMLFilemakeXMLmwhenmunless fromBuilderHTMLPage HTMLBuildershowHTMLaddCSS addScripthtmlPagelinkh1h2h3h4h5h6preTextprehrbrttTextultable keyValueTablespacesspacebulletimagedivClass spanClass highlightXMLidAclassAstyleAtitleAttitalicboldbigsmallOMOBJOMIOMFOMVOMSOMAOMBINDgetOMVs xml2omobj omobj2xmlFMPquantor metaVariables leftHandSiderelation rightHandSidetoObjecteqFMPbuggyFMP RPCHandler RPCResponseResponseresponseResult responseError responseIdInJSONtoJSON listToJSONfromJSON listFromJSONNumberIDKeyJSONStringBooleanArrayObjectNull compactJSON parseJSONlookupMjsonRPCMenuempty.|../.|>choice preferenceorelse|->doneMenuhasDoneeqMenuByelemsbests bestsOrderedisEmpty getByIndexcutonMenuonMenuWithIndexArbGen generator generatorsarbGenconstGen constGensunaryGen unaryArbGen unaryGens binaryGen binaryGenstoArbGencommonuncommonrarechangeFrequency StringRef stringReftoString tableStatus HasRatingratingrateRating HasStatus getStatusStatusMessage messageLinesResult nrOfTests nrOfWarnings nrOfErrors TestSuitesuite usePropertyusePropertyWith assertTrue assertNull assertEquals assertMessageassertIOassertMessageIO onlyWarnings rateOnError runTestSuiterunTestSuiteResult subResults topMessages allMessages findSubResult justOneSuite timeInterval printSummary makeSummarymessagewarningisOk isWarningisError ShowStringfromShowStringSomereadIntreadMsubsets isSubsetOf cartesiandistinctallsamefixpoint splitAtElemsplitsWithElem timedSecondsfst3snd3thd3headM findIndexM elementAtchangeAt replaceAtlistMirrorWrapperwrapunwrapFocusUnfocusfocusfocusMunfocusUpdateupdatecurrentchangereplacechangeMchangeG liftFocus unliftFocus liftWrapper unliftWrapper mapWrapper makeMirror>|<safefixpfixpl ListIteratorIteratornextpreviousfinalpositionisFirstisFinalhasNext hasPrevious searchForwardsearchBackward searchNextsearchPrevious searchWithUniplateNavigatorLeafs Horizontal LevelOrder PostOrderPreOrder NavigatorupdowndownLastchildnrlocationLocation fromLocation toLocationisTopisLeafhasLefthasRighthasUphasDowntopleftMost rightMost leftMostLeaf rightMostLeafdownsdownToaritydepthlevel levelNext levelPrevious leftMostAt rightMostAt navigateTonavigateTowards makePreOrder makePostOrdermakeLevelOrdermakeHorizontal makeLeafs testIterator testNavigatortestslistGenuniGenMinorminorsetMinorisMinorisMajorBuggybuggysetBuggyisBuggyFixfix BiFunctorbiMapmapFirst mapSecondBiArrow<->!-><-! Container singleton getSingletonApplyapplyAllapply applicableapplyDapplyM applyListmapBothHasIdgetIdchangeIdIdentify@>IsIdnewIdconcatIdId# unqualified qualifiers qualification descriptiondescribeshowId compareId ViewPackageLiftViewliftView liftViewIn IsomorphismfromtoViewIsViewbuildtoViewMatcher IsMatchermatchmatchermatchM belongsToviewEquivalentviewEquivalentWith makeMatcher canonical canonicalWithcanonicalWithM isCanonicalisCanonicalWithsimplify simplifyWith simplifyWithMmakeView matcherViewidentityinverseswapViewlistView traverseView$<propIdempotence propSoundnesspropNormalForm WithMetaVarsmetaVar getMetaVarWithVarsvariable getVariable WithFunctionssymbolfunction getSymbol getFunctionIsTermtoTermfromTermTermTVarTConTListTNumTFloatTMeta isAssociative newSymbolmakeAssociativetermView fromTermM fromTermWithisSymbol isFunctionunarybinaryternaryisUnaryisBinary isVariablevarsvarSethasVar withoutVar hasSomeVarhasNoVar variableView isMetaVarmetaVars metaVarSet hasMetaVar nextMetaVarHasRefsgetRefsallRefs getRefIdsHasEnvironment environmentsetEnvironment deleteRef insertRef changeRef EnvironmentBindingmakeRef makeRefListRef makeBinding fromBinding showValue getTermValuemakeEnvironment singleBindingbindings noBindings?EnvMonad:~:?getRef updateRefs runEnvMonad execEnvMonad evalEnvMonad envMonadRefsenvMonadFunctionRefs Substitution emptySubstsingletonSubst listToSubst@@ composable lookupVardom@+@differenceWithdifferenceEqualWith differencedifferenceEqual CyclicTreeAlgfNodefLeaffLabelfRecfVar CyclicTree shrinkTreenodenode0node1node2leaflabelisNodeisLabel replaceNode replaceLabel replaceLeaffold foldUnwindemptyAlg monoidAlg DerivationemptyDerivationprependextendderivationLengthtermsstepstriples firstTermlastTermlastStep withoutLast updateSteps derivationMDerivationTreeendpointbranches singleNode addBranchesmakeTreesubtreesleafs lengthMaxupdateAnnotationsrestrictHeight restrictWidthsortTreemergeMaybeSteps cutOnStep cutOnTerm derivations derivationrandomDerivationFirstsElemreadyfirstsSymdone~>.*.singlesequence firstsTree PairingsPair PairingsListPairings pairingsNone pairingsC pairingsApairingsMatchA pairingsAC SymbolMatchMatchunify matchExtended matchListunificationTests RuleBuilder buildRuleSpec Different different RewriteRule ruleSpecTermRuleSpec:~>makeRewriteRuletermRewriteRule symbolMatcher symbolBuildershowRewriteRulemetaInRewriteRulerenumberRewriteRuleLawSpec:==:LawlawlawAbsmapLaw propertyLaw rewriteLawContextNavigatorContext fromContextfromContextWithfromContextWith2 newContext noNavigator navigator termNavigator contextView liftToContextapplyTopuseuseC currentTerm changeTermcurrentInContextchangeInContextreplaceInContextConfigshowTerm complexity termEquality somewhereM isConfluentcheckConfluencecheckConfluenceWith defaultConfig MakeTrans makeTransTransformationTrans transPure transMaybe transList transEnvMonad transRewritetransReftransUseEnvironment transLiftViewtransLiftViewIntransLiftContexttransLiftContextInmakeTransLiftContextmakeTransLiftContext_ transApplytransApplyWithgetRewriteRules isZeroTrans ParamTranssupplyParameterssupplyContextParameters parameter1 parameter2 parameter3 Recognizer Recognizable recognizer recognizeAll recognizerecognizeTransmakeRecognizermakeRecognizerEnvMonadmakeRecognizerTransRule ruleSiblingstransformationcheckReferencesmakeRule ruleMayberuleList ruleTrans ruleRewrite rewriteRule rewriteRules buggyRule minorRule emptyRuleidRule checkRule isRewriteRule isRecognizer siblingOfdoAfter addRecognizeraddRecognizerBooladdRecognizerEnvMonadaddTransRecognizer LabelSymbol isEnterSymbol AtomicSymbol atomicOpen atomicClose enterRuleexitRule isEnterRule isExitRuleProcess runProcessmenuwithMenu eqProcessByPathPrefix firstsOrderednoPrefix makePrefix replayProcess isEmptyPrefix majorPrefixsearchModePrefix prefixPaths emptyPathreadPath readPathsNaryfromNaryBinary fromBinaryUnary fromUnaryNullary fromNullaryAritylistifytoArityliftIsoDecl combinator Combinator StrategyTree applyDecl associativeLabeledStrategy IsStrategy toStrategyStrategyliftSliftS2liftSnunlabel emptyPrefix replayPath replayPathsreplayStrategyderivationListrulesInStrategymapRules mapRulesScleanUpStrategycleanUpStrategyAftertoStrategyTreeonStrategyTreedecl0decl1decl2declNuseDecl checkLocationsubTaskLocationnextTaskLocationstrategyLocations!*>filterPhideatomic interleave<%>permute<@>initsmanymany1 replicateoptiontryrepeatrepeat1 exhaustive ConfigActionRemoveReinsertCollapseExpandHideReveal StrategyCfgbyName configure configureS isConfigIdremovecollapsemulti strategyToXMLDependencyGraph.%..@.!~>succeedfailnoInterleaving interleaveIdchecknotwhileuntildependencyGraphOptionlayertraversetopdownbottomup leftToRight rightToLeftfullspinestoponceleftmost rightmosttraversalFilter parentFilterfulltdfullbuoncetd oncetdPrefoncebu oncebuPref leftmostbu leftmosttd somewhere somewhereWhen innermost outermostruleUpruleDown ruleDownLastruleLeft ruleRight<|>>|> alternatives CoMonoidZero isMonoidZeroCoGroup isInverse isAppendInvCoMonoidisAppendWithZero fromWithZero MonoidZeromzeroGroup appendInv<>-associativeList leftIdentity rightIdentity identityLaws monoidLawscommutativeMonoidLaws idempotent leftInverse rightInverse doubleInverseinverseIdentityinverseDistrFlipped inverseLaws groupLawsappendInverseLaws commutative inverseDistrabelianGroupLawsleftZero rightZerozeroLawsmonoidZeroLawsassociativeForcommutativeFor idempotentForleftDistributiveForrightDistributiveForCoFieldisRecip isDivisionCoRingisNegateisMinus CoSemiRingisPlusisZeroisTimesisOneSafeNumMultiplicativefromMultiplicativeAdditive fromAdditiveField timesInverse|/|Ring plusInverse|-|SemiRing|+|zerosum|*|oneproductsafeNumleftDistributiverightDistributivedistributiveLaws semiRingLawsleftNegateTimesrightNegateTimesnegateTimesLawsringLawscommutativeRingLawsdistributiveSubtractionLawsexchangeInverses fieldLawsfromAdditiveLawfromMultiplicativeLaw propsFieldOrfromOrAndfromAnd DualMonoid>< dualCompl CoBooleanisAndisOr isComplement<&&><||> complement BoolValuetruefalsefromBoolisTrueisFalseandsorsimplies equivalent conjunctions disjunctions andOverOrLaws orOverAndLawscomplementAndLawscomplementOrLawsabsorptionAndLawsabsorptionOrLaws deMorganAnd deMorganOrdoubleComplementcomplementTruecomplementFalse booleanLaws fromAndLaw fromOrLaw propsBoolean SmartFieldfromSmartField SmartGroupfromSmartGroup SmartZero fromSmartZeroSmart fromSmart.+..-.neg.&&..||. Predicate predicate predicateView evalPredicate DifficultyVeryEasyEasyMedium Difficult VeryDifficultExamplesStable ProvisionalAlpha ExperimentalExercise NewExercise exerciseIdstatusparser prettyPrinter equivalence similaritysuitablestrategycanBeRestarted extraRules ruleOrdering navigationexamplesrandomExercise testGenerator hasTermView hasTypeable properties emptyExercise makeExerciseprettyPrinterContextisReady isSuitablerulesetgetRuleruleOrderingWithisPublic isPrivatereadDifficulty mapExamplesexamplesContext inContextwithoutContext useTypeablecastFromcastTo setProperty getPropertysimpleGenerator useGenerator randomTerm randomTermsshowDerivationshowDerivationsprintDerivationprintDerivationsdiffEnvironmentdefaultDerivationallDerivationsShowAsSshowSfromS checkExerciseexerciseTestSuiteshowAscheckParserPrettycheckParserPrettyExpropRule checkExamples checksForTermchecksForDerivation $fShowShowAsfailSnotSrepeatS replicateS sequenceSuntilSStateexercise statePrefix stateContext stateUser stateSessionstateStartTerm microsteps stateTerm makeState makeNoStateemptyStateContext emptyState startStaterestart withoutPrefixfinished stateLabels toOpenMath fromOpenMathtoOMOBJ fromOMOBJnoMixedFractionsEncodingEncHTML EncOpenMath EncString EncCompact EncPrettyEncJSON DataFormatSchemaV1V2 NoLoggingRequest serviceIdsourcefeedbackScript requestInfo cgiBinary logSchema randomSeed dataformat emptyRequest getSchema readSchema htmlOutput compactOutput useOpenMath useJSONTerm useLoggingdiscoverDataFormat readEncoding$fShowEncodingLogRefRecordservice exerciseidscript requestinfouserid sessionidtaskidtime responsetime ipaddressversionerrormsg serviceinforuleidinputoutput addRequestaddStatenoLogRef newLogRef changeLogprintLog logEnabled logRecordFlagVersionHelpPrintLog InputFile MakePagesTest MakeScriptFor AnalyzeScript versionTexthelpText fullVersion shortVersiongetFlags ruleToHTML ExampleMap rulesInfoXMLrewriteRuleToFMPcollectExamples Condition RecognizedIs MotivationIsCondNot CondConstCondRefText TextStringTextTermTextRef TextEmpty:<>:DeclType TextForId StringDeclFeedback NameSpaceSupportsSimpleGuardedScript scriptDecls makeScriptmakeText feedbackDecl textForIdDeclincludes textItemsShowFshowFConstServiceStratCfgQCGen SomeExerciseBoolIntTypeRepIso:->IOTagListPair:|:UnitType TypedValue:::EqualequalserviceDeprecatedserviceFunction makeService deprecateequalMtError tDerivationtIOtText.->tStatetMaybe tStrategyCfgtListtUnittPairtString tExercisetContexttBooltInttRule tLocationtTuple3tTuple4tTuple5 tEnvironmenttTerm tDifficultytUserIdtQCGen tExamplestIdtScript tSomeExercisetService tStrategytTreetTestSuiteResultfindValuesOfTypeStepInfogeneratecreatesolution tStepInfo allfirstsonefirstallapplicationsstepsremainingfindbuggyrules recognizeRuleexampleDerivations Diagnosis SyntaxError NotEquivalentSimilar WrongRuleExpectedDetourCorrectUnknowndiagnose tDiagnosisOksubmittResultparseScriptSafe parseScriptDomainReasonerDR reasonerId exercisesservicesviewsaliasesscripts testSuitetDomainReasonernewDomainReasonerexercisesSortedservicesSorted findExercise findService defaultScript TypedDecoderDecoder TypedEncoderEncoderOptions Converter fromOptionsrun getExercisegetQCGen getScript getRequest withExercise withOpenMath withJSONTerm// termToJSON jsonToTerm jsonTermView simpleOptions makeOptions makeEncoder encoderForexerciseEncoder encodeTypedsplitsetInput makeDecoder decoderFor JSONDecoder jsonDecoder XMLDecoder xmlDecoder jsonEncoderReply IncorrectAnswerproblemDecompositiontAnswertReply Evaluator evalService processJSONEnvoldReadyexpected recognized motivationdiffPairbeforeafter afterTextnewEnvironment ruleToStringevalfeedbackDiagnosis feedbackHint feedbackHints feedbackIds attributeIds conditionIdsaccepttMessagederivationtext onefirsttext submittext feedbacktext XMLEncoder xmlEncoder encodeState LinkManager urlForCSS urlForImage urlForRequestisStatic urlForIndexurlForExercisesurlForServices urlForServiceurlForExerciseurlForStrategy urlForRulesurlForExamplesurlForDerivations urlForRuleurlForTestReporturlForRandomExample urlForState urlForFirstsurlForApplicationsurlForDerivationurlForMicrosteps linkToIndexlinkToExerciseslinkToServices linkToServicelinkToExerciselinkToStrategy linkToRuleslinkToExampleslinkToDerivations linkToRulelinkToTestReportlinkToRandomExample linkToState linkToFirstslinkToMicrostepslinkToApplicationslinkToDerivation dynamicLinks stateToXML staticLinkslinksUp pathLevel htmlEncoder htmlEncoderAtmakeDocumentation processXML blackBoxTests serviceListmetaServiceListUnknownExerciseUnknownFeedbackFeedbackUndefined NoTextForRuleUnknownAttributeUnknownCondAttr makeScriptForparseAndAnalyzeScript analyzeScript defaultMain defaultCGIopenTag openCloseTagcloseTag prettyTagprettyAttValue$fPrettyElement $fPrettyXML$fPrettyParameter$fPrettyReference$fPrettyAttribute $fShowElement $fShowXML$fShowParameter$fShowReference$fShowAttributetoUTF8fromUTF8isHighbetweenvalidinMapfintpairs letterMapmerge baseCharMapideographicMapcombiningCharMapdigitMap extenderMapdecode16 decode16X$fShowUnbalancedErrorparse_AtBt9uDOS2NCyWnucTHV3yText.Parsec.Language mondrianDefmondrian haskellDefhaskellemptyDef javaStyle haskellStyle"Text.ParserCombinators.Parsec.ExprbuildExpressionParserPostfixInfixOperator OperatorTable"Text.ParserCombinators.Parsec.Char CharParserText.Parsec.Token LanguageDef caseSensitivereservedOpNames reservedNamesopLetteropStart identLetter identStartnestedComments commentLine commentEnd commentStartGenLanguageDefText.Parsec.CharsatisfyanyCharcharoctDigithexDigitdigitletteralphaNumloweruppertabnewlinenoneOfoneOf"Text.ParserCombinators.Parsec.Prim runParserpzeroText.Parsec.Expr AssocRight AssocLeft AssocNoneAssocText.Parsec.String parseFromFileParser GenParserText.Parsec.CombinatormanyTill notFollowedByeofanyTokenchainr1chainl1chainlchainrcountendByendBy1sepEndBy sepEndBy1sepBy1sepBy skipMany1optional optionMaybeText.Parsec.Prim updateStatesetStategetStatesetParserStategetParserState setPositiongetInput getPosition parseTestparseskipMany tokenPrimEx tokenPrimtoken lookAheadtokenslabels unexpectedstatePos stateInputText.Parsec.ErrorerrorPos ParseErrorText.Parsec.PossetSourceColumn setSourceLine setSourceNameincSourceColumn incSourceLine sourceColumn sourceLine sourceName SourceNameLineColumn SourcePosXMLDecl combiningCharextenderparensbrackets singleQuoted doubleQuotedmspacenameChar spacedNamenmtoken entityValueattValue systemLiteral pubidLiteral pubidCharcharDatacommentpInstrpiTargetcdSectprologxmlDecleq versionNummiscmiscs doctypedecldeclSep intSubset markupdecl extSubsetDeclsdDeclsTag attributeeTag elementdecl contentspeccpcpChoicecpSeqmixed attlistDeclattDefattType stringType tokenizedTypeenumeratedType notationType enumeration defaultDeclconditionalSect includeSect ignoreSectignoreSectContentsignorecharRefhexa reference entityRef peReference entityDeclgeDeclpeDecl entityDefpeDef externalID nDataDecltextDecl encodingDeclencName notationDeclpublicIDBS ignoreLayoutfromBS escapeAttrescapetrim$fBuildXMLXMLBuilder$fMonoidXMLBuildergetDualDualappEndoEndogetAllAllgetAnygetSumSum getProductProductgetFirstFirstgetLastLastgetAltAlttitle styleSheets htmlContent$fInXMLHTMLPage readDouble$fUniplateOMOBJ $fInXMLOMOBJarbOMOBJ RPCRequest requestMethod requestParams requestId prettyJSON okResponse errorResponsearbJSON myStringGen$fArbitraryNumber$fArbitraryJSON$fInJSONRPCResponse$fInJSONRPCRequest$fShowRPCResponse$fShowRPCRequest$fInJSONIOException $fInJSON(,,,) $fInJSON(,,) $fInJSON(,) $fInJSON[] $fInJSONBool $fInJSONChar$fInJSONDouble$fInJSONInteger $fInJSONInt $fShowJSON $fShowNumberFunctorMonadDone:/::|> bestsWith $fFunctorMenu $fChoiceMenu$fEqMenu $fChoice(->) $fChoice[]AGpureGennewGen$fMonoidArbGenQuick_6TxL5Cx3o2p0HsyT59KWiDTest.QuickCheck.AllverboseCheckAll quickCheckAllforAllProperties monomorphicpolyVerboseCheckpolyQuickCheckTest.QuickCheck.TestverboseCheckWithResultverboseCheckResultverboseCheckWith verboseCheckquickCheckWithResultquickCheckResultquickCheckWith quickCheckstdArgschattymaxSizemaxDiscardRatio maxSuccessreplayArgsInsufficientCoverageNoExpectedFailure theExceptionreasonusedSizeusedSeednumShrinkFinalnumShrinkTries numShrinksFailureGaveUpnumTestsSuccessTest.QuickCheck.Property===disjoinconjoin.&. forAllShrinkforAllwithin==>coverclassifycollect expectFailureverbose whenFail'whenFail printTestCasecounterexample noShrinking shrinkingmapSize ioPropertyPropertypropertyTestableDiscardTest.QuickCheck.ModifiersgetBlindBlindgetFixed getOrderedOrdered OrderedList getNonEmptyNonEmpty NonEmptyList getPositivePositive getNonZeroNonZerogetNonNegative NonNegativegetLargeLargegetSmallSmall getShrink2Shrink2 Shrinking shrinkState shrinkInit ShrinkStateTest.QuickCheck.Arbitrary infiniteList orderedListvectorcoarbitraryEnumcoarbitraryShowcoarbitraryRealcoarbitraryIntegralgenericCoarbitraryshrinkRealFracshrinkRealFracToIntegershrinkIntegral shrinkNothingarbitrarySizedBoundedIntegralarbitraryBoundedEnumarbitraryBoundedRandomarbitraryBoundedIntegralarbitrarySizedFractionalarbitrarySizedNaturalarbitrarySizedIntegral shrinkListsubtermsrecursivelyShrink genericShrinkshrink arbitrary Arbitrary coarbitrary CoArbitraryTest.QuickCheck.GeninfiniteListOfvectorOflistOf1listOfgrowingElementsshuffle sublistOfelements frequencyoneof suchThatMaybesuchThatsamplesample'choosescaleresizesizedvariantGenTest.QuickCheck.Exceptiondiscard HashTabletableRefencodeIndexZero extractHash extractIndex hashStringmaxHashatIndexcombineintErr MaxRatingWarningErrorM messageStatus messageRatingsuitescasesdiffTime resultRatingWriteIOCaseSuiteTS makeTestSuiteassertMessageschangeMessagesrunner newlineIndentdotreset suiteResult caseResult getDiffTime returnStrict$fHasRatingRating$fMonoidRating$fMonoidStatus$fHasRatingMessage$fHasStatusMessage$fMonoidMessage $fShowMessage$fHasRatingResult$fHasStatusResult$fMonoidResult $fShowResult$fMonoidTestSuite$fReadShowString$fShowShowString fromMirror$fWrapperMirrorLI$fArbitraryListIterator$fUpdateListIterator$fFocusListIterator$fIteratorListIterator$fShowListIterator$fIteratorMirrorU StrIteratorSIposSIfromSI StrNavigatorSN currentStr strContext fromLeafsHorfromHorLevel fromLevelPostfromPostPrefromPreLsizeStrNavigatorcountStrfirstStrIteratorlastStrIteratorfinalSIokdownWith$fArbitraryUniplateNavigator$fFocusUniplateNavigator$fUpdateUniplateNavigator$fNavigatorUniplateNavigator$fEqUniplateNavigator$fShowUniplateNavigator$fUpdateStrIterator$fFocusStrIterator$fIteratorStrIterator$fFocusStrNavigator$fNavigatorStrNavigator$fIteratorLeafs $fUpdateLeafs$fWrapperLeafs$fIteratorHorizontal$fUpdateHorizontal$fWrapperHorizontal$fIteratorLevelOrder$fUpdateLevelOrder$fWrapperLevelOrder$fUpdatePostOrder$fWrapperPostOrder$fIteratorPreOrder$fUpdatePreOrder$fWrapperPreOrder$fNavigatorMirror$fMonoidLocation$fShowLocationT locationList_go==!==>>prop changeLast $fArbitraryT $fUniplateT errBiArrow$fBiFunctor(,)$fBiFunctorEither$fContainerSet $fContainer[].idList idDescriptionidRefappendIdstringIdisIdCharemptyId $fHasIdEither $fHasIdId $fIsIdEither $fIsIdMaybe $fIsId(,,) $fIsId(,)$fIsId()$fIsId[] $fIsIdChar$fIsIdId $fArbitraryId $fMonoidId$fOrdId$fEqId$fReadId$fShowIdEPpidPrim:@:>>>::***::+++:TraverseunMswapcopy$fHasIdViewPackage$fIdentifyIsomorphism$fHasIdIsomorphism$fIsViewIsomorphism$fIsMatcherIsomorphism$fArrowChoiceIsomorphism$fBiArrowIsomorphism$fArrowIsomorphism$fCategory*Isomorphism$fIdentifyView $fHasIdView $fIsViewView$fIsMatcherView$fArrowChoiceView $fBiArrowView $fArrowView$fCategory*View$fIsMatcherMatchersymbolId$fArbitraryTerm$fWithMetaVarsTerm$fWithVarsTerm$fWithFunctionsTerm $fIsTerm[] $fIsTermChar$fIsTermDouble$fIsTermInteger $fIsTermInt$fIsTermEither $fIsTerm(,)$fIsTermShowString $fIsTermTerm$fUniplateTerm $fHasIdSymbol $fReadSymbol $fShowSymbol $fOrdSymbol $fEqSymbol identifierprinterrefViewenvMap changeEnv$fHasEnvironmentEnvironment$fHasRefsEnvironment$fMonoidEnvironment$fShowEnvironment$fHasIdBinding $fEqBinding $fShowBinding$fReference(,) $fReference[]$fReferenceShowString$fReferenceChar$fReferenceTerm$fReferenceInt $fHasIdRef$fEqRef $fShowRefReturnBindThenFailZeroGetRefenvMonadRefsIOenvMonadFunctionRefsIOsafeIO$fMonadPlusEnvMonad$fMonadEnvMonad$fAlternativeEnvMonad$fApplicativeEnvMonad$fFunctorEnvMonadunS$fArbitrarySubstitution$fShowSubstitution$fMonoidSubstitution collectSymdiffdiffTermAlgNodeLeafLabelRecVararbTree shrinkTreesparidAlg$fArbitraryCyclicTree$fFixCyclicTree$fTraversableCyclicTree$fFoldableCyclicTree$fMonadCyclicTree$fApplicativeCyclicTree$fFunctorCyclicTree$fBiFunctorCyclicTree$fShowCyclicTree$fBiFunctorDerivation$fFunctorDerivation$fShowDerivation annotationscommit mergeStepsDT$fBiFunctorDerivationTree$fFunctorDerivationTree$fSequence(->)dividesplitsmatchA defaultMatch safeZipWithproductsassociativeMatchRruleIdruleShow ruleTermView ruleMatchers ruleBuilders buildFunctionfill buildSpecapplyRewriteRuletoTermRR fromTermRR$fApplyRewriteRule$fRuleBuilder(->)b$fRuleBuilderRuleSpeca$fDifferentTerm$fDifferentChar $fDifferent[]$fHasIdRewriteRule$fShowRewriteRule$fFunctorRuleSpec LawBuilderlawSpecAbsMonoAbs getLawSpec$fRuleBuilderLawSpeca $fTestableLaw$fLawBuilder(->)a$fLawBuilderLawa$fLawBuilderLawSpeca $fShowLawTermNavNoNavCgetEnvironment getNavigatorliftCN navLocationcurrentNavigatorchangeNavigatorcurrentTchangeTcastT$fHasEnvironmentContext$fNavigatorContext $fShowContext $fEqContextTriple normalForm rewriteTerm uniplateNav superImpose criticalPairsnoDiamondPairsnoDiamondPairsWith reportPairsRewriteUseEnv:>>::**::++:Append descendTrans$fHasRefsTrans$fMakeTransEnvMonad $fMakeTrans[]$fMakeTransMaybe $fMonoidTrans$fArrowApplyTrans$fArrowChoiceTrans$fArrowPlusTrans$fArrowZeroTrans $fArrowTrans$fCategory*Trans bindValueunR$fHasRefsRecognizer$fRecognizableRecognizer$fMonoidRecognizer$fLiftViewRecognizer isBuggyRule isMinorRulegetTrans getRecognizer $fHasRefsRule $fMinorRule $fBuggyRule$fRecognizableRule$fLiftViewRule $fHasIdRule $fApplyRule $fOrdRule$fEqRule $fShowRuleinitId$fLabelSymbolRule$fAtomicSymbolRuleP$fFirstsProcess $fFixProcess$fSequenceProcess$fChoiceProcess$fFunctorProcess $fEqProcessgetPaths remainderreorderstopped filterPrefix $fShowPath$fFirstsPrefix$fMonoidPrefix $fShowPrefixdeclId $fArityNary $fArityBinary $fArityUnary$fArityNullary $fHasIdDecl$fEqDecl $fShowDeclLS getProcess$fLiftViewStrategy$fLiftViewLabeledStrategy$fHasIdLabeledStrategy$fApplyLabeledStrategy$fShowLabeledStrategy$fIsStrategyRewriteRule$fIsStrategyRule$fIsStrategyLabeledStrategy$fIsStrategyStrategy $fFixStrategy$fSequenceStrategy$fChoiceStrategy$fApplyStrategy$fShowStrategyfromLoctoLocsplit2%>>ConfigLocationByNameCfg actionGroupsconfigureStrategyTree insertAtLabel removeAtLabelnextId repeatDecl configIds removeDecl collapseDeclhideDecl$fReadConfigAction$fShowConfigLocation$fMonoidStrategyCfg$fShowStrategyCfgnameAttrstrategyTreeToXMLstrategyTreeBuilder addPropertyOunOInfogetVisitgetOp getFilters getTopDown getReversedOpOrElsePreferVisit VisitFirstVisitOne VisitSomeVisitAll VisitManyvisit layerWith traverseWithsetVisitsetOp$fMonoidOptionWZ fromSemiGroup$fCoMonoidZeroWithZero$fCoMonoidWithZero $fCoMonoidSet $fCoMonoid[]$fTraversableWithZero$fMonoidZeroWithZero$fMonoidWithZero Exception safeDivisor$fCoMonoidZeroMultiplicative$fCoGroupMultiplicative$fCoMonoidMultiplicative$fCoGroupAdditive$fCoMonoidAdditive$fFieldSafeNum $fRingSafeNum$fSemiRingSafeNum$fFractionalSafeNum $fNumSafeNum$fMonadSafeNum$fApplicativeSafeNum$fFunctorSafeNum $fShowSafeNum $fOrdSafeNum $fEqSafeNum$fArbitrarySafeNum$fMonoidZeroMultiplicative$fGroupMultiplicative$fMonoidMultiplicative$fApplicativeMultiplicative$fFunctorMultiplicative$fGroupAdditive$fMonoidAdditive$fApplicativeAdditive$fFunctorAdditive$fDualMonoidOr$fMonoidZeroOr $fMonoidOr$fApplicativeOr $fFunctorOr$fDualMonoidAnd$fMonoidZeroAnd $fMonoidAnd$fApplicativeAnd $fFunctorAnd$fCoMonoidZeroOr $fCoMonoidOr$fCoMonoidZeroAnd $fCoMonoidAnd $fBoolean(->) $fBooleanBool$fBoolValue(->)$fBoolValueBooldualDistributivedualAbsorptiondualComplement dualTrueFalsedeMorgan GroupMatch matchGroup$fBooleanSmart$fBoolValueSmart$fFieldSmartField$fRingSmartField$fSemiRingSmartField$fApplicativeSmartField$fFunctorSmartField$fGroupSmartGroup$fMonoidSmartGroup$fApplicativeSmartGroup$fFunctorSmartGroup$fMonoidSmartZero$fApplicativeSmartZero$fFunctorSmartZero $fMonoidSmart$fApplicativeSmart$fFunctorSmartPViewCompl:&&::||:$fIdentifyPredicate$fHasIdPredicate$fBooleanPredicate$fBoolValuePredicate Data.EitherLeftRight IsTypeableITshowThisDerivation$fReadDifficulty$fShowDifficulty$fHasIdExercise$fApplyExercise $fOrdExercise $fEqExercise newSessionId firstsWith $fFirstsState$fHasEnvironmentState $fHasIdState $fShowState idToSymbol hasTermViewMmfSymbolmrefTimeDiffrecord makeRecord getRecordheaderoptionsfileArgtestArgpagesArg makeScrArg analyzeScrArgrewriteRuleToHTML showLeadsTo specialSymbol sameSymbolshowMeta$fUniplateText$fUniplateCondition $fMonoidText$fMonoidScript $fShowText$fShowCondition$fShowDeclType $fShowScript showAsList showTuple $fShowFConst $fShowConst$fShowTypedValue$fShowTypedValue0 $fShowTypeRep$fShowFTypeRep $fEqualConst$fEqualTypeRep$fHasIdService $fShowService setLocation$fShowDiagnosis fromDiagnoseparseOneScriptFiledeclsdecl simpleDecl guardedDecldeclType conditionsingleLineText multiLineTexttextItem identifiers filenamesfilenamelexChar lexStringlexeme$fHasIdDomainReasoner$fMonoidDomainReasonerrunErrorDecrunDecEncrunEncrequestqcGen nullSymbol objectSymbolgetput runErrorM$fMonadPlusError $fMonadError$fAlternativeError$fApplicativeError$fFunctorError$fConverterDecoder$fAlternativeDecoder$fApplicativeDecoder$fFunctorDecoder$fMonadPlusDecoder$fMonadDecoder$fBuildXMLEncoder$fMonoidEncoder$fConverterEncoder$fApplicativeEncoder$fFunctorEncoder$fMonadPlusEncoder$fMonadEncoder$fAlternativeEncoder$fArrowEncoder$fCategory*Encoderapplooppure ApplicativeControl.ApplicativegetConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipListleftApp^<<<<^>>^^>>returnA runKleisliKleisli ArrowApply ArrowMonad ArrowLoopliftA3liftA2liftAsome Alternative decodeType decodeConst decodeRuledecodeIddecodeLocation decodeStateenvToLoclocRef decodePathsdecodeEnvironment decodeContextdecodeExpression decodeOMOBJdecodeConfigurationdecodeArgEnvironment decodeBinding decodeChild JSONEncoderjsonEncodeConstencodeEnvironment encodeContextencodeStateEnvironmentencodeDerivationencodeDerivationText encodeResultencodeDiagnosis jsonTuple ruleShortInfo exerciseInforunPrefixLocation fromAnswerfirstMajorInStepsnextMajorForPrefix EvalResult inputValues outputValue evalResultvalueslogTypeextractExerciseId addVersion jsonRequest defaultSeed stringOption stringOptionM myHandler jsonEvaluatornewEnvironmentFortoText defaultHintmake expectedId recognizedId diffbeforeId diffafterIdbeforeIdafterId afterTextId motivationId oldreadyId hasexpectedIdhasrecognizedIdhasmotivationIdrecognizedbuggyIdxmlEncoderConstbuildExpressionencodeLocationencodeTypedBindingencodeDifficulty encodeText encodeMessageencodeDecompositionReply encodeAsListshowBool simpleRequest makeRequestexerciseRequestexerciseRequestWith stateRequestlinkWith escapeInURLpathUp idToFilePathidToFilePathWith HTMLEncodermakePage encodeType encodeConst encodeIndexencodeServiceListencodeExerciseList groupById groupsWithorderedGroupsWith encodeServiceinputOutputTypes productTypeencodeExerciseexerciseHeader exerciseMenuencodeStrategybool statusImg statusSrc showRatingencodeRuleList encodeRuleencodeExampleListexternalencodeDerivationListhtmlDerivation htmlState stateLink useAllFirstsuseAllFirstsIO encodePrefixhtmlStephtmlDerivationWith htmlFirstshtmlAllApplications htmlDiagnosishtmlDescription submitFormsubmitStateInfosubmitDiagnose submitRequestquote submitURL safeWrite xmlRequestxmlReplyresultOk resultError xmlEvaluator htmlEvaluatordoBlackBoxTestforcepreparediffssimplerDirectorystripDirectoryPart solutionS derivationS allfirstsS onefirstS equivalenceS similarityS suitableS finishedSreadySstepsremainingS applicableSallapplicationsSapplyS generateScreateS examplesSexampleSfindbuggyrulesSsubmitS diagnoseSdiagnoseStringSdiagnoseStringproblemdecompositionS onefirsttextSderivationtextS submittextS feedbacktextSindexS exerciselistS servicelistS serviceinfoS rulelistS ruleinfoS rulesinfoS strategyinfoS exerciseinfoS stateinfoS microstepsSexamplederivationsS testreportSlogSinputOrDefaultdefaultCommandLineprocess