- A vector, part of a correct answer.
+
A vector, part of a correct answer.
-
@@ -2115,10 +1986,8 @@ body { color: #000000; background: #FFFF
Element value
type:
caparesponse--value
-
- A value, part of a correct answer.
+
A value, part of a correct answer.
-
@@ -2129,14 +1998,15 @@ body { color: #000000; background: #FFFF
Attribute
type:
optional
-
-
+ Union of types
+- perl
+-
Value restriction based on xs:string
-
-
+
+
@@ -2145,7 +2015,6 @@ body { color: #000000; background: #FFFF
Value
-
Value restriction based on xs:string
@@ -2153,26 +2022,22 @@ body { color: #000000; background: #FFFF
Vector
-
Value restriction based on xs:string
-
- Formula response (using caparesponse--answergroup like numericalresponse).
+
Formula response (using caparesponse--answergroup like numericalresponse).
-
+
Element formularesponse
-
- Formula Response asks the student to type in a formula as an answer.
+
Formula Response asks the student to type in a formula as an answer.
If the answer is 2x² + 4, the student is allowed to type “2*x*x+4”, “x*x + x*x + 4”, “2*xˆ2 + 14 - 10”, or any other equivalent expression.
Formula Response problems have many of the same characteristics of Numerical Response problems, including the ability to run scripts, dynamically generate answers, etc.
-
Can contain text
Choice between:
@@ -2203,17 +2068,14 @@ body { color: #000000; background: #FFFF
Attribute answer:
optional
type:
xs:string
-
- The correct answer. It can use variables calculated/defined in the problem’s Perl script block, allowing the answer to be determined dynamically.
+
The correct answer. It can use variables calculated/defined in the problem’s Perl script block, allowing the answer to be determined dynamically.
-
Attribute
samples:
optional
type:
xs:string
-
- Sample Points.
+
Sample Points.
Format:
1. A comma-separated list of the variables you wish to interpret,
@@ -2224,37 +2086,31 @@ body { color: #000000; background: #FFFF
a) specifies one point to sample. b) specifies a range for each variable, and the system will take as many random samples from that range as the number after the #.
-
Attribute
preprocess:
optional
type:
xs:string
-
- Pre-Processor Subroutine
+
Pre-Processor Subroutine
-
-
Parents:
inlineResponses
+
Parents:
inlineResponses
-
- Math response
+
Math response
-
+
Element mathresponse
-
- Query for text that is evaluated with a script written in a Computer Algebra System (CAS) language.
+
Query for text that is evaluated with a script written in a Computer Algebra System (CAS) language.
The CAS script must be included in the response with an <answer> element.
MathResponse is extremely powerful, as it tests answers for conditions rather than agreement with a particular correct answer. An unfortunate byproduct, however, is that it cannot be analyzed by several of the LON-CAPA statistics tools.
-
Can contain text
Choice between:
@@ -2265,11 +2121,9 @@ body { color: #000000; background: #FFFF
Element answer
type: mathresponse--answer
-
- Maxima or R script using the arrays RESPONSE (the student response) and LONCAPALIST (from the args attribute).
+
Maxima or R script using the arrays RESPONSE (the student response) and LONCAPALIST (from the args attribute).
Returns a boolean in the last statement that will be true if the answer is correct.
-
@@ -2299,49 +2153,43 @@ body { color: #000000; background: #FFFF
Attribute
answerdisplay:
optional
type:
xs:string
-
- This attribute contains what is displayed when the problem is in "Show Answer" mode.
+
This attribute contains what is displayed when the problem is in "Show Answer" mode.
You will want to use it so that the students can see the correct answer after the "Show Answer Date" configured when the problem is assigned in the course space.
This is usually the name of a Perl string variable (starting with '$') created in a Perl script before the response.
-
Attribute
cas:
required
-
- Algebra System. Maxima and R are supported.
+
Algebra System. Maxima and R are supported.
-
-
-
+ Union of types
+- perl
+-
Value restriction based on xs:string
-
-
+
+
Attribute
args:
optional
type:
xs:string
-
- Perl array that will be passed to the CAS script as the LONCAPALIST variable.
+
Perl array that will be passed to the CAS script as the LONCAPALIST variable.
This is usually the name of a Perl array variable (starting with '@') created in a Perl script before the response.
-
Attribute
libraries:
optional
type:
xs:string
-
- Comma-separated list of libraries.
+
Comma-separated list of libraries.
The following libraries can be used with Maxima:
absimp, affine, atensor, atrig1, augmented_lagrangian,
@@ -2358,11 +2206,10 @@ body { color: #000000; background: #FFFF
nlme, nnet, qAnalyst, quadprog, rpart, SuppDists,
spatial, splines, stats, stats4, survival, tseries, zoo
-
-
Parents:
inlineResponses
+
Parents:
inlineResponses
Complex type mathresponse--answer
Can contain text
Attribute
type:
@@ -2375,21 +2222,18 @@ body { color: #000000; background: #FFFF
-
- Function plot response
+
Function plot response
-
+
Element functionplotresponse
-
- Query for the drawing of a function.
+
Query for the drawing of a function.
Requires that the student creates a plot that matches specified criteria.
Examples can be functions that have certain slopes, curvature, maxima or minima at specified independent coordinate values. The students create their answer by dragging the curves and adjusting the slopes.
-
Can contain text
Choice between:
@@ -2410,122 +2254,97 @@ body { color: #000000; background: #FFFF
Attribute width:
optional
type:
int-or-perl
-
- Width (pixels)
+
Width (pixels)
-
Attribute
height:
optional
type:
int-or-perl
-
- Height (pixels)
+
Height (pixels)
-
Attribute
xlabel:
optional
type:
xs:string
-
- Label x-axis
+
Label x-axis
-
Attribute
xmin:
optional
type:
real-or-perl
-
- Minimum x-value
+
Minimum x-value
-
Attribute
xmax:
optional
type:
real-or-perl
-
- Maximum x-value
+
Maximum x-value
-
Attribute
xaxisvisible:
optional
type:
yesno-or-perl
-
- x-axis visible
+
x-axis visible
-
Attribute
ylabel:
optional
type:
xs:string
-
- Label y-axis
+
Label y-axis
-
Attribute
ymin:
optional
type:
real-or-perl
-
- Minimum y-value
+
Minimum y-value
-
Attribute
ymax:
optional
type:
real-or-perl
-
- Maximum y-value
+
Maximum y-value
-
Attribute
yaxisvisible:
optional
type:
yesno-or-perl
-
- y-axis visible
+
y-axis visible
-
Attribute
gridvisible:
optional
type:
yesno-or-perl
-
- This determines whether or not the grid is on the graph.
+
This determines whether or not the grid is on the graph.
-
Attribute
answerdisplay:
optional
type:
xs:string
-
- Background plot(s) for answer (function(x):xmin:xmax,function(x):xmin:xmax,x1:y1:sx1:sy1:x2:y2:sx2:sy2,...)
+
Background plot(s) for answer (function(x):xmin:xmax,function(x):xmin:xmax,x1:y1:sx1:sy1:x2:y2:sx2:sy2,...)
This is a green curve the computer will display once the correct answer has been submitted. It is static, and can be given as a piecewise function.
Since some problems will have multiple correct answers, this necessarily will only be a possible answer. Only the left hand side of the equation is necessary. For example, entering x + 2 will display the line y = x + 2.
The syntax must be syntax recognized by GeoGebra. To test syntax for Geogebra directly, visit http://www.geogebra.org/webstart/geogebra.html .
-
-
Parents:
blockResponses
+
Parents:
blockResponses
Element functionplotelements
Function Plot Elements
-
Choice between:
@@ -2546,185 +2365,156 @@ body { color: #000000; background: #FFFF
-
Parents:
functionplotresponse
+
Parents:
functionplotresponse
Element spline
-
- At least one spline is necessary for a graph problem. These splines are what will be adjusted and analyzed to solve the problem.
+
At least one spline is necessary for a graph problem. These splines are what will be adjusted and analyzed to solve the problem.
-
Attribute
index:
optional
-
- This is the label assigned to the spline. In general, it's simplest just to label them A, B, C etc.
+
This is the label assigned to the spline. In general, it's simplest just to label them A, B, C etc.
-
-
-
+ Union of types
+- perl
+-
Value restriction based on xs:string
-
-
+
+
Attribute
order:
optional
-
- This determines the number of Control Points on the spline. For example, selecting '3' means there will be 3 points on the spline that can be moved, as well as 3 points off the spline that will control the slope.
+
This determines the number of Control Points on the spline. For example, selecting '3' means there will be 3 points on the spline that can be moved, as well as 3 points off the spline that will control the slope.
-
-
-
+ Union of types
+- perl
+-
Value restriction based on xs:int
-
-
+
+
Attribute
initx:
optional
type:
real-or-perl
-
- Initial x-value
+
Initial x-value
"Initial x-value" and "Initial y-value" determine where the left most Control Point will be.
-
Attribute
inity:
optional
type:
real-or-perl
-
- Initial y-value
+
Initial y-value
"Initial x-value" and "Initial y-value" determine where the left most Control Point will be.
-
Attribute
scalex:
optional
type:
real-or-perl
-
- This determines the right most location of the Control Points (on the spline). To figure out where this point will be, add 'Initial x-value' to 'Scale x'.
+
This determines the right most location of the Control Points (on the spline). To figure out where this point will be, add 'Initial x-value' to 'Scale x'.
-
Attribute
scaley:
optional
type:
real-or-perl
-
- This determines the distance (in the y-direction) between the Control Points on the spline, and the ones that control the slope.
+
This determines the distance (in the y-direction) between the Control Points on the spline, and the ones that control the slope.
-
-
Parents:
functionplotelements
+
Parents:
functionplotelements
Element backgroundplot
-
- Background Function Plot.
+
Background Function Plot.
This places a static curve on the graph of your choosing. It can be labeled, moveable or fixed, and any color desired. Only the right hand side of the function you want displayed is necessary. For example, entering x+2 will display the line y=x+2. The syntax must be syntax recognized by GeoGebra.
-
Attribute
function:
required
type:
xs:string
-
- An equals sign is not necessary. Just give the right hand side of the function. LON-CAPA variables are usable as well to allow individualized problems for each student. The syntax must be syntax recognized by GeoGebra.
+
An equals sign is not necessary. Just give the right hand side of the function. LON-CAPA variables are usable as well to allow individualized problems for each student. The syntax must be syntax recognized by GeoGebra.
-
Attribute
xinitial:
optional
type:
real-or-perl
-
- Initial x-value (optional)
+
Initial x-value (optional)
-
Attribute
xfinal:
optional
type:
real-or-perl
-
- Final x-value (optional)
+
Final x-value (optional)
-
Attribute
label:
optional
type:
xs:string
-
- Label on Plot
+
Label on Plot
-
Attribute
color:
optional
-
- Color of the background function (hex code).
+
Color of the background function (hex code).
The default is 000000 (black). It is recommended to choose a color other than green, since it is easily confused with being the answer.
-
-
-
+ Union of types
+- perl
+-
Value restriction based on xs:string
-
-
+
+
Attribute
fixed:
optional
type:
yesno-or-perl
-
- Fixed location
+
Fixed location
-
-
Parents:
functionplotelements
+
Parents:
functionplotelements
Element plotobject
-
- This places a point in the applet. Generally intended to be used with Vectors to create problems involving Free-Body Diagrams or any other points that vectors (or arrows) connect to and from.
+
This places a point in the applet. Generally intended to be used with Vectors to create problems involving Free-Body Diagrams or any other points that vectors (or arrows) connect to and from.
-
Attribute
label:
optional
type:
xs:string
-
- Label on Plot
+
Label on Plot
-
Attribute
x:
@@ -2734,25 +2524,21 @@ body { color: #000000; background: #FFFF
-
Parents:
functionplotelements
+
Parents:
functionplotelements
Element plotvector
-
- This creates a vector (or arrow) in the applet. Generally intended to be used with Objects to create problems involving Free-Body Diagrams or to establish connections between Objects.
+
This creates a vector (or arrow) in the applet. Generally intended to be used with Objects to create problems involving Free-Body Diagrams or to establish connections between Objects.
-
Attribute
label:
optional
type:
xs:string
-
- Label on Plot.
+
Label on Plot.
Determines the name of the vector, as well as the name that will be visible in the problem.
This value MUST be capitalized and cannot include spaces or most symbols. To be safe, stick with letters and numbers.
-
Attribute
tailx:
@@ -2768,21 +2554,18 @@ body { color: #000000; background: #FFFF
-
Parents:
functionplotelements
+
Parents:
functionplotelements
Element drawvectorsum
Draw Vector Sum
-
Attribute
label:
optional
type:
xs:string
-
- Label on Plot
+
Label on Plot
-
Attribute
tailx:
@@ -2798,14 +2581,12 @@ body { color: #000000; background: #FFFF
optional
type: xs:string
-
Parents:
functionplotelements
+
Parents:
functionplotelements
Element functionplotruleset
-
- This is where the rules are defined. These rules will determine whether or not an entered answer is correct or not. If there are no rules, any answer will be deemed correct. If there is more than one rule, when an answer is submitted, the server will analyze them in order until one of them is broken (of course, if it's a correct answer, it will go through all of them and return a green box). In such an event, any subsequent rules will be ignored. If conditional hints related to these rules are added, only the first broken rule's hint will be shown, even if all rules are broken.
+
This is where the rules are defined. These rules will determine whether or not an entered answer is correct or not. If there are no rules, any answer will be deemed correct. If there is more than one rule, when an answer is submitted, the server will analyze them in order until one of them is broken (of course, if it's a correct answer, it will go through all of them and return a green box). In such an event, any subsequent rules will be ignored. If conditional hints related to these rules are added, only the first broken rule's hint will be shown, even if all rules are broken.
-
Choice between:
@@ -2823,137 +2604,121 @@ body { color: #000000; background: #FFFF
-
Parents:
functionplotresponse
+
Parents:
functionplotresponse
Element functionplotrule
-
- Function Plot Graph Rule.
+
Function Plot Graph Rule.
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.
-
Attribute
index:
optional
type:
xs:string
-
- 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.
+
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.
-
Attribute
derivativeorder:
optional
-
- 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.
+
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.
-
-
-
+ Union of types
+- perl
+-
Value restriction based on xs:int
-
-
+
+
Attribute
xinitial:
optional
type:
real-or-perl
-
- Initial x-value.
+
Initial x-value.
A value must be entered for one of "Initial x-value" and "Initial x-value label". 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.
-
Attribute
xinitiallabel:
optional
-
- Initial x-value label.
+
Initial x-value label.
A value must be entered for one of "Initial x-value" and "Initial x-value label". 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.
-
-
-
+ Union of types
+- perl
+-
Value restriction based on xs:string
-
-
+
+
Attribute
xfinal:
optional
type:
real-or-perl
-
- Final x-value (optional).
+
Final x-value (optional).
This determines the end of the domain over which the rule examines. To test only a single point (the initial value), leave "Final x-value" and "Final x-value label" 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'.
-
Attribute
xfinallabel:
optional
-
- Final x-value label (optional).
+
Final x-value label (optional).
This determines the end of the domain over which the rule examines. To test only a single point (the initial value), leave "Final x-value" and "Final x-value label" 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'.
-
-
-
+ Union of types
+- perl
+-
Value restriction based on xs:string
-
-
+
+
Attribute
minimumlength:
optional
type:
real-or-perl
-
- Minimum length for range (optional).
+
Minimum length for range (optional).
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.
-
Attribute
maximumlength:
optional
type:
real-or-perl
-
- Maximum length for range (optional).
+
Maximum length for range (optional).
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.
-
Attribute
relationship:
optional
-
- The heart of the rule. This choice determines whether the chosen 'function' is greater than, less than, equal to, etc. a certain 'value'.
+
The heart of the rule. This choice determines whether the chosen 'function' is greater than, less than, equal to, etc. a certain 'value'.
-
-
-
+ Union of types
+- perl
+-
Value restriction based on xs:string
- eq
- ne
@@ -2962,249 +2727,201 @@ body { color: #000000; background: #FFFF
- lt
- le
-
-
+
+
Attribute
value:
optional
type:
xs:string
-
- 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.
+
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.
-
Attribute
percenterror:
optional
type:
real-or-perl
-
- 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).
+
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).
-
-
Parents:
functionplotruleset
+
Parents:
functionplotruleset
Element functionplotvectorrule
-
- Function Plot Vector Rule
+
Function Plot Vector Rule
Used to test whether vectors are in the right place, pointed in the right direction, and have the correct length.
-
Attribute
index:
optional
type:
xs:string
-
- Index/Name
+
Index/Name
This is an internal label for the rule. This attribute must be different for each rule. This same value will be used to add a conditional hint.
-
Attribute
vector:
optional
type:
xs:string
-
- The name of one of the vectors in the list of function plot elements. Specifically, the one you want to test.
+
The name of one of the vectors in the list of function plot elements. Specifically, the one you want to test.
-
Attribute
attachpoint:
optional
type:
xs:string
-
- Attached to object.
+
Attached to object.
Object(s) this vector should be attached to. For more than one object, separate them by commas. If the vector should not be attached to any object, leave this blank. In this case, an object is considered attached if its tail OR its tip is in the vicinity of the object.
-
Attribute
notattachpoint:
optional
type:
xs:string
-
- Not attached to object.
+
Not attached to object.
Object(s) that this vector should be not be near.
For more than one object, separate them by commas. Particularly useful for distractor vectors.
-
Attribute
tailpoint:
optional
type:
xs:string
-
- Tail attached to object.
+
Tail attached to object.
Tail(s) this vector should be attached to.
-
Attribute
tippoint:
optional
type:
xs:string
-
- Tip attached to object.
+
Tip attached to object.
Tip(s) this vector should be attached to.
-
Attribute
nottailpoint:
optional
type:
xs:string
-
- Tail not attached to object.
+
Tail not attached to object.
Tail(s) this vector should not be attached to.
-
Attribute
nottippoint:
optional
type:
xs:string
-
- Tip not attached to object.
+
Tip not attached to object.
Tip(s) this vector should not be attached to.
-
Attribute
length:
optional
type:
real-or-perl
-
- How long the vector should be.
+
How long the vector should be.
-
Attribute
lengtherror:
optional
type:
real-or-perl
-
- Absolute error length.
+
Absolute error length.
How accurate the length must be to get the answer correct.
-
Attribute
angle:
optional
type:
real-or-perl
-
- What direction should the vector point. All values are measured in degrees, counterclockwise starting at the positive x-axis. Values must be 0 ≤ θ < 360.
+
What direction should the vector point. All values are measured in degrees, counterclockwise starting at the positive x-axis. Values must be 0 ≤ θ < 360.
-
Attribute
angleerror:
optional
type:
real-or-perl
-
- Absolute error angle.
+
Absolute error angle.
How accurate the angle must be to get the answer correct.
-
-
Parents:
functionplotruleset
+
Parents:
functionplotruleset
Element functionplotvectorsumrule
-
- Function Plot Vector Sum Rule
+
Function Plot Vector Sum Rule
Used to test the sum of a set of vectors.
-
Attribute
index:
optional
type:
xs:string
-
- Index/Name.
+
Index/Name.
This is an internal label for the rule. It must be different for each rule. This same value will be used to add a conditional hint.
-
Attribute
vectors:
optional
type:
xs:string
-
- Comma-separated list of vectors.
+
Comma-separated list of vectors.
List all of the vectors that should be added up to be tested.
-
Attribute
length:
optional
type:
real-or-perl
-
- Sum vector length.
+
Sum vector length.
How long the sum of these vectors should be.
-
Attribute
lengtherror:
optional
type:
real-or-perl
-
- Absolute error length.
+
Absolute error length.
How accurate the length must be to get the answer correct.
-
Attribute
angle:
optional
type:
real-or-perl
-
- Sum vector angle.
+
Sum vector angle.
What direction should the sum of these vectors point. All values are measured in degrees, counterclockwise starting at the positive x-axis. Values must be 0 ≤ θ < 360.
-
Attribute
angleerror:
optional
type:
real-or-perl
-
- Absolute error angle.
+
Absolute error angle.
How accurate the angle must be to get the answer correct.
-
-
Parents:
functionplotruleset
+
Parents:
functionplotruleset
Element functionplotcustomrule
-
- Used to create rules that aren't options using the other rules. The coding is done in Perl and follows Perl syntax. Any variable written inside this rule will be recognized as normal and any evaluation function can be used as well.
+
Used to create rules that aren't options using the other rules. The coding is done in Perl and follows Perl syntax. Any variable written inside this rule will be recognized as normal and any evaluation function can be used as well.
-
Choice between:
-
Element answer
-
- Answer algorithm, normally in Perl
+
Answer algorithm, normally in Perl
-
Can contain text
Attribute
type:
@@ -3219,28 +2936,23 @@ body { color: #000000; background: #FFFF
Attribute
index:
optional
type:
xs:string
-
- Index/Name
+
Index/Name
-
-
Parents:
functionplotruleset
+
Parents:
functionplotruleset
-
- Organic response
+
Organic response
-
+
Element organicresponse
-
- Query for an organic chemical structure with a molecular editor.
+
Query for an organic chemical structure with a molecular editor.
-
Can contain text
Choice between:
@@ -3267,8 +2979,7 @@ body { color: #000000; background: #FFFF
Attribute options:
optional
-
- Comma-separated list of options:
+
Comma-separated list of options:
- autoez: Auto E,Z stereochemistry
- multipart: Multipart Structures
@@ -3276,73 +2987,62 @@ body { color: #000000; background: #FFFF
- reaction: Is a reaction
- number: Able to number atoms
-
-
-
+ Union of types