Sl       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                        !!!!!!!!!!!!!!!!!!!!!!!!!!""" " " " " """""""""########## #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''''((((((((((())))************************+++++++++++++++,,,,,,,,,,,,,,,,,, , , - - ----------......../ /!/"/#/$/%/&0'0(0)0*0+0,0-0.0/000102030405161718191:1;1<1=2>2?2@2A2B2CDEFGHIJKLMNOPQRST3U3V3W3X3Y3Z3[3\3]3^3_3`3a3b3c3d3e3f3g3h3i3j3k3l3m3n3o4p4q4r4s4t4u4v4w4x4y4z4{4|4}4~44444444444444444555555555555555666666666666666666666666666666666666666666667777777777777777777888888888888888888888999999:::::::::;;;;;;;; ; ; ; ; ;;;;;;;;;;;;<<<<<<< <!<"<#<$<%<&='=(=)=*=+=,=-=.=/=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@eAfAgAhAiAjAkAlAmAnAoApAqArAsAtAuAvAwBxByBzB{B|B}B~BBBBBBBBBCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEEEEEEFFFFFFFFFGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGHHHHHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJJJJJJJJJJJJJJJKK K K K K KKKKKKKKKKKKKLLLLMM 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]M^M_N`NaNbNcNdNeNfNgNhNiNjNkNlNmOnOoOpOqOrOsPtPuPvPwPxPyPzP{P|P}P~PPPPPPPPQQQQQRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTUVVVVWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWXXXXXXXXXXXX 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@XAXBXCXDXEXFXGXHXIYJYKYLYMYNYOYPYQYRYSYTYUYVYWZXZYZZZ[Z\Z]Z^Z_Z`ZaZbZcZdZe[f[g[h[i[j[k[l[m\n\o]p]q]r]s]t]u]v]w]x]y]z]{]|]}]~]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^__``abbbbbbbcccdeeeeeeeeeeeeeeeeeeeffffffffggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiijklmmnnnnnnnnnn o oxp(c) Bjorn Bringert 2006  BSD-style  John Chee <cheecheeo@gmail.com>  experimental  non-portable None+ The result of a CGI program.  4The value of an input parameter, and some metadata.  The input to a CGI action. Environment variables. PInput parameters. For better laziness in reading inputs, this is not a Map. Raw request body. To avoid memory leaks, this is the empty string if the request body has been interpreted as inputs in "application/x-www-form-urlencoded" or "multipart/form-data" format. MRuns a CGI action in a given environment. Uses Handles for input and output. ZRuns a CGI action in a given environment. Uses lazy ByteStrings for input and output. UGets and decodes the input according to the request method and the content-type.  Builds an   object for a simple value. (The default content-type for variables. CGets the values of all CGI variables from the program environment. Logs some message using the server's logging facility. FIXME: does this have to be more general to support FastCGI etc? Maybe we should store log messages in the CGIState? #Gets inputs from the query string. 2Decodes application/x-www-form-urlencoded inputs. ?Formats name-value pairs as application/x-www-form-urlencoded. KConverts a single value to the application/x-www-form-urlencoded encoding. GGets the name-value pairs from application/x-www-form-urlencoded data. QConverts a single value from the application/x-www-form-urlencoded encoding. ,Gets input variables from the body, if any. Decodes a POST body.  0Takes the right number of bytes from the input. !#Decodes multipart/form-data input. ">Replaces all instances of a value in a list by another value. #Same as $K specialized to strings, but returns the empty string if lookup fails. $ %& '()* +%CGI environment variables, e.g. from . *Handle that input will be read from, e.g. qr. ,Handle that output will be written to, e.g. qs.  CGI action CGI environment variables. Request body.  CGI action.  Response (headers and content). ,-CGI environment variables. Request body. XA list of input variables and values, and the request body if it was not interpreted. CGI environment variables. Input variables and values. Input variables and values.  CGI environment variables. Request body. gCONTENT_LENGTH bytes from the request body, or the empty string if there is no CONTENT_LENGTH. !Content-type parameters  Request body Input variables and values. ."Value to look for Value to replace it with  Input list  Output list /#012 %& '()* + "/ &% '()* +,- !."/#t(c) Bjorn Bringert 2006  BSD-style  John Chee <cheecheeo@gmail.com>  experimental  non-portable None6 3The class of CGI monads. Most CGI actions can be run in any monad which is an instance of this class, which means that you can use your own monad transformers to add extra functionality. 4Add a response header. 5$Get something from the CGI request. 6The CGIT monad transformer. 7!A simple CGI monad with just IO. 8Run a CGI action. 9EThrow an exception in a CGI monad. The monad is required to be a :, so that we can use ; to guarantee ordering. <rCatches any expection thrown by a CGI action, and uses the given exception handler if an exception is thrown. =Catches any exception thrown by an CGI action, and returns either the exception, or if no exception was raised, the result of the action. >Deprecated version of <. Use < instead. 3456?@789<=>ABCDEFGHIJ +3456?@789<=>3456?@789<=>ABCDEFGHIJuB(c) Bjorn Bringert 2004-2005 (c) Ian Lynagh 2005  BSD-style  John Chee <cheecheeo@gmail.com>  experimental yportable General server side HTTP cookie library. Based on <http://wp.netscape.com/newsref/std/cookie_spec.html>  Safe-InferredK;Contains all information about a cookie set by the server. LName of the cookie. MValue of the cookie. NExpiry date of the cookie. If O, the cookie expires when the browser sessions ends. If the date is in the past, the client should delete the cookie immediately. P5The domain suffix to which this cookie will be sent. Q,The path to which this cookie will be sent. RS< if this cookie should only be sent using secure means. TConstruct a cookie with only name and value set. This client will expire when the browser sessions ends, will only be sent to the server and path which set it and may be sent using any means. U8Get the value of a cookie from a string on the form 7"cookieName1=cookieValue1;...;cookieName2=cookieValue2" . This is the format of the Cookie HTTP header. V]Delete a cookie from the client by setting the cookie expiry date to a date in the past. WHShow a cookie on the format used as the value of the Set-Cookie header. XShow a name-value pair. FIXME: if the name or value contains semicolons, this breaks. The problem is that the original cookie spec does not mention how to do escaping or quoting. Y1Gets all the cookies from a Cookie: header value ZReturn OJ is the list is empty, otherwise return the last element of the list. K[LMNPQRTName Value Cookie U Cookie name -Semicolon separated list of name-value pairs Cookie value, if found V6Cookie to delete. The only fields that matter are L, P and Q WXname value YString to parse !Cookie name - cookie value pairs Z K[LMNPQRTUVWYK[LMNPQRTUVWXYZv Safe-Inferred\]^_`abcdefghijklmnopqrstuvwxyz \]^_`abfi\]^_`abcdefghijklmnopqrstuvwxyzw(c) The University of Glasgow 2001 (c) Bjorn Bringert 2004-2006 (c) Ian Lynagh 2005 (c) Jeremy Shaw 2005  BSD-style  John Chee <cheecheeo@gmail.com>  experimental (non-portable (uses Control.Monad.State) None{Compatibility wrapper for the old CGI interface. Output the output from a function from CGI environment and input variables to an HTML document. |Compatibility wrapper for the old CGI interface. Runs a simple CGI server. Note: if using Windows, you might need to wrap xy around main. }/Note: if using Windows, you might need to wrap xy around main. ~uReturns the query string, or the request body if it is a POST request, or the empty string if there is an error. {|The port to run the server on. }~CGI environment variables. Request body. Query string. {|} {|}~bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None_ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmP !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmPkjhiegfcd[\]^_`abVZYXWQRSTUPNOGMLKJIHBFEDC;A@?>=<0:987654321+/.-,*)('$&%# "!lm) "!#$&%'()*+/.-,0 :987654321;A@?>=<BFEDCGMLKJIHNOPQRSTUVZYXW[\]^_`abcdegfhijklmbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NonenEncode a string to UTF8 format o/Decode an UTF8 format string to unicode points p)Encode a string to UTF8 format (monadic) q9Decode an UTF8 format string to unicode points (monadic) r2Test whether the argument is a proper UTF8 string s3Test whether all characters are in the range 0-255 t0QuickCheck internal encoding/decoding functions nopqrstnopqrstnpoqrst nopqrstbastiaan.heeren@ou.nl  provisional portable (depends on ghc) Noneuvwxyuvwxyvuwxyuvwxybastiaan.heeren@ou.nl  provisional portable (depends on ghc)  Safe-Inferred z{|}~     z{|}~}~z|{ z|{}~bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneU !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnU !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Noneopop  Safe-Inferredz(c) The University of Glasgow 2001 (c) Bjorn Bringert 2004-2006 (c) Ian Lynagh 2005 (c) Jeremy Shaw 2005  BSD-style  John Chee <cheecheeo@gmail.com>  experimental (non-portable (uses Control.Monad.State) None2qRun a CGI action. Typically called by the main function. Reads input from stdin and writes to stdout. Gets CGI environment variables from the program environment. r Output a s}. The output is assumed to be text/html, encoded using ISO-8859-1. To change this, set the Content-type header using t. u Output a v}. The output is assumed to be text/html, encoded using ISO-8859-1. To change this, set the Content-type header using t. w)Do not output anything (except headers). xRedirect to some location. yCatches any exception thrown by the given CGI action, returns an error page with a 500 Internal Server Error, showing the exception information, and logs the error. Typical usage: c cgiMain :: CGI CGIResult cgiMain = ... main :: IO () main = runCGI (handleErrors cgiMain) z@Output a 500 Internal Server Error with information from an {. |Output an error page to the user, with the given HTTP status code in the response. Also logs the error information using . }Create an HTML error page. ~Use |* to output and log a 404 Not Found error. Use |3 to output and log a 405 Method Not Allowed error. Use |0 to output and log a 500 Internal Server Error. 6Get the value of a CGI environment variable. Example: #remoteAddr <- getVar "REMOTE_ADDR" 4Get all CGI environment variables and their values. aThe server's hostname, DNS alias, or IP address as it would appear in self-referencing URLs. /The port number to which the request was sent. _The method with which the request was made. For HTTP, this is "GET", "HEAD", "POST", etc. The extra path information, as given by the client. This is any part of the request path that follows the CGI program path. If the string returned by this function is not empty, it is guaranteed to start with a '/'. Note that this function returns an unencoded string. Make sure to percent-encode any characters that are not allowed in URI paths before using the result of this function to construct a URI. See ,  and ! for a higher-level interface. The path returned by :, but with virtual-to-physical mapping applied to it. OA virtual path to the script being executed, used for self-referencing URIs. Note that this function returns an unencoded string. Make sure to percent-encode any characters that are not allowed in URI paths before using the result of this function to construct a URI. See ,  and ! for a higher-level interface. The information which follows the ? in the URL which referenced this program. This is the percent-encoded query information. For most normal uses, / and friends are probably more convenient. qThe hostname making the request. If the server does not have this information, Nothing is returned. See also . 6The IP address of the remote host making the request. If the server supports user authentication, and the script is protected, this is the protocol-specific authentication method used to validate the user. ~If the server supports user authentication, and the script is protected, this is the username they have authenticated as. For queries which have attached information, such as HTTP POST and PUT, this is the content type of the data. You can use G to get a structured representation of the the content-type value. For queries which have attached information, such as HTTP POST and PUT, this is the length of the content given by the client. pGets the value of the request header with the given name. The header name is case-insensitive. Example: requestHeader "User-Agent" Attempts to reconstruct the absolute URI of this program. This does not include any extra path information or query parameters. See  for that. If the server is rewriting request URIs, this URI can be different from the one requested by the client. See also . [Characters in the components of the returned URI are escaped when needed, as required by  Network.URI. Like , but the returned  also includes any extra path information, and any query parameters. If the server is rewriting request URIs, this URI can be different from the one requested by the client. See also . [Characters in the components of the returned URI are escaped when needed, as required by  Network.URI. 9Does percent-encoding as needed for URI path components. 3Attempts to reconstruct the absolute URI requested by the client, including extra path information and query parameters. If no request URI rewriting is done, or if the web server does not provide the information needed to reconstruct the request URI, this function returns the same value as . [Characters in the components of the returned URI are escaped when needed, as required by  Network.URI. Get the value of an input variable, for example from a form. If the variable has multiple values, the first one is returned. Example: query <- getInput "query" Like , but returns a v. Get all the values of an input variable, for example from a form. This can be used to get all the values from form controls which allow multiple values to be selected. Example: &vals <- getMultiInput "my_checkboxes" Same as  but using vs. Get the file name of an input. Get the content-type of an input, if the input exists, e.g. "image/jpeg". For non-file inputs, this function returns "text/plain". You can use G to get a structured representation of the the content-type value. Same as 3, but tries to read the value to the desired type. Get the names and values of all inputs. Note: the same name may occur more than once in the output, if there are several values for the name. Get the names and values of all inputs. Note: the same name may occur more than once in the output, if there are several values for the name. &Get the names of all input variables. /Get the uninterpreted request body as a String 6Get the uninterpreted request body as lazy ByteString Get the value of a cookie. Same as 3, but tries to read the value to the desired type. Set a cookie.  Delete a cookie from the client t$Add a response header. Example: &setHeader "Content-type" "text/plain" Set the HTTP response status. :qrThe string to output. uThe string to output. wxA URL to redirect to. yz|HTTP Status code Status message Error information } Status code Status message Error information  Status code Status message Error information ~$The name of the requested resource. The allowed methods. Error information. The name of the variable. The name of the variable. Default value The name of the variable. >The value of the variable, or Nothing, if it was not set. The name of the variable. >The value of the variable, or Nothing, if it was not set. The name of the variable. MThe values of the variable, or the empty list if the variable was not set. The name of the variable. MThe values of the variable, or the empty list if the variable was not set. The name of the variable. =The file name corresponding to the input, if there is one. The name of the variable. )The content type, formatted as a string. The name of the variable. Of if the variable does not exist or if the value could not be interpreted at the desired type. The name of the cookie. O if the cookie does not exist. The name of the cookie. Od if the cookie does not exist or if the value could not be interpreted at the desired type. t Header name. Header value. HTTP status code, e.g. 404 HTTP status message, e.g.  "Not Found" a 3679<=>K[LMNPQRT\]^_`abfi{|}qruwxyz|~t:qruwxyz|}~t bastiaan.heeren@ou.nl  provisional portable (depends on ghc)  Safe-Inferred  Safe-Inferred0List of symbols defined in calculus1 dictionary yThis 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. qThis 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-Inferred.List of symbols defined in linalg2 dictionary This 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. tThis symbol is an n-ary constructor used to represent rows of matrices. Its arguments should be members of a ring. wThis symbol is an n-ary matrix constructor which requires matrixrow's as arguments. It is used to represent matrices.  Safe-Inferred -List of symbols defined in logic1 dictionary This symbol is used to show that two boolean expressions are logically equivalent, that is have the same boolean value for any inputs. {This 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-Inferred ,List of symbols defined in nums1 dictionary This 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. wA 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 + 1R3 + ... + 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-Inferred-List of symbols defined in quant1 dictionary This 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-Inferred0List of symbols defined in relation1 dictionary 5This 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. NThis symbol is used to denote the approximate equality of its two arguments.  Safe-Inferred.List of symbols defined in transc1 dictionary This 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. tThis symbol represents the sin function as described in Abramowitz and Stegun, section 4.3. It takes one argument. tThis symbol represents the cos function as described in Abramowitz and Stegun, section 4.3. It takes one argument. tThis symbol represents the tan function as described in Abramowitz and Stegun, section 4.3. It takes one argument. tThis symbol represents the sec function as described in Abramowitz and Stegun, section 4.3. It takes one argument. tThis symbol represents the csc function as described in Abramowitz and Stegun, section 4.3. It takes one argument. tThis symbol represents the cot function as described in Abramowitz and Stegun, section 4.3. It takes one argument. uThis symbol represents the sinh function as described in Abramowitz and Stegun, section 4.5. It takes one argument. uThis symbol represents the cosh function as described in Abramowitz and Stegun, section 4.5. It takes one argument. uThis symbol represents the tanh function as described in Abramowitz and Stegun, section 4.5. It takes one argument. uThis symbol represents the sech function as described in Abramowitz and Stegun, section 4.5. It takes one argument. uThis symbol represents the csch function as described in Abramowitz and Stegun, section 4.5. It takes one argument. uThis 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. aThis symbol represents the arcsinh function as described in Abramowitz and Stegun, section 4.6. aThis symbol represents the arccosh function as described in Abramowitz and Stegun, section 4.6. aThis symbol represents the arctanh function as described in Abramowitz and Stegun, section 4.6. aThis symbol represents the arcsech function as described in Abramowitz and Stegun, section 4.6. aThis symbol represents the arccsch function as described in Abramowitz and Stegun, section 4.6. aThis symbol represents the arccoth function as described in Abramowitz and Stegun, section 4.6.  Safe-Inferred,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. UThis 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. oThis symbol denotes the list construct which is an n-ary function. The list entries must be given explicitly.  Safe-Inferred +List of symbols defined in fns1 dictionary The 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. dThis 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. yThis symbol denotes the image of a given function, which is the set of values the domain of the given function maps to. IThe 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. bThis 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. JThis 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. gThis 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-Inferred -List of symbols defined in arith1 dictionary bThe symbol to represent the n-ary function to return the least common multiple of its arguments. jThe 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. eThe 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      B     %          bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None.?First argument indicates whether the table has a header or not ;.Renders as teletype or monospaced Ideas.Text. <Renders as italic text style. =Renders as bold text style. , !"#$%&'()*+,-./0123456789:;<=>?E  !"#$%&'()*+,-./0123456789:;<=>?(  !"#$%&(-./3106',*+)245789:;<=>?' !"#$%&'()*+,-./0123456789:;<=>?bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None+QRSTUVWXYZ QRSTUVWXYZ QWVUTSRXYZQWVUTSRXYZbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NonedeRepresents 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) Noneeeeebastiaan.heeren@ou.nl  provisional portable (depends on ghc) None8fghijklmnopqrstuvwxyz{|}~fghijklmnopqrstuvwxyz{|}~u{zyxwvtqsrlmnop~}|fghijk$fghijklmnopqsrtu{zyxwv|}~bastiaan.heeren@ou.nl  provisional portable (depends on ghc)  Safe-Inferred}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   and   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 success 5Equality with a comparison function for the elements +Returns all elements that are in the menu. [Returns only the best elements that are in the menu with respect to left-biased choices. LReturns 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. 6Generalized monadic bind, with the arguments flipped. EMaps a function over a menu that also takes the index of an element. !                    bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None                   ! " # $ % & ' ( ) * + , - . / 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 { | } ~      bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None+        bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneFConstruct a (named) test suite containing test cases and other suites aTurn 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 warnings S          E,<           bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None@ABCDEFGHIJKLMNOPC@BALKBAJIHGFE@DNOMP!bastiaan.heeren@ou.nl  provisional portable (depends on ghc)  Safe-Inferred:MrUse a fixed standard "random" number generator. This generator is accessible by calling System.Random.getStdGen   bastiaan.heeren@ou.nl  provisional portable (depends on ghc)  Safe-Inferred=K    "bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None=K                        #bastiaan.heeren@ou.nl  provisional portable (depends on ghc)  Safe-Inferred%&Type class for bi-directional arrows.  - should be used instead of arr8 from the arrow interface. Minimal complete definition:  -. ),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) 09If not applicable, return the current value (as default) 1NSame as apply, except that the result (at most one) is returned in some monad # !"#$%&'()*+,-Returns zero or more results ./012 3  !"#$%&'()*+,-./0123,-./012)*+%&'(!"#$3  !"#$%&'()*+,-./012 3 &$bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None+ 4DType classfor accessing (and changing) the identifier of an entity. 74Type class for labeling entities with an identifier 9 Type class 9. for constructing identifiers. Examples are newId "algebra.equation", newId ("a", "b", "c"), and newId () for the empty identifier. <Abstract data type for identifiers with a hierarchical name, carrying a description. The data type provides a fast comparison implementation. =9Appends two identifiers. Both parameters are overloaded. >@Get the unqualified part of the identifier (i.e., last string). ?WGet the list of qualifiers of the identifier (i.e., everything but the last string). @Get the qualified part of the identifier. If the identifier consists of more than one part, the parts are separated by a period ( ). AGet the current description. BkGive a description for the current entity. If there already is a description, both strings are combined. CShow the identifier. D2Compare two identifiers based on their names. Use compare- for a fast ordering based on hash values. )456789:;< = >?@ABCD .456789:;<=>?@ABCD<9:;=456>?@BACD78 456789:;< = >?@ABCD =bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"BNMinimal complete definition: toView or both match and build. Ugeneralized monadic variant of match g$Specialized version of traverseView GEFGHIJ KLM NOPQ RSTUVWXYZ[\]^_`abcdefghi jkl         9 EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl;    RSTUVWXQYNOP_`aZ[\]^MdbcJKLKLeGHIfghiEFjkl4EFGHIJ KLM NOPQ RSTUVWXYZ[\]^_`abcdefghi jkl         %bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None+Emnopqrstuvwxyz{|}~                  ! " #0mnopqrstuvwxyz{|}~1{~}|xyzstuvwpqrmno2mnopqrstuvwxyz{~}|                  ! " #&bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None:M%A type class for types as references -A data type for references (without a value) $ Identifier %A pretty-printer & A parser 'Conversion to/from term 1 ( ) * + $ % & ' , - . / 0 1 2 3 4 5 6 7 8 9 : ; ( ) * + $ % & ' , - . / 0 1 2 3 4 5 6 7 8 9 : ;'bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!" < = > ? @ A B C D E F G H I J   B A @ ? > = < C D E F G H I J(bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None%Abstract data type for substitutions Returns the empty substitution !Returns a singleton substitution !Turns a list into a substitution Combines two substitutions. The left-hand side substitution is first applied to the co-domain of the right-hand side substitution uLookups a variable in a substitution. Nothing indicates that the variable is not in the domain of the substitution 0Returns the domain of a substitution (as a set) Apply the substitution  K L M N O   K L M N O)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.  P Q R P Q R*bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None, S T U V W X Y Z [ \ ] ^ _ ` a b c d e f! S X W V U T Y Z [ \ ] ^ _ ` a b c d e f+bastiaan.heeren@ou.nl  provisional portable (depends on ghc)  Safe-Inferred&Tests whether the derivation is empty ,Returns the number of steps in a derivation All terms in a derivation All steps in a derivation \The triples of a derivation, consisting of the before term, the step, and the after term. 8Apply a monadic function to each term, and to each step  g h i j g h i j,bastiaan.heeren@ou.nl  provisional portable (depends on ghc)  Safe-InferredThe root of the tree Is this node an endpoint?  All branches cConstructs a node without branches; the boolean indicates whether the node is an endpoint or not >Branches are attached after the existing ones (order matters) k(Returns the annotations at a given node %Returns all subtrees at a given node gReturns all leafs, i.e., final results in derivation. Be careful: the returned list may be very long fThe argument supplied is the maximum number of steps; if more steps are needed, Nothing is returned Restrict the height of the tree (by cutting off branches at a certain depth). Nodes at this particular depth are turned into endpoints :Restrict the width of the tree (by cutting off branches). lGCommit to the left-most derivation (even if this path is unsuccessful) mmFilter out intermediate steps, and merge its branches (and endpoints) with the rest of the derivation tree .All possible derivations (returned in a list)  The first derivation (if any)  3Return a random derivation (if any exists at all)  n k l m  o p q     n k l m  o p q-bastiaan.heeren@ou.nl  provisional portable (depends on ghc)  Safe-Inferred=K 2The type associated with a step in the first set.  #The ready predicate (we are done). The firsts set. The empty sequence.  Prepend a symbol to a sequence. Append two sequences. Singleton sequence. Sequential composition.     r            r.bastiaan.heeren@ou.nl  provisional portable (depends on ghc)  Safe-Inferred  s t  s t/bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  !"# u v$ w x y% !"#$%!"#$ %  !"# u v$ w x y%0bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None2468:M#&'()* z {+ | } ~ ,- ./01 234 &'()*+,-./01234()*++,-./&'23401&'()* z {+ | } ~ ,- ./01 234 -{bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None?mnopqrstuvwxyz{|}~&'()*+,-./012341bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None2468:M 56 7 89:;< 56789:;<75689:;<  5 67 89:;< 62bastiaan.heeren@ou.nl  provisional portable (depends on ghc)  Safe-Inferred=K=7Process data type with efficient support for sequences AWGeneralized equality of processes, which takes an equality function for the symbols. = >?@AB =>?@AB=A?@B> = >?@AB bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneBO6Minimal complete definition: inverse or appendInverse CDEFGHIJK LMNOPQR S CDEFGHIJKLMNOPQRSOPQRMNKLLHIJEFGCDSCDEFGHIJK LMNOPQR S R3bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneZ4Not all monoids are idempotent (see: idempotentFor) TUVWXYZ[\]^_`abcdefghijklmnTUVWXYZ[\]^_`abcdefghijklmnTUVWXYZ[\]^_`abcdefghijklmnTUVWXYZ[\]^_`abcdefghijklmn4bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneB=opqrstuvwxyz {|}~ opqrstuvwxyz{|}~ ~{|}zuvwxyrstopq%opqrstuvwxyz {|}~ 5bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None6bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None=BKFor 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         ,-J           7bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"HMBAbstract data type for a context: a context stores an envrionent. Construct a context .Lift a rule to operate on a term in a context YApply a function at top-level. Afterwards, try to return the focus to the old position $                       8bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"HM=A type class for constructing a transformation. If possible,  makeTransM should be used. Use specialized constructor functions for disambiguation. Overloaded variant of transLiftContext Overloaded variant of transLiftContext; ignores result ,                 ! " # $ % &                  ! " # $ % &9bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None ' ':bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None ( ) * + , -    ( ) * + , -;bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None6*Abstract data type for representing rules .Unique identifier of the rule /3Inspect whether or not the rule is buggy (unsound) 0vReturns whether or not the rule is minor (i.e., an administrative step that is automatically performed by the system) OA special (minor) rule that is never applicable (i.e., this rule always fails) 8A special (minor) rule that always returns the identity cA special (minor) rule that checks a predicate (and returns the identity if the predicate holds) 3Perform the function after the rule has been fired ( 1 . 2 3 / 0      4 5 6 7 8 9 : ; < =          ! 1 . 2 3 / 0      4 5 6 7 8 9 : ; < =|bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneG     <bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None=KXA 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). 5Make a prefix from a core strategy and a start term. eConstruct a prefix by replaying a path in a core strategy: the third argument is the current term.  WTransforms 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.  > ? @ A B C ! D"#$% E F G H  !"#$%  !"#$% > ? @ A B C ! D"#$% E F G H=bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneHM!&'()*+,-./0123456 I J789:;<= K L M N O P Q&'()*+,-./0123456789:;<=:6789=87<;2345/01,-.)*+&'(&'()*+,-./0123456 I J789:;<= K L M N O P Q<>bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None >?@ABCDEF R S T >?@ABCDEF @AB>?CDEF >?@ABCDEF R S T?bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None=HKM G/A strategy which is labeled with an identifier H*Type class to turn values into strategies J"Abstract data type for strategies NLabels a strategy with an identifier. Labels are used to identify substrategies and to specialize feedback messages. The first argument of N can be of type sM, in which case the string is used as identifier (and not as description). O"Removes the label from a strategy P2Construct the empty prefix for a labeled strategy Q`Construct a prefix for a path and a labeled strategy. The third argument is the current term. RiConstruct a prefix for a list of paths and a labeled strategy. The third argument is the current term. S`Construct a prefix for a path and a labeled strategy. The third argument is the initial term. UFReturns a list of all major rules that are part of a labeled strategy VBApply a function to all the rules that make up a labeled strategy XlUse a function as do-after hook for all rules in a labeled strategy, but also use the function beforehand YDUse a function as do-after hook for all rules in a labeled strategy ,G UHIJ V WKLMNOPQRSTUVWXYZ[ X\]^_` Y Z [ \ ] ^ _ ` a b c d e fGHIJKLMNOPQRSTUVWXYZ[\]^_`JGNOHIKLMPQRSUVWXYTZ[`\]^_(G UHIJ V WKLMNOPQRSTUVWXYZ[ X\]^_` Y Z [ \ ] ^ _ ` a b c d e f@bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Noned@Returns a list of all strategy locations, paired with the label abcd g habcdabcdabcd g hAbastiaan.heeren@ou.nl  provisional portable (depends on ghc) Nonel$Allows all permutations of the list r4Apply a certain strategy or do nothing (non-greedy) s@Apply a certain strategy if this is possible (greedy version of r) t8Repeat a strategy zero or more times (greedy version of o) u:Apply a certain strategy at least once (greedy version of p) vSApply the strategies from the list exhaustively (until this is no longer possible)  i jefghijklmnopqrstuvefghijklmnopqrstuvlopqrstuvhjikmenfg i jefghijklmnopqrstuvBbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None@Apply a strategy at least once, but collapse into a single step !wxyz{|} k l~ m n o p q r s t u v w x y z {wxyz{|}~~w}|{zyxw}|{zyx k l~ m n o p q r s t u v w x y z {Cbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None | } ~  | } ~ Dbastiaan.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 0Prefixing a basic rule to a strategy atomically GInitial prefixes (allows the strategy to stop succesfully at any time) ;The strategy that always succeeds (without doing anything) The strategy that always fails 6Makes a strategy atomic (w.r.t. parallel composition) *Puts a list of strategies into a sequence *Combines a list of alternative strategies *Merges a list of strategies (in parallel) $Allows all permutations of the list 2Repeat a strategy zero or more times (non-greedy) 4Apply a certain strategy at least once (non-greedy) +Apply a strategy a certain number of times 4Apply a certain strategy or do nothing (non-greedy) gChecks whether a predicate holds for the current term. The check is considered to be a minor step. Check whether or not the argument strategy cannot be applied: the result strategy only succeeds if this is not the case (otherwise it fails). 8Repeat a strategy zero or more times (greedy version of ) :Apply a certain strategy at least once (greedy version of ) @Apply a certain strategy if this is possible (greedy version of ) cChoose between the two strategies, with a preference for steps from the left hand-side strategy. vLeft-biased choice: if the left-operand strategy can be applied, do so. Otherwise, try the right-operand strategy 3Repeat the strategy as long as the predicate holds .Repeat the strategy until the predicate holds SApply the strategies from the list exhaustively (until this is no longer possible) _Create a strategy from a dependency graph with strategies as nodes Does not check for cycles Ebastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneFbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None        Gbastiaan.heeren@ou.nl  provisional portable (depends on ghc) Noneleft-most innermost traversal. left-most outermost traversal. ;      *        }bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Noned "#$%GHIJNPQRSTUXYabcdwxyz{|}~8JGHITNdabcPQRS#$%" XYUHbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None            Ibastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneB/  Jbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  Kbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneBF&                        Lbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None:M    Mbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None+HM6%!The status of an exercise class. &.An exercise for experimentation purposes only '&An exercise that is under development (5A released exercise, possibly with some deficiencies )=A released exercise that has undergone some thorough testing *1For constructing an empty exercise, use function ? or @. ,6Identifier that uniquely determines the exercise: see 4+ for how to use values with identifiers. -The status of the exercise. .RParser for expressions of the exercise class, which either results in an error ( ) or a result ( ). /jPretty-printer for expressions of the exercise class. Pretty-printing should be the inverse of parsing. 0VTests wether two expressions (with their contexts) are semantically equivalent. Use NH for defining the equivalence check when the context is not relevant. 1Tests wether two expressions (with their contexts) are syntactically the same, or nearly so. Expressions that are similar must also be equivalent. Use N< if the context is not relevant for the similarity check. 2Predicate suitable identifies which expressions can be solved by the strategy of the exercise class. It acts as the pre-condition of the strategy. 3Predicate ready checks if an expression is in a solved form (accepted as a final solution). It acts as the post-condition of the strategy. 4>The rewrite strategy that specifies how to solve an exercise. 5Is 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. 6QAre there extra rules, possibly buggy, that do not appear in the strategy? Use D to get all rules. 7The 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). 8A navigator is needed for traversing the expression and for using the traversal strategy combinators. By default, an exercise has no navigator. 9=A finite list of examples, each with an assigned difficulty. ::A generator for random exercises of a certain difficulty. ;EAn exercise generator for testing purposes (including corner cases). <%Conversion to and from the (generic) {N datatype. Needed for representing the expression in the OpenMath standard. =kRepresentation of the type of expression: this provides a back door for exercise-specific functionality. >QExtra exercise-specific properties, not used by the default feedback services. ?The ?I constructor function provides sensible defaults for all fields of the * record. @In addition to the defaults of ?%, this constructor sets the fields /, 1, and <. A%Pretty print a value in its context. B-Checks if an expression is in a solved form. CHChecks if the expression is suitable and can be solved by the strategy. D4Returns a sorted list of rules, without duplicates. E5Finds a rule of an exercise based on its identifier. FMakes 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. GAn exercise with the status ) or ( HAn exercise that is not public IwParser for difficulty levels, which ignores non-alpha charactes (including spaces) and upper/lower case distinction. J5Assigns a difficulty level to a list of expressions. L?Returns the examples of an exercise class lifted to a context. M7Puts a value into a context with an empty environment. N[Function for defining equivalence or similarity without taking the context into account. O,Encapsulates a type representation (use for = field). PMCast from polymorphic type (to exercise-specific type). This only works if =) contains the right type representation. QMCast to polymorphic type (from exercise-specific type). This only works if =) contains the right type representation. R8Set an exercise-specific property (with a dynamic type) S6Get an exercise-specific property (of a dynamic type) T~Makes a random exercise generator from a QuickCheck generator; the exercise generator ignores the difficulty level. See the : field. UoMakes a random exercise generator based on a QuickCheck generator for a particular difficulty level. See the : field. VaReturns a random exercise of a certain difficulty with some random number generator. The field :Y is used; if this is not defined (i.e., Nothing), one of the examples is used instead. WDReturns a list of randomly generated terms of a certain difficulty. XjShows the default derivation for a given start term. The specified rule ordering is used for selection. YXShows all derivations for a given start term. Warning: there can be many derivations. ZkPrints the default derivation for a given start term. The specified rule ordering is used for selection. [YPrints all derivations for a given start term. Warning: there can be many derivations. \aAdds the difference of the environments in a derivation to the steps. Bindings with identifier locationJ are ignored. This utility function is useful for printing derivations. J  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ \]^ A !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^A*+,-./0123456789:;<=>?@ABCDEF%)('&GH$#"! IJKLMNOPQRSTUVWXYZ[\]^,  #"! $%)('&*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ \]^ Nbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None_`abcdefghijkl _`abcdefghijkcd_`ablefghijk _`abcdefghijklObastiaan.heeren@ou.nl  provisional portable (depends on ghc) NonemAlias for strategy combinator fail nAlias for strategy combinator not oAlias for strategy combinator repeat pAlias for strategy combinator  replicate qAlias for strategy combinator sequence rAlias for strategy combinator until mnopqr  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~&'()*+,-./01234      "#$%GHIJNPQRSTUXYabcdwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^mnopqrmnopqrmnopqrPbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None=K FProduces a 80 bit random number, represented as 20 hexadecimal digits s tuvwxyz {|}~ stuvwxyz{|}~stuvwxy|}~tuv{wxyzs tuvwxyz {|}~ Qbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneHM  Rbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None"!" Sbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneLThe Record datatype is based on the Ideas Request Logging Schema version 2. 1Add record information from the Request datatype BAdd record information from the state (userid, sessionid, taskid) &      Tbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None               Ubastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  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!"234HMZ      !  "#$%&  '()*+,-./0123456789:;<=>?@ABCDEFGH   ! " # $ % & 'L      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHN!"#$%"#      &<8709:;1EF,5-2/ADC*=>4('+)3G?B@.6H8       !  "#$%&  '()*+,-./0123456789:;<=>?@ABCDEFGH   ! " # $ % & '+Ybastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneIJKLMNOPQ (RSTUVIJKLMNOPQRSTUVSTNLOPQRJKIMVUIJKLMNOPQ (RSTUVZbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None246WXYZ[\]^_`abcd )WXYZ[\]^_`abcdW`_^]\[ZYXbacdW `_^]\[ZYXabcd )[bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None246 efghij *klefghijklkejihgflejihgf *kl\bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Nonemn + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?mnnmmn + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?]bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Noneopqrstuvwxyz{|}~ @ Aopqrstuvwxyz{|}~opqrstuvwxyz{|}~ o pqrstuvwxyz{|}~ @ A^bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneHM? 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 es f g h i j k l m n o p q r s t u v w x y z { | } ~    2 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_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) None246 EContinue with a prefix until a certain strategy location is reached.     cbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"HM       dbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  ebastiaan.heeren@ou.nl  provisional portable (depends on ghc) None$       fbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None246    gbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"    hbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneHM8    .."    ibastiaan.heeren@ou.nl  provisional portable (depends on ghc) None!"2                           2                           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+ 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+ 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 Xnbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  Y   Yobastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  Z [ \!opqrstuvwxyz{|}~    !  Z [ \ ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                              ! " # $%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C!D!D!E!F!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![\]^_`abcdefghijklmnopqrstu"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-{-|-}.~.......///////00000000000000011111111222222N333333333333333333333333333444444444444444444444444444444445555555555555556666666666666 6 6 6 6 66I666666666666666666 6!6"6#6$6%6&6'7(7)7*7+7,7-7.7/707172737475767778797:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N8O9P9Q9R9S9T9U: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<{<|<}<~<<<<<=======================|=>>>>>>>>>????????G??????????????????@@@@AAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBCDDzDDDDDDDDD|DDDDDDDDDDDDDDDDDDDDEEEEEEFFFFFFFFFGGGGGGGGGGGGGGGGGGGG G G G G GGGGGGGGHHH5HHIIIIIIIII I!I"I#I$II%I&I'I(I)I*I+I,I-I.I/I0I1I2I3J4J5J6J7J8J9J:J;J<J=J>J?J@JAJBKCKCKDKEKEKFKGKGKHKIKIKJKKKLKMKzKKNKOLPLQLRLSMTMUMVMWMXMYMZM"M[M\M]M^M_M`MaMbMcMdMeMfMgMuMhMiMjMkMlMmMnMoMpMqMrMsMtMuMvMwMxMyMzM{M|M}MM~MMMMMMMMMMMMMMMMMMMNNNNNNNNNNNNNNOOOOOOPPPPPPPPPPPPPPPPPgPPQQQQQRRRRRRRRRRRRRRRRRaRRRRRRRRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSTTTTTTTTTTTTTTUVVVVWWW W W W W WWWWWWWWWWWWWWWWWWWWW W!W"X#X$X%XX&X'X(X%X)X XX*XX XX)X_XXX_X+X,X%X-X.X/X0X1X2X3X4X5X6X7X8X9X+X:X;X<X=X>X?X@XAXBXCXDXEXFXGXHXIXJXKXLXMXNXOXPXQXRXSXTXUXVXWXXXYXZX[X\X]X^X_X`YaYbYcYdYeYfYgYYhYYiYjYkYlZmZnZoZpZqZrZsZtZZuZvZwZ8Z9[%[n[p[x[t[[y[z\{\|]}]~]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^__``abbbxbbbbcccdeeeeeeeeeeeeeeeeeeef#fffffffggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhiijklmmn#nnnnnn n n n o opppppppppppppppppp p!p"p#p$p%pip&~'(p)p*pp+p,p-pp.p/p0p1234235235t6t7t8t9t:t;t<=>?=>@tAtBtCt9tDtEtFtGtHtItJtKtLtMtNuOuPuQuR~STuUuVuWXYZu[u\u]u^u_u`uauOvbvbvcvcvdvdvev!vvfvgvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvzw{w|w}w~wwwwwxG                  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a U zbz~zczdefgzhzizjzk~lmznzozpzqzrzsztzuzvzwzxzyzzz{z|z}z~zzzzzz23zzzzzzzzzzzzzzzzzz]zzzzzzzzz232323232323~~~~~~~~~~~~~~~~~~~~~~~~Gw~~.3               %   O   N                 G                    !  "  # $ % $ % $ $ $ & $ ' $ ( $ ) $ * $ + $ , $ - $ - $ . $ / $ / $ 0 $ 1 $ 1 $ 2 $ 2 $I $I $ 3 $ 3 $ 4 $ 5 $ 6 7 8 7 9 7 : 7 ; 7 < 7 = 7 7 > 7 ? 7 @ 7 A 7 B 7 C 7 D 7 E 7 F 7 G 7 H 7 I 7 J 7 K L M L N L O L P L Q L R L S L T L U L V L W L X L Y L Z L [ L \ L ] ^ ^ _ ^ ` a b c d e f g h i j k l R  m   n  o x  p q r % s t u v  w   x  y  z 5 { | } ~   ! \  " " " " " " " # # # # # ~ $$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $          p                     %% % % % % % % % % % % % % % % % % % % % & & &c& && &&& & & & & & & & & & & & & & & & ' '' ' ' ' ' ' ' ' ' ' ' ' ' (( ( ( ( ) ) ) * * * * * * * * * ** * * * * * !* "* #* $* %++ &+ '+ (, ), *, +, ,, -, ., /- 0. 1. 2/ 3/ 4/ 5/ 6/ 70 80 90 :0 ;0 <0 =0 >0 ?0 @0 A0 B0 C0 D0 E0 F0 G0 H0 I0 J0 K1 L1 M1 N1 O11 P1 Q1 R1 S1 T1 U1 V2 W2 X2 Y2 Z2 [2 \2 ] ^ _ ` a b c d e f4m4x4 g4 h4 i4 j4 k4 l4 m4 n4 o4 p4 q4 r4 s4 t4 u4 v4 w4 x4 y4 z4 {4 |4 }4 ~4 4 4 6 6 6 6 6 6 6 6 6 66 6 6 6 6 6 6 6 6 6 6l6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 77 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 88 8 8 8 88"8 808 8 8 8 8 8 8 8 8 8 8 8 8 9 : 8: : : : : ; 9; ; ;_; ; ; ; ; ; ; ; ; ; ; ; <w<x< < < < < < < < < = = = = = = = = = > > > ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @ @ AA B B B B B B B B B B B B B !B "B #B $B %C &C 'C (C )FF *F/F +F ,F -F .F /F 0F 1F 2G 3G 4G 5G 5G 6G 7G 8G 9G :G ;G <GG =GG >G ?G @G AG BG CG DG EG FGG GG HG IH JH JH KH LH MH NH OH PH QH RH SI TI UI VI WI XI YI ZI [I \I ]I ^I _I `I aI bI cI dI eJ fJ gJ hJ iJ jK kK lK mK nK oK pK qK rK sK tK uK vK wK xK yK zK {K |K }L L ~L L L L L%L L L L ~  ~  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 WW kW W W W W W W W W XXX X X X X X X X X X X X Y Z [ \ \\ \ \ \ \ \ \\ \ \ \ \ \;\ \ \ \ \*\ ] ] ^ n^ n^ ^ ^ ^ ^ ^^^ ^ ^^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ~ ~ ~ ~ ~ ~~ ~ ~ ~~ ~~~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ _ _ _ _ _ _ _ _ _ _ _ _ ` ` ` ` ` ` ` ` ` ` ` !` "a #a $a %a &aa 'a (a )a *a +a ,a -a .b /bb 0b 1b 2c 3c 3c 4c 5c 6c 7c 8cd 9d :d ;d <d =d >d ?e @e Ae Be Ce De Ee Fe Ge He Ie Je Ke Le Me Ne Oe Pf pg Qg &g Rg Sg %g Tg (g )g -g Ug Vg Wg +g Xg .g Yg Zh [h \h ]h ^h _h `h ah bh ch di ei fi gi hi &i ii ji ki li mi ni oi pi qi ri si ti ui vi *i wi xi yi zi {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 9k 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 n o o o ideas-1.4Ideas.Common.ViewIdeas.Text.ParsingIdeas.Common.Algebra.GroupIdeas.Common.Traversal.UtilsIdeas.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.Common.Utils.UniplateIdeas.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.IteratorIdeas.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.Strategy.ProcessIdeas.Common.Algebra.GroupLawsIdeas.Common.Algebra.FieldIdeas.Common.Algebra.FieldLaws Ideas.Common.Traversal.NavigatorIdeas.Common.Context Ideas.Common.Rule.TransformationIdeas.Common.Rule.ParameterIdeas.Common.Rule.RecognizerIdeas.Common.Rule.AbstractIdeas.Common.Strategy.Prefix"Ideas.Common.Strategy.StrategyTreeIdeas.Common.Strategy.SymbolIdeas.Common.Strategy.AbstractIdeas.Common.Strategy.LocationIdeas.Common.Strategy.Derived#Ideas.Common.Strategy.ConfigurationIdeas.Encoding.StrategyInfo!Ideas.Common.Strategy.CombinatorsIdeas.Common.Strategy.Legacy!Ideas.Common.Rewriting.ConfluenceIdeas.Common.Strategy.TraversalIdeas.Common.Traversal.TestsIdeas.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.DefaultNetwork.CGI.Protocol System.IOstdinstdoutNetwork.CGI.MonadNetwork.CGI.CookieNetwork.CGI.AcceptNetwork.CGI.CompatNetwork withSocketsDo Network.CGIIdeas.Common.RewritingIdeas.Common.RuleIdeas.Common.Strategybase Control.Arrowarrfirst|||Control.Applicative<*><**><**>&&&***secondArrow zeroArrow ArrowZero<+> ArrowPlus+++rightleft ArrowChoice Data.Functor<$>Control.Category>>><<< Data.Monoid<>mconcatmappendmemptyMonoid Control.Monad>=>mplusGHC.Base<$ExternalTextDecl ConditionalIgnoreIncludePublicID ExternalIDPublicSystem EntityValueAttValue EntityDefAttDef DefaultDeclFixedValueImpliedRequiredAttType NotationTypeEnumerationType StringType NmTokensType NmTokenType EntitiesType EntityType IdRefsType IdRefTypeIdTypeCPCPNamePlusStar QuestionMarkSequenceChoice ContentSpecChildrenMixedAnyEmpty DocTypeDeclDTDConditional DTDParameter NotationDecl EntityDecl AttListDecl ElementDeclDTDContentElementname attributescontentXML ReferenceCDATACharDataTaggedXMLDoc versionInfoencoding standalonedtd externalsroot Parameter EntityRefCharRef Attribute:= AttributesName prettyXML prettyElementencodedecodeencodeMdecodeMisUTF8allBytes propEncodingisLetter isExtenderisDigitisCombiningChardecodingUnbalancedError NotOpened NotClosed parseSimplecompleteskipnaturalOrFloatfloat<..>rangesstopOnbalanceddocument extSubset extParsedEnt compactXML normalizeparseXML findAttribute findChildren findChildchildrengetData 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 addScripthtmlPagelinkh1h2h3h4h5h6parapreTextprehrbrttTextultable keyValueTablespacesspacebulletimagedivClass spanClass highlightXMLidAclassAstyleAtitleAttitalicboldbigsmalluniplate-1.6.12!Data.Generics.Uniplate.OperationsuniplatedescendMdescendUniplateuniverse transformM transformrewriteMrewriteholescontextsData.Generics.Uniplate.Direct||*|-|*plateOMOBJOMBINDOMAOMSOMVOMFOMIgetOMVs xml2omobj omobj2xmlFMPquantor metaVariables leftHandSiderelation rightHandSidetoObjecteqFMPbuggyFMP RPCHandler RPCResponseResponseresponseResult responseError responseIdInJSONtoJSON listToJSONfromJSON listFromJSONNumberDIKeyJSONNullObjectArrayBooleanString 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 splitAtElemsplitsWithElemuseFixedStdGen timedSecondsfst3snd3thd3headM findIndexM elementAtchangeAt replaceAtlistMirrorWrapperwrapunwrapFocusUnfocusfocusfocusMunfocusUpdateupdatecurrentchangereplacechangeMchangeG liftFocus unliftFocus liftWrapper unliftWrapper mapWrapper makeMirror>|<safefixpfixpl ListIteratorIteratornextpreviousfinalpositionisFirstisFinalhasNext hasPrevious searchForwardsearchBackward searchNextsearchPrevious searchWithMinorminorsetMinorisMinorisMajorBuggybuggysetBuggyisBuggyFixfix 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 getFunctionIsTermtoTermfromTermTermTMetaTFloatTNumTListTConTVar 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@+@testsdifferenceWithdifferenceEqualWith differencedifferenceEqual CyclicTreeAlgfNodefLeaffLabelfRecfVar CyclicTree shrinkTreenodenode0node1node2leaflabelisNodeisLeafisLabel 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 rewriteLawProcess runProcessmenuwithMenu eqProcessBy CoMonoidZero isMonoidZeroCoGroup isInverse isAppendInvCoMonoidisAppendWithZero fromWithZero MonoidZeromzeroGroup appendInv<>-associativeList associative 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 propsFieldUniplateNavigatorLeafs Horizontal LevelOrder PostOrderPreOrder NavigatorupdowndownLastchildnrlocationLocation fromLocation toLocationisTophasLefthasRighthasUphasDowntopleftMost rightMost leftMostLeaf rightMostLeafdownsdownToaritydepthlevel levelNext levelPrevious leftMostAt rightMostAt navigateTonavigateTowards makePreOrder makePostOrdermakeLevelOrdermakeHorizontal makeLeafsContextNavigatorContext fromContextfromContextWithfromContextWith2 newContext noNavigator navigator termNavigator contextView liftToContextapplyTopuseuseC currentTerm changeTermcurrentInContextchangeInContextreplaceInContext 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 addRecognizeraddRecognizerBooladdRecognizerEnvMonadaddTransRecognizerPathPrefix firstsOrderednoPrefix makePrefix replayProcess isEmptyPrefix majorPrefixsearchModePrefix prefixPaths emptyPathreadPath readPathsNaryfromNaryBinary fromBinaryUnary fromUnaryNullary fromNullaryAritylistifytoArityliftIsoDecl combinator Combinator StrategyTree applyDecl LabelSymbol isEnterSymbol AtomicSymbol atomicOpen atomicClose enterRuleexitRule isEnterRule isExitRuleLabeledStrategy IsStrategy toStrategyStrategyliftSliftS2liftSnunlabel emptyPrefix replayPath replayPathsreplayStrategyderivationListrulesInStrategymapRules mapRulesScleanUpStrategycleanUpStrategyAftertoStrategyTreeonStrategyTreedecl0decl1decl2declNuseDecl checkLocationsubTaskLocationnextTaskLocationstrategyLocations!*>filterPhideatomic interleave<%> concurrentpermute<@>initsmanymany1 replicateoptiontryrepeatrepeat1 exhaustive ConfigActionRevealHideExpandCollapseReinsertRemove StrategyCfgbyName configure configureS isConfigIdremovecollapsemulti strategyToXMLDependencyGraph.%..@.!~>succeedfailnoInterleaving interleaveIdchecknotwhileuntildependencyGraph<|>>|> alternativesConfigshowTerm complexity termEquality somewhereM isConfluentcheckConfluencecheckConfluenceWith defaultConfigOptionlayertraversetopdownbottomup leftToRight rightToLeftfullspinestoponceleftmost rightmosttraversalFilter parentFilterfulltdfullbuoncetd oncetdPrefoncebu oncebuPref leftmostbu leftmosttd somewhere somewhereWhen innermost outermostruleUpruleDown ruleDownLastruleLeft ruleRight testIterator testNavigatorlistGenuniGenOrfromOrAndfromAnd 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 Difficulty VeryDifficult DifficultMediumEasyVeryEasyExamples ExperimentalAlpha ProvisionalStableExercise 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 fromOMOBJnoMixedFractionsEncoding EncPretty EncCompact EncString EncOpenMathEncHTML DataFormatSchema NoLoggingV2V1Request serviceIdsourcefeedbackScript requestInfo cgiBinary logSchema dataformat emptyRequest getSchema readSchema htmlOutput compactOutput useOpenMath useLoggingdiscoverDataFormat readEncoding$fShowEncodingLogRefRecordservice exerciseidscript requestinfouserid sessionidtaskidtime responsetime ipaddressversionerrormsg serviceinforuleidinputoutput addRequestaddStatenoLogRef newLogRef changeLogprintLog logEnabled logRecordFlag AnalyzeScript MakeScriptForTest MakePages InputFilePrintLogHelpVersion versionTexthelpText fullVersion shortVersiongetFlags ruleToHTML ExampleMap rulesInfoXMLrewriteRuleToFMPcollectExamples ConditionCondRef CondConstCondNot MotivationIs RecognizedIsText:<>: TextEmptyTextRefTextTerm TextStringDeclTypeFeedback StringDecl TextForIdGuardedSimpleSupports NameSpaceScript scriptDecls makeScriptmakeText feedbackDecl textForIdDeclincludes textItemsShowFshowFConstIntBool SomeExerciseStdGenStratCfgServiceTypeRepUnit:|:PairListTagIO:->IsoType TypedValue:::EqualequalserviceDeprecatedserviceFunction makeService deprecateequalMtError tDerivationtIOtText.->tStatetMaybe tStrategyCfgtListtUnittPairtString tExercisetContexttBooltInttRule tLocationtTuple3tTuple4tTuple5 tEnvironment tDifficultytUserIdtStdGen tExamplestIdtScript tSomeExercisetService tStrategytTreetTestSuiteResultfindValuesOfTypeStepInfogeneratecreatesolution tStepInfo allfirstsonefirstallapplicationsstepsremainingfindbuggyrules recognizeRuleexampleDerivations DiagnosisUnknownCorrectDetourExpected WrongRuleSimilar NotEquivalent SyntaxErrordiagnose tDiagnosisOksubmittResultparseScriptSafe parseScriptDomainReasonerDR reasonerId exercisesservicesviewsaliasesscripts testSuitetDomainReasonernewDomainReasonerexercisesSortedservicesSorted findExercise findService defaultScript TypedDecoderDecoder TypedEncoderEncoderOptions Converter fromOptionsrun getExercise getStdGen getScript getRequest withExercise withOpenMath// 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 serviceListmetaServiceListUnknownCondAttrUnknownAttribute NoTextForRuleFeedbackUndefinedUnknownFeedbackUnknownExercise makeScriptForparseAndAnalyzeScript analyzeScript defaultMain defaultCGI CGIResultInput CGIRequestcgiVars cgiInputscgiRequestBodyhRunCGI runCGIEnvFPS decodeInput simpleInputdefaultInputType getCGIVarslogCGI queryInput formInput formEncode urlEncode formDecode urlDecode bodyInput decodeBody takeInputmultipartDecode lookupOrNilGHC.Listlookup CGINothing CGIOutput inputValue inputFilenameinputContentTypeformatResponsedefaultContentTypebodyPartToInput maybeReadmultipart-0.1.2Network.Multipart.HeaderHeaders HeaderNameMonadCGI cgiAddHeadercgiGetCGITCGIrunCGITthrowCGIexceptions-0.8.0.2Control.Monad.Catch MonadThrowthrowMcatchCGItryCGIhandleExceptionCGIunCGIT$fMonadErrorSomeExceptionCGIT$fMonadTransCGIT$fMonadCGICGIT$fMonadMaskCGIT$fMonadCatchCGIT$fMonadThrowCGIT $fMonadIOCGIT $fMonadCGIT$fApplicativeCGIT $fFunctorCGITCookie cookieName cookieValue cookieExpires Data.MaybeNothing cookieDomain cookiePath cookieSecureghc-prim GHC.TypesTrue newCookie findCookie deleteCookie showCookieshowPair readCookies maybeLastLanguageContentEncodingCharset AcceptableQualityAccept starOrEqualTo negotiatequalitycompareSpecificity hasParameter$fAcceptableLanguage$fHeaderValueLanguage $fOrdLanguage $fEqLanguage$fAcceptableContentEncoding$fHeaderValueContentEncoding$fOrdContentEncoding$fEqContentEncoding$fAcceptableCharset$fHeaderValueCharset $fOrdCharset $fEqCharset$fAcceptableContentType$fHeaderValueAcceptwrapperpwrapperconnectToCGIScriptgetRequestInputacceptConnectionsaccept'abortsendBackxhtml-3000.2.1Text.XHtml.InternalsHtmlopenTag openCloseTagcloseTag prettyTagprettyAttValue$fPrettyElement $fPrettyXML$fPrettyParameter$fPrettyReference$fPrettyAttribute $fShowElement $fShowXML$fShowParameter$fShowReference$fShowAttributetoUTF8fromUTF8isHighbetweenvalidinMapfintpairs letterMapmerge baseCharMapideographicMapcombiningCharMapdigitMap extenderMapdecode16 decode16X$fShowUnbalancedError parsec-3.1.5Text.Parsec.Language mondrianDefmondrian haskellDefhaskellemptyDef javaStyle haskellStyle"Text.ParserCombinators.Parsec.ExprbuildExpressionParserInfixPostfixOperator OperatorTable"Text.ParserCombinators.Parsec.Prim runParserpzeroText.Parsec.Expr AssocNone AssocLeft AssocRightAssocText.Parsec.Token LanguageDef caseSensitivereservedOpNames reservedNamesopLetteropStart identLetter identStartnestedComments commentLine commentEnd commentStartGenLanguageDef"Text.ParserCombinators.Parsec.Char CharParserText.Parsec.String parseFromFileParser GenParserText.Parsec.CombinatormanyTill notFollowedByeofanyTokenchainr1chainl1chainlchainrcountendByendBy1sepEndBy sepEndBy1sepBy1sepBy skipMany1optional optionMaybeText.Parsec.CharsatisfyanyCharcharoctDigithexDigitdigitletteralphaNumloweruppertabnewlinenoneOfoneOfText.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 notationDeclpublicIDrunCGI setHeader outputFPSbytestring-0.10.4.0Data.ByteString.Lazy.Internal ByteString outputNothingredirect handleErrorsoutputException GHC.Exception Exception outputError errorPageoutputNotFoundoutputMethodNotAllowedoutputInternalServerErrorgetVargetVars serverName serverPort requestMethodpathInfoprogURIqueryURI requestURIpathTranslated scriptName queryString remoteHost remoteAddrauthType remoteUserrequestContentTypeparseContentTyperequestContentLength requestHeadernetwork-2.4.2.3 Network.URIURI escapePath getInputFPS getMultiInputgetMultiInputFPSgetInputFilenamegetInputContentType readInput getInputs getInputsFPS getInputNamesgetBody getBodyFPS getCookie readCookie setCookie setStatus errorTextgetVarWithDefaultrequestHeaderValue requestAcceptrequestAcceptCharsetrequestAcceptEncodingrequestAcceptLanguage getInput_transformers-0.3.0.0Control.Monad.IO.ClassMonadIOliftIOctType ctSubtype ctParameters ContentTypeshowContentTypeBS ignoreLayoutfromBS escapeAttrescapetrim$fBuildXMLXMLBuilder$fMonoidXMLBuildergetDualDualappEndoEndogetAllAllgetAnygetSumSum getProductProductgetFirstFirstgetLastLasttitle styleSheets htmlContent$fInXMLHTMLPage readDouble$fUniplateOMOBJ $fInXMLOMOBJarbOMOBJ RPCRequest requestParams requestId prettyJSON okResponse errorResponsearbJSON myStringGen$fArbitraryNumber$fArbitraryJSON$fInJSONRPCResponse$fInJSONRPCRequest$fShowRPCResponse$fShowRPCRequest$fInJSONIOException $fInJSON(,,,) $fInJSON(,,) $fInJSON(,) $fInJSON[] $fInJSONBool $fInJSONChar$fInJSONDouble$fInJSONInteger $fInJSONInt $fShowJSON $fShowNumberFunctorMonad:|>:/:Done bestsWith $fFunctorMenu $fChoiceMenu$fEqMenu $fChoice(->) $fChoice[]AGpureGennewGen$fMonoidArbGenQuickCheck-2.6Test.QuickCheck.TestverboseCheckWithResultverboseCheckResultverboseCheckWith verboseCheckquickCheckWithResultquickCheckResultquickCheckWith quickCheckstdArgschattymaxSizemaxDiscardRatio maxSuccessreplayArgsnumTestsSuccessGaveUp interruptedreasonusedSizeusedSeed numShrinksFailureNoExpectedFailureTest.QuickCheck.Propertydisjoinconjoin.&. forAllShrinkforAllwithin==>coverclassifycollect expectFailureverbose whenFail'whenFail printTestCase shrinkingmapSizePropertypropertyTestablePropTest.QuickCheck.ModifiersBlind getOrderedOrdered OrderedList getNonEmptyNonEmpty NonEmptyList getPositivePositive getNonZeroNonZerogetNonNegative NonNegativeShrink2 Shrinking shrinkState shrinkInit ShrinkStateTest.QuickCheck.Arbitrary orderedListvectorcoarbitraryEnumcoarbitraryShowcoarbitraryRealcoarbitraryIntegralshrinkRealFracshrinkIntegral shrinkNothingarbitrarySizedBoundedIntegralarbitraryBoundedEnumarbitraryBoundedRandomarbitraryBoundedIntegralarbitrarySizedFractionalarbitrarySizedIntegralshrink arbitrary Arbitrary coarbitrary CoArbitraryTest.QuickCheck.GenvectorOflistOf1listOfgrowingElementselements frequencyoneof suchThatMaybesuchThatsamplesample'promotechooseresizesizedvariantGenTest.QuickCheck.TextMkStrStrTest.QuickCheck.Exceptiondiscard HashTabletableRefencodeIndexZero extractHash extractIndex hashStringmaxHashatIndexcombineintErr MaxRatingErrorWarningM messageStatus messageRatingsuitescasesdiffTime resultRatingWriteIOSuiteCaseTS makeTestSuiteassertMessageschangeMessagesrunner newlineIndentdotreset suiteResult caseResult getDiffTime returnStrict$fHasRatingRating$fMonoidRating$fMonoidStatus$fHasRatingMessage$fHasStatusMessage$fMonoidMessage $fShowMessage$fHasRatingResult$fHasStatusResult$fMonoidResult $fShowResult$fMonoidTestSuite$fShowShowString fromMirror$fWrapperMirrorLI$fArbitraryListIterator$fUpdateListIterator$fFocusListIterator$fIteratorListIterator$fShowListIterator$fIteratorMirror errBiArrow$fBiFunctor(,)$fBiFunctorEither$fContainerSet $fContainer[].idList idDescriptionidRefappendIdstringIdisIdCharemptyId $fHasIdEither $fHasIdId $fIsIdEither $fIsIdMaybe $fIsId(,,) $fIsId(,)$fIsId()$fIsId[] $fIsIdChar$fIsIdId $fArbitraryId $fMonoidId$fOrdId$fEqId$fReadId$fShowIdEPpidTraverse:+++::***::>>>::@PrimunMswapcopy$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[]$fReferenceChar$fReferenceTerm$fReferenceInt $fHasIdRef$fEqRef $fShowRefGetRefZeroFailThenBindReturnenvMonadRefsIOenvMonadFunctionRefsIOsafeIO$fMonadPlusEnvMonad$fMonadEnvMonad$fAlternativeEnvMonad$fApplicativeEnvMonad$fFunctorEnvMonadunS$fArbitrarySubstitution$fShowSubstitution$fMonoidSubstitution collectSymdiffdiffTermAlgVarRecLabelLeafNodearbTree shrinkTreesparidAlg$fArbitraryCyclicTree$fFixCyclicTree$fTraversableCyclicTree$fFoldableCyclicTree$fMonadCyclicTree$fApplicativeCyclicTree$fFunctorCyclicTree$fBiFunctorCyclicTree$fShowCyclicTree$fBiFunctorDerivation$fFunctorDerivation$fShowDerivation annotationscommit mergeStepsDTshuffle$fBiFunctorDerivationTree$fFunctorDerivationTree$fSequence(->)dividesplitsmatchA defaultMatch safeZipWithproductsassociativeMatchRruleIdruleShow ruleTermView ruleMatchers ruleBuilders buildFunctionfill buildSpecapplyRewriteRuletoTermRR fromTermRR$fApplyRewriteRule$fRuleBuilder(->)b$fRuleBuilderRuleSpeca$fDifferentChar $fDifferent[]$fHasIdRewriteRule$fShowRewriteRule$fFunctorRuleSpec LawBuilderlawSpecAbsAbsMono getLawSpec$fRuleBuilderLawSpeca $fTestableLaw$fLawBuilder(->)a$fLawBuilderLawa$fLawBuilderLawSpeca $fShowLawP$fFirstsProcess $fFixProcess$fSequenceProcess$fChoiceProcess$fFunctorProcess $fEqProcessWZ fromSemiGroup$fCoMonoidZeroWithZero$fCoMonoidWithZero $fCoMonoidSet $fCoMonoid[]$fTraversableWithZero$fMonoidZeroWithZero$fMonoidWithZero 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$fFunctorAdditiveU 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$fShowLocationNoNavTermNavCgetEnvironment getNavigatorliftCN navLocationcurrentNavigatorchangeNavigatorcurrentTchangeTcastT$fHasEnvironmentContext$fNavigatorContext $fShowContext $fEqContextAppend:++::**::>>:UseEnvRewrite 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 $fShowRulegetPaths remainderreorderstopped filterPrefix $fShowPath$fFirstsPrefix$fMonoidPrefix $fShowPrefixdeclId $fArityNary $fArityBinary $fArityUnary$fArityNullary $fHasIdDecl$fEqDecl $fShowDeclinitId$fLabelSymbolRule$fAtomicSymbolRuleLS getProcess$fLiftViewStrategy$fLiftViewLabeledStrategy$fHasIdLabeledStrategy$fApplyLabeledStrategy$fShowLabeledStrategy$fIsStrategyRewriteRule$fIsStrategyRule$fIsStrategyLabeledStrategy$fIsStrategyStrategy $fFixStrategy$fSequenceStrategy$fChoiceStrategy$fApplyStrategy$fShowStrategyfromLoctoLocsplit2ConfigLocationByNameCfg actionGroupsconfigureStrategyTree insertAtLabel removeAtLabelnextId repeatDecl configIds removeDecl collapseDeclhideDecl$fReadConfigAction$fShowConfigLocation$fMonoidStrategyCfg$fShowStrategyCfgnameAttrstrategyTreeToXMLstrategyTreeBuilder addPropertyTriple normalForm rewriteTerm uniplateNav superImpose criticalPairsnoDiamondPairsnoDiamondPairsWith reportPairsOunOInfogetVisitgetOp getFilters getTopDown getReversedOpPreferOrElseVisit VisitManyVisitAll VisitSomeVisitOne VisitFirstvisit layerWith traverseWithsetVisitsetOp$fMonoidOptionT locationList_go=====!==>>prop changeLast $fArbitraryT $fUniplateT$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$fFunctorSmart:||::&&:ComplPView$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$fMonoidDomainReasonerrunErrorDecrunDecEncrunEncrequeststdGengetput runErrorM$fMonadPlusError $fMonadError$fAlternativeError$fApplicativeError$fFunctorError$fConverterDecoder$fAlternativeDecoder$fApplicativeDecoder$fFunctorDecoder$fMonadPlusDecoder$fMonadDecoder$fBuildXMLEncoder$fMonoidEncoder$fConverterEncoder$fApplicativeEncoder$fFunctorEncoder$fMonadPlusEncoder$fMonadEncoder$fAlternativeEncoder$fArrowEncoder$fCategory*Encoderapplooppure Alternative ApplicativeliftA3liftA2liftAsomegetConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipListleftApp^<<<<^>>^^>>returnA runKleisliKleisli ArrowApply ArrowMonad ArrowLoop decodeType decodeConst decodeRuledecodeIddecodeLocation decodeStateenvToLoclocRef decodePathsdecodeEnvironment decodeContext decodeTerm decodeOMOBJdecodeConfigurationdecodeArgEnvironment decodeBinding decodeChild JSONEncoderjsonEncodeConstencodeEnvironment encodeContextencodeStateEnvironmentencodeDerivationencodeDerivationText encodeResultencodeDiagnosis jsonTuple ruleShortInfo exerciseInforunPrefixLocation fromAnswerfirstMajorInStepsnextMajorForPrefix EvalResult inputValues outputValue evalResultvalueslogTypeextractExerciseId addVersion jsonRequest stringOption stringOptionM myHandler jsonEvaluatornewEnvironmentFortoText defaultHintmake expectedId recognizedId diffbeforeId diffafterIdbeforeIdafterId afterTextId motivationId oldreadyId hasexpectedIdhasrecognizedIdhasmotivationIdrecognizedbuggyIdxmlEncoderConst buildTermencodeLocationencodeTypedBindingencodeDifficulty 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