rtests in Maxima problem



On 12/1/2010 12:11 PM, Stavros Macrakis wrote:
> ....
>
> So ... what exactly do you mean by "giving the same answer" in the 
> absence of simplification?
>
>
there are a few things going on here.
1. It seems that you are assuming that students who are having some 
difficulty with simple algebra or
even arithmetic would be able to type syntactically correct expressions 
into a computer algebra system.

Judging from my experience, students who were trying to do calculus 
problems couldn't type
syntactically correct strings, most of the time.  Perhaps  they are OK 
typing 1/3+1/2  for
simple arithmetic, but parentheses?.  Basically, the educational 
experience is transformed:  from students
who cannot do arithmetic, to students who cannot type arithmetic answers 
into a computer.
At least that would be my concern.

2. There are other ways of doing what you want, I think. Here's a 
suggestion.
You seem to want to allow some transformations sometimes, but not others.
e.g.
    x+y = y+x   only if you are allowing the simplification of "sorting".
but if the question involves (say) asking students to sort an expression by
variable names, you would not allow that simplification.  Maybe a better 
answer
would be allowing
1+1/2+1/3+1/4  in some circumstances, but requiring 25/12 in another 
case, and
2+1/12 in another.
so what you are doing is setting up transformations t1,t2,t3, ....  such 
that
the "test" is

tn( sa) === ta   where sa is student answer and ta is teacher answer and 
=== means exact syntactic "tree" equality.

or in some cases you can't use ===. e.g.
"give an example of a quadratic polynomial"

And you obviously need to observe some properties  e.g.
"what is 12 divided by 3?"  You cannot allow the answer 12/3.
At least, probably not..

So you need to set up those transformations and those property tests.

How do you encode the student answers that might be, say 12/3   or  x-x 
without
simplifying them away?

Maybe define a new function in Maxima which never touches its argument 
by simplification.
e.g.

sa(x-x)  returns   sa(x-x).

If you want to test properties of the argument of x-x, you can and 
should use LISP functions
that neither require simplified inputs nor necessarily return simplified 
outputs.  These are
different from anything in Maxima, and there is no reason to expect that 
using Maxima
with simp:false will provide you with  the right tools.

You may want 25/12,  but is that (times 25 (quotient 1 12))  or  (times 
25 (expt 12 -1)) or (quotient 25 12) or (+ 2 (quotient 1 12)  or .....

Maxima is not going to help, unless you use it to make a canonical 
version of all of these, namely  ((rat simp) 25 12)