tabular-pinned@v1 + calculus-limit@v1 + calculus-series@v1 + linear-algebra@v1 + function-sampled@v1 — all reserved stubs graduated; the π* registry is now 15 concrete kernels with no remaining reserved-stub entries. #000030 Phase 4 — calculus-limit@v1 ==================================== sp.limit with thread-timeout. One-sided dir support (+/-/+-). Pinned spelling for infinity cases: b"+oo" / b"-oo" / b"zoo" (complex infinity) — bypasses sp.expand since Infinity isn't algebraic. Finite results re-canonicalize through algebra-symbolic recipe (sp.expand + sp.srepr). Unevaluated cases / timeouts emit b"unevaluated:" + sp.srepr(<Limit>) sentinel, mirroring calculus-integral's pattern. #000030 Phase 5 — calculus-series@v1 ===================================== sp.series(f, x, x0, n).removeO() → sp.expand → sp.srepr. Drops O(x**n) remainder explicitly so the canonical form is finite-byte. Sentinel format mirrors limit/integral: b"unevaluated:Series(...)" on timeout. n must be a positive int; 0 / float / negative rejected. #000030 Phase 6 — linear-algebra@v1 ==================================== Single π* covers the whole linear-algebra surface via {op, matrix} JSON. Ops: rref / det / eigenvalues / inverse. Matrix cells go through Fraction(Decimal(str(...))) for floats so 1, 1.0, "1.0" all collapse to Rational(1, 1) — matching arithmetic@v1's discipline. Without this fold, sp.sympify keeps floats as Float (separate type) and downstream det/inverse return Float-shaped bytes. Eigenvalues are sorted by srepr for determinism. Output formats: rref / inverse: rows/cols header + cells joined by | (rows by ||) det: det:<num/den-or-srepr> eigenvalues: eigenvalues:<value-1>x<mult-1>|... #000030 Phase 7 — function-sampled@v1 ====================================== Bridge to time-series-quantized@v1. SymPy expression + linspace grid → quantized integer-vector signature in time-series's exact output format (dt=...;dv=...;n=...;t0=0:v0|v1|...). Two functions that render identically (within sample-grid tolerance) collapse to the same canonical bytes. This is what plotting CAN become in π* terms — the PNG render is a downstream view of the same canonical evidence. Math-only sampler (no numpy in the dep surface); Python's round() is banker's-rounding so the bytes are interchangeable with time-series-quantized@v1's output. Complex / non-finite samples raise PiStarError rather than silently dropping imaginary parts. tabular-pinned@v1 — last reserved stub graduates ================================================= JSON-rows input ({schema, key_columns, rows}); declared key_columns sort policy (stable sort by primary-key tuple); type-fold per column (int/rational/bool through arithmetic@v1 discipline; str verbatim; bool normalized). Header case is PINNED EXACT — Excel and PostgreSQL both care about case; defaulting to lowercase-fold would break operator expectations. Output: header (schema + key + n) + rows joined by \n + cells by |. The π* registry has no remaining reserved stubs. Every modality the substrate paper reserved is now real. Test suite: 1568 passed (was 1467; +101). New closure-criterion test (test_no_stub_pi_stars_remain) replaces the old reserved-stub parametrize — adding a future stub re-opens this list. 110/110 fixtures pass across the 5 new bench-5s-* targets. PHASE_1_CARRIERS gained calculus / linear-algebra / function-sampled / tabular.
11 lines
2.9 KiB
JSON
11 lines
2.9 KiB
JSON
{"_meta": {"battery": "5s", "sub_battery": "syntax", "version": "v1", "task_count": 10, "notes": "function-sampled@v1 syntax — SymPy expr → quantized sample grid."}}
|
|
{"id": "5s-syn-fs-001", "battery": "5s", "sub_battery": "syntax", "version": "v1", "carrier": "function-sampled", "domain": "json_object", "pi_star_ref": "function-sampled@v1", "input": "{\"f\": \"x\", \"x\": \"x\", \"x_min\": 0, \"x_max\": 4, \"n_samples\": 5, \"dv\": 1}"}
|
|
{"id": "5s-syn-fs-002", "battery": "5s", "sub_battery": "syntax", "version": "v1", "carrier": "function-sampled", "domain": "json_object", "pi_star_ref": "function-sampled@v1", "input": "{\"f\": \"x**2\", \"x\": \"x\", \"x_min\": 0, \"x_max\": 4, \"n_samples\": 5, \"dv\": 1}"}
|
|
{"id": "5s-syn-fs-003", "battery": "5s", "sub_battery": "syntax", "version": "v1", "carrier": "function-sampled", "domain": "json_object", "pi_star_ref": "function-sampled@v1", "input": "{\"f\": \"sin(x)\", \"x\": \"x\", \"x_min\": 0, \"x_max\": 1, \"n_samples\": 11, \"dv\": 0.01}"}
|
|
{"id": "5s-syn-fs-004", "battery": "5s", "sub_battery": "syntax", "version": "v1", "carrier": "function-sampled", "domain": "json_object", "pi_star_ref": "function-sampled@v1", "input": "{\"f\": \"2*x + 1\", \"x\": \"x\", \"x_min\": -2, \"x_max\": 2, \"n_samples\": 5, \"dv\": 1}"}
|
|
{"id": "5s-syn-fs-005", "battery": "5s", "sub_battery": "syntax", "version": "v1", "carrier": "function-sampled", "domain": "json_object", "pi_star_ref": "function-sampled@v1", "input": "{\"f\": \"exp(x)\", \"x\": \"x\", \"x_min\": 0, \"x_max\": 1, \"n_samples\": 11, \"dv\": 0.1}"}
|
|
{"id": "5s-syn-fs-006", "battery": "5s", "sub_battery": "syntax", "version": "v1", "carrier": "function-sampled", "domain": "json_object", "pi_star_ref": "function-sampled@v1", "input": "{\"f\": \"cos(x)\", \"x\": \"x\", \"x_min\": 0, \"x_max\": 3.14159, \"n_samples\": 4, \"dv\": 0.1}"}
|
|
{"id": "5s-syn-fs-007", "battery": "5s", "sub_battery": "syntax", "version": "v1", "carrier": "function-sampled", "domain": "json_object", "pi_star_ref": "function-sampled@v1", "input": "{\"f\": \"x**3\", \"x\": \"x\", \"x_min\": -1, \"x_max\": 1, \"n_samples\": 5, \"dv\": 0.1}"}
|
|
{"id": "5s-syn-fs-008", "battery": "5s", "sub_battery": "syntax", "version": "v1", "carrier": "function-sampled", "domain": "json_object", "pi_star_ref": "function-sampled@v1", "input": "{\"f\": \"abs(x)\", \"x\": \"x\", \"x_min\": -1, \"x_max\": 1, \"n_samples\": 5, \"dv\": 0.1}"}
|
|
{"id": "5s-syn-fs-009", "battery": "5s", "sub_battery": "syntax", "version": "v1", "carrier": "function-sampled", "domain": "json_object", "pi_star_ref": "function-sampled@v1", "input": "{\"f\": \"x\", \"x\": \"x\", \"x_min\": 0, \"x_max\": 10, \"n_samples\": 11, \"dv\": 1}"}
|
|
{"id": "5s-syn-fs-010", "battery": "5s", "sub_battery": "syntax", "version": "v1", "carrier": "function-sampled", "domain": "json_object", "pi_star_ref": "function-sampled@v1", "input": "{\"f\": \"sin(x)*cos(x)\", \"x\": \"x\", \"x_min\": 0, \"x_max\": 1, \"n_samples\": 11, \"dv\": 0.01}"}
|