Elamur Groupants⌕
☰

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

componentlabelwhere
approximantpartialforward
astnot materialized
compositionpartialcomposition
costsymbolic source derivedcost
descriptantpresentdescriptant
invariantpartialinvariant
testssee source local evidencechecks

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.

idtypelabelwhere
behavior-complementbehavior_complementpartial source derived modelbehavior-complement
reverse-reconstructionreverse_reconstructionpartial source derived modelreverse-reconstruction
representation-transportrepresentation_transportpartial source derived modelrepresentation-transport
failure-orderfailure_precedencepartial source derived modelfailure-order
exact-replaysearch_certificatepartial source derived modelexact-replay
resourcesresource_domainpartial source derived modelresources
wave28-symbolic-computation-exact-transportrepresentation_transportpartial composition modelwave28-symbolic-computation-exact-transport
wave28-symbolic-computation-certificate-joinevidence_compositionpartial composition modelwave28-symbolic-computation-certificate-join
wave28-symbolic-computation-state-prefixeffect_boundarypartial composition modelwave28-symbolic-computation-state-prefix
wave28-symbolic-computation-domain-provenancedomain_transportpartial composition modelwave28-symbolic-computation-domain-provenance
wave28-math-orchestration-expectation-joinrepresentation_transportpartial composition modelwave28-math-orchestration-expectation-join
wave28-math-orchestration-fallback-statestate_transitionpartial composition modelwave28-math-orchestration-fallback-state
wave28-math-orchestration-effect-orderfailure_precedencepartial composition modelwave28-math-orchestration-effect-order
wave28-math-orchestration-budget-compositionresource_boundarypartial composition modelwave28-math-orchestration-budget-composition
wave28-formula-bridge-byte-transportrepresentation_transportpartial composition modelwave28-formula-bridge-byte-transport
wave28-formula-bridge-gate-bridgeequivalence_boundarypartial composition modelwave28-formula-bridge-gate-bridge
wave28-formula-bridge-macro-scopestate_scopepartial composition modelwave28-formula-bridge-macro-scope
wave28-formula-bridge-output-prefixeffect_prefixpartial composition modelwave28-formula-bridge-output-prefix
wave28-roundtrip-definednessdomain_boundarybounded actual source witnesswave28-roundtrip-definedness
wave28-sampled-domain-preimagesampled_observation_preimagebounded actual source witnesswave28-sampled-domain-preimage
wave30-matrix-expression-layout-transportrepresentation_transportpartial composition modelwave30-matrix-expression-layout-transport
wave30-matrix-expression-syntax-contextcontext_partitionpartial composition modelwave30-matrix-expression-syntax-context
wave30-matrix-expression-validation-orderfailure_precedencepartial composition modelwave30-matrix-expression-validation-order
wave30-matrix-expression-effectseffect_boundarypartial composition modelwave30-matrix-expression-effects
wave30-computing-execution-frame-register-transportrepresentation_transportpartial composition modelwave30-computing-execution-frame-register-transport
wave30-computing-execution-parse-runtime-boundaryfailure_precedencepartial composition modelwave30-computing-execution-parse-runtime-boundary
wave30-computing-execution-scenario-gate-joinobservation_relationpartial composition modelwave30-computing-execution-scenario-gate-join
wave30-computing-execution-separate-routing-selectionstable_selectionpartial composition modelwave30-computing-execution-separate-routing-selection
wave30-matrix-numerics-column-major-transportrepresentation_transportpartial composition modelwave30-matrix-numerics-column-major-transport
wave30-matrix-numerics-rank-and-coefficientsthreshold_transportpartial composition modelwave30-matrix-numerics-rank-and-coefficients
wave30-matrix-numerics-callback-effectseffect_boundarypartial composition modelwave30-matrix-numerics-callback-effects
wave30-matrix-numerics-error-observationsresidual_observationpartial composition modelwave30-matrix-numerics-error-observations
wave30-statistical-computing-missingness-transportmissingness_transportpartial composition modelwave30-statistical-computing-missingness-transport
wave30-statistical-computing-random-calibrationstate_transitionpartial composition modelwave30-statistical-computing-random-calibration
wave30-statistical-computing-table-statistic-shaperepresentation_transportpartial composition modelwave30-statistical-computing-table-statistic-shape
wave30-statistical-computing-error-metric-boundariesmetric_transportpartial composition modelwave30-statistical-computing-error-metric-boundaries
wave30-computing-io-value-transportrepresentation_transportpartial composition modelwave30-computing-io-value-transport
wave30-computing-io-effect-ordereffect_orderpartial composition modelwave30-computing-io-effect-order
wave30-computing-io-failure-precedencefailure_precedencepartial composition modelwave30-computing-io-failure-precedence
wave30-computing-io-resource-compositionresource_costpartial composition modelwave30-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

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/