design - syntax - usage - [notations] - styles - contexts - why? - demo

The following list gives the operators for the math notation definition
in order of diminishing precedence. Any short forms for operators are
given after the operator name.
In definitions, `A` and `B` refer to the elements
preceding and following the operator, respectively.
Each precedence level has its own associativity.

*Name Composition*(left)`index ;`

- attach a quantitative index
`B`to a variable name`A`*example:*`x;1 + x;2 + 'ellipsis + x;n`

`qual :`

- attach a descriptive qualifier
`B`to a variable name`A`*example:*`V:be 'approxeq 0.7*'_Volt`

*Relation*(right)`apply (`

- apply a relation
`A`to an argument or tuple of arguments`B`

*Exponentiation*(right)`exp ** ^`

- raise a base
`A`to an exponent`B`*example:*`'exp('exp(root(2),root(2)),root(2)) = 2`

*Factorial*(unary left)`fact !`

- form the factorial of
`A`

*Multiplication and Division*(left)`prod *`

- multiply two expressions
*example:*`2 * 2 = 4`

`quot /`

- form the quotient of two expressions
*example:*`'quot(a / b - 3,c)`

`divby`

- divide two expressions and suggest the dot-bar-dot symbol for visual rendering
*example:*`6 'divby 2 = 3`

`compose`

- compose the function
`A`with the function`B` `isect`

- form the intersection of two sets

*Quantitative Negation*(unary right)`neg _`

- form the negative of a quantity, vector, or matrix

*Cross Product*(left)`cross`

- form the cross product of two vectors

*Dot Product*(nonassoc)`dot`

- form the dot product of two vectors

*Addition and Subtraction*(left)`sum +`

- add two expressions
`diff -`

- subtract two expressions
`union`

- form the union of two sets
`disjunion`

- form the disjoint union of two sets
`relcomp \`

- form the relative complement of
`B`in the set`A` `symdiff`

- form the symmetric difference of two sets

*Quantitative Comparison*(chain)`eq =`

- assert that two expressions are equal
`noteq`

- assert that two expressions are not equal
`gt >`

- assert that
`A`is strictly greater than`B` `gteq >=`

- assert that
`A`is greater than or equal to`B` `lt <`

- assert that
`A`is strictly less than`B` `lteq <=`

- assert that
`A`is less than or equal to`B` `approxeq`

- assert that
`A`is approximately equal to`B` `propto`

- assert that
`A`is proportional to`B` `approach`

- suppose that
`A`approaches the value`B`

*Geometric Relationships*(chain)`parallel ||`

- assert that
`A`is parallel to`B` `perpto |_`

- assert that
`A`is perpendicular to`B` `congruent =~`

- assert that
`A`is congruent to`B` `similar ~~`

- assert that
`A`is similar to`B`

*Set Comparison*(chain)`superseteq`

- assert that
`A`is a superset of the set`B` `superset`

- assert that
`A`is a strict superset of the set`B` `subseteq`

- assert that
`A`is a subset of the set`B` `subset`

- assert that
`A`is a strict subset of the set`B` `notsubset`

- assert that
`A`is not a subset of the set`B`

*Containment*(nonassoc)`eltof`

- assert that
`A`is an element of the set`B` `noteltof`

- assert that
`A`is not an element of the set`B`

*Logical Negation*(unary right)`not`

- assert the negation of a proposition or truth value

*Logical Conjunction*(left)`and`

- form the logical conjunction of two propositions or truth values

*Logical Disjunction*(left)`or`

- form the logical inclusive disjunction of two propositions or truth values
`xor`

- form the logical exclusive disjunction of two propositions or truth values

*Implication*(serial)`implies`

- assert that proposition
`A`implies proposition`B`

*Logical Equivalence*(serial)`equiv`

- assert that two propositions or truth values are equivalent

*Definition*(serial)`defeq`

- define
`A`as being equal to`B`

*Composition*(serial)`tuple ,`

- join things into ordered lists

*Please note a few things about operators:*

**Multiplication must be explicitly indicated.**Always use theor`*`

operator; never simply juxtapose two expressions.`times`

- The
operator and the`apply`

operator work together to allow natural notation such as`tuple`

to signify the application of a function to arguments.`f(x,y)`

When, in mathematics, we commonly write

**f(x)**, we are establishing a relationship between**f**and**x**, indicating that**f**is to be treated as a function and applied to an argument**x**. This relationship is represented in MINSE by thecompound, which has the function as its first sub-element and the argument as the second. When there are multiple arguments, they are first combined into a single compound by the comma operator, which builds a`apply`

**tuple**compound out of all the arguments, and the tuple is used as the second sub-element of the**apply**compound.So beware: this use gives the parentheses and the comma a completely different meaning. Usually, the parentheses group the sub-elements of a compound and the commas separate these sub-elements. When not used after a quote and a compound's name, the parentheses act as the right-associative

**apply**operator and commas act as the serial-associative**tuple**operator, performing the analogous (but distinct) roles of grouping and separating*arguments*to a mathematical*function*instead of the*sub-elements*of a MINSE*compound*. The function application becomes itself a compound, and likewise for the arguments if there are more than one.This is all done to reduce typing for the mathematician who is used to simply writing

to represent a function of two arguments.`f(x,y)`

copyright © by

since Sun 26 May 1996