Equivalence input assessent
This is reference documentation for assessing answers from the equivalence reasoning input.
Answer tests
There are a number of answer tests which seek to establish whether a student's list of expressions are all equivalent.
In these tests there is no concept of "step size" or any test that a student has worked in a sensible order.
The tests share code with the input type, and feedback from the test will be identical to that from the input when this is shown.
You will also need to set options, as in the input type above, to get the answer tests to reflect the options set.
The options supported are assume_pos
, assume_real
, and calculus
.
EquivReasoning
This test establishes that all the items in the list are equivalent, using algebraic equivalence.
EquivFirst
- This test establishes that all the items in the list are equivalent, using algebraic equivalence.
- Test that the first line of the student's answer is equivalent to the first line of the teacher's answer up to commutativity and associativity (using the answer test EqualComAss.)
To test the last line of an argument is in the correct form will require a separate node in the potential response tree. To add this to the answer test gives too many possibilities.
Natural domains
The equivalence reasoning input tracks natural domains of expressions. This is via the STACK's natural_domain(ex)
function. Natural domains are shown to students in the validation feedback.
At the moment STACK quietly condones silent domain enlargements such as in the above example.
Repeated roots
There is general ambiguity about how to express multiplicity of roots. If is not equivalent to then students need to indicate multiplicity of roots, but there appears to be no consensus on how this should be notated.
The equation and the expression are considered to be equivalent, because they have the same roots with the same multiplicity. The expressions and have the same variety, but are not identical. This is, of course, slightly awkward since logical ``or'' is idempotent, and so and would be equivalent at a symbolic level. For this reason, STACK accepts as equivalent to , but with an acknowledgement.
Other functions
The maxima function stack_disp_arg(ex, [showlogic, showdomain])
can be used to display a list of expressions ex
in the same form as used in the input and answer tests. This is useful for displaying the teacher's worked solution in the general feedback.
The second two arguments are optional.
1. The boolean variable showlogic
determines whether the equivalence symbols are shown. For a worked solution you probably need to use the following:
2. The boolean variable showdomain
determines whether the natural domains are shown.
For a worked solution you probably need to use the function
\[ {@stack_disp_arg(ta)@} \]
Without the equivalence symbols you use
\[ {@stack_disp_arg(ta, false)@} \]
With the equivalence symbols but without natural domains you use
\[ {@stack_disp_arg(ta, true, false)@} \]
Finding a step in working
It is relatively common to want students to take a "particular step" in their argument. That is to say, to expect a particular intermediate expression to appear explicitly in their list of answers.
For example, imagine you want students to "simplify" to . It is important to see evidence of the expression in their answer. The teacher's answer is, e.g.
ta:[lg(25,5),stackeq(lg(5^2,5)),stackeq(2*lg(5,5)),stackeq(2*1),stackeq(2)]
We want to accept
sa1:[lg(25,5),stackeq(lg(5^2,5)),stackeq(2)]
But reject
sa0:[lg(25,5),stackeq(2)]
Both of these are correct reasoning arguments, but the second is missing the desired step.
To facilitate this search we provide the function stack_equiv_find_step(ex, exl)
. This looks for expression ex
in the list exl
using ATEqualComAss
. It returns the list of indices of the position. If you just want to know if the expression is missing use the predicate emptyp
. Note, this function strips off stackeq
before testing, so this function will find in both sa1
and sa2
below.
sa2:[lg(25,5),lg(5^2,5),2]