Overview - This box is used to create a rule that determines whether or not a submitted graph is correct. In general, it takes the form of testing the function, its integral, or its first or second derivative over a given set of x-values. The test can be to see if it equals, is greater than, or less than a specified value. Anywhere a number is needed, a variable can also be used. (Skip to the bottom for examples of rules.)

- "Index/Name" - This is an internal label for the rule. Something must be entered here, and it must be different for each rule. This same value will be used to add a conditional hint.
- "Function" - This determines what the server will be testing. For instance, choose 'First derivative' causes the server to evaluate the derivative of the entered answer over the given domain.
- "Initial x-value" and "Initial x-value label" - A value must be entered for one of these. Either choose a numerical value for x (the first option), or choose the beginning of the submitted answer, the end, or a previously chosen named point (see below).
- "Final x-value" and "Final x-value label" - This determines the end of the domain over which the rule examines. To test only a single point (the initial value), leave these blank. If a label is entered, such as `positive', the point at which the rule fails will be given this special label. This label can then be used in subsequent rules as an 'Initial x-value label'.
- "Minimum length for range" - This tests that the difference between the initial and final x-values are at least a certain length apart. This is only useful if there is at least one label.
- "Maximum length for range" - This tests that the difference between the initial and final x-values are at most a certain length apart. This is only useful if there is at least one label.
- "Relationship" - The heart of the rule. This choice determines whether the chosen `Function' is greater than, less than, equal to, etc. a certain `Value'.
- "Value" - Enter the number you wish to compare to. It is also possible to choose 'not defined', in the event the answer should not have a value for the given domain. Within the value argument, the function itself can be evaluated using &fpr_f(), its derivative using &fpr_dfdx(), and its second derivative using &fpr_d2fdx2(). This allows for a comparison of two points on the graph. The value of a previously defined label can be retrieved using the function &fpr_val(), e.g., &fpr_val(`positive'). Previous defined values from script blocks can also be retrieved as normal variables, e.g., $x.
- "Percent error" - This allows for a margin of error in the y-direction. For instance, if the rule requires that the derivative be equal to 5, the server will accept values close enough to 5 that are within the percent error defined here. Note: Choosing 10% would not mean that the answer is correct as long as it is within the range 4.5-5.5. Instead, the percent corresponds to the total size of the graph. For the function itself, the `percent error' is multiplied by the ymax-ymin; for the first derivative, it's multiplied by (ymax-ymin)/(xmax-xmin); for the second derivative, it's multiplied by (ymax-ymin)/(xmax-xmin)
^{2}; and for the integral, it's multiplied by (ymax-ymin)*(xmax-xmin).

The figure below shows some examples of rules.

- Checks that the derivative at
*x*=3 is negative. - Checks that the second derivative at
*x*=$time1 is 0. - Checks that the value of the function > 7 from "Start of Graph" to
*x*=5. - Checks that the function is 0 from
*x*=0 until the function is no longer 0, labeling this new point `notzero'. - Checks that the first derivative is positive between the point `notzero' and the end of the graph.
- Checks to see that the value of the function at
*x*=4 is the same as the value of the function at $time2. The Value here is &fpr_f($time2). - Checks that the value of the function at point `notzero' is equal to the value of the function at
*x*= $time3. The Value here is &fpr_f(&fpr_val(`notzero')).