Elamur Groupants⌕
☰

word-graph

The groupant beside models/word-graph.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

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.

relationtypelabelwhere
Behavior complementbehavior complementpartial source derived modelBehavior complement
Reverse reconstructionreverse reconstructionpartial source derived modelReverse reconstruction

Model text

Descriptant

The word graph (wordgraph/): passes over parsed corpora count typed content-word pairs; a build keeps the top neighbours per (word, relation) both ways and writes one file that threads read in place. Epoch 2026-11-06: first version; real runs over Wikipedia tier 1 (5 000 and 50 000 articles), measurements in wordgraph/README.md.

Forward

trees --extract--> events (rules v2) --pass--> parts (sorted counts, OOV tables, provenance) --compile--> file (nodes, relations, forward/reverse CSR, OOV strings, provenance) --graph--> edges, plausibility, isa back-off, hint ranking --eval--> agreement with the absurdity matrix. The CLI (main) wires them; rel supplies the codes.

Invariant

Determinism end to end: part bytes depend on the unit, rules version and seed only; the file depends on the set of parts, parameters and registry only (both measured twice on real data, 2026-11-06). Bounded size: edges ≤ Σ_groups bound(r), both directions. The reader validates every offset once and never writes.

Cost

Pass: O(T + E log E) per unit, parallel over units. Build: two k-way merges O(M log P) + candidate sorts. File ≈ 6 B per edge each way + 9 B per node + group tables. Measured 2026-11-06 (50 k articles): pass 35 s / 0.57 GB, build 58 s / 1.25 GB, 38 MB file, 2.07 M + 2.83 M edges, 135 k nodes.

Composition

Joins: extract::pack order = compile merge order (monotone OOV rank map keeps it); graph::Writer layout = Graph::new validation; pass::Meta copied into the file provenance. Correct leaves do not prove these joins; the end-to-end test (tests/build.rs) exercises all of them on a synthetic corpus, and the real runs exercise them at scale.

Behavior complement

The group does not: assert facts or truth (it counts what parsed text says), resolve word senses beyond UPOS, use coreference, deduplicate overlapping passes, weigh sources, smooth PMI, update a graph in place, or delete data. It does not answer for words outside its nodes (0 = no evidence, not «implausible»).

Reverse reconstruction

From a graph file: the kept pairs with quantized PMI and approximate counts, node frequencies, the passes' provenance (sources, parts' SHA-256, models, dates). Not recoverable: sentences, exact counts, pruned pairs, marginals. A pass part recovers the full event multiset of its unit (with OOV strings) but not sentence order or boundaries.

Provenance

This page in Markdown → https://md.groupants.elamur.ai/free/en/mova/models/word-graph.groupant/