Generic name reference restriction, intended to be generic enough to
work with most systems (supporting both C-style and Lisp-style
identifiers).
The systems that implement this schema should perform their own, more
strict, type checks.
Valid value for constants.
Documentation for a specific element.
The documentation must not be sparse; please provide something
descriptive that will be useful to someone completely new to the code.
Single-character index variable
Symbol used to represent an entity when rendered.
The string should consist of TeX/LaTeX commands and should produce a
single symbol.
Abstract operator type used to classify elements as operators.
Operators are portions of the calculation that perform a portion of
the calculation. For example, a summation would classify as an
operation (operator), but value-of would not (as it is only
representing a value, but not performing a calculation).
Elements/attributes common to all operator types (see the operator
element for a description on what qualifies as an operator).
All operators may include child calculations. Furthermore, they may
be labeled and may have an identifier associated with their result.
Optional identifier with which the result of the calculation may be
referenced.
Optional description of a calculation. @label is used in place of
@desc to ensure that it is not confused with the otherwise required
@desc attribute.
@desc should be used to describe a value that is generated by a
calculation and should not otherwise be used (e.g. with
lv:sum/@generate)
This is different from @label, which provides a high-level
description of what the equation is doing. @desc describes what the
generated value is.
Allows for the definition of an index variable which will be
defined for all children of the operation.
Represents a summation (addition) of a set of values.
If @of is used, the equation defined by child elements will be
iterated using an index on the set provided by @of. If no equation is
given, all elements in the set identified by @of will be summed.
If @of is omitted, the result of each child element will be summed.
This operator should also be used for subtraction by summing negative
values.
Iterate over all values of this set. Must be a set.
Optional name of a set to generate from this expressions.
Generators are compatible only with @of and a sub-expression.
Symbol to use when typesetting the generator
Yield precision
Represents the product (multiplication) of a set of values.
If @of is used, the equation defined by child elements will be
iterated using an index on the set provided by @of. If no equation is
given, all elements in the set identified by @of will be multiplied.
If @of is omitted, the result of each child element will be
multiplied.
While this operator may also be used for division by multiplying by
the inverse of a number (n^-1), a limited quotient operator is
provided for clarity and convenience.
Iterate over all values of this set. Must be a set.
Optional name of a set to generate from this expressions.
Generators are compatible only with @of and a sub-expression.
Symbol to use when typesetting the generator
Dot product of any number of vectors
Yield precision
Represents the quotient (division) of two values.
This operator is to be thought of as a fraction: the numerator is
identified by the first child element and the denominator the second.
While the summation operator may also be used for division by
multiplying by the inverse of a number (n^-1), this limited operator
is provided for clarity and convenience.
Exponent; the first child node is the base, the second is the order.
Construct a list using the given element and an existing list
This is analogous to lisp's cons; the first argument is the car and
the second is the cdr.
Retrieve the first element of a list
Analogous to lisp's car.
Return the list without its first element
If the list contains only one element, then an empty list will be
returned. Analogous to lisp's cdr.
Retrieves the length of a vector
Denotes a function application.
The result of the function identified by @name will be used in
place of the call. The application may optionally accept an
argument list (if the function accepts arguments).
Name of the function to apply
Represents an argument to be applied to a function.
Name of the parameter to apply to the function
Recursively applies the current function.
All arguments are copied to the argument list of the function application unless overridden.
Converts the given value to an integer, rounding up if necessary (e.g. 0.1 => 1)
Value precision to consider for rounding.
Converts the given value to an integer, rounding down if necessary (e.g. 0.9 => 0)
Value precision to consider for rounding.
Creates a set out of its siblings
Outputs the result of the contained expression to the console and
returns its value.
Defines a condition under which the expression will yield one if
true, otherwise will be strongly zero (zero even if
undefined)
More flexible alternative to the @index attribute on elements; supports
calculations for determining the index
Returns the value associated with the given identifier.
An identifier for which the value should be retrieved
Allows for the definition of an index variable which will be
defined for all children of the operation.
Optional description of a calculation. @label is used in place of
@desc to ensure that it is not confused with the otherwise required
@desc attribute.
Returns @value. This element simply enforces documentation and prevents
the use of magic values.
Value of constant (must be within the domain of its @type)
Type (domain) of the constant (inferred when not provided)
Description of the value explaining its intent
Optional description of a calculation. @label is used in place of
@desc to ensure that it is not confused with the otherwise required
@desc attribute.
Represents a list of cases for a calculation.
Optional description of the case
Optional description of the case
Optional description of the case set
Declares variables visible within the let block.
This exists as a means of assignment for re-using values.
Declares a list of values to define for this block
Declares a value that will remain in scope for the let block
Variable name
Variable datatype
Vector/matrix; if omitted, implicitly scalar.
Describe the purpose of the value
Represents every element that can be used to perform a calculation.
Implementors may use this group to accept any type of calculation.
Root calculation node; this should be the entry point for any type of
calculation. This helps to ensure that certain nodes are only used at
the beginning of a calculation (such as cases).