!c 6       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""" " " " " """"""""""""####### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#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&{&|&}&~&'''''''''''''''''''''''''''''''''''((((((((((((((((((((((((((((((((())))))) ) * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*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,{,|,},~,,,,,,,,,,--...........//////////////////////////////////0000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 0 0 0 1111111112222222222 2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g3h3i4j4k4l5m5n5o5p5q5r5s5t5u5v5w5x5y5z5{5|5}5~5555555555555555555555555556666666666666666777777788888888888888888888888888888888899999999999999999999999999:::::::::::::::::::::::;;;;;;; ; ; ; ; ;;<<<<<<<<<<<<===== =!="=#=$>%>&>'>(>)>*>+>,>->.>/>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@lAmAnAoApAqArAsAtAuAvAwAxAyAzA{A|A}A~AAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCDDDDDDDDDDDDDDDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFF F G G G GGGGGGGGGGGGGGGGGGG G!G"G#G$G%G&G'G(G)G*G+G,G-G.G/G0G1G2G3H4H5H6H7I8I9I:I;I<I=I>I?I@IAIBICIDIEIFIGIHIIIJIKILIMINJOKPKQKRKSKTKUKVKWKXKYKZK[K\K]K^K_K`KaKbKcKdKeKfKgKhKiKjKkKlKmKnKoKpKqLrLsLtLuLvLwLxLyLzL{L|L}L~LLLLLLLLLLLLLLLLLLLLLMMMMMMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOPPPPPPPPPPPPPPPPPPPPPPPQQQQQQQQQQQQQQQQQQQQQ Q Q Q Q QQQQQQQQQQQQQQQQRRR R!R"R#R$R%R&R'R(R)R*R+R,R-R.R/R0R1R2R3R4R5R6R7R8R9R:R;R<R=R>R?R@RARBRCRDRERFRGRHRIRJRKRLRMRNRORPRQRRRSRTRURVRWRXRYRZR[R\R]R^R_R`RaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRuRvRwRxRyRzR{S|S}S~SSSSTTUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWXXXXXXXXXYYYYYYYYYYYYYYYYYYYZZZZZZZZ[[[[[[[[[[[\]]]]]]]]]]]]]]]]]]]]]]] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ !^ "^ #^ $^ %^ &^ '^ (^ )^ *^ +^ ,^ -^ .^ /^ 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` Xa Ya Za [a \a ]b ^b _b `b ac bc cc dc ec fc gc hc ic jc kc lc mc nc oc pc qc rc sc tc uc vc wc xc yc zc {d |d }d ~e e e f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f g h h i i j k k l m m m m m m m m m m m m m m n n o o orbastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe2ideas&Type class for bi-directional arrows.  - should be used instead of arr8 from the arrow interface. Minimal complete definition:  -.6ideas,Instances should satisfy the following law:  getSingleton . singleton == Just9ideasA type class for functors that can be applied to a value. Transformation, Rule, and Strategy are all instances of this type class.;ideasReturns zero or one results<ideas>Checks whether the functor is applicable (at least one result)=ideas8If not applicable, return the current value (as default)>ideasMSame as apply, except that the result (at most one) is returned in some monad:ideasReturns zero or more results, !"%$#&)'(*+,-./0123456789:;<=>?@ABCD,9:;<=>?6782345./01@,-&)'(*+"%$#ABCD !31bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe5MNOPQRSTONMPRSQTbastiaan.heeren@ou.nl  provisional portable (depends on ghc) SafeUideas|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.VideasLaws: X, Y Z are all associative, and have W as their unit element.WideasNothing to choose from.XideasNormal (unbiased) choice.YideasLeft-preference.ZideasLeft-biased choice.[ideas-One of the alternatives in a list (unbiased).^ideasSingleton binding_ideas$Special element for denoting successaideas4Equality with a comparison function for the elementsbideas*Returns all elements that are in the menu.cideasYReturns only the best elements that are in the menu with respect to left-biased choices.dideasKReturns only the best elements that are in the menu, with a given ordering.eideasIs the menu empty?fideas*Get an element from the menu by its index.gideas(Only keep the best elements in the menu.hideas5Generalized monadic bind, with the arguments flipped.iideasDMaps a function over a menu that also takes the index of an element.UVWX[Z\]Y^_`abcdefghiVWX[Z\]YU^_abcde`fghi 5 3 3 3X3Y3Z3^5bastiaan.heeren@ou.nl  provisional portable (depends on ghc) SafeFTopqrstuvwxyz{|}~xyz{|}~stuvwpqro0bastiaan.heeren@ou.nl  provisional portable (depends on ghc) SafeFTNoneideasRun an application using CGI. ideasA generic CGI helper, which allows other backends (FastCGI and SCGI) to use the same code as CGI. Most users will not need this function, and can stick with  or  runSendfile. ideas all variablesideasresponseBody of inputideasdestination for outputideas.does the server support the X-Sendfile header? Safe[ bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe SafeCideas-List of symbols defined in transc1 dictionaryideasThis 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 ideasThis 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. ideas~This symbol represents the exponentiation function as described in Abramowitz and Stegun, section 4.2. It takes one argument. ideassThis symbol represents the sin function as described in Abramowitz and Stegun, section 4.3. It takes one argument. ideassThis symbol represents the cos function as described in Abramowitz and Stegun, section 4.3. It takes one argument. ideassThis symbol represents the tan function as described in Abramowitz and Stegun, section 4.3. It takes one argument. ideassThis symbol represents the sec function as described in Abramowitz and Stegun, section 4.3. It takes one argument. ideassThis symbol represents the csc function as described in Abramowitz and Stegun, section 4.3. It takes one argument. ideassThis symbol represents the cot function as described in Abramowitz and Stegun, section 4.3. It takes one argument. ideastThis symbol represents the sinh function as described in Abramowitz and Stegun, section 4.5. It takes one argument. ideastThis symbol represents the cosh function as described in Abramowitz and Stegun, section 4.5. It takes one argument. ideastThis symbol represents the tanh function as described in Abramowitz and Stegun, section 4.5. It takes one argument. ideastThis symbol represents the sech function as described in Abramowitz and Stegun, section 4.5. It takes one argument. ideastThis symbol represents the csch function as described in Abramowitz and Stegun, section 4.5. It takes one argument. ideastThis symbol represents the coth function as described in Abramowitz and Stegun, section 4.5. It takes one argument. ideasThis 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. ideasThis 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. ideasThis 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. ideas_This symbol represents the arcsec function as described in Abramowitz and Stegun, section 4.4. ideas_This symbol represents the arccsc function as described in Abramowitz and Stegun, section 4.4. ideas_This symbol represents the arccot function as described in Abramowitz and Stegun, section 4.4. ideas`This symbol represents the arcsinh function as described in Abramowitz and Stegun, section 4.6. ideas`This symbol represents the arccosh function as described in Abramowitz and Stegun, section 4.6. ideas`This symbol represents the arctanh function as described in Abramowitz and Stegun, section 4.6. ideas`This symbol represents the arcsech function as described in Abramowitz and Stegun, section 4.6. ideas`This symbol represents the arccsch function as described in Abramowitz and Stegun, section 4.6. ideas`This symbol represents the arccoth function as described in Abramowitz and Stegun, section 4.6.  Safeideas/List of symbols defined in relation1 dictionaryideas5This symbol represents the binary equality function. ideasThis symbol represents the binary less than function which returns true if the first argument is less than the second, it returns false otherwise. ideasThis symbol represents the binary greater than function which returns true if the first argument is greater than the second, it returns false otherwise.ideas7This symbol represents the binary inequality function. ideasThis 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. ideasThis 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. ideasMThis symbol is used to denote the approximate equality of its two arguments. Safe)ideas,List of symbols defined in quant1 dictionaryideasThis 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. ideasThis 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 ideas+List of symbols defined in nums1 dictionaryideasThis 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. ideasThis 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. ideas.A symbol to represent the notion of infinity. ideasThis symbol represents the base of the natural logarithm, approximately 2.718. See Abramowitz and Stegun, Handbook of Mathematical Functions, section 4.1. ideas.This symbol represents the square root of -1. ideasvA symbol to convey the notion of pi, approximately 3.142. The ratio of the circumference of a circle to its diameter. ideasA symbol to convey the notion of the gamma constant as defined in Abramowitz and Stegun, Handbook of Mathematical Functions, section 6.1.3. It is the limit of 1 + 12 + 1Q3 + ... + 1/m - ln m as m tends to infinity, this is approximately 0.5772 15664. ideasA 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* ideas,List of symbols defined in logic1 dictionaryideasThis symbol is used to show that two boolean expressions are logically equivalent, that is have the same boolean value for any inputs. ideaszThis symbol represents the logical not function which takes one boolean argument, and returns the opposite boolean value. ideasThis 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. ideasThis 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. ideasThis 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. ideasThis 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. ideas/This symbol represents the boolean value true. ideas0This symbol represents the boolean value false. Safe7ideas+List of symbols defined in list1 dictionaryideas 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. ideasQThis 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. ideasnThis symbol denotes the list construct which is an n-ary function. The list entries must be given explicitly. Safe@ideas-List of symbols defined in linalg2 dictionaryideasThis 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. ideassThis symbol is an n-ary constructor used to represent rows of matrices. Its arguments should be members of a ring. ideasvThis symbol is an n-ary matrix constructor which requires matrixrow's as arguments. It is used to represent matrices. SafeeL ideas*List of symbols defined in fns1 dictionaryideasThe 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. ideascThis symbol denotes the domain of a given function, which is the set of values it is defined over. ideasThis 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. ideasxThis symbol denotes the image of a given function, which is the set of values the domain of the given function maps to. ideasHThe identity function, it takes one argument and returns the same value.ideas[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. ideas^This symbol is used to describe the right inverse of its argument (a function). This inverse may only be partially defined because the function may not have been surjective. If the function is not surjective the right inverse function is ill-defined without further stipulations. No other assumptions are made on the semantics of this right inverse. ideasFThis 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.  ideasfThis symbol represents the function which forms the left-composition of its two (function) arguments.  ideas$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     Safes ideas/List of symbols defined in calculus1 dictionary ideasxThis symbol is used to express ordinary differentiation of a unary function. The single argument is the unary function.  ideasThis 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. ideasThis 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. ideaspThis symbol is used to represent indefinite integration of unary functions. The argument is the unary function. ideasThis 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 ideas,List of symbols defined in arith1 dictionaryideasaThe symbol to represent the n-ary function to return the least common multiple of its arguments. ideasiThe symbol to represent the n-ary function to return the gcd (greatest common divisor) of its arguments. ideas<The symbol representing an n-ary commutative function plus. ideas<This symbol denotes unary minus, i.e. the additive inverse. ideasdThe symbol representing a binary minus function. This is equivalent to adding the additive inverse. ideas:The symbol representing an n-ary multiplication function. ideasThis 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.ideas#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. ideasA 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. ideasA 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. ideasAn 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. ideasAn 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) SafeYideasEncode a string to UTF8 formatideas.Decode an UTF8 format string to unicode points ideas(Encode a string to UTF8 format (monadic)!ideas8Decode an UTF8 format string to unicode points (monadic)"ideas1Test whether the argument is a proper UTF8 string#ideas2Test whether all characters are in the range 0-255$ideas/QuickCheck internal encoding/decoding functions !"#$ !"#$bastiaan.heeren@ou.nl  provisional portable (depends on ghc) SafeQ%&')(*+,-./0126534789:;<=>?@ABDCEFGHIKJLMNOPQRSTUVWXY\Z[]a^_`bcidefghjklmnopqrstuQrqoplmnjkbcidefgh]a^_`XY\Z[WUVNOPQRSTIKJLMBDCEFGH789:;<=>?@A2653410/.+,-*')(&%stubastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safekbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneKbastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safe-                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E6bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safebastiaan.heeren@ou.nl  provisional portable (depends on ghc) None,r,r7bastiaan.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) None ideascRepresents a common misconception. In certain (most) situations, the two objects are not the same.     bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None#ideas>First argument indicates whether the table has a header or not2ideas-Renders as teletype or monospaced Ideas.Text.3ideasRenders as italic text style.4ideasRenders as bold text style..    !"#$%&'()*+,-./0123456.   "#$*&%()-! '+,./0123456!bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None noideas/HTML container with 16px left and right paddingideasNHTML container with 16px left and right padding and 16px top and bottom marginideasCircular badgeideasRectangular tagideasUnordered listideasUnordered listideasCode containerideas)Inline code container (for code snippets)ideasContainer for an HTML tableideasAll properties setideas Striped tableideasBordered linesideasCentered tableideasHoverable tableideasCreates a responsive tableideasSame as w3-card-2ideas4Container for any HTML content (2px bordered shadow)ideas4Container for any HTML content (4px bordered shadow)ideas1Container for one row of fluid responsive contentideas,Row where all columns have a default paddingideas)Container for fixed size centered contentideas"Half (1/2) screen column containerideas#Third (1/3) screen column containerideas'Two third (2/3) screen column containerideas%Quarter (1/4) screen column containerideas,Three quarters (3/4) screen column containerideas%Column container for any HTML contentideas%Occupies the rest of the column widthideas/Hide content on small screens (less than 601px)ideasHide content on medium screensideas1Hide content on large screens (larger than 992px)ideasResponsive imageideasgAdds mobile-first responsiveness to any element. Displays elements as block elements on mobile devices.ideas%Container for layout columns (cells).ideasLayout column (cell).ideas-Aligns content at the top of a column (cell).ideas9Aligns content at the vertical middle of a column (cell).ideas0Aligns content at the bottom of a column (cell).ideasHorizontal barideas Vertical barideas#Provides common style for bar itemsideasSide barideasUsed together with w3-sidebar to create a fully automatic responsive side navigation. For this class to work, the page content must be within a "w3-main" classideas[Container for page content when using the w3-collapse class for responsive side navigationsideasClickable dropdown elementideasHoverable dropdown elementideas6Rectangular button with grey background color on hoverideas(Rectangular button with shadows on hoverideas%Rectangular button with ripple effectideasInput elementsideasCheckbox input typeideasRadio input typeideasInput select elementideasModal containerideasModal pop-up elementideasTooltip elementideas Tooltip textideas&Animates an element from -300px to 0pxideas)Animates an element's opacity from 0 to 1ideas*Animates an element from 0 to 100% in sizeideasGAnimates an element's opacity from 0 to 1 and 1 to 0 (fades in AND out)ideasSpin an icon 360 degreesideas,Animates the width of an input field to 100%ideasnSpecifies a font size: tiny 10px, small 12px, large 18px, xlarge 24px, xxlarge 32px, xxxlarge 48px, jumbo 64pxideasSpecifies a wider textideasChanges the font to serifideasCentered contentideas+Floats an element to the left (float: left)ideas-Floats an element to the right (float: right)ideasLeft aligned textideasRight aligned textideasRight and left aligned textideasCircled contentideasHidden content (display:none)ideas Alias of w3-show (display:block)ideas3Show content as inline-block (display:inline-block)ideas"Fixed content at the top of a pageideas%Fixed content at the bottom of a pageideas5Container for w3-display-classes (position: relative)ideas9Displays content on hover inside the w3-display-containerideas6Adds opacity/transparency to an element (opacity: 0.6)ideas+Turns off opacity/transparency (opacity: 1)ideas7Adds opacity/transparency to an element (opacity: 0.75)ideas7Adds opacity/transparency to an element (opacity: 0.25)ideas6Adds a grayscale effect to an element (grayscale: 50%)ideas6Adds a grayscale effect to an element (grayscale: 75%)ideas7Adds a grayscale effect to an element (grayscale: 100%)ideas.Adds a sepia effect to an element (sepia: 50%)ideas.Adds a sepia effect to an element (sepia: 75%)ideas/Adds a sepia effect to an element (sepia: 100%)ideasCreates an overlay effectideasBackground colorideasTransparent background-colorideas Hover colorideas Text colorideasHover text colorideas7Adds transparency to an element on hover (opacity: 0.6)ideas<Removes transparency from an element on hover (100% opacity)ideas"Adds shadow to an element on hoverideas<Adds a black and white (100% grayscale) effect to an elementideas*Adds a sepia effect to an element on hoverideas%Removes hover effects from an elementideas\Element rounded (border-radius): small 2px, medium 4px, large 8px, xlarge 16px, xxlarge 32pxideasSmall: Padding 4px top and bottom, and 8px left and right, Medium: Padding 8px top and bottom, and 16px left and right, Large: Padding 12px top and bottom, and 24px left and right.ideasYPadding top and bottom: medium 16px, large 24px, xlarge 32px, xxlarge 48px, xxxlarge 64pxideas!Adds an 16px margin to an elementideas0Adds an 16px top and bottom margin to an elementideas"Borders (top, right, bottom, left)ideasRemoves all bordersideas Border colorideas'Adds a thick border (bar) to an elementBLKJIGFEDCHMVUTSRQPNOW_^]\XY[Z`~}|{zyxwvutsrqponmlkjihgfedcba`~}|{zyxwvutsrqponmlkjihgfedcbaW_^]\XY[ZMVUTSRQPNOBLKJIGFEDCH"bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Noneo          #bastiaan.heeren@ou.nl  provisional portable (depends on ghc) SafeH !"#$&%'(,*).+-/0123(,*).+-'$&% !"#10/23$bastiaan.heeren@ou.nl  provisional portable (depends on ghc) SafeCVYGHIJKLMNOPQRSTUVWXYZ[\]^_`abJKGHILMNOPQRSTUVWXYZ[\]^_`ab%bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Safeb 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 { | } ~              ghijklmnopqrstuvghijklmonpqrstuv&bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None?yz{|yz{|'bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None/ ideasCType classfor accessing (and changing) the identifier of an entity.ideas3Type class for labeling entities with an identifierideas Type class - for constructing identifiers. Examples are newId "algebra.equation", newId ("a", "b", "c"), and newId () for the empty identifier.ideasAbstract data type for identifiers with a hierarchical name, carrying a description. The data type provides a fast comparison implementation.ideas8Appends two identifiers. Both parameters are overloaded.ideas?Get the unqualified part of the identifier (i.e., last string).ideasUGet the list of qualifiers of the identifier (i.e., everything but the last string).ideasGet the qualified part of the identifier. If the identifier consists of more than one part, the parts are separated by a period ( ).ideasGet the current description.ideasiGive a description for the current entity. If there already is a description, both strings are combined.ideasShow the identifier.ideas2Compare two identifiers based on their names. Use compare+ for a fast ordering based on hash values.8bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None&'K4ideasMinimal complete definition: toView or both match and build.ideasgeneralized monadic variant of matchideas#Specialized version of traverseView9  9  (bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None6)bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneCV8"%$#&)'(*+ABCD&)'(*+"%$#ABCD*bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneIQideasTop-level groupsideas One exampleideasList of examplesideas)List of examples with the same difficultyideas*List of examples with their own difficultyideas=Use a random generator (from QuickCheck) as example generatorideas;Assign difficulty (to all items without a difficulty level)ideasFTurn examples (and random generators) into tests (and test generators)ideasTop-level examplesideasTop-level random generatorsideasTop-level test casesideasTop-level test generatorsideasAll examples (also in groups)ideas&All random generators (also in groups) ideasAll test cases (also in groups)!ideas$All test generators (also in groups)"ideas6Flatten examples into one collection without subgroups#ideas0Number of examples, including those in subgroups$ideasTests if there ar no examples%ideasuParser for difficulty levels, which ignores non-alpha charactes (including spaces) and upper/lower case distinction.!     !"#$%&'()*!&'()*$#" !    %+bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneM<ideasSatisfaction condition=ideasSatisfaction condition>ideas#Turn errors into irrelevant results 467589:;<=> 8:;<=94675>,bastiaan.heeren@ou.nl  provisional portable (depends on ghc) SafeSXideasEConstruct a (named) test suite containing test cases and other suitesYideas_Turn a QuickCheck property into the test suite. The first argument is a label for the propertyZideas[Turn a QuickCheck property into the test suite, also providing a test configuration (Args)aideas#All errors are turned into warnings(JKLMNOPQRSUVTWXYZ[\]^_`abcdefghijklmnopq(WXYZ[\]_^`abcdSehigfTVUjlkQmnRPNOqpoMJKL-bastiaan.heeren@ou.nl  provisional portable (depends on ghc) SafeV.bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneFSTVWs.             ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneY|/bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None[-0bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneFKTaideasFor 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.,,1bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Nonedi   80 90 :02bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Nonee5 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ5-/.0423&'()*+,!"#$%156 789:;<=>?@ABCDEFGHIJ3bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Nonehghgh4bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Noneiijkijk5bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneCVlxideas$A type class for types as references{ideas,A data type for references (without a value)lnmoprqstuvwxyz{|}~{xyz|w}~vprqstulnmo6bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Nonevideas$Abstract data type for substitutionsideasReturns the empty substitutionideas Returns a singleton substitutionideas Turns a list into a substitutionideasCombines two substitutions. The left-hand side substitution is first applied to the co-domain of the right-hand side substitutionideassLookups a variable in a substitution. Nothing indicates that the variable is not in the domain of the substitutionideas/Returns the domain of a substitution (as a set)ideasApply the substitution  6567bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Nonex]8bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None;=>?ACVy1pbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None{F !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJijF !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJij9bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None ideas%Tests whether the derivation is emptyideas+Returns the number of steps in a derivationideasAll terms in a derivationideasAll steps in a derivationideasZThe triples of a derivation, consisting of the before term, the step, and the after term.ideas7Apply a monadic function to each term, and to each step:bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneideasThe root of the treeideasIs this node an endpoint?ideas All branchesideasaConstructs a node without branches; the boolean indicates whether the node is an endpoint or notideas=Branches are attached after the existing ones (order matters) ;ideas'Returns the annotations at a given nodeideas$Returns all subtrees at a given nodeideaseReturns all leafs, i.e., final results in derivation. Be careful: the returned list may be very longideasdThe argument supplied is the maximum number of steps; if more steps are needed, Nothing is returnedideasRestrict the height of the tree (by cutting off branches at a certain depth). Nodes at this particular depth are turned into endpointsideas9Restrict the width of the tree (by cutting off branches). <ideasFCommit to the left-most derivation (even if this path is unsuccessful) =ideaskFilter out intermediate steps, and merge its branches (and endpoints) with the rest of the derivation treeideas-All possible derivations (returned in a list)ideasThe first derivation (if any)ideas2Return a random derivation (if any exists at all);bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneFTAideas1The type associated with a step in the first set.ideas"The ready predicate (we are done).ideasThe firsts set.ideasThe empty sequence. ideasPrepend a symbol to a sequence. ideasAppend two sequences. ideasSingleton sequence. ideasSequential composition.            5 5<bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneFTxideas6Process data type with efficient support for sequencesideasUGeneralized equality of processes, which takes an equality function for the symbols.=bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  !"#  !"#>bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None&'QVF%ideasBAbstract data type for a context: a context stores an environment.)ideasConstruct a context.ideas-Lift a rule to operate on a term in a context/ideasWApply a function at top-level. Afterwards, try to return the focus to the old position$%&'()*+,-./0123456%)&'($*+,.-01/23645?bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None&'QV;ideas=A type class for constructing a transformation. If possible,  makeTransK should be used. Use specialized constructor functions for disambiguation.;<=>?@ABCDEFGHIJKLMNOPQ>=;<?@ABCDEFGHIJKLMNOPQ@bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Noney_`abcdef`abcd_efAbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None>?lideas)Abstract data type for representing rules >ideasUnique identifier of the rule ?ideas2Inspect whether or not the rule is buggy (unsound) @ideasuReturns whether or not the rule is minor (i.e., an administrative step that is automatically performed by the system)yideasNA special (minor) rule that is never applicable (i.e., this rule always fails)zideas7A special (minor) rule that always returns the identity{ideasaA special (minor) rule that checks a predicate (and returns the identity if the predicate holds)~ideas2Perform the function after the rule has been firedalmnopqrstuvwxyz{|}~lnaopqrstwxuvz{ym}|~Bbastiaan.heeren@ou.nl  provisional portable (depends on ghc) Noneqbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneM;<=>?@ABCDEFGHIJKLMNOPQ_`abcdeflmnopqrstuvwxyz{|}~Cbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  Dbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None<ideas#Allows all permutations of the listideas3Apply a certain strategy or do nothing (non-greedy)ideas@Apply a certain strategy if this is possible (greedy version of )ideas8Repeat a strategy zero or more times (greedy version of )ideas:Apply a certain strategy at least once (greedy version of )ideasRApply the strategies from the list exhaustively (until this is no longer possible)Ebastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneCQVȢ""1Fbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneFTֹideasA path encodes a location in a strategy. Paths are represented as a list of integers and terms (the latter act as input for the dynamic strategies).ideas<The error prefix (i.e., without a location in the strategy).ideas4Make a prefix from a core strategy and a start term.ideascConstruct a prefix by replaying a path in a core strategy: the third argument is the current term.ideasUTransforms the prefix such that only major steps are kept in the remaining strategy.ideasThe 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).ideasReturns the current Path.ideasThe empty path.  Gbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneFQTV2  ideas.A strategy which is labeled with an identifier ideas)Type class to turn values into strategies ideas!Abstract data type for strategiesideasLabels a strategy with an identifier. Labels are used to identify substrategies and to specialize feedback messages. The first argument of  can be of type  AK, in which case the string is used as identifier (and not as description).ideas!Removes the label from a strategyideas1Construct the empty prefix for a labeled strategyideas^Construct a prefix for a path and a labeled strategy. The third argument is the current term.ideasgConstruct a prefix for a list of paths and a labeled strategy. The third argument is the current term.ideas^Construct a prefix for a path and a labeled strategy. The third argument is the initial term.ideasEReturns a list of all major rules that are part of a labeled strategyideasAApply a function to all the rules that make up a labeled strategyideasjUse a function as do-after hook for all rules in a labeled strategy, but also use the function beforehandideasCUse a function as do-after hook for all rules in a labeled strategy     !"#    # !"Hbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneE6ideas?Returns a list of all strategy locations, paired with the label34563456Ibastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneFTFideas?Apply a strategy at least once, but collapse into a single step789:;<=>?@ABCDEF>?789:;<=@ACDEFBJbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneqNNKbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneWPideas<Put two strategies in sequence (first do this, then do that)Qideas=Choose between the two strategies (either do this or do that)RideasInterleave two strategiesSideasAlternate two strategiesTideas/Prefixing a basic rule to a strategy atomicallyUideasFInitial prefixes (allows the strategy to stop succesfully at any time)Videas:The strategy that always succeeds (without doing anything)WideasThe strategy that always failsXideas5Makes a strategy atomic (w.r.t. parallel composition)Yideas)Puts a list of strategies into a sequenceZideas)Combines a list of alternative strategies[ideas2Combines a list of strategies with left-preference\ideas5Combines a list of strategies with left-biased choice]ideas)Merges a list of strategies (in parallel)`ideas#Allows all permutations of the listaideas1Repeat a strategy zero or more times (non-greedy)bideas3Apply a certain strategy at least once (non-greedy)cideas*Apply a strategy a certain number of timesdideas3Apply a certain strategy or do nothing (non-greedy)eideaseChecks whether a predicate holds for the current term. The check is considered to be a minor step.fideasCheck whether or not the argument strategy cannot be applied: the result strategy only succeeds if this is not the case (otherwise it fails).gideas8Repeat a strategy zero or more times (greedy version of a)hideas:Apply a certain strategy at least once (greedy version of b)iideas@Apply a certain strategy if this is possible (greedy version of d)jideasaChoose between the two strategies, with a preference for steps from the left hand-side strategy.kideastLeft-biased choice: if the left-operand strategy can be applied, do so. Otherwise, try the right-operand strategylideas2Repeat the strategy as long as the predicate holdsmideas-Repeat the strategy until the predicate holdsnideasRApply the strategies from the list exhaustively (until this is no longer possible)oideas?The structure of a dynamic strategy depends on the current termpideas]Create a strategy from a dependency graph with strategies as nodes Does not check for cycles"OPQRSTUVWXYZ[\]^_`abcdefghijklmnop"PQRSTUVWXYZ[\]^_`abcdefghijklmnoOpP5Q3R2S2T5j4k4Lbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneAideasleft-most innermost traversal.ideasleft-most outermost traversal. qrstuvwxyz{|}~ rsqtuvwxyz{|}~Mbastiaan.heeren@ou.nl  provisional portable (depends on ghc) Nonej22345rbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None"g    3456789:;<=>?@ABCDEFOPQRSTUVWXYZ[\]`abcdefghijklmnopqrstuvw|}~W    PQRSTVWXUYZ[\]`abcdefghikjnlmoOpqrstuvw|}~6345Nbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneCQVo4 BideasHValues with a dynamic type that is parameterized over the exercise term.ideas The status of an exercise class.ideas<A released exercise that has undergone some thorough testingideas4A released exercise, possibly with some deficienciesideas%An exercise that is under developmentideas-An exercise for experimentation purposes onlyideas1For constructing an empty exercise, use function  or .ideas6Identifier that uniquely determines the exercise: see ) for how to use values with identifiers.ideasThe status of the exercise.ideasQParser for expressions of the exercise class, which either results in an error ( C) or a result ( D).ideashPretty-printer for expressions of the exercise class. Pretty-printing should be the inverse of parsing.ideasUTests wether two expressions (with their contexts) are semantically equivalent. Use F for defining the equivalence check when the context is not relevant.ideasTests wether two expressions (with their contexts) are syntactically the same, or nearly so. Expressions that are similar must also be equivalent. Use : if the context is not relevant for the similarity check.ideasPredicate suitable identifies which expressions can be solved by the strategy of the exercise class. It acts as the pre-condition of the strategy.ideasPredicate ready checks if an expression is in a solved form (accepted as a final solution). It acts as the post-condition of the strategy.ideas=The rewrite strategy that specifies how to solve an exercise.ideasIs 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.ideasPAre there extra rules, possibly buggy, that do not appear in the strategy? Use  to get all rules.ideasThe 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).ideassConstraints for constraint-based tutors. A constraint contains a relevance condition and a satisfaction condition.ideasA navigator is needed for traversing the expression and for using the traversal strategy combinators. By default, an exercise has no navigator.ideas<A finite list of examples, each with an assigned difficulty.ideas%Conversion to and from the (generic) &L datatype. Needed for representing the expression in the OpenMath standard.ideasiRepresentation of the type of expression: this provides a back door for exercise-specific functionality.ideasOExtra exercise-specific properties, not used by the default feedback services.ideasThe H constructor function provides sensible defaults for all fields of the  record.ideasIn addition to the defaults of $, this constructor sets the fields , , and .ideas$Pretty print a value in its context.ideas,Checks if an expression is in a solved form.ideasGChecks if the expression is suitable and can be solved by the strategy.ideas3Returns a sorted list of rules, without duplicates.ideas4Finds a rule of an exercise based on its identifier.ideasMakes 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.ideasGet all constraint violationsideasAn exercise with the status  or ideasAn exercise that is not publicideas>Returns the examples of an exercise class lifted to a context.ideas`Returns a random exercise of a certain difficulty with some random number generator. The field randomExerciseW is used; if this is not defined (i.e., Nothing), one of the examples is used instead.ideasCReturns a list of randomly generated terms of a certain difficulty.ideasZAn exercise generator for testing purposes (including corner cases); first generator only.ideas6Puts a value into a context with an empty environment.ideasYFunction for defining equivalence or similarity without taking the context into account.ideas,Encapsulates a type representation (use for  field).ideas7Set an exercise-specific property (with a dynamic type)ideasfSet an exercise-specific property (with a dynamic type) that is parameterized over the exercise term.ideas5Get an exercise-specific property (of a dynamic type)ideasdGet an exercise-specific property (of a dynamic type) that is parameterized over the exercise term.ideashShows the default derivation for a given start term. The specified rule ordering is used for selection.ideasVShows all derivations for a given start term. Warning: there can be many derivations.ideasiPrints the default derivation for a given start term. The specified rule ordering is used for selection.ideasWPrints all derivations for a given start term. Warning: there can be many derivations.ideas`Adds the difference of the environments in a derivation to the steps. Bindings with identifier locationH are ignored. This utility function is useful for printing derivations.C    %C    %Obastiaan.heeren@ou.nl  provisional portable (depends on ghc) NonewideasAlias for strategy combinator failideasAlias for strategy combinator notideasAlias for strategy combinator repeatideasAlias for strategy combinator  replicateideasAlias for strategy combinator sequenceideasAlias for strategy combinator until   !"%$#&)'(*+,-./0123456789:;<=>?@ABCDJKM    %89:;<=> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJijlnmoprqstuvwxyz{|}~$%&'()*+,-./0123456;<=>?@ABCDEFGHIJKLMNOPQ_`abcdeflmnopqrstuvwxyz{|}~    3456789:;<=>?@ABCDEFOPQRSTUVXZ[\]`abdehijklnopqrstuvw|}~   !"%$#&)'(*+,-./0123456789:;<=>?@ABCDJKM    %89:;<=> !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJijlnmoprqstuvwxyz{|}~$%&'()*+,-./0123456;<=>?@ABCDEFGHIJKLMNOPQ_`abcdeflmnopqrstuvwxyz{|}~    3456789:;<=>?@ABCDEFOPQRSTUVXZ[\]`abdehijklnopqrstuvw|}~JKPbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneFT EideasEProduces a 80 bit random number, represented as 20 hexadecimal digitsQbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None          Rbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None&';<=QVT43%-5(#/'&+,!$".21) *069?<>;=8:7@ABCDEGFHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopTEHIFG69?<>;=8:743%-5(#/'&+,!$".21) *0@ABCDJb^\]T_`aUclmPZQVShkjNdeXLKOMWnfigRY[op83=5B2O5Sbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None;=>?FT FideasDContinue with a prefix until a certain strategy location is reached.{|}~{|}~Tbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  Ubastiaan.heeren@ou.nl  provisional portable (depends on ghc) None7Vbastiaan.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;=>?z  Ybastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  Zbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None;=>?[bastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneE  \bastiaan.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) None< ideasKThe Record datatype is based on the Ideas Request Logging Schema version 2. *ideas0Add record information from the Request datatype +ideasAAdd record information from the state (userid, sessionid, taskid)&    # $ ( ) %            ! " & ' * + , - . / 0 1 2 3 4 5 6 7&   # $ ( ) %            ! " & ' * +  - , . / 2 4 5 6 3 7 0 1_bastiaan.heeren@ou.nl  provisional portable (depends on ghc) None ; < A = > ? @ B C D E F G H ; < A = > ? @ B C H D E G F`bastiaan.heeren@ou.nl  provisional portable (depends on ghc) Nonet J P O N L K M Q R S T U J U T M K L N O P Q R Sabastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneQV  X Y Z [ \ X Y \ Z [bbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None^ ] ^ _ ` ^ _ ` ]cbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneQV uideas?Uses exercise pretty-printer in case latex encoding is missing. videas?Uses exercise pretty-printer in case latex encoding is missing. 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 e f g h i j k n m l o p q r s t u v w x d c y z b a y5dbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None&'QV { | } { | }ebastiaan.heeren@ou.nl  provisional portable (depends on ghc) None&'x ~   ~  fbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneQV+ + gbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None&'b  hbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None&'  ibastiaan.heeren@ou.nl  provisional portable (depends on ghc) None&'  jbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None=  kbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None&'  lbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None  mbastiaan.heeren@ou.nl  provisional portable (depends on ghc) None nbastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneÁ  obastiaan.heeren@ou.nl  provisional portable (depends on ghc) NoneĺE  E Gstustvstwsxysxzs{|st}st~ststststststststststssssxsxsxsxv           ! " # $ % & ' ( ) * + , - . / 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[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKIJLIJMIJNIO2IOPIOQIORIOSIOTIOUIOVIOWIOXIOYIOZIO[\]^_`abcdefghijkklmnopqrs t u v w x y z { | } ~       R                                     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(!!!!!!!!!!!!!!!!!!!!!!!!!!! !! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!!!-!.!/!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"d"e"f"g"h"i"i"j"k"l"m"n"o"p"q"r""s"t"u"v#w#x#y#z#{#|#}#~######################################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%&&&&&&'''''''''''''''''''''''''''''''''''      !"#$%&'()*+,-./012345678(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**{*|*}*~***********++++++++++++++++++++++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,--...........////////////////////////////////// 0 0 0 0 000000000000000H000004000 0!0"0#0$0%0&0'0(0)0*0+0,0-0.0/000102030405060708090:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[1\1]1^1_1`1a1b1c1d2e2f2g2h2i2j2k22l2m2n2o2p2q2r2s2t2u2v2w2x2y2z212{2|2}2~2n2o2222222222222222222222222222222222222222222222222223344455555555555555555555555555555555555555555555566666666666^6666677777778888888888888888888 8 8 8 8 8888888888999999999 99!9"9#9$9%9&9'9(9)9*9+9,9-9.9/90: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<M<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>{>|>}?~???????????????????????????????????@@@@@@@@@@@@@AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCDDD1DDDDDDDDDDDDDDEEEEEEEEEEEEE E E E E EE{EEEEEEEEEEEEEE%EEEEE E!E"E#E$E%E&E'E(E)E*E+E,E-E.F/F0F1F2F3F4F5F6F7F8F9F:F;F<F=F>F?F@FAFBFCFDGEGFGGGHGIGJGKGFGLGMGNGOGPGQGRGSGTGUGVGWGXGYGZG[G\G]G^G_G`GaGbGcGdGeGfGgGhGiGjGkGlHmHnHoHpIqIrIsItIuIvIwIxIyIzI{I|I}II1I~IIIIIIIJKKNKKKKKKKKKPKKKKKKKKKKKKKKKKKKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMMMyMNNNNNNNNNNNNNNNINNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOPPPPPPPPPPPPPPPP PP P P P PPQQQQQQQQQQQQQQQQQ Q Q!QQ"Q#Q$Q%Q&Q'Q(Q)Q*Q+Q,Q-Q.Q/Q0Q1Q2Q#Q3Q4Q5R6R7R8R9RRHRRRRhRRR$R:RRtRR;RR<RRR=R>RR?R@RARBRCRDRERFRGR8RHRIRJRKRLR9RMRNRORPRQRRRSRTRURVRWRXRYRZR[R\R]R^R_R`RaRbRcRdReRfRgRhRiRjRkRlRmRnRoRpRqRrRsRtRuRvRwRxRyRzR{R|R}R~RRRSSSSSSSTTUUUUUUUUUUUUUUUUUUUUUVVVVVVVVVVVVVVVVWWWWWWWWWWWWWWWWXXXXXXXXXYYYYYYYYYYYYYYYYYYYZZZ*ZZZZZ[[[[[[[[[[[\]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ] ] ^ ^ ^ ^^ ^ ^^ ^ ^^^ ^ ^ ^ ^ ^ ^^^ ^ ^ ^^^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ !^ "_ #_ $_ %_ &_ '_ (_ )_ *_ +_ ,_ -__ ._ /_ 0` 1` 2` 3` ` 4` 5` 6` 7` 8` 9` :` ;` <` =a >a ?a @a Aa Bb Cb Db Eb Fc Gc Hc Ic Jc Kc Lc Mc Nc Oc Pc Qc Rc Sc Tc Uc Vc Wc Xc Yc Zc [c \c ]c ^c _c `d ad ad be ce de ef ff ff gf hf if jf kf lf mf nf of pf qf rf sf tf uf vf wf xf yf zf {f |f }f ~f f f f f f f f f f f f f f f f f g h h i i j k k l m m m m m m m m m m m m m m n n o o o sx sx AF    0           & )                     F  _                               !  " # $ % # $ & # $ ' # $ ( # $ ) # $ * # $ + # , - # , . # , / # , 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 # R T # R U # R V # R W # R X # R Y # Z [ # Z \ # Z ] # Z # Z ^ # Z _ # Z ` # Z a # Z b # Z c # Z d # Z e # Z f # Z g # Z h # Z i # Z j # Z k # Z l # Z m # Z n # Z o # p q # p r # p s # p t # p u # p v # p w # p x # p y # p z # p { # p | # p } # p ~ # p  # p # pF # p # p # p # p # p # p # p # p # p # p # p # # # # # # # # # # , # , # , # , # , # , # , # , # , # , # , # R # R # R # Rl # Z #  #  # #  #  # #  #  # #  #  # # #  #  # #  #  # #  #  # #  #  # #  #  # #  #  # #  #  # #  #  # #  # # #  #  #  #  # #  #  #  #  # # p # p # p # p # p #  #  # # # # # # #  #  #  #  #  #  #  #  # # # # # # # # # sx s   s s s s s s s s s s s s s s s s s s s s s s s ?s s s s s s  s  s  s  s  s  1 t1 1 : : : A A A sxNs  s  P S   ideas-1.8-2ao73DYRXpZ23YK7xXheorIdeas.Common.ViewIdeas.Utils.ParsingIdeas.Common.Traversal.UtilsIdeas.Common.ClassesIdeas.Common.Rewriting.ACIdeas.Common.Strategy.ChoiceIdeas.Common.Traversal.IteratorIdeas.Main.CGIIdeas.Main.RevisionIdeas.Text.LatexIdeas.Text.OpenMath.Symbol&Ideas.Text.OpenMath.Dictionary.Transc1(Ideas.Text.OpenMath.Dictionary.Relation1%Ideas.Text.OpenMath.Dictionary.Quant1$Ideas.Text.OpenMath.Dictionary.Nums1%Ideas.Text.OpenMath.Dictionary.Logic1$Ideas.Text.OpenMath.Dictionary.List1&Ideas.Text.OpenMath.Dictionary.Linalg2#Ideas.Text.OpenMath.Dictionary.Fns1(Ideas.Text.OpenMath.Dictionary.Calculus1%Ideas.Text.OpenMath.Dictionary.Arith1Ideas.Text.UTF8Ideas.Text.XML.DocumentIdeas.Text.XML.UnicodeIdeas.Utils.DecodingIdeas.Text.XML.ParserIdeas.Text.XMLIdeas.Utils.UniplateIdeas.Text.OpenMath.ObjectIdeas.Text.OpenMath.TestsIdeas.Text.OpenMath.FMPIdeas.Text.HTMLIdeas.Text.HTML.W3CSSIdeas.Text.HTML.TemplatesIdeas.Text.JSONIdeas.Utils.PreludeIdeas.Utils.QuickCheckIdeas.Utils.StringRefIdeas.Common.Id Ideas.Common.Strategy.CyclicTreeIdeas.Common.PredicateIdeas.Common.ExamplesIdeas.Common.ConstraintIdeas.Utils.TestSuiteIdeas.Utils.BlackBoxTestsIdeas.Utils.TypeableIdeas.Text.MathML Ideas.Common.Traversal.NavigatorIdeas.Common.Traversal.TestsIdeas.Common.Rewriting.Term!Ideas.Common.Rewriting.DifferenceIdeas.Common.Rewriting.AutoTermIdeas.Common.Environment#Ideas.Common.Rewriting.Substitution"Ideas.Common.Rewriting.Unification"Ideas.Common.Rewriting.RewriteRuleIdeas.Common.DerivationIdeas.Common.DerivationTreeIdeas.Common.Strategy.SequenceIdeas.Common.Strategy.Process!Ideas.Common.Rewriting.ConfluenceIdeas.Common.Context Ideas.Common.Rule.TransformationIdeas.Common.Rule.RecognizerIdeas.Common.Rule.AbstractIdeas.Common.Rule.ParameterIdeas.Common.Strategy.SymbolIdeas.Common.Strategy.Derived"Ideas.Common.Strategy.StrategyTreeIdeas.Common.Strategy.PrefixIdeas.Common.Strategy.AbstractIdeas.Common.Strategy.Location#Ideas.Common.Strategy.ConfigurationIdeas.Encoding.StrategyInfo!Ideas.Common.Strategy.CombinatorsIdeas.Common.Strategy.TraversalIdeas.Common.Strategy.LegacyIdeas.Common.ExerciseIdeas.Common.LibraryIdeas.Service.State#Ideas.Service.FeedbackScript.SyntaxIdeas.Service.Types"Ideas.Service.ProblemDecomposition#Ideas.Service.FeedbackScript.ParserIdeas.Service.DomainReasonerIdeas.Service.BasicServicesIdeas.Service.DiagnoseIdeas.Service.Submit Ideas.Service.FeedbackScript.RunIdeas.Service.FeedbackText%Ideas.Service.FeedbackScript.AnalysisIdeas.Encoding.RulePresenterIdeas.Encoding.RequestIdeas.Encoding.LoggingIdeas.Main.CmdLineOptionsIdeas.Encoding.OptionsIdeas.Encoding.OpenMathSupportIdeas.Encoding.RulesInfoIdeas.Encoding.EncoderIdeas.Encoding.EvaluatorIdeas.Encoding.EncoderXMLIdeas.Encoding.LinkManagerIdeas.Encoding.EncoderJSONIdeas.Encoding.EncoderHTMLIdeas.Encoding.DecoderXMLIdeas.Encoding.ModeXMLIdeas.Encoding.DecoderJSONIdeas.Encoding.ModeJSONIdeas.Common.ExerciseTestsIdeas.Service.ServiceListIdeas.Main.DefaultIdeas.Common.RewritingIdeas.Common.RuleIdeas.Common.Strategybase Control.Arrowarrfirst|||GHC.Base<*>*> Control.Monad>=>&&&***secondArrow zeroArrow ArrowZero<+> ArrowPlus+++rightleft ArrowChoiceControl.Category>>><<< Data.Functor<$><**><$<*mplusMinorminorsetMinorisMinorisMajorBuggybuggysetBuggyisBuggyBoolean<&&><||> complement BoolValuetruefalsefromBoolisTrueisFalseFixfix BiFunctorbiMapmapFirst mapSecondBiArrow<->!-><-! Container singleton getSingletonApplyapplyAllapply applicableapplyDapplyM applyListmapBothandsorsimplies equivalent$fContainerSet $fContainer[]$fBiFunctor(,)$fBiFunctorEither$fBoolValue(->)$fBoolValueBool $fBoolean(->) $fBooleanBool PairingsPair PairingsListPairings pairingsNone pairingsC pairingsApairingsMatchA pairingsACMenuChoiceempty.|../.|>choice preferenceorelse|->doneMenuhasDoneeqMenuByelemsbests bestsOrderedisEmpty getByIndexcutonMenuonMenuWithIndex $fChoice(->) $fChoice[] $fFunctorMenu $fChoiceMenu$fEqMenuMirrorWrapperwrapunwrapFocusUnfocusfocusfocusMunfocusUpdateupdatecurrentchangereplacechangeMchangeG liftFocus unliftFocus liftWrapper unliftWrapper mapWrapper makeMirror>|<safefixpfixpl$fWrapperMirror $fShowMirror $fEqMirror ListIteratorIteratornextpreviousfinalpositionisFirstisFinalhasNext hasPrevious searchForwardsearchBackward searchNextsearchPrevious searchWith$fIteratorMirror$fArbitraryListIterator$fUpdateListIterator$fFocusListIterator$fIteratorListIterator$fShowListIterator$fEqListIteratorrun ideasVersion ideasRevisionideasLastChangedToLatextoLatex toLatexPrec toLatexListLatexcommasbracketsparensarraycommand $fMonoidLatex$fSemigroupLatex$fIsStringLatex $fShowLatex $fToLatexInt $fToLatexChar$fToLatexMaybe $fToLatex[]Symbol makeSymbol extraSymbol dictionary symbolName showSymbol 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 relation1ListeqSymbolltSymbolgtSymbol neqSymbol leqSymbol geqSymbol approxSymbol quant1List forallSymbol existsSymbol nums1ListbasedIntegerSymbolrationalSymbolinfinitySymboleSymboliSymbolpiSymbol gammaSymbol naNSymbol logic1ListequivalentSymbol notSymbol andSymbol xorSymbolorSymbol impliesSymbol trueSymbol falseSymbol list1List mapSymbolsuchthatSymbol listSymbol linalg2List vectorSymbolmatrixrowSymbol matrixSymbolfns1ListdomainofapplicationSymbol domainSymbol rangeSymbol imageSymbolidentitySymbolleftInverseSymbolrightInverseSymbol inverseSymbolleftComposeSymbol lambdaSymbol calculus1List diffSymbol nthdiffSymbolpartialdiffSymbol intSymbol defintSymbol arith1List lcmSymbol gcdSymbol plusSymbolunaryMinusSymbol minusSymbol timesSymbol divideSymbol powerSymbol absSymbol rootSymbol sumSymbol productSymbolencodedecodeencodeMdecodeMisUTF8allBytes propEncodingExternalTextDecl ConditionalIncludeIgnorePublicID ExternalIDSystemPublic EntityValueAttValue EntityDefAttDef DefaultDeclRequiredImpliedValueFixedAttTypeIdType IdRefType IdRefsType EntityType EntitiesType NmTokenType NmTokensType StringTypeEnumerationType NotationTypeCPSequence QuestionMarkStarPlusCPName ContentSpecEmptyAnyMixedChildren DocTypeDecl ElementDecl AttListDecl EntityDecl NotationDecl DTDParameterDTDConditionalDTDContentElementname attributescontentXMLTaggedCharDataCDATA ReferenceXMLDoc versionInfoencoding standalonedtd externalsroot ParameterCharRef EntityRef Attribute:= AttributesName prettyXML prettyElementescape$fPrettyReference$fShowReference$fPrettyParameter$fShowParameter$fPrettyAttribute$fShowAttribute$fPrettyElement $fPrettyXML $fShowElement $fShowXMLisLetter isExtenderisDigitisCombiningChardecodingErrorrunErrorEncoderDecodersymbol runDecoder runEncoder runErrorM$fMonadPlusError $fMonadError$fAlternativeError$fApplicativeError$fFunctorError$fMonoidDecoder$fSemigroupDecoder$fFunctorDecoder$fApplicativeDecoder$fAlternativeDecoder$fMonadDecoder$fMonadPlusDecoder$fMonadReaderDecoder$fMonadStateDecoderUnbalancedError NotClosed NotOpened parseSimplecompleteskipnaturalOrFloatfloat<..>rangesstopOnbalanced$fShowUnbalancedErrordocument extSubset extParsedEntInXMLfromXML listFromXMLToXMLtoXML listToXML XMLBuilderBuildXML.=.stringbuildertagchartextelementemptyTagparseXML parseXMLFilemakeXML compactXML findAttributechildren findChildren findChildgetData expecting decodeDatadecodeAttribute decodeChilddecodeFirstChild builderXMLfoldXMLtrimXML emptyContent fromBuilder$fBuildXMLDecoder$fIsStringXMLBuilder$fBuildXMLXMLBuilder$fMonoidXMLBuilder$fSemigroupXMLBuilder $fToXMLMaybe $fToXML() $fEqAttribute$fEqXML&uniplate-1.6.12-70T6fqwjhEaCZitzT7jmOeData.Generics.Uniplate.Directplate|*|-||*!Data.Generics.Uniplate.OperationscontextsholespararewriterewriteM transform transformMuniverseUniplatedescenddescendMuniplateOMOBJOMIOMFOMVOMSOMAOMBINDgetOMVs xml2omobj omobj2xml$fUniplateOMOBJ $fInXMLOMOBJ $fToXMLOMOBJ $fShowOMOBJ $fEqOMOBJFMPquantor metaVariables leftHandSiderelation rightHandSidetoObjecteqFMPbuggyFMPHTMLPageToHTMLtoHTML listToHTML HTMLBuildershowHTMLaddCSS addScriptaddStylehtmlPagelinkh1h2h3h4h5h6preTextprehrbrttTextultable keyValueTablespacesspacebullet<#>spacedimagedivClass spanClass highlightXMLidAclassAstyleAtitleAttitalicboldbigsmall $fToHTMLChar $fToHTMLBool $fToHTMLInt $fToHTMLMap $fToHTML(,,) $fToHTML(,) $fToHTML() $fToHTMLMaybe$fToHTMLEither $fToHTML[]$fToXMLHTMLPage ColorThemeL1L2L3L4L5D1D2D3D4D5PositionTopLeftTopTopRight CenterLeftCenter CenterRight BottomLeftBottom BottomRightSizeTinySmallMediumLargeXLXXLXXXLJumboColorRedPinkPurple DeepPurpleIndigoBlue LightBlueCyanAquaTealGreen LightGreenLimeSandKhakiYellowAmberOrange DeepOrangeBlueGrayBrown LightGrayGrayDarkGrayBlackPaleRed PaleYellow PaleGreenPaleBlueWhitew3cssw3class w3classIfonToponLeftonRightonBottomuncamel containerpanelbadgeulWithcodecodespantableAllstripedborderedcentered hoverable responsivecardcard2card4row rowPaddinghalfthirdtwothirdquarter threequartercolrest hideSmall hideMedium hideLargemobilecellRowcellcellTop cellMiddle cellBottombarbarBlockbarItemsidebarcollapsemainPage dropdownClick dropdownHoverbuttonbtnrippleinputcheckradioselectmodal modalContenttooltip tooltipTextanimateanimateOpacity animateZoom animateFadingspin animateInputfontSizewideserifcenter leftAlign rightAlignjustifycirclehide showBlockshowInlineBlocktopbottomdisplay displayHoveropacity opacityOff opacityMin opacityMax grayscaleMin grayscale grayscaleMaxsepiaMinsepiasepiaMaxoverlay background transparenthover textColor hoverColor hoverOpacityhoverOpacityOff hoverShadowhoverGrayscale hoverSepia hoverNoneroundedpaddingvpaddingmargin marginPossectionborder borderPosnoBorder borderColorbarPostheme_ textTheme borderThemetheme $fShowSize $fShowColor$fEqSize $fOrdSize$fShowPosition $fEqPosition$fShowColorThemeButton buttonUrl buttonStyle buttonTextStyleWebPagetitle menuButtons menuStyle iconBarsStyle sideWidth sideHeader sideButtons sideStyleiconCloseStylefooter footerStyle fontAwesomewebpage RPCHandler RPCResponseResponseresponseResult responseError responseIdInJSONtoJSON listToJSONfromJSON listFromJSONNumberIDKeyJSONStringArrayObjectNull compactJSON parseJSONlookupMjsonRPC$fArbitraryNumber $fShowNumber$fArbitraryJSON $fShowJSON $fInJSON(,,,) $fInJSON(,,) $fInJSON(,) $fInJSON[] $fInJSONBool $fInJSONChar$fInJSONDouble$fInJSONInteger $fInJSONInt$fInJSONRPCRequest$fShowRPCRequest$fInJSONRPCResponse$fShowRPCResponse $fEqNumber$fEqJSON ShowStringfromShowStringSomereadIntreadMsubsets isSubsetOf cartesiandistinctallsamefixpoint splitAtElemsplitsWithElem timedSeconds getDiffTimefst3snd3thd3headM findIndexM elementAtchangeAt replaceAtlistmwhenmunless$fReadShowString$fShowShowString$fEqShowString$fOrdShowStringArbGen generator generatorsarbGenconstGen constGensunaryGen unaryArbGen unaryGens binaryGen binaryGenstoArbGencommonuncommonrarechangeFrequency$fMonoidArbGen$fSemigroupArbGen StringRef stringReftoString tableStatus $fEqStringRef$fOrdStringRefHasIdgetIdchangeIdIdentify@>IsIdnewIdconcatIdId# unqualified qualifiers qualification descriptiondescribeshowId compareId $fToHTMLId $fMonoidId $fSemigroupId$fOrdId$fEqId$fReadId$fShowId $fIsIdEither $fIsIdMaybe $fIsId(,,) $fIsId(,)$fIsId()$fIsId[] $fIsIdChar$fIsIdId $fArbitraryId $fHasIdEither $fHasIdId ViewPackageLiftViewliftView liftViewIn IsomorphismfromtoViewIsViewbuildtoViewMatcher IsMatchermatchmatchermatchM belongsToviewEquivalentviewEquivalentWith makeMatcher canonical canonicalWithcanonicalWithM isCanonicalisCanonicalWithsimplify simplifyWith simplifyWithMmakeView matcherViewidentityinverseswapViewlistView traverseView$<propIdempotence propSoundnesspropNormalForm$fIsMatcherMatcher$fIdentifyView $fHasIdView$fIsMatcherView$fArrowChoiceView $fBiArrowView $fArrowView$fCategoryTYPEView $fIsViewView$fIdentifyIsomorphism$fHasIdIsomorphism$fIsViewIsomorphism$fIsMatcherIsomorphism$fArrowChoiceIsomorphism$fBiArrowIsomorphism$fArrowIsomorphism$fCategoryTYPEIsomorphism$fHasIdViewPackage$fCategoryMatcher$fArrowMatcher$fArrowZeroMatcher$fArrowPlusMatcher$fArrowChoiceMatcher CyclicTreeAlgfNodefLeaffLabelfRecfVar CyclicTree shrinkTreenodenode0node1node2leaflabelisNodeisLeafisLabel replaceNode replaceLabel replaceLeaffold foldUnwindemptyAlg monoidAlg$fArbitraryCyclicTree$fFixCyclicTree$fMonadCyclicTree$fFunctorCyclicTree$fTraversableCyclicTree$fFoldableCyclicTree$fApplicativeCyclicTree$fBiFunctorCyclicTree$fShowCyclicTree Predicate predicate predicateView evalPredicate$fIdentifyPredicate$fHasIdPredicate$fBooleanPredicate$fBoolValuePredicate DifficultyVeryEasyEasy Difficult VeryDifficultExamplesgroupsexample exampleList examplesForexamplesWithDifficultyrandomgroup difficulty forTestingtopLevelExamplestopLevelRandoms topLevelTeststopLevelRandomTests allExamples allRandomsallTestsallRandomTestsflattensizereadDifficultyveryEasyeasymedium difficult veryDifficult$fReadDifficulty$fShowDifficulty $fFunctorItem$fFunctorExamples$fMonoidExamples$fSemigroupExamples$fEqDifficulty$fOrdDifficulty$fEnumDifficultyResult IrrelevantOk Constraint getResultmakeConstraint isRelevant isSatisfied isViolated relevance$fMonadPlusResult $fMonadResult$fAlternativeResult$fApplicativeResult$fFunctorResult$fLiftViewConstraint$fHasIdConstraint$fOrdConstraint$fEqConstraint$fShowConstraint $fShowResult HasRatingratingrateRating HasStatus getStatusStatusMessage messageLines nrOfTests nrOfWarnings nrOfErrors TestSuitesuite usePropertyusePropertyWith assertTrue assertNull assertEquals assertMessageassertIOassertMessageIO onlyWarnings rateOnError runTestSuiterunTestSuiteResult subResults topMessages allMessages findSubResult justOneSuite timeInterval printSummary makeSummarymessagewarningisOk isWarningisError$fMonoidStatus$fSemigroupStatus$fMonoidRating$fSemigroupRating$fHasStatusMessage$fMonoidMessage$fSemigroupMessage $fShowMessage$fMonoidTestSuite$fSemigroupTestSuite$fHasStatusResult$fMonoidResult$fSemigroupResult$fHasRatingRating$fHasRatingMessage$fHasRatingResult $fEqStatus $fOrdStatus $fEqRating $fOrdRating $fEqMessage TestRunner blackBoxTests HasTypeable getTypeable IsTypeabletypeablecastFromcastTo castBetween gcastFromgcastTo gcastBetween$fHasTypeableIsTypeableMathMLMRowMIdMNumber MOperatorMStringMTextMSqrtMRootMSupMSubMSubSupMFracMFencedMSpaceMStyleMPaddedMPhantomMErrorMEncloseMUnderMOver MUnderOverMTable MTableRowMLabeledTableRow MTableData xml2mathml mathml2xml$fUniplateMathML $fInXMLMathML $fToXMLMathML $fShowMathML $fEqMathMLUniplateNavigatorLeafs Horizontal LevelOrder PostOrderPreOrder NavigatorupdowndownLastchildnrlocationLocation fromLocation toLocationisTophasLefthasRighthasUphasDownleftMost rightMost leftMostLeaf rightMostLeafdownsdownToaritydepthlevel levelNext levelPrevious leftMostAt rightMostAt navigateTonavigateTowards makePreOrder makePostOrdermakeLevelOrdermakeHorizontal makeLeafs$fMonoidLocation$fSemigroupLocation$fShowLocation$fNavigatorMirror$fIteratorPreOrder$fUpdatePreOrder$fWrapperPreOrder$fUpdatePostOrder$fWrapperPostOrder$fIteratorLevelOrder$fUpdateLevelOrder$fWrapperLevelOrder$fIteratorHorizontal$fUpdateHorizontal$fWrapperHorizontal$fIteratorLeafs $fUpdateLeafs$fWrapperLeafs$fFocusStrNavigator$fNavigatorStrNavigator$fUpdateStrIterator$fFocusStrIterator$fIteratorStrIterator$fArbitraryUniplateNavigator$fFocusUniplateNavigator$fUpdateUniplateNavigator$fNavigatorUniplateNavigator$fEqUniplateNavigator$fShowUniplateNavigator $fEqLocation $fOrdLocation$fShowPreOrder $fEqPreOrder$fShowPostOrder $fEqPostOrder$fIteratorPostOrder$fShowLevelOrder$fEqLevelOrder$fShowHorizontal$fEqHorizontal $fShowLeafs $fEqLeafs testIterator testNavigatortestslistGenuniGen $fArbitraryT $fUniplateT$fShowT$fEqT WithMetaVarsmetaVar getMetaVarWithVarsvariable getVariable WithFunctionsfunction getSymbol getFunctionIsTermtoTerm toTermListfromTerm fromTermListTermTVarTConTListTNumTFloatTMeta isAssociative newSymbolmakeAssociativetermView nothingSymbol fromTermM fromTermWithisSymbol isFunctionunarybinaryternaryisUnaryisBinary isVariablevarsvarSethasVar withoutVar hasSomeVarhasNoVar variableView isMetaVarmetaVars metaVarSet hasMetaVar nextMetaVar $fHasIdSymbol $fReadSymbol $fShowSymbol $fOrdSymbol $fEqSymbol $fIsTermMap $fIsTermSet $fIsTerm[] $fIsTermChar$fIsTermDouble$fIsTermInteger $fIsTermInt$fIsTermEither $fIsTerm(,,) $fIsTerm(,)$fIsTermShowString $fIsTermTerm$fArbitraryTerm$fWithFunctionsTerm $fIsTermMaybe $fIsTermBool$fUniplateTerm$fWithVarsTerm$fWithMetaVarsTerm $fShowTerm $fReadTerm$fEqTerm $fOrdTerm differencedifferenceWithtoTermG fromTermG testTermForHasRefsgetRefsallRefs getRefIdsHasEnvironment environmentsetEnvironment deleteRef insertRef changeRef EnvironmentBindingmakeRef makeRefListRefmapRef makeBinding fromBinding showValue getTermValuemakeEnvironment singleBindingbindings noBindings?$fHasTypeableRef $fHasIdRef$fEqRef $fShowRef$fReference(,) $fReference[]$fReferenceShowString$fReferenceChar$fReferenceTerm$fReferenceInt$fHasIdBinding $fEqBinding $fShowBinding$fMonoidEnvironment$fSemigroupEnvironment$fShowEnvironment$fHasEnvironmentEnvironment$fHasRefsEnvironment$fEqEnvironment Substitution emptySubstsingletonSubst listToSubst@@ composable lookupVardom@+@$fArbitrarySubstitution$fShowSubstitution$fMonoidSubstitution$fSemigroupSubstitution$fEqSubstitution SymbolMatchMatchunify matchExtended matchListunificationTests RuleBuilder buildRuleSpec Different different RewriteRule ruleSpecTermRuleSpec:~>makeRewriteRuletermRewriteRule symbolMatcher symbolBuildershowRewriteRulemetaInRewriteRulerenumberRewriteRule$fFunctorRuleSpec$fApplyRewriteRule$fHasIdRewriteRule$fShowRewriteRule$fDifferent(,,)$fDifferent(,)$fDifferentTerm$fDifferentChar$fDifferentBool$fDifferentRatio$fDifferentFloat$fDifferentDouble$fDifferentInteger$fDifferentInt $fDifferent[]$fRuleBuilder(->)b$fRuleBuilderRuleSpeca$fShowRuleSpec DerivationemptyDerivationprependextendmergemergeBy mergeStepderivationToListderivationFromListderivationLengthtermsstepstriples firstTermlastTermlastStep withoutLast updateSteps derivationM splitStep$fIsTermDerivation$fBiFunctorDerivation$fFunctorDerivation$fShowDerivation$fEqDerivationDerivationTreeendpointbranches singleNode addBranchesmakeTreesubtreesleafs lengthMaxupdateAnnotationsrestrictHeight restrictWidthsortTreemergeMaybeSteps cutOnStep cutOnTerm derivations derivationrandomDerivation$fBiFunctorDerivationTree$fFunctorDerivationTree$fShowDerivationTreeFirstsElemreadyfirstsSymdone~>.*.singlesequence firstsTree$fSequence(->)Process runProcessmenuwithMenu eqProcessBy$fFirstsProcess $fFixProcess$fSequenceProcess$fChoiceProcess$fFunctorProcess $fEqProcessConfigshowTerm complexity termEquality somewhereM isConfluentcheckConfluencecheckConfluenceWith defaultConfigContextNavigatorContext fromContextfromContextWithfromContextWith2 newContext noNavigator navigator termNavigator contextView liftToContextapplyTopuseuseC currentTerm changeTermcurrentInContextchangeInContextreplaceInContext$fHasEnvironmentContext$fNavigatorContext $fShowContext $fEqContext MakeTrans makeTransTransTransformation transPure transMaybe transList transGuard transRewritereadRefreadRefDefault readRefMaybewriteRef writeRef_ writeRefMaybetransUseEnvironment transLiftViewtransLiftViewIntransLiftContexttransLiftContextIn transApplytransApplyWithgetRewriteRules$fHasRefsTrans$fAlternativeTrans$fApplicativeTrans$fFunctorTrans $fMonoidTrans$fSemigroupTrans$fArrowChoiceTrans$fArrowPlusTrans$fArrowZeroTrans $fArrowTrans$fCategoryTYPETrans $fMakeTrans[]$fMakeTransMaybe Recognizer Recognizable recognizer recognizeAll recognizerecognizeTransmakeRecognizermakeRecognizerTrans$fHasRefsRecognizer$fMonoidRecognizer$fSemigroupRecognizer$fLiftViewRecognizer$fRecognizableRecognizerRule ruleSiblingstransformationcheckReferencesmakeRule ruleMayberuleList ruleTrans ruleRewrite rewriteRule rewriteRules buggyRule minorRule emptyRuleidRule checkRule isRewriteRule siblingOfdoAfter addRecognizeraddRecognizerBooladdTransRecognizer $fHasRefsRule $fMinorRule $fBuggyRule$fRecognizableRule$fLiftViewRule $fHasIdRule $fApplyRule $fOrdRule$fEqRule $fShowRule ParamTrans inputWith transInput1 transInput2 transInput3transInputWithreadRef2readRef3output outputWith outputOnly outputOnly2 outputOnly3outputOnlyWith writeRef2 writeRef2_ writeRef3 writeRef3_ parameter1 parameter2 parameter3transRefsupplyParameters LabelSymbol isEnterSymbol AtomicSymbol atomicOpen atomicClose enterRuleexitRule isEnterRule isExitRule$fAtomicSymbolRule$fLabelSymbolRule!*>filterPatomic interleave<%>permute<@>initsmanymany1 replicateoptiontryrepeatrepeat1 exhaustiveNaryfromNaryBinary fromBinaryUnary fromUnaryNullary fromNullaryAritylistifytoArityliftIsoDecl combinator CombinatorDynamic dynamicToTermdynamicFromTermLeafLeafRuleLeafDyn StrategyTree treeToProcessmapRulesInTree applyDecl makeDynamic dynamicTree associative$fArityNullary $fArityUnary $fArityBinary $fArityNary $fHasIdDecl$fEqDecl $fShowDecl$fLiftViewDynamic$fApplyDynamic$fHasIdDynamic$fLiftViewLeaf $fApplyLeaf $fMinorLeaf$fLabelSymbolLeaf$fAtomicSymbolLeaf $fHasIdLeaf$fEqLeaf $fShowLeafPathPrefix firstsOrderednoPrefix makePrefix replayProcess isEmptyPrefix majorPrefixsearchModePrefix prefixPaths emptyPathreadPath readPaths$fReadPathItem$fShowPathItem $fShowPath$fFirstsPrefix$fMonoidPrefix$fSemigroupPrefix $fShowPrefix $fEqPathItem$fEqPathLabeledStrategy IsStrategy toStrategyStrategyliftSliftS2liftSnunlabel emptyPrefix replayPath replayPathsreplayStrategyderivationListrulesInStrategymapRules mapRulesScleanUpStrategycleanUpStrategyAftertoStrategyTreeonStrategyTreedecl0decl1decl2declNuseDecl$fLiftViewStrategy $fFixStrategy$fChoiceStrategy$fApplyStrategy$fShowStrategy$fIsStrategyDynamic$fIsStrategyRewriteRule$fIsStrategyRule$fIsStrategyStrategy$fSequenceStrategy$fLiftViewLabeledStrategy$fHasIdLabeledStrategy$fApplyLabeledStrategy$fShowLabeledStrategy$fIsStrategyLabeledStrategy checkLocationsubTaskLocationnextTaskLocationstrategyLocations ConfigActionRemoveReinsertCollapseExpandHideReveal StrategyCfgbyName configure configureS isConfigIdremovemulti$fShowConfigLocation$fReadConfigAction$fMonoidStrategyCfg$fSemigroupStrategyCfg$fShowStrategyCfg$fShowConfigAction$fEqConfigAction strategyToXMLDependencyGraph.%..@.!~>succeedfailnoInterleaving interleaveIdnotwhileuntildynamicdependencyGraphOptionlayertraversetopdownbottomup leftToRight rightToLeftfullspinestoponceleftmost rightmosttraversalFilter parentFilterfulltdfullbuoncetd oncetdPrefoncebu oncebuPref leftmostbu leftmosttd somewhere somewhereWhen innermost outermostruleUpruleDown ruleDownLastruleLeft ruleRight$fMonoidOption$fSemigroupOption<|>>|> alternativesStable ProvisionalAlpha ExperimentalExercise NewExercise exerciseIdstatusparser prettyPrinter equivalence similaritysuitablestrategycanBeRestarted extraRules ruleOrdering constraints navigationexamples hasTermView hasTypeable properties emptyExercise makeExerciseprettyPrinterContextisReady isSuitablerulesetgetRuleruleOrderingWith violationsisPublic isPrivateexamplesContextexamplesAsList randomTerm randomTerms testGenerator inContextwithoutContext useTypeable setProperty setPropertyF getProperty getPropertyFshowDerivationshowDerivationsprintDerivationprintDerivationsdiffEnvironmentdefaultDerivationallDerivations$fHasTypeableExercise$fHasIdExercise$fApplyExercise $fOrdExercise $fEqExercise $fShowStatusfailSnotSrepeatS replicateS sequenceSuntilSStateexercise statePrefix stateContext stateUser stateSessionstateStartTerm microsteps stateTerm makeState makeNoStateemptyStateContext emptyState startStaterestart withoutPrefixfinished stateLabels $fFirstsState$fHasEnvironmentState $fHasIdState $fShowState Condition RecognizedIs MotivationIsCondNot CondConstCondRefText TextStringTextTermTextRef TextEmpty:<>:DeclType TextForId StringDeclFeedback NameSpaceSupportsSimpleGuardedScript scriptDecls makeScriptmakeText feedbackDecl textForIdDeclincludes textItems$fShowDeclType$fUniplateText $fMonoidText$fSemigroupText $fShowText$fUniplateCondition$fShowCondition$fMonoidScript$fSemigroupScript $fShowScriptShowFshowFConstServiceStratCfgQCGen SomeExerciseBoolIntTypeRepIso:->IOTagListPair:|:UnitType TypedValue:::EqualequalserviceDeprecatedserviceFunction makeService deprecateequalMtError tDerivationtIOtText.->tStatetMaybe tStrategyCfgtListtUnittPairtString tExercisetContexttMathMLtBooltInttRule tConstraint tLocationtTuple3tTuple4tTuple5 tEnvironmenttTerm tDifficultytUserIdtQCGen tExamplestIdtScript tSomeExercisetService tStrategytTreetTestSuiteResulttXMLfindValuesOfType$fShowTypedValue$fEqualTypeRep$fShowTypedValue0 $fEqualConst$fHasIdService $fShowService $fShowFConst $fShowConst $fShowTypeRep$fShowFTypeRepReply IncorrectAnswerproblemDecompositiontAnswertReplyparseScriptSafe parseScriptDomainReasonerDR reasonerId exercisesservicesviewsaliasesscripts testSuiteversion fullVersiontDomainReasonernewDomainReasonerexercisesSortedservicesSorted findExercise findService defaultScript$fHasIdDomainReasoner$fMonoidDomainReasoner$fSemigroupDomainReasonerStepInfogeneratecreatesolutionsolutionMaxSteps tStepInfo allfirstsonefirstonefinalallapplicationsstepsremainingfindbuggyrules recognizeRuleexampleDerivations Diagnosis SyntaxError NotEquivalentSimilar WrongRuleExpectedDetourCorrectUnknowngetStategetStateAndReadydiagnose tDiagnosis$fShowDiagnosissubmittResultEnvoldReadyexpected recognized motivationdiffPairbeforeafter afterTextnewEnvironment ruleToStringevalfeedbackDiagnosis feedbackHint feedbackHints feedbackIds attributeIds conditionIdsaccepttMessagederivationtext onefirsttext submittext feedbacktextUnknownExerciseUnknownFeedbackFeedbackUndefined NoTextForRuleUnknownAttributeUnknownCondAttr makeScriptForparseAndAnalyzeScript analyzeScript ruleToHTMLEncodingEncHTML EncOpenMath EncString EncCompact EncPrettyEncJSON DataFormatSchemaV1V2 NoLoggingRequest serviceIdsourcefeedbackScript requestInfo cgiBinary logSchema randomSeed dataformat readSchema htmlOutput compactOutput useOpenMath useJSONTerm useLoggingdiscoverDataFormat readEncoding$fShowEncoding$fMonoidRequest$fSemigroupRequest $fShowSchema $fEqSchema$fShowDataFormat $fEqEncodingLogRefRecordservice exerciseidscript requestinfouserid sessionidtaskidtime responsetime ipaddresserrormsg serviceinforuleid addRequestaddState defaultLogRef makeLogRef enableLoggingdisableLogging getRecord getFilePath changeLogprintLog logEnabled logRecord logRecordWith selectFrom$fMonoidLogRef$fSemigroupLogRef $fShowRecord CmdLineOptionVersionHelpPrintLog InputFileRerunTest MakeScriptFor AnalyzeScript versionTexthelpText shortVersiongetCmdLineOptions$fEqCmdLineOptionOptionsrequestqcGenbaseUrlmaxTimelogRefcgiBin optionCgiBin optionHtml optionBaseUrl makeOptions$fMonoidOptions$fSemigroupOptions toOpenMath fromOpenMathtoOMOBJ fromOMOBJnoMixedFractions ExampleMap rulesInfoXMLrewriteRuleToFMPcollectExamples TypedDecoderDecoderX TypedEncoderEncoderX getExercise getOptions getRequest withExercise getBaseUrlgetQCGen getScript withOpenMath withJSONTerm// hasJSONView addJSONView jsonEncoding termToJSON jsonToTermhasLatexEncoding latexPrinterlatexPrinterContext latexEncodinglatexEncodingWith encodeTyped Evaluator evalService XMLEncoder xmlEncoder encodeState LinkManager urlForCSS urlForImage urlForRequest urlForIndexurlForExercisesurlForServices urlForServiceurlForExerciseurlForStrategy urlForRulesurlForConstraintsurlForExamplesurlForDerivations urlForRuleurlForTestReporturlForRandomExample urlForState urlForFirstsurlForApplicationsurlForDerivationurlForMicrosteps linkToIndexlinkToExerciseslinkToServices linkToServicelinkToExerciselinkToStrategy linkToRuleslinkToExampleslinkToDerivations linkToRulelinkToTestReportlinkToRandomExample linkToState linkToFirstslinkToMicrostepslinkToApplicationslinkToDerivationmakeLinkManager stateToXML escapeInURL jsonEncoder HTMLEncoder htmlEncoder XMLDecoder xmlDecoder processXML JSONDecoder jsonDecoder processJSONShowAsSshowSfromS checkExerciseexerciseTestSuiteshowAscheckParserPrettycheckParserPrettyExpropRule checkExamples checksForTermchecksForDerivation $fShowShowAs serviceListmetaServiceList defaultMaindefaultMainWith defaultCGIFunctorMonad:/::|> runGenericparsec-3.1.13.0"Text.ParserCombinators.Parsec.ExprbuildExpressionParserOperatorInfixPostfix OperatorTable"Text.ParserCombinators.Parsec.Prim runParserpzero"Text.ParserCombinators.Parsec.Char CharParserText.Parsec.Language mondrianDefmondrian haskellDefhaskellemptyDef javaStyle haskellStyleText.Parsec.Token LanguageDefGenLanguageDef commentStart commentEnd commentLinenestedComments identStart identLetteropStartopLetter reservedNamesreservedOpNames caseSensitiveText.Parsec.String parseFromFileParser GenParserText.Parsec.CharsatisfyanyCharoctDigithexDigitdigitletteralphaNumloweruppertabnewlinenoneOfoneOfText.Parsec.ExprAssoc AssocNone AssocLeft AssocRightText.Parsec.CombinatormanyTill notFollowedByeofanyTokenchainr1chainl1chainlchainrcountendByendBy1sepEndBy sepEndBy1sepBy1sepBy skipMany1betweenoptional optionMaybeText.Parsec.Prim updateStatesetStatesetParserStategetParserStatesetInput setPositiongetInput getPosition parseTestparseskipMany tokenPrimEx tokenPrimtoken lookAheadtokenslabels unexpected stateInputstatePosText.Parsec.ErrorerrorPos ParseErrorText.Parsec.PossetSourceColumn setSourceLine setSourceNameincSourceColumn incSourceLine sourceColumn sourceLine sourceName SourceNameLineColumn SourcePos(QuickCheck-2.11.3-4Q6LQ7mN6Tj8otrLuHN0seTest.QuickCheck.All allPropertiesforAllProperties monomorphicpolyQuickCheckpolyVerboseCheck quickCheckAllverboseCheckAllTest.QuickCheck.Arbitrary><applyArbitrary2applyArbitrary3applyArbitrary4 arbitrary1 arbitrary2arbitraryASCIIChararbitraryBoundedEnumarbitraryBoundedIntegralarbitraryBoundedRandomarbitraryPrintableChararbitrarySizedBoundedIntegralarbitrarySizedFractionalarbitrarySizedIntegralarbitrarySizedNaturalarbitraryUnicodeCharcoarbitraryEnumcoarbitraryIntegralcoarbitraryRealcoarbitraryShowgenericCoarbitrary genericShrink infiniteList orderedListrecursivelyShrinkshrink1shrink2shrinkIntegral shrinkList shrinkMap shrinkMapBy shrinkNothingshrinkRealFracsubtermsvectorTest.QuickCheck.ExceptiondiscardTest.QuickCheck.FunctionFnFn2Fn3applyFun applyFun2 applyFun3 functionMapTest.QuickCheck.Genchooseelements frequencygetSizegrowingElementsinfiniteListOflistOflistOf1oneofresizesamplesample'scaleshufflesized sublistOfsuchThat suchThatMap suchThatMaybevariantvectorOfTest.QuickCheck.Property.&&..&..||.=====>againclassifycollectconjoincounterexamplecoverdisjoin expectFailureforAll forAllShrink ioPropertymapSize noShrinking printTestCase shrinkingtotalverbosewhenFail whenFail'withMaxSuccesswithinTest.QuickCheck.Test quickCheckquickCheckResultquickCheckWithquickCheckWithResultstdArgs verboseCheckverboseCheckResultverboseCheckWithverboseCheckWithResult Arbitrary arbitraryshrink Arbitrary1 liftArbitrary liftShrink Arbitrary2liftArbitrary2 liftShrink2 CoArbitrary coarbitraryFunFunctionGenTest.QuickCheck.Modifiers ASCIIStringgetASCIIStringBlindgetBlindgetFixed InfiniteListgetInfiniteListinfiniteListInternalDatagetLarge NonEmptyListNonEmpty getNonEmpty NonNegativegetNonNegativeNonZero getNonZero OrderedListOrdered getOrderedPositive getPositivePrintableStringgetPrintableStringShrink2 getShrink2 ShrinkState shrinkInit shrinkState ShrinkinggetSmallSmart UnicodeStringgetUnicodeStringDiscardPropertyTestablepropertyArgsmaxSizechattymaxDiscardRatio maxShrinks maxSuccessreplayFailureGaveUpInsufficientCoverageNoExpectedFailureSuccessfailingTestCasenumShrinkFinalnumShrinkTries numShrinksnumTestsreason theExceptionusedSeedusedSize.Data.Typeable.InternalTypeableghc-prim GHC.TypesTyCon Data.TypeabletypeOf7typeOf6typeOf5typeOf4typeOf3typeOf2typeOf1 rnfTypeReptypeRepFingerprint typeRepTyCon typeRepArgs splitTyConAppmkFunTy funResultTygcast2gcast1gcasteqTcast showsTypeReptypeReptypeOfrnfTyContyConFingerprint tyConName tyConModule tyConPackage Data.ProxyProxyData.Type.Equality:~:Refl:~~:HRefl==!==>> annotationscommit mergeStepsruleId isBuggyRule isMinorRule Data.EitherLeftRight newSessionIdrunPrefixLocation