symbolic-arithmetic
The groupant beside models/symbolic-arithmetic.groupant in the Mova repository: what the code computes, what it never does, how to go back from its outputs, its invariants, cost and checks.
Facts
Implementation material. A Mova code model describes this code at one source revision: partial models, finite checks and their stated scope. It is not a reviewed general exposition, and its labels are shown as written, never raised.
Components
| component | label | where |
|---|---|---|
| approximant | partial | forward |
| ast | not materialized | |
| composition | partial | composition |
| cost | symbolic source derived | cost |
| descriptant | present | descriptant |
| invariant | partial | invariant |
| tests | see source local evidence | checks |
Obernants
The typed relations around the forward model: the behaviour complement (what the code never does), the reverse reconstruction (every input compatible with an output) and specialised views.
| id | type | label | where |
|---|---|---|---|
behavior-complement | behavior_complement | partial source derived model | behavior-complement |
reverse-reconstruction | reverse_reconstruction | partial source derived model | reverse-reconstruction |
representation-transport | representation_transport | partial source derived model | representation-transport |
failure-order | failure_precedence | partial source derived model | failure-order |
exact-replay | search_certificate | partial source derived model | exact-replay |
resources | resource_domain | partial source derived model | resources |
wave28-symbolic-computation-exact-transport | representation_transport | partial composition model | wave28-symbolic-computation-exact-transport |
wave28-symbolic-computation-certificate-join | evidence_composition | partial composition model | wave28-symbolic-computation-certificate-join |
wave28-symbolic-computation-state-prefix | effect_boundary | partial composition model | wave28-symbolic-computation-state-prefix |
wave28-symbolic-computation-domain-provenance | domain_transport | partial composition model | wave28-symbolic-computation-domain-provenance |
wave28-math-orchestration-expectation-join | representation_transport | partial composition model | wave28-math-orchestration-expectation-join |
wave28-math-orchestration-fallback-state | state_transition | partial composition model | wave28-math-orchestration-fallback-state |
wave28-math-orchestration-effect-order | failure_precedence | partial composition model | wave28-math-orchestration-effect-order |
wave28-math-orchestration-budget-composition | resource_boundary | partial composition model | wave28-math-orchestration-budget-composition |
wave28-formula-bridge-byte-transport | representation_transport | partial composition model | wave28-formula-bridge-byte-transport |
wave28-formula-bridge-gate-bridge | equivalence_boundary | partial composition model | wave28-formula-bridge-gate-bridge |
wave28-formula-bridge-macro-scope | state_scope | partial composition model | wave28-formula-bridge-macro-scope |
wave28-formula-bridge-output-prefix | effect_prefix | partial composition model | wave28-formula-bridge-output-prefix |
wave28-roundtrip-definedness | domain_boundary | bounded actual source witness | wave28-roundtrip-definedness |
wave28-sampled-domain-preimage | sampled_observation_preimage | bounded actual source witness | wave28-sampled-domain-preimage |
wave30-matrix-expression-layout-transport | representation_transport | partial composition model | wave30-matrix-expression-layout-transport |
wave30-matrix-expression-syntax-context | context_partition | partial composition model | wave30-matrix-expression-syntax-context |
wave30-matrix-expression-validation-order | failure_precedence | partial composition model | wave30-matrix-expression-validation-order |
wave30-matrix-expression-effects | effect_boundary | partial composition model | wave30-matrix-expression-effects |
wave30-computing-execution-frame-register-transport | representation_transport | partial composition model | wave30-computing-execution-frame-register-transport |
wave30-computing-execution-parse-runtime-boundary | failure_precedence | partial composition model | wave30-computing-execution-parse-runtime-boundary |
wave30-computing-execution-scenario-gate-join | observation_relation | partial composition model | wave30-computing-execution-scenario-gate-join |
wave30-computing-execution-separate-routing-selection | stable_selection | partial composition model | wave30-computing-execution-separate-routing-selection |
wave30-matrix-numerics-column-major-transport | representation_transport | partial composition model | wave30-matrix-numerics-column-major-transport |
wave30-matrix-numerics-rank-and-coefficients | threshold_transport | partial composition model | wave30-matrix-numerics-rank-and-coefficients |
wave30-matrix-numerics-callback-effects | effect_boundary | partial composition model | wave30-matrix-numerics-callback-effects |
wave30-matrix-numerics-error-observations | residual_observation | partial composition model | wave30-matrix-numerics-error-observations |
wave30-statistical-computing-missingness-transport | missingness_transport | partial composition model | wave30-statistical-computing-missingness-transport |
wave30-statistical-computing-random-calibration | state_transition | partial composition model | wave30-statistical-computing-random-calibration |
wave30-statistical-computing-table-statistic-shape | representation_transport | partial composition model | wave30-statistical-computing-table-statistic-shape |
wave30-statistical-computing-error-metric-boundaries | metric_transport | partial composition model | wave30-statistical-computing-error-metric-boundaries |
wave30-computing-io-value-transport | representation_transport | partial composition model | wave30-computing-io-value-transport |
wave30-computing-io-effect-order | effect_order | partial composition model | wave30-computing-io-effect-order |
wave30-computing-io-failure-precedence | failure_precedence | partial composition model | wave30-computing-io-failure-precedence |
wave30-computing-io-resource-composition | resource_cost | partial composition model | wave30-computing-io-resource-composition |
Model text
descriptant
symbolic-arithmetic: wave27
expr supplies trees; eval joins rat and units with err taxonomy, then external fcheck SI comparison. arith uses big plus external memory NUM_WORDS. understand constructs Expr; solve consumes big helpers. Rat and big are not interchangeable representations: units remain checked i128.
This source-bound partial group organizes existing Mova code. Native evidence and excluded effects are recorded in source sidecars and the root wave27 report. Registration is not a universal proof or whole-system runtime claim.
model
symbolic-arithmetic
forward
Rat reduces n/d and checks intermediate arithmetic; big Q extends magnitude. Mono SI factor is product of atom factors^exponent; point K=(x+offset)*factor. answer(e)=gate(e,eval(e,fresh_ctx)). arith text->features->subset beam->tree exact replay is a separate big-rational branch.
invariant
Within safe finite domains, checked arithmetic preserves exact value, unit dimensions and point/delta distinction. A successful eval still requires independent gate acceptance; exact tree replay does not certify language interpretation.
cost
Evaluation recursive plus aggregate O(k log k) and O(T*2^T) bounded outcome enumeration; subset search exponential in quantity count and quadratic in beam; big arithmetic depends on bit length.
composition
expr supplies trees; eval joins rat and units with err taxonomy, then external fcheck SI comparison. arith uses big plus external memory NUM_WORDS. understand constructs Expr; solve consumes big helpers. Rat and big are not interchangeable representations: units remain checked i128.
domain
Bounded synthetic expressions/quantities, normalized representable rationals, finite numeric fixtures, representable i8 unit exponents, n<32 search masks. Public malformed trees/states and huge counts remain explicit gaps.
limitations
No corpus, teacher, GPU, persistent model or external mutation; approximate branch finite tests do not prove error bounds.
checks
- Seven module prefix filters, paired debug/release runs
- Compiled source mutation controls, exact restoration and positive reruns
- Paired source-bound syntax projections
wave28-symbolic-computation
calc->comb/nt coerces Q to Z/u64 and appends certificates; poly/linsys->calc may mutate Env for constants; deriv->calc::approx inherits unsupported/numerical domains. comb->nt::sieve supports Legendre, poly->nt::factor/divisors supports candidates/surds. fcheck->expr/units is legacy SI path, not an adapter for dimensionless calc E. math/src/plan.rs is an existing downstream caller; ownership remains with this source list.
wave28-math-orchestration
Problem kind/source→Expect integer/options→gate; plan/curriculum normalizers and tolerances differ. Template substitution lossy then gate rechecks. CLI held policy outside run_c. Vmm cap precheck not reservation. Build output enters lex module; suite uses separate small-unit engine.
wave28-formula-bridge
extract bodies exclude delimiters, start in bytes. corpus tex scans macros per file versus CLI tex all files before formulas. Canonical gate reparses without original macros. Corpus falls back to to_relation only on to_expr relation category. Reexports add no adapter. Empty Add/Mul output empty Node but inverse/roundtrip reject.
wave28-join-feedback
Formula-syntax equality, folded Expr equality, numeric gate acceptance and sampled calc::E derivative agreement observe different relations. The measured counterexamples and four closed formula values are recorded in the two wave28 catalog views and the root evidence report. Cost is conditional on the selected adapter branch: parsing/printing/conversion plus evaluator work; the registry tree is not itself an execution schedule. Five external actual-source tests passed twice per profile with pinned workspace registry versions. No timing or universal inverse theorem follows.
wave30-matrix-expression
lexer space_before distinguishes [1 -2] from [1 - 2]; Caret and DotCaret are both left-folded by the parser, retaining distinct Pow and EPow tags. Interp resolves End to dimensions and dispatches index/ops/core. value column-major layout must survive index gather and core reshape; transpose permutes it. ops short-circuit logic belongs to interp/vm; core callbacks, files, RNG and timer effects cross group and remain unexecuted here.
wave30-computing-execution
Interp::run calls vm::run_program only after registration; VM Fallback invokes Interp::exec and DynEval invokes eval_multi through sync_out/sync_in. lib.rs exposes item identities consumed by tests. suite::run_fs consumes parser scenarios and feeds captured output to check; vm_gate compares engines independently of expected answers, so shared broken builtins can pass equivalence. layers/lib.rs is a separate tagged routing relation to math/global and Domain callbacks, with no mlab caller/callee edge; grouping does not imply runtime transport.
wave30-matrix-numerics
polyfit→lstsq_svd joins real column-major Vandermonde with real y; roots/poly→Interp::call_function(eig) joins registry to linalg checks. ops routes matrix division to mldivide. elem cmap and FFT Mat::complex narrow zero im while explicit complex retains storage. FFT dim>=2 uses row slices, whereas reduce dims>2 use singleton slices. Local sort indices differ from global find indices. eval_nodes repeats callbacks after unsuitable vector attempt. Bench same column-major buffers feed both backends; main unexecuted.
wave30-statistical-computing
Actual joins: stats imports builtins::table::{opts,opt}, table::groups, value::Table; mcgate imports stats and Rng; ext_boost/ext_nist import Interp whose registry resolves the same builtins. Invalid adapter example: group equality on NaN does not imply matching hash keys. Another: row-key signed zero canonicalization must agree with numerical sorting equality. Benchmark/calibration or full external dataset results are not inferred from helper tests. Paired ttest length compatibility precedes option parsing; only the minimum cleaned-sample-count check follows options. agg count and numel both count original values, so NaN insertion changes both. iso_date selects date-only formatting only for exactly integral inputs; rounded nonintegral midnight keeps a time-bearing pattern.
wave30-computing-io
builtins/mod registers files/io; io calls display::format_disp and exp_str; fileio uses table inference/date/name adapters and column-major Mat; main creates Interp with selected fs and selected tests/fs CLI helper observes exit/stdout/stderr/journal/files. sprintf column-major traversal and display row layout are different adapters; JSON orientation/nonfinite loss prevents identity roundtrip. Octave calls lexical filter is not parser validation, and VMM digest helper evidence is not scenario correctness.
catalog
behavior-complement
On supported states zero division, dimension mismatch and point scaling exclude successful outputs; gate excludes false checks/SI mismatch. Float beam pruning can exclude mathematically valid alternatives.
reverse-reconstruction
Outputs admit sets of trees, texts and unit representations; fixed exact affine conversion is invertible subject to representability; category codes cannot recover diagnostics.
representation-transport
Q.base joins Rat value with Mono factor or affine offset; gate compares this SI observation with fcheck. big Q used in arith has no automatic unit or checked-i128 transport.
failure-order
Children precede parent validation; prior Ctx updates survive failure. Thermal kind rejection precedes numerical zero division. Units reject dimensions before scale arithmetic.
exact-replay
Selected arith Tree exact replay certifies only its arithmetic over retained quantities, not float beam completeness, learned relevance or gold tolerance equality.
resources
No general allocation/depth cap; subset masks assume n<32 and unit exponents assume representability. Existing probability enumeration bounded to16 only after count sum.
wave28-symbolic-computation-exact-transport
calc Q feeds exact big Q/Z; poly/linsys reject R constants. fcheck uses legacy Rat/SI scales; f64 magnitude is not a lossless dimensional/calculation adapter.
wave28-symbolic-computation-certificate-join
Exact substitution/product, modular collision-prone fingerprint, probable labels, finite floating samples and unavailable routes have distinct assurance. Boolean conjunction alone cannot prove the composition.
wave28-symbolic-computation-state-prefix
poly/linsys constant eval can retain calc effects on failure; ranged errors retain binding. Capped traces omit work; local resource gates do not bound all callees.
wave28-symbolic-computation-domain-provenance
Retain ratfunc dens across cancellation/solving. Derivative simplify forgets singularities and SI projection forgets units representation. Arithmetic checks must be joined with original domain obligations.
wave28-math-orchestration-expectation-join
Expect integer for int or number from TheoremQA, options verbatim. Numeric gate and grading differ in tolerance/normalization.
wave28-math-orchestration-fallback-state
Fallback copies answer/option/verified/correct/cost/tokens/secs/method, not B trace/history; keeps C config and by_slm=false.
wave28-math-orchestration-effect-order
Vmm cap→mkdir→teacher→spent→append→is_error; Lean bans→write→process→diagnostics. Failed append not rollback.
wave28-math-orchestration-budget-composition
Per-plan limits/reserve estimates do not bound parallel composition; concurrent prechecks can overspend.
wave28-formula-bridge-byte-transport
tex[start..start+body.len()]==body; parser error positions body-relative versus CLI outer body start.
wave28-formula-bridge-gate-bridge
Node and folded Expr equivalence have different classes. Clean syntax may contain unsupported math variables; structural roundtrip does not prove denominator nonzero.
wave28-formula-bridge-macro-scope
Corpus per-file versus CLI document-global macro scanning invalidates substituting one adapter for other when definitions cross files.
wave28-formula-bridge-output-prefix
Corpus writes can leave prefix on failure; CLI exit does not imply atomicity or deterministic elapsed report text.
wave28-roundtrip-definedness
For Expr, let R(e)=to_expr(parse(to_latex(from_expr(e)))). The successful R fiber contains unevaluable expressions: Div(1,0) roundtrips but answer rejects DivZero. Empty Add emits an empty Node yet has no successful inverse. Replacing numerical acceptance with structural roundtrip is excluded. Four bounded closed formulas preserve their independently stated exact values through both adapters; a foreign value is rejected by eval::gate.
wave28-sampled-domain-preimage
For the distinct calc::E representation, simplify(0/x)=0 broadens the evaluation domain to include x=0. The eight-point derivative checker can accept the derivative because its sampled antecedents avoid that hole. A passing sampled check admits functions/domains differing elsewhere; it does not reconstruct or preserve the original domain. No automatic adapter between Expr and calc::E is implied.
wave30-matrix-expression-layout-transport
Mat index k=jr+i is preserved by reshape buffers, permuted to ic+j by transpose and gathered by index; substituting row-major storage breaks all three joins.
wave30-matrix-expression-syntax-context
Lexer preserves whitespace and newline observations; parser contextual sign boundary and index_depth transform them into Matrix/Unary/End versus subtraction/identifier branches.
wave30-matrix-expression-validation-order
Whole lex precedes parse; index validates selected shape before growth; core reshape computes its unchecked known-dimension product before hole counting, then on bounded arithmetic checks hole count before divisibility/rank/product; error order cannot be commuted across adapters.
wave30-matrix-expression-effects
Most value/lexer/parser paths allocate only; index mutates target after bounded checks; ops linalg may warn; core can mutate interpreter/RNG and inspect files/time or invoke callbacks. Pure helper test evidence never certifies those effects.
wave30-computing-execution-frame-register-transport
sync_out(regs,names) moves defined values into frame and removes U names; sync_in removes frame values back into Reg. Fallback wraps actual tree execution with this transport, including returned errors. Reg scalar packing is bit-sensitive for logical0/1 and preserves f64 scalar observations.
wave30-computing-execution-parse-runtime-boundary
Entire parse precedes registration/execution. Runtime failure follows already executed assignments and precedes remaining statements. Ordinary indexed '=' assignment orders RHS type, target type, then indices; compound indexed assignment first reads the indexed old value and applies its binary operation, then invokes the assignment helper, evaluating indices again; user calls order excess inputs, excess outputs, depth.
wave30-computing-execution-scenario-gate-join
run_fs maps each Scenario to fresh engine output and compares expected exact/prefix lines; vm_gate compares tree bytes to VM bytes without expectations. check strips exactly one terminal LF; first difference is1-based. Gate total increments before first mismatch break.
wave30-computing-execution-separate-routing-selection
For finite scores and finite threshold, stable descending sort retains equal-score registration order; a0.9 solver returning None permits0.5 first solver at threshold0.5, and raising threshold0.5001 yields escalation. This relation is tagged separately and has no mlab transport edge.
wave30-matrix-numerics-column-major-transport
Mat k=jr+i, faer view and Vandermonde columns share layout. FFT dim1 gathers sr+t; all admitted dim>=2 gather t*r+s and change cols toN. reduce::slices dims>2 instead emits singleton slices. Layout adapters must preserve these distinct rules.
wave30-matrix-numerics-rank-and-coefficients
polyfit uses lstsq_svd threshold max(m,n)smaxeps; rank builtin uses spacing-based tolerance and therefore is not a certified identical rank selector. roots scaling to monic companion discards nonzero leading coefficient scale.
wave30-matrix-numerics-callback-effects
eval_nodes vector attempt can mutate Interp before fallback; subsequent scalar calls add effects. Model callback count separately from mathematical integrand evaluation. Bench helper best similarly calls exactly3 times, returns last value and independent minimum time.
wave30-matrix-numerics-error-observations
linalg gate tolerance1000neps concerns selected residuals, not component relative error. GK embedded K-G is estimated error and its650-interval exit warns. These do not compose into a percent bound for roots/fit/numeric callbacks.
wave30-statistical-computing-missingness-transport
table::groups(NaN,NaN) puts both rows together; row_key(NaN)=None removes both from join indexes. stats::clean drops NaNs while cov_matrix sums them; passing grouped data into stats requires method-specific policy, not blanket missing equivalence.
wave30-statistical-computing-random-calibration
Rng uniform consumes one integer transition; normal may consume cached spare without transition. mcgate reuses one RNG sequentially across scenarios, so modifying one scenario's draws changes later samples; per-row calibration is only a finite random experiment, and K=2 tests validate wiring only.
wave30-statistical-computing-table-statistic-shape
Table numeric columns are n-by1. categories groups keys into0-based IDs, crosstab counts into row/column categories then emits column-major Mat; stats tables wrap numeric summaries as aligned columns. sortrows output permutation adds1; it cannot be reused as an internal index without subtracting1.
wave30-statistical-computing-error-metric-boundaries
Boost e=abs((got-want)/want)/EPS excludes nonnormal reference values; NIST LRE=-log10(relative error) capped15 uses absolute error at certified zero. These metrics are not interchangeable, and neither finite synthetic observations nor source-bound models establishes a supported executable-surrogate percent cap.
wave30-computing-io-value-transport
sprintf flattens m.re column-major, display accesses j*rows+i into row strings, JSON vectors collapse orientation. Matching scalar numbers is insufficient to prove shape-preserving adapters.
wave30-computing-io-effect-order
parse FS flags -> open/import -> run -> conditional export -> journal. Export failure can suppress journal; failed script skips each export but still attempts journal. Delete loops preserve earlier removals on later error.
wave30-computing-io-failure-precedence
CLI limit parsing precedes mem/import compatibility; atom validation precedes output; CSV syntax precedes table-width validation. These branches must be preserved across caller wiring.
wave30-computing-io-resource-composition
Captured strings plus serialized buffers plus VFS memory add rather than cancel; repeated format/flag scans, requested precision/width, JSON subtree copying and key lookup amplify input cost. No measured latency or global cap is supplied.
This page in Markdown → https://md.groupants.elamur.ai/free/en/mova/models/symbolic-arithmetic.groupant/