In short, an evaluation type (when used in a solution) determines the way that the computer checks whether the student’s answer is correct or not.
Evaluation types are used in the “Solutions”, “Negative feedback” and “Positive feedback” tabs of an exercise. Below, we list a table of all evaluation types including their description. For some evaluation types, a separate article has been written including some examples of the use of this evaluation type. Links to these articles will be provided in the table. More information about automated feedback can be found here.
In case of relations like equations or inequalities, you can specify a rule to only apply to a side of the relations using rhs
: for right hand side or lhs
: for left hand side, before the definition. e.g. the evaluation type contains_var
with Definition rhs:x
checks for the variable x in only the right hand side.
A list of all evaluation types for mathematical answers
Name  Description  Automated feedback 
contains_brackets  Checks whether the user input contains brackets. Note that brackets for function arguments like 

contains_float  Checks whether the user input contains floats. With no arguments at least one occurrence triggers the rule. With one argument, the argument defines the number of occurrences, optionally specified by one of 

contains_integer  Checks whether the user input contains integers. With no arguments at least one occurrence triggers the rule. With one argument, the argument defines the number of occurrences, optionally specified by one of 

contains_number  Checks whether the number in the Definition field is present in the user input. Works for both positive and negative floats and integers. 

contains_one_base_power  Answer contains exactly one power at the base. 

contains_symbol  Checks whether the user input contains the symbol from the Definition field. 

contains_symbol_other_than  The user answer does not contain any other symbol than the one in the list in the Definition field, separated by ;, e.g. 

contains_symbol_within  Checks if the second operator in the definition field is present in the first operator of the answer. i.e. 

contains_variable  Checks whether the user input contains the variable from the Definition field. 

contains_variable_in_symbol  Checks if the variable in the definition field is present in the first operator/symbol of the answer. i.e 

contains_variable_other_than  The user answer does not contain any other variable than the one in the list in the Definition field, separated by ;, e.g. 

default_incorrect  Always reacts on wrong answers and has a predefined priority of 99. 

eq_one_side  One side of the equation must be equal to the variable in the Definition. e.g. 

eval_domain  Checks whether the user input is equal to the domain in Definition field where both should be in the form of a simplified equation in the disjunctive normal form with only one variable, e.g. 

eval_eq_exact  Check whether solutions indicated in the Definition field are solutions to the equation in the user input, using substitution. Define a list of equations in the Definition field that should be substituted in the equation the user input. 

eval_eq_numeric  Numerical check whether solutions indicated in the Definition field are solutions to the equation in the user input. The Precision field indicates the accepted margin of error. Define a list of variables in the Definition field that should be substituted in the equation the student answers. e.g. 

eval_exact  Exact mathematical comparison of expression in the Definition field with user input. No simplification rules are applied to the student answer. 

eval_graphs  Lines: Checks whether each pair of points from the user input is on a line defined in the Definition field and whether each line in the Definition fields has two points in the user input. e.g. 

eval_interval  Checks whether the interval provided by the student is equal to that in the Definition field, where the Definition is specified as a 1st or 2nd degree (in)equality. The variable you use is free, as long you do not use more than one. e.g. 

eval_lin_eqs  Evaluate a system of linear equations. As a Definition, write the maxima equations in disjunctive normal form, and after that write a ";" with a list of variables in "[]" and separated with a comma ",". e.g. 

eval_list  Checks if the answer is a list and if each expression is equal to the expression at the same index in the list of the Definition field, using eval normal. The list in the Definition field should be comma "," separated. e.g. [2,3,1]. Note that this evaluation types automatically checks for the right input form (list or vector) and the length of the list and gives appropriate feedback accordingly. 

eval_logic_equiv  Comparison of logical form in the Definition field with normal form of user input. 

eval_matrix  Check if the matrix from the Definition field is equal to the answer. Can be used with fb_matrix for feedback. It accepts input of matrix or a list of lists. e.g. 

eval_matrix_element  Numerically compares the [row,column] entry of the matrix from the user input [row,col]=...with the number represented by the expression in the Definition field. 

eval_normal  Exact mathematical comparison of normal form of expression in the Definition field with normal form of user input. e.g. 

eval_numeric  Numeric comparison of expression in the Definition field with user input, e.g. 

eval_openmath  Comparison between the OpenMath xml object in the Definition field and the result object of the student input in the formula editor. To create a solution, get the Transformed OpenMath from the editor here. 

eval_param_rep  Evaluate a parameter representation of the solution set of a list of linear equations. In the Definition field, use 2 arguments (separated with a ;), where the first is the list of linear equations [eq1,eq2,...] and the second is a list of the coordinates [x,y,...]. Optionally, you can add a third argument to prescribe the parameters that may be used, like [lambda,mu]. e.g. 

eval_polynomial  Automated polynomial checker that can be used together with fb_polynomial. In the Definition field a (multivariate) polynomial is entered to specify the correct answer. Then you can create just one positive and one negative feedback rule in with evaluation type fb_polynomial that will provide automated feedback. Feedback works for 

eval_rational_function  Automated checker for rational functions that can be used together with 

eval_statement  Evaluate the maxima statement in the Definition field, where the user input can be referenced using block(adiff:diff(answer,x),is(radcan(adiff(sin(x)))=0)) to allow for all answer that are correct after differentiating them, like −cos(x)+c−cos(x)+c, but also −cos(x)+C−cos(x)+C 

eval_units  Converts the answer to base units and the compares the value and unit. For units support, maxima's ezunits package is used. In the Definition field you can specify the solution with a backtick 

eval_vector_rep  Checks whether the vector representation of the user input corresponds to the line defined by the linear equation in x and y in the Definition field. e.g. 

eval_vector_lin  Checks whether the two dimensional vector of the user input and the two dimensional vector in the Definition field are linearly dependant. e.g. 

fb_generic  Provides automatic negative feedback on the student answer. The student answer will be compared with the expression in the Definition field of this feedback rule. This feedback type is particularly good at pointing out minor mistakes in the student answer. Use the Precision field to indicate a minimum percentage of similarity between the Defintion and the answer at which the feedback kicks in (0 is the default). 

fb_lin_eqs  Use only with a solution rule that uses evaluation type eval_lin_eqs to give feedback the following specified cases. Use one of the following in the Definition field. 

fb_matrix  Use only with a solution rule that uses evaluation type eval_matrix to give feedback the following specified cases. Use one of the following in the Definition field. 

fb_param_rep  Use only with a solution rule that uses evaluation type eval_param_rep to give feedback the following specified cases. Use one of the following in the Definition field. 

fb_polynomial  Provides automated feedback coming from eval polynomial in the solution. The value in the Definition specifies what type of polynomial form is desired. The value in the Definition van be
Negative feedback checks:
Negative feedback checks:
Negative feedback checks:


fb_rational_function  Use only with a solution rule that uses evaluation type eval rational function to give feedback on the following specified cases. Use one of the following in the Definition field: 

fb_solve_in(eq)  Use only with a solution rule that uses evaluation type solve_inequality or solve_equality to give feedback on how the domain of the answer compares to the domain of the solution. Use one of the following in the Definition field. 

fraction_denominator  Checks whether the user input contains a fraction with another denominator as defined in the Definition field. e.g. 

fraction_diff_denominators  When the user input has more than one fraction, it checks whether all fractions have the same denominator. 

fraction_is_improper  Checks whether the absolute value of all fractions in user input is greater than or equal to one 

fraction_lcm_not_used  Checks for each fraction in user input if the denominators are not equal to or greater than the number in the Definition field. 

fraction_not_simplified  Checks whether all fractions in the user input are simplified. In the Definition field you can use the same values as for is_not_simplified_fraction to control what type of fractions are considered simplified. 

is_decimal_length  Checks whether the user input is a float with the same number of decimals as specified in the Definition field, optionally specified by one of le, lt, ge, gt, ne, eq, <=, >=, <>, ==, !=, <, >, = 

is_length  Checks whether the user input is a float or integer with the same length as specified in the Definition field, optionally specified by one of le, lt, ge, gt, ne, eq, <=, >=, <>, ==, !=, <, >, =. eg. gt 2 

is_not_factorized  Comparison of the factors in the Definition with the factors of the answer. e.g. Definition 

is_not_float  Check whether the user input is not a float. 

is_not_fraction  Check whether the user input is not a fraction. 

is_not_ifactorized  Checks if the answer is decomposed into prime factors. No Definition is needed. 

is_not_integer  Checks whether the user input is not an integer. 

is_not_number  Checks whether the user input is not an integer and not a float. 

is_not_polynomial  Checks if the answer is a polynomial in the variables in the list from the Definition field. 

is_not_rational  Check whether the user input is either an integer or a fraction with the denominator unequal to zero. 

is_not_simplified_fraction  Checks whether the user input is a simplified fraction. Also works for equations, where it checks whether at least one side is a simplified fraction. With Definition set to 

is_not_simplified_root  Checks whether the answer (which is assumed to be an expression involving integers, multiplications, divisions, and higher roots) is in the normal form (a/b) * (cth root of d), where b,c,d are positive integers and a is an integer. 

is_not_simplified_complex  Checks whether the answer is not in the form 

is_not_top_symbol  Checks whether the symbol with the highest precedence in the answer is not equal to one of the symbols in the Definition field. Define a list of one or more symbols in the Definition field. e.g. times;root means the highest symbol is either a times or a root symbol. 

is_not_vector_length  Check whether the user input has all vectors of the same length. Optionally, use an integer in the Definition field to expect a vector with the prescribe the length, optionally specified by one of le, lt, ge, gt, ne, eq, <=, >=, <>, ==, !=, <, >, =  
is_not_unit  Check whether the student answer is a unit. With no Definition specified (empty), a check will be done whether the student answer is a unit. The Definition can be used to specify the unit(s) that must be used in the answer, like 

same_form  Checks the answer and the definition for having exactly the same form after maxima translation 

solve_equation  Automatically solve and give feedback on 1st or 2nd degree equation. This type is limited to one variable equations. e.g. 

solve_inequality  Evaluate the inequality in the Definition field and evaluate the student answer accordingly. This type is limited to one variable inequalities. e.g. 
