About

LurchMath is an easy-to-write markup language for mathematics.
It extends a proper subset of AsciiMath, $\LaTeX$, and CAS software in natural ways.
It is currently under development, and more features will be added in the future.




Features

LurchMath currently supports a small subset of AsciiMath, $\LaTeX$, and notation found in CAS software. Many symbols can be displayed using a TeX command but a preceeding backslash is not required.

Symbols can be more than one character long, are case sensitive, contain only letters and digits, cannot start with a digit, and cannot be a reserved term. Multiplication must be explicitly entered with , cdot or *.

English phrases such as Given or declare are case sensitive and will produce LaTeX with the same phrase in the same case. Spaces within an expression are usually ignored and can be used for legibility. The main exception is that there cannot be any spaces between a function and the parentheses containing its arguments in a function application expression.

A comma separated sequence preceeded by one of the Given keywords has the same effect as saying that each of them is a Given individually. The shortcut declaration Let x in A has the same meaning as Let x be such that x in A. The shortcut declaration P(x) for some x in A has the same meaning as P(x) and x in A for some x.

To declared the set operator $\{\ \}$ as a global constant use Declare set. To declare the ordered pair, triple, or tuple operator $\langle\ \rangle$ as a constant use Declare tuple.

Examples

If you type any of these it renders as this
Logic
P and Q
P∧Q
$P\text{ and }Q$
P or Q
P∨Q
$P\text{ or }Q$
not P
¬P
$\neg P$
P implies Q
P⇒Q
$P\Rightarrow Q$
P iff Q
P⇔Q
$P\Leftrightarrow Q$
contradiction
→←
$\rightarrow\leftarrow$
Quantifiers and bindings
forall x.x leq x+1
for all x.x leq x+1
∀x.x leq x+1
$\forall x.\, x\leq x+1$
exists x.x=2 cdot x
∃x.x=2⋅x
$\exists x.\, x=2\cdot x$
exists unique x.x=2*x
∃!x.x=2⋅x
$\exists! x.\, x=2\cdot x$
x.x+2
x↦x+2
$x.\, x+2$
Algebraic expressions
(x) $\left(x\right)$
x+y $x+y$
2+x+y $2+x+y$
-x $-x$
1-x $1-x$
x*y
x cdot y
x⋅y
$x\cdot y$
2*x*y
2 cdot x cdot y
2⋅x⋅y
$2\cdot x\cdot y$
2*3*x
2 cdot 3 cdot x
2⋅3⋅x
$2\cdot 3\cdot x$
1/x $\frac{1}{x}$
2*1/x*y $2\cdot \frac{1}{x}\cdot y$
(2*1)/(x*y) $\frac{2\cdot 1}{x\cdot y}$
x^2 ${x}^{2}$
x factorial
x!
$x!$
(n+1) choose (k-1) $\binom{n+1}{k-1}$
multinomial(m,n) $\left(m,n\right)$
sum k=0 to n of k^2
sum k from 0 to n of k^2
sum k to n of k^2
sum of k^2 as k goes from 0 to n
sum k^2 as k goes from 0 to n
sum k^2 as k from 0 to n
sum k^2 for k from 0 to n
sum k^2 for k to n
sum of k^2 as k to n
sum of k^2 for k to n
sum( k^2 , k , 0 , n )
sum(k^2,k,0,n)
sum(k^2,k,n)
$\displaystyle\sum_{k=0}^{n} {k}^{2}$
Fib_(n+2) $F_{n+2}$
Set Theory
x in A
x∈A
$x\in A$
x notin A
x∉A
$x\notin A$
{a,b,c}
set(a,b,c)
$\left\{\,a,b,c\,\right\}$
{ p:p is prime}
set(p:p is prime)
$\left\{\,p:\,p\text{ is }\text{prime}\right\}$
A subset B
A subseteq B
A⊆B
$A\subseteq B$
A cup B
A union B
A∪B
$A\cup B$
A cap B
A intersect B
A∩B
$A\cap B$
A setminus B
A∖B
$A\setminus B$
A'
A complement
${A}'$
powerset(A)
𝒫(A)
$\mathscr{P}\left(A\right)$
f:A to B
f:A→B
$f\colon A\to B$
f(x) $f\left(x\right)$
f_(x) $f_{x}$
f_(0)(x)_(n+1) $f_{0}\left(x\right)_{n+1}$
g circ f
g comp f
g∘f
$g\circ f$
A times B
A cross B
A×B
$A\times B$
pair(x,y)
tuple(x,y)
⟨x,y⟩
$\left\langle\,x,y\,\right\rangle$
triple(x,y,z)
tuple(x,y,z)
⟨x,y,z⟩
$\left\langle\,x,y,z\,\right\rangle$
tuple(w,x,y,z)
⟨w,x,y,z⟩
$\left\langle\,w,x,y,z\,\right\rangle$
Union i in I of A_(i)
Union of A_(i) for i in I
Union(A_(i),i,I)
Cup i in I of A_(i)
bigcup i in I of A_(i)
$\displaystyle\bigcup_{i\in I} A_{i}$
Intersect i in I of A_(i)
Intersect of A_(i) for i in I
Intersect(A_(i),i,I)
Cap i in I of A_(i)
bigcap i in I of A_(i)
$\displaystyle\bigcap_{i\in I} A_{i}$
Relations
x lt 0
x < 0
$x\lt 0$
x leq 0
x ≤ 0
$x\leq 0$
x neq 0
x ne 0
x≠0
$x\neq 0$
m | n
m divides n
$m\mid n$
a cong b mod m
a cong mod m to b
$a\underset{m}{\equiv}b$
x~y $x\sim y$
x~y~z $x\sim y\sim z$
x=y $x=y$
x=y=z $\begin{align} x &= y \\ &= z \end{align}$
X loves Y $X\text{ loves }Y$
X is Y
X is an Y
X is a Y
X are Y
$X\text{ is }Y$
P is a partition of A $P\text{ is a partition of }A$
'~' is an equivalence relation $\sim\text{ is }\text{an }\text{equivalence relation}$
[a] $\left[a\right]$
[a,~] $\left[a\right]_\sim$
'~' is a strict partial order $\sim\text{ is }\text{a }\text{strict partial order}$
'~' is a partial order $\sim\text{ is }\text{a }\text{partial order}$
'~' is a total order $\sim\text{ is }\text{a }\text{total order}$
Assumptions and Declarations (case insensitive, phrase is echoed)
Assume P
Given P
Suppose P
If P
:P
$\text{Assume } P$
Let x $\text{Let }x$
Let x in A $\text{Let }x\in A$
Let x be such that x in RR
Let x such that x in RR
$\text{Let }x\text{ be such that }x\in \mathbb{R}$
f(c)=0 for some c $f\left(c\right)=0\text{ for some }c$
f(c)=0 for some c in A $f\left(c\right)=0\text{ for some }c\in A$
Declare is, 0, +, cos $\text{Declare } \text{is}\text{, }0\text{, }+\text{, and }\text{cos}$
Miscellaneous
x^-
x⁻
${x}^{-}$
@P(k)
λP(k)
$\mathcal{P}\left(k\right)$

Precedence

The precedence of operations from highest to lowest are given in the following table. There are a few fine points to be aware of.

Precedence (high to low)
parentheses $(~~)$, tuples $\langle~~\rangle$, equivalence classes $[~~]$, symbols, numbers
exponentials $\left(x^2\right)$
function application $\left(f_0(x,y)(z)\right)$
postfix ($n!$, $f'$)
negation ($-x$), reciprocal ($1/2$)
product ($2\cdot x$)
summation $\left(\sum_{k=0}^n f(k)\right)$
indexed union and intersection $\left(\bigcup_{i \in \mathbb{N}} A_{i}\right)$
sum ($x+y-1$)
choose $\binom{m+n}{m}$
composition $\left(g\circ f\right)$
intersection ($A\cap B$)
union ($A\cup B$)
cartesian product ($A\times B$)
relative complement ($A\setminus B$)
relations ($f:A\to B$, $\underset{m}{\equiv}$, $\subseteq$, $\in$, $\notin$, $\mid$, $\leq$, $\lt$, $=$, $\neq$, $\sim$, 'is', 'loves')
not ($\neg$)
and ($\wedge$)
or ($\vee$)
implies ($\Rightarrow$)
iff ($\Leftrightarrow$)
binding ($x.P(x)$)
quantified ($\forall x.P(x)$)
declarations ('Declare', 'Let', 'for some')
environment $\{~\}$