length(arg) 
Returns the length of a string. arg is a variable or an answer reference. 
length(ans)=length(myvar) OR length(ans)>3 
correct(arg) 
Returns if a specific answer was correct. arg is a an answer reference. Works only on question or answer level. 
correct(ans_1) AND NOT[correct(ans)]
example in WebMiau 
count(symbol, arg) 
Returns how often the symbol occurs. arg is a variable or an answer reference. 
count((,ans)=count(),ans) , count(+,ans_1)=0 , count(1,ans)=2 
valid(arg) 
Checks if the given answer is a valid mathematical expression. arg is an answer reference. 
valid(ans) 
equal(arg1, arg2) 
Checks if the two expressions are algebraic identical. If this check is not successful a numerical comparison follows. If both arguments are matrix variables the equality of those matrices is checked algebraically. If one of those matrices is not completely edited (e.g. in case of an answer reference) it will be evaluated to false. 
equal(ans_2, myvar) 
equalFormat(arg1, arg2) 
Checks if the two matrices have the same format. arg1/arg2 is a matrix variable or a matrix answer reference. If one of those matrices is not completely edited (e.g. in case of an answer reference) it will be evaluated to false. 
equalFormat(ans_5, aMatrix) 
equalString(arg1, arg2) 
Checks if the string representation of the two arguments are identical. arg1/arg2 is a variable, an answer reference or a string. 
equalString(Hallo,ans_5) , equalString(ans,myStringVar) 
equalTrimmedString(arg1, arg2) 
Same as equalString but the arguments are trimmed first. 

equalChoice(arg, choices) 
Compares an answer with the given choices representation. For mc.unique its the choice number that is selected by the user. For mc.yesno, mc.multiple and mc.matrix it's a string of zeros and ones indicating which choices are selected by the user. E.g. 011 means that the last two choices are selected, but not the first. The wildcard '?' can be used. E.g., 0?1 means, that the third choice is selected, but not the first. If the second choice was selected doesn't matter. This of course only works for answer type mc.yesno, mc.multiple and mc.matrix.
For type mc.matrix the strings of zeros and ones are given rowwise seperated by '\\', e.g. 101\\?01 for a multiple choice matrix with two rows and three columns.
arg is an answer reference. 
mc.unique
equalChoice(ans,4)
mc.multiple/mc.yesno
equalChoice(ans,011001) , equalChoice(ans_2,011?01)
mc.matrix
equalChoice(ans,101\\??1)
example in WebMiau 
equalChoice(choices) 
Same as equalChoice(arg, choices , but for questions of type mc.unique, mc.yesno and mc.multiple. No answer is referenced, because there are no answer environments. It can also be used for an explanation within an answer. In that case it is short for equalChoice(ans, <choices>) . 
mc.unique
equalChoice(4)
mc.multiple/mc.yesno
equalChoice(011001) , equalChoice(011?01) 
edited 
Evaluates to true on answer level if the current answer was edited. Evalues to true on question level if at least one answer of the current question was edited. 
example in WebMiau 
edited(arg) 
Evaluates to true if the referenced answer was edited. arg is an answer reference 
edited(ans) , edited(ans_4)
example in WebMiau 
condition(arg) 
Substitutes this command with arg. That is helpful if one wants to reuse the same condition multiple times. arg is a string variable. It's value is a valid condition expression. 
declared variable: \string{cond1}{count(/,ans)=1 }
reusing it: condition{cond1}
example in WebMiau 
answerEqual(arg) 
At the moment that only works for types input.interval and input.finitenumberset. It compares the current answer with the given expression arg. The expression may contain variables. Be aware that you have to escape interval brackets. (see examples) 
input.interval examples
NOT [edited] OR answerEqual(\[a;3\]) , answerEqual(\[infinity;3\],\(4;5\))
input.finitenumberset examples
answerEqual({a,b}) , answerEqual({0,2,4,8}) The curly braces are not mandatory, because there is no second argument for the function: answerEqual(a,b) , answerEqual(0,2,4,8)
example in WebMiau 
answerEqual(arg1, arg2) 
Works the same as answerEqual(arg) but with the first argument arg1 you give an explicit answer reference (e.g. ans, ans_1, ...) with which the expression arg2 will be compared. arg2 is for type input.interval either an interval or a list intervals separated by commas and for type input.finitenumberset a set defined using the following syntax: {1st element, 2nd element, ...}. 
input.interval examples
NOT [edited] OR answerEqual(ans_2,\[a;3\]) , answerEqual(ans_1,\[infinity;3\],\(4;5\))
input.finitenumberset examples
answerEqual(ans_1,{a,b}) , answerEqual(ans_2,{0,2,4,8}) The curly braces are mandatory.
example in WebMiau 
answerExactMatch(arg) 
Analog to answerEqual , but the user answer has to be exactly the same. E.g. (3;3) and (4;4) are both emty sets and therefore equal but they are not an exact match. At the moment that only works for type input.interval and input.finitenumberset. 
input.interval examples
NOT [edited] OR answerExactMatch(\[a;3\]) , answerExactMatch(\[infinity;3\],\(4;5\))
input.finitenumberset examples
answerExactMatch({a,b}) , answerExactMatch({0,2,4,8}) The curly braces are not mandatory, because there is no second argument for the function: answerExactMatch(a,b) , answerExactMatch(0,2,4,8)
example in WebMiau 
answerExactMatch(arg1, arg2) 
Works the same as answerExactMatch(arg) but with the first argument arg1 you give an explicit answer reference (e.g. ans, ans_1, ...) with which the expression arg2 will be compared. arg2 is for type input.interval either an interval or a list intervals separated by commas and for type input.finitenumberset a set defined using the following syntax: {1st element, 2nd element, ...}. 
input.interval examples
answerExactMatch(ans_2,\[a;3\]) , answerExactMatch(ans_1,\[1;3\],\(4;5\))
input.finitenumberset examples
answerExactMatch(ans_1,{a,b}) , answerExactMatch(ans_2,{0,2,4,8}) The curly braces are mandatory.
example in WebMiau 