To be able to work with several answers at once, you need to use the MultiAnswer object available in the

`parserMultiAnswer.pl`

macro file. You get access to the student answers through the custom

`checker`

function that you provide. See the

MultiAnswer documentation for details.

Here is an example of how to do this:

loadMacros(
"PGstandard.pl",
"MathObjects.pl",
"PGML.pl",
"parserMultiAnswer.pl",
"PGcourse.pl"
);
Context("Interval");
$A = Compute("{1,2,3,4}");
$B = Compute("{3,4,5,6,7,8}");
$ma = MultiAnswer($A,$B)->with(
singleResult => true,
format => "A = %s and B = %s",
tex_format => "A = %s\hbox{ and }B = %s",
checker => sub {
my ($correct, $student, $m, $ans) = @_;
my ($A, $B) = @$student;
if (!$ans->{isPreview}) {
Value->Error("A doesn't have 4 elements") if $A->length != 4;
Value->Error("B doesn't have 6 elements") if $B->length != 6;
Value->Error("The union doesn't have 8 elements") if ($A + $B)->length != 8;
}
return $A->length == 4 && $B->length == 6 && ($A + $B)->length == 8;
}
);
BEGIN_PGML
Give an example of sets [`A`] and [`B`] of numbers with [`|A| = 4`], [`|B| = 6`], and [`|A \cup B| = 8`].
>> [`A`] = [______________]{$ma} and [`B`] = [_______________]{$ma} <<
END_PGML

Note that I have specified "set of numbers" in the problem because MathObejct sets are only for real numbers.
I hope that answers the question.