eml-fit
eml-fit — deterministic library-first regression
Free-form LLM regression on a CSV is non-deterministic, opaque, and slow. /eml-fit is the opposite: a thin CLI over eml_core.fit that always returns the same answer for the same CSV and emits a machine-checkable JSON verdict. Use it when you want the answer to carry its own receipts — a structured verdict the next tool or agent can branch on without re-reading prose. See references/benchmarks.md for parity results against unaided LLM baselines.
When this skill triggers (and when it doesn't)
Triggers on: "which elementary law generated this CSV?", "fit y = a·ln(x) + b against this data", "is this data a composite like sin(ln(x))?", "run a deterministic symbolic regression on this table", "does (x, y, z) fit a mult / div / pow relation?".
Does not trigger on: general curve fitting with learnable parameters (use scipy), finding a shorter EML tree (/eml-optimize), compiling a known formula to EML (/eml-lab), or verifying an arbitrary identity (/math-identity-check).
Modes
| mode | CSV shape | ranks | invoked by |
|---|---|---|---|
| unary | 2-col (x, y) |
arity-1 witnesses {ln, exp, sqrt, log10, sin, cos, tan, asin, acos, atan} | default |
| affine | 2-col (x, y) |
same witnesses, fitting y ≈ a·w(x) + b, snapping a, b to constants |
--affine |
| composite | 2-col (x, y) |
depth-2 y ≈ w(v(x)) over the unary primitive set (~100 pairs) |
--composite |
| binary | 3-col (x, y, z) |
arity-2 witnesses {add, sub, mult, div, pow} | auto (3-col CSV) |