---
title: "en-tag — Mova code model"
description: "Mova code model of en/src/tag.rs: components with their labels, obernants and the model text."
url: "https://groupants.elamur.ai/free/en/mova/en/src/tag.rs.groupant/"
---
Elamur: [Mova](https://md.mova.elamur.ai/free/en/) · [Dictionary](https://md.dictionary.elamur.ai/free/en/) · [Research](https://md.research.elamur.ai/free/en/) · **Groupants**

This page as HTML: <https://groupants.elamur.ai/free/en/mova/en/src/tag.rs.groupant/>

# en-tag

The groupant beside en/src/tag.rs 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

- **kind:** groupant
- **status:** partial source bound model
- **source:** [`en/src/tag.rs`](https://github.com/ElamurAI/mova-free/blob/main/en/src/tag.rs)
- **source SHA-256:** `4e58a3ac65d63ae7…`
- **repository folder:** [`en/src/tag.rs.groupant`](https://github.com/ElamurAI/mova-free/tree/main/en/src/tag.rs.groupant)
- **repository commit:** `48f2e6f74146`

> **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 | [approximant](#approximant) |
| **ast** | partial | `syntax.json` |
| **composition** | partial | [composition](#composition) |
| **descriptant** | present | [descriptant](#descriptant) |
| **invariant** | partial | [invariant](#invariant) |
| **tests** | executed bounded checks | [tests](#tests) |

## 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](#behavior-complement) |
| `reverse_reconstruction` | reverse_reconstruction | partial source derived model | [reverse_reconstruction](#reverse-reconstruction) |
| `interpolation_boundary` | interpolation_boundary | partial source derived model | [interpolation_boundary](#interpolation-boundary) |
| `suffix_backoff` | suffix_backoff | partial source derived model | [suffix_backoff](#suffix-backoff) |
| `emission_precedence` | emission_precedence | partial source derived model | [emission_precedence](#emission-precedence) |
| `viterbi_ties` | viterbi_ties | partial source derived model | [viterbi_ties](#viterbi-ties) |

## Parts

- [en-tag-training](https://md.groupants.elamur.ai/free/en/mova/en/src/tag.rs.groupant/training.groupant/)
- [en-tag-decode](https://md.groupants.elamur.ai/free/en/mova/en/src/tag.rs.groupant/decode.groupant/)

## Model text


### descriptant

#### en-tag
TnT trigram tables, lexical emissions, suffix model, Viterbi

Epoch 2026-10-31: read complete source before prospective model and bounded tests. Production code retained byte-for-byte; only inline synthetic checks added. Coverage is partial, not a proof.

2026-11-04 epoch (en-morph): the unknown-word dictionary hint allows the derivation tags (derive::hint) of a lower-case form the dictionary does not know. Source e2175f4ca53b; earlier receipts and evidence refer to the previous source hash and are kept as history.

2026-11-04 epoch (lexicon growth): the unknown-word dictionary hint takes lexext::hint(word, capitalised) first, then the derivation's tags for a lower-case word.

### approximant

#### Forward relation
Tagged sentences only; double BOS then final BOS. Interpolation ties trigram then bigram; rare<=10 suffix max10. Exact then lowercase known lexicon bypasses hints. Unknown suffix stops at first absent; dictionary soft/hard then seen positive emission candidates.

No executable Rust surrogate attached: no demonstrated metric for preserving these categorical, stateful or effect observations. Supported future caps are 1/2/5/10%, not a claim of current error.

2026-11-04: unknown(w): allowed tags = dictionary analyses ∪ (no dictionary form ∧ not capitalised ? derive::hint : ∅).

### invariant

#### Domain, invariant and cost
Tagged sentences only; double BOS then final BOS. Interpolation ties trigram then bigram; rare<=10 suffix max10. Exact then lowercase known lexicon bypasses hints. Unknown suffix stops at first absent; dictionary soft/hard then seen positive emission candidates.
Empty tagging empty; empty training has NaNs/no support and nonempty inference may panic. Deserialize and Soft multiplier have no validation.
Train O(T+NT^3+suffix work); decode O(n*K^3) time/O(n*K^2), NT fixed; unchecked counters.
Inputs must satisfy the indexing/generated-data assumptions stated by the typed catalog; allocation failure and overflow beyond bounded fixtures remain untested.

### composition

#### Mathematical combiner
Source bytes and twice-generated syntax constrain this model. Forward relation: Tagged sentences only; double BOS then final BOS. Interpolation ties trigram then bigram; rare<=10 suffix max10. Exact then lowercase known lexicon bypasses hints. Unknown suffix stops at first absent; dictionary soft/hard then seen positive emission candidates.
Reverse relation: A sequence has all words/parameters for which its score maximizes under strict-greater first-candidate ties; aggregated training counts lose original sentence ordering.
The ordered typed family records independent exclusions, compatible antecedents and source-specific boundaries. Fragment ranges compose through actual control flow; they do not cover all helpers.
Epoch memory: empty learned support, lossy projections and non-atomic effects cannot inherit stronger downstream guarantees.

### models

### behavior_complement
Empty tagging empty; empty training has NaNs/no support and nonempty inference may panic. Deserialize and Soft multiplier have no validation.

### reverse_reconstruction
A sequence has all words/parameters for which its score maximizes under strict-greater first-candidate ties; aggregated training counts lose original sentence ordering.

### interpolation_boundary
Deleted interpolation chooses q3 on ties then q2; no counts makes lambda division0/0 and NaN transition cells.

### suffix_backoff
Suffix smoothing (q+theta*p)/(1+theta) stops at first missing suffix, cap flag distinguishes uppercase first scalar.

### emission_precedence
Known exact/lowercase lexical entries return before dictionary; hints only modify unknown probabilities; hard cannot add unseen classes.

### viterbi_ties
Viterbi sums transition+emission and final BOS; strict > retains first finite maximizing predecessor; candidate emptiness is not validated.


### tests

#### Actual source checks
Named check: tag::wave27_tests::tiny_known_emissions_and_empty_boundary. Command: cargo test -p en --lib wave27_tests -- --test-threads=1 (also --release). Four runs: each 10 passed, 0 failed, numeric exit0; sorted named outcomes equal. This file contributes one named check per run.
Control present for this source: false. Hash zeroed byte contribution, text changed empty chrF to1, lexgen removed three-cell PastPart copy: each compiled and failed one assertion (exit101), then exact source restoration and ten-test positive rerun (exit0). Other sources have no compiled mutation claim.
See evidence.json and external octopus-wave27-lexical-2026-10-31 receipts. Static built dictionary read is part of the linked library; no corpus or external services used. Unknown support, malformed model/blob, resource failures, cycles and exhaustive Unicode behavior are unexecuted gaps.
