This is a Request For Comment [and suggestions] because I do not believe there is a unique Solution.

I have been revising a variety of my problems to rely on MathObjects. Updating a problem statement & answer has been fairly straight-forward, but revising a solution has taken more effort because fragments of expressions can be important in that context.

A problem I have used as part of assessing whether a student in a Precalculus class is ready-to-go asks:

Solve $a x + $b ($c + x) = $d (x + $e)

If a=6 and b=-5, then my old version used FEQ to display the equation as

6 x - 5 (c + x) = d (x + e) [with explicit values for c,d,e].

Also using FEQ, intermediate steps of a solution replaced "(6 + (-5)) x" with "(6 - 5) x" and "1 x" with "x".

An example is attached in a .ZIP (with 3 files):

equation01.pg

equation01-screenshot.png

PGcourse.pl ## loads & enables ProblemRandomize.pl

The screenshot of my updated version shows "6 x + (-5) ($c + x)" instead of "6 x - 5 ($c + x)" and "(6 + (-5)) x" instead of "(6 - 5) x", etc. Replacing current definition of $LHSa in equation01.pg

$abFEQ = FEQ( "$a + $b" ) ;

$LHSa = Formula( "($abFEQ)*x + $b*$c" ) ;

would display "(6 -5) x" instead of "(6 + (-5)) x". For an elementary algebra course, I would want the finer control to select which of several equivalent expressions was presented during a solution.

FWIW: I am content with detail in display of Correct.

Bottom Line: Although I will welcome suggestions, I suspect crafting a correct solution and tailoring to a particular audience will require cosmetic controls beyond what MathObjects supplies (or should supply).

### cosmetics might matter: solutions & MathObjects

by Dick Lane -
In reply to Dick Lane
Sunday, 3 April 2011, 9:03 PM

### Re: cosmetics might matter: solutions & MathObjects

by Alex Jordan -
Hi Dick,

MathObject Formulas have a method "reduce" that helps. For example, if $a = 2 and $b = -3, then

Formula("$a+$bx") will be 2+(-3)x,

but Formula("$a+$bx")->reduce will be 2-3x.

The reductions that get applied are here:

http://webwork.maa.org/wiki/List_of_parser_reduction_rules_for_MathObject_Formulas

(And sometimes it's useful to turn some of them off, as the top of that pge explains how to do.)

MathObject Formulas have a method "reduce" that helps. For example, if $a = 2 and $b = -3, then

Formula("$a+$bx") will be 2+(-3)x,

but Formula("$a+$bx")->reduce will be 2-3x.

The reductions that get applied are here:

http://webwork.maa.org/wiki/List_of_parser_reduction_rules_for_MathObject_Formulas

(And sometimes it's useful to turn some of them off, as the top of that pge explains how to do.)

In reply to Alex Jordan
Sunday, 3 April 2011, 9:53 PM

### Re: cosmetics might matter: solutions & MathObjects

by Dick Lane -
Thanks, Alex, for your reference to the wiki page with a List of Parser Reduction Rules.

My example includes

Context() -> flags -> set(reduceConstants => 0) ;

$LHS = Formula( "$a * x + $b * ($c + x)" ) ;

$RHS = Formula( "$d * (x + $e)" ) -> reduce ;

and adding "-> reduce" to $LHS does not fix an issue involving scope of that reduction. E.g., if a=-5, b=-4, c=-6, that reduced $LHS would display as -(5x + 4(x-6)) rather than -5x - 4(-6 + x). [There are pedagogical reasons why I want students to confront the latter form.] An alternative definition of $LHSa shows one way to manage the pieces (sometimes):

$abFeq = FEQ( "$a + $b" ) ;

$LHSa = Formula( "($abFeq)*x + $b*$c" ) ;

My example includes

Context() -> flags -> set(reduceConstants => 0) ;

$LHS = Formula( "$a * x + $b * ($c + x)" ) ;

$RHS = Formula( "$d * (x + $e)" ) -> reduce ;

and adding "-> reduce" to $LHS does not fix an issue involving scope of that reduction. E.g., if a=-5, b=-4, c=-6, that reduced $LHS would display as -(5x + 4(x-6)) rather than -5x - 4(-6 + x). [There are pedagogical reasons why I want students to confront the latter form.] An alternative definition of $LHSa shows one way to manage the pieces (sometimes):

$abFeq = FEQ( "$a + $b" ) ;

$LHSa = Formula( "($abFeq)*x + $b*$c" ) ;

In reply to Dick Lane
Monday, 4 April 2011, 12:06 AM

### Re: cosmetics might matter: solutions & MathObjects

by Alex Jordan -
Absolutely. I completely agree with the pedagogy, and that's why I almost always turn off one or two of the reductions.

This line:

Context()->reduction->set('(-x)-y'=>0);

will stop -x - y from being reformatted as -(x + y). And the ->reduce method will (probably) still do everything you would like it to do.

I also usually like to turn off '(-x)+y', which reorders -x + y into y - x.

This line:

Context()->reduction->set('(-x)-y'=>0);

will stop -x - y from being reformatted as -(x + y). And the ->reduce method will (probably) still do everything you would like it to do.

I also usually like to turn off '(-x)+y', which reorders -x + y into y - x.

In reply to Alex Jordan
Monday, 4 April 2011, 3:27 AM

### Re: cosmetics might matter: solutions & MathObjects

by Dick Lane -
Many thanks, Alex, for pointing out something which I had overlooked --- our ability in MathObjects to control which individual reduction rules are applied or disabled. On the other hand, it is not clear how this might simplify writing of a solution (template) which refers to various parts of an answer expression.

FWIW, the example posted with my query was generalized from a problem with a known relation between $a$ and $b (which was exploited during a subsequent solution). My immediate question involves ways to adapt that as the problem task is generalized.

an aside: my time-to-create a problem+solution seems to average between 1:2 and 1:3 for (problem plus structured answer) : (solution which copes with parameter choices). For those occasions where I am slow in composing an algorithmic presentation of a solution, I am glad for the fall-back of displaying a structured expression as an answer. (Quoted stuff in old style, use Formula or Compute now.)

FWIW, the example posted with my query was generalized from a problem with a known relation between $a$ and $b (which was exploited during a subsequent solution). My immediate question involves ways to adapt that as the problem task is generalized.

an aside: my time-to-create a problem+solution seems to average between 1:2 and 1:3 for (problem plus structured answer) : (solution which copes with parameter choices). For those occasions where I am slow in composing an algorithmic presentation of a solution, I am glad for the fall-back of displaying a structured expression as an answer. (Quoted stuff in old style, use Formula or Compute now.)