monogate.dev / how to submit
How to Submit
A valid submission is a finite EML expression tree that equals the target function exactly (within floating-point tolerance) at all test points, built only from the allowed grammar.
The Grammar
eml(x, y) = exp(x) − ln(y)
One binary operator. One terminal. Every construction is a finite binary tree where every internal node is eml, every leaf is the constant 1, the variable x, or a numeric literal.
S → 1 S → x S → eml(S, S)
Available Primitives
Derived functions (all proven EML constructions)
exp(x)eml(x, 1) — Nodes:1 Depth:1
ln(x)eml(1, eml(eml(1, x), 1)) — Nodes:3 Depth:3
neg(x)shift formula — Nodes:9 Depth:5
add(x, y)eml(ln(x), eml(neg(y), 1)) — Nodes:11 Depth:6
sub(x, y)eml(ln(x), exp(y)) — Nodes:5 Depth:4
mul(x, y)eml(add(ln(x), ln(y)), 1) — Nodes:13 Depth:7
div(x, y)eml(add(ln(x), neg(ln(y))), 1) — Nodes:15 Depth:8
pow(x, n)eml(mul(n, ln(x)), 1) — Nodes:15 Depth:8
recip(x)eml(neg(ln(x)), 1) — Nodes:5 Depth:4
Not allowed — these are the open problems
sin cos tan π i Math.* any trig identity
How Validation Works
01
Syntax check
Expression is scanned against an allowlist of EML primitives. Any reference to Math.*, sin, cos, tan, pi is rejected immediately.
02
Tree construction
The expression is evaluated in a sandboxed context where every function returns a tree node instead of a number. This produces the full AST from which node count and depth are computed.
03
Numeric test cases
The same expression is evaluated numerically at multiple known points. For sin(x): tested at x = 0, π/6, π/4, π/2, π, and −π/6. Error must be below 1×10⁻¹⁰ at each point.
04
Storage
Valid and invalid submissions are both stored. Invalid submissions show the specific test case that failed and the actual error. All submissions are permanent — the full history is visible on each challenge page.
05
Record update
If valid and fewer nodes than the current best, the challenge record updates automatically via a database trigger. Your name appears on the leaderboard immediately.
What Counts as Valid
Pure EML expression: only eml, exp, ln, neg, add, sub, mul, div, pow, recip, terminal 1, variable x, numeric literals.
Passes all numeric test cases within tolerance 1×10⁻¹⁰.
No intermediate step passes 0 as the y-argument of eml (which would call ln(0), undefined under strict grammar).
Math.sin, Math.cos, Math.PI — even if wrapped in an EML-looking expression.
Extended-reals convention (ln(0) = −∞). This board validates strict principal-branch grammar only.
Expressions that pass numeric tests by coincidence but don't implement the target function generally.
Node counting includes every internal eml call in the full expanded tree — using neg(x) in your expression counts all 9 nodes of its internal construction, not 1.
Attribution
Your name is attached to your submission permanently. If you hold the record and someone submits a shorter construction, their name becomes the new record holder — but your entry stays on the leaderboard with your original timestamp and node count. The full history of every valid construction is visible on the challenge page, ordered by node count. There is no deletion.
Tips
Use the Explorer first. explorer.monogate.dev has a tree visualizer and sandbox where you can build and test expressions interactively before submitting.
Install monogate locally. npm install monogate — then test your expression in Node before submitting.
The complex extension. The path to sin and cos runs through the complex plane: e^(ix) = cos(x) + i·sin(x). Whether the strict grammar reaches i from terminal {1} alone is the open question that unlocks trig.
Read the paper. Odrzywołek (2026), arXiv:2603.21852. The proof techniques and known constructions are all there.