> I think a lot of these questions can be clarified by viewing the sboTerm
>as a type, and kineticLaws are data which may be typed or untyped.
>If the kineticLaw is untyped, then you simply have a mathML expression,
>all you can check is whether the formula is well-formed.
>If it is typed then you have the ability to add consistency checks, such
>as determining whether the kineticLaw really belongs to the sboTerm type.
>Note that this may be difficult to determine in practice, since many
>equivalent algebraic forms can exist for an sboTerm. So what the sboTerm
>should do is define a canonical representation into which any
>kineticFormula of that type can be transformed algebraically
>Therefore, the ability to detect inconsistencies between the sboTerm and
>the kineticFormula is very important. It basically allows one to perform
>type-checking on mathematical formulas beyond the well-formedness of the