---
title: "prag-frames — Mova code model"
description: "Mova code model of prag/src/frames.rs: components with their labels, obernants and the model text."
url: "https://groupants.elamur.ai/free/en/mova/prag/src/frames.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/prag/src/frames.rs.groupant/>

# prag-frames

The groupant beside prag/src/frames.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:** [`prag/src/frames.rs`](https://github.com/ElamurAI/mova-free/blob/main/prag/src/frames.rs)
- **source SHA-256:** `b5047edab2caec4e…`
- **repository folder:** [`prag/src/frames.rs.groupant`](https://github.com/ElamurAI/mova-free/tree/main/prag/src/frames.rs.groupant)
- **repository commit:** `855da7bd4a7b`

> **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 source model | [forward](#forward) |
| **ast** | partial | `syntax.json` |
| **composition** | partial source model | [composition](#composition) |
| **cost** | partial source model | [cost](#cost) |
| **descriptant** | partial source model | [epoch-memory](#epoch-memory) |
| **invariant** | partial source model | [invariant](#invariant) |
| **tests** | bounded native and inspected | [evidence](#evidence) |

## 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 |
|---|---|---|---|
| `prag-frames-behavior-complement` | behavior_complement | partial source model | [behavior-complement](#behavior-complement) |
| `prag-frames-reverse-reconstruction` | reverse_reconstruction | partial source model | [reverse-reconstruction](#reverse-reconstruction) |
| `prag-frames-coordinate-join` | coordinate_relation | partial source model | [coordinate-join](#coordinate-join) |

## Parts

- [prag-frames-identity](https://md.groupants.elamur.ai/free/en/mova/prag/src/frames.rs.groupant/identity.groupant/)
- [prag-frames-context](https://md.groupants.elamur.ai/free/en/mova/prag/src/frames.rs.groupant/context.groupant/)
- [prag-frames-entities](https://md.groupants.elamur.ai/free/en/mova/prag/src/frames.rs.groupant/entities.groupant/)
- [prag-frames-clauses](https://md.groupants.elamur.ai/free/en/mova/prag/src/frames.rs.groupant/clauses.groupant/)
- [prag-frames-questions](https://md.groupants.elamur.ai/free/en/mova/prag/src/frames.rs.groupant/questions.groupant/)
- [prag-frames-read](https://md.groupants.elamur.ai/free/en/mova/prag/src/frames.rs.groupant/read.groupant/)
- [prag-frames-scoring](https://md.groupants.elamur.ai/free/en/mova/prag/src/frames.rs.groupant/scoring.groupant/)

## Model text


### model

## Supplied trees into discourse frames

Subject: prag/src/frames.rs SHA-256 bfbc2f7905d878080a7e7dd30ae7f1bfe8f07313c3a4cf8f0254be29e72a4b88. Partial source model, finite native evidence. Fixed configuration and admitted finite resource domains; source-derived inner exclusions and ambiguous preimages, no inverse solver.

### forward

On finite acyclic supplied UD trees and fixed configuration/lexicons/rules, compose lexical entities (with a name role, Ent::names: noun compounds, proper-noun compound/flat words, appositions, named «of» modifiers), predicate frames (an obj/obl/nmod with a time value adds when:<value> and when:<year>, an event under during/after/before/since/until/throughout adds when:<noun>; PRAG_OFF=wh-time), clause links, question gaps and sentence offsets. read_with snapshots salient before-context, calls the supplied parser per unit, skips empty parses, concatenates frames and shifts local indices by preceding frame count. scored optionally removes nominal frames and remaps retained edges.

### behavior-complement

Universe U pairs admitted supplied inputs/configuration with candidate observations. Exclude a retained local link shifted by any amount other than the preceding frame count, a right unresolved head matching coordination, or a nominal target surviving scored when score-nouns is off. These are inner exclusions for selected projections, not all absent reader behavior.

### reverse-reconstruction

For observation y retain every supplied tree/context/configuration yielding y under the selected projections. Different surface forms and modifier/provenance fields can share head identity; dropped nominal frames and empty parses leave ambiguous antecedents. No inverse parser or complete antecedent solver is supplied.

### invariant

Token and frame coordinates must be kept distinct. Sentence-local anchors correspond to last sentence only; Read.pred carries sentence/token coordinates and frame links carry global frame coordinates.

### cost

Tree assembly O(W); predicate reading includes repeated scans, recursive phrase copying and lexicon lookup. Conservative cost O(W squared plus recursion/lexicon/rule work plus output); no finite global bound for arbitrary dependency cycles, effectful parser callbacks or configured resources.

### coordinate-join

For sentence s with base b, a local frame index j maps to b+j, while predicate token k maps to (s,k). Root, asked, quote, cause, next and link must use the appropriate map. Native question/read and scored tests check distinct instances.

### composition

Pipeline composition requires shared context/configuration and preserved predicate order, not independent child marginals. The seven fragments are partial projections; recursive malformed trees, full lexicon role ranking, all TAM/repair/quotation cases and external active-rule effects remain gaps.

### epoch-memory

Rule sentences, 2026-11-04 (student-rules). `implications(fs)` maps the frames of one reading to rules condition ⇒ conclusion using only the reader's clause links and markers: an advcl clause marked if/when/whenever/once ⇒ the chain of its main clause and that clause's xcomp/ccomp complements (a speech condition contributes its quoted frames); the quoted csubj/nsubj of mean/ask/tell (or, with no agent, what the verb quotes) ⇒ its complement chain; a cause link C of K ⇒ K. Frames coordinated with a condition join it; «do» with it/that/this/so in the conclusion is marked as the condition's action. Behavior complement: no rule from «unless», from a negated «mean», from markers outside the four, or where either side is empty; no reading is changed (frames, links and traces stay byte-identical). Reverse reconstruction: a rule names its frames but not the sentence; many link layouts give the same rule. `interrogative(r, f)`: an auxiliary before the subject of the frame's predicate. Prediction and measurement are in the student (world/src/knowledge.rs, decision groupant). Tests implication_tests: the if-request and the mean-pattern compile; a «that» clause and a subjectless «mean» state no rule; «you can pass» is not asked. Mutant accepting any marker as a condition fails the «that» control (exact source restored).

Time and name roles, 2026-11-04. Prediction before code: the Wikipedia school's when-questions are all guesses because the reader asks Frame and keeps only when:<lemma> (the year lost), and which-questions tie because the answer is a name inside the remembered entity; a whole time value as a when: attribute, when asking Role(Attr), and a name role (Ent::names) should lift when to ~60-75% and which to ~55-70% with the articles-shuffled control flat. Measured (CPU, peta build, train and cv courses, two identical runs): when 259 -> 881 of 1106 (shuffled 263), which 65 -> 200 of 214 (shuffled 64) on wikipedia; cv-a 143 -> 457, 27 -> 90; cv-b 155 -> 444, 24 -> 106; subjects -12 net on wikipedia. Ten school courses 3234 -> 3248 of 7283. Tests wh_role_tests: page 29 and their march have no time value, a cup of tea names no cup; the mutant that accepts any month word fails the time test (exact source restored).

Wave15, 2026-10-30. Prospective repair: reject unresolved right heads in identity with a constant six-item guard, preserving coordination membership and its nontransitivity. Old production failed unresolved_identity_is_symmetric_even_in_coordination; repaired code passes. Compiled guard-removal control fails the same named assertion and exact bytes are restored. Eight focused tests pass twice debug and twice release. No speed, full semantic coverage or universal proof claim.

### limitations

Partial syntax is not expanded semantic AST. No live parser, teacher, whole corpus, GPU or environment mutation. Acyclic input trees and fixed configuration/resource premises matter; malformed recursive ancestry, counter overflow, complete TAM/lexicon/quotation/repair semantics and all active-rule effects remain open. No executable approximant/error budget is claimed.

Event questions, 2026-11-04 (student-verb). `statement_order` never takes a preposition for the main verb after do-support (PRAG_OFF=q-do-prep: «the population ofed the valley grow»). `repair_wh_passive` (questions only, PRAG_OFF=wh-passive): a when / where root with a copula «be» whose subject carries a past-participle acl, or a subject noun carrying the copula and the wh-word under a participle, becomes the participle's passive with the wh-word its adverb («When was the college founded by Y?» asks `Y found patient=college` when:?). In `frames_of_tree_with` (PRAG_OFF=wh-event-noun) a time or place asked of «happen», «occur» or «take place» (no determiner) moves to the nominal frame of its subject noun. `gerund_nom` (PRAG_OFF=vn-gerund): a noun -ing form of a VerbNet verb with an «of / by» argument names that verb's event (transitive when a class has «NP V NP»). Complement: «take a place», a gerund without an argument, a participle without a wh root, and agent nouns («Who was the founder of X?») are not read as events. Reverse: the moved ask names the event frame; the «take place» frame keeps its subject. Tests event_question_tests (the unrepaired tree asks «be»; «take a place» keeps «take»; a bare gerund names no event; each switch off makes its assertion fail).

### evidence

#### Evidence

Source SHA-256 a7914e172b612868c5455d7bda07790e093d74043ca72196b708fcec5da64913. External receipt set octopus-wave15-frames-2026-10-30. Eight native tests repeated twice debug/twice release with identical named outcomes. Old code and compiled production guard-removal mutant fail unresolved_identity_is_symmetric_even_in_coordination with unresolved right operand it matched coordination. Exact source restored before positives. Syntax staged and generated twice identically. Existing unused-mut compiler warning remains. No full suite or full semantics claim.

- old.log: 84c3880fe924e735efbf11f983b72a63cb21d3a51fe04c6c152583211f5e3523
- mutant.log: eff4a0a6948665224ff7425814e32c568b82288cc82f4526086d461f895726d2
- debug-1.log: ca48306081a7124ab77c825b7d4aa281d68411197a0ad00381b2628e66b8ed3d
- debug-2.log: 868fcbed76f1ad0517ff0568e5b166b83a2b0e57632f557eb19415029311946c
- release-1.log: b607d8aacfe8d2c5ad860fc6c7c9d1dc5f19e76e88bddc11a02e9f5d322ee58c
- release-2.log: 43f5096105d08031326d36641cb19aaeff3e9b789525517cd8b1d2b6133e9ff1
- debug-1-named.txt: 3bbae3dcb9d0dd077314f1da2e1df0ce1a81af4f1627ffc229cb3efad280342f
- debug-2-named.txt: 3bbae3dcb9d0dd077314f1da2e1df0ce1a81af4f1627ffc229cb3efad280342f
- release-1-named.txt: 3bbae3dcb9d0dd077314f1da2e1df0ce1a81af4f1627ffc229cb3efad280342f
- release-2-named.txt: 3bbae3dcb9d0dd077314f1da2e1df0ce1a81af4f1627ffc229cb3efad280342f
- syntax-1.json: 5066d15e14928110987916a55b928299985e262d1e968040c5f6ddb5a5db4e86
- syntax-2.json: 5066d15e14928110987916a55b928299985e262d1e968040c5f6ddb5a5db4e86

External registry scaffold validation passes twice identically; only the owned source and sidecar are committed. Structural identity checks do not establish semantic truth.

- groupants-1.json and groupants-2.json: e96799fe3a0b42789b431e3ddbcc3d60244a0c386f9b2f0c9da1effa7e34fa4b
- changed.json: 27f534c6668aebeb3a4d5b045d9c7a1ad13bf75ed28fdda2adac2d84dcbb11f0


Speaker-label receipt, 2026-11-03, source SHA-256 57539e706753c6525e72b0cf977d6542ac73139c3194af99971ced9618caca2e. Three native tests (cargo test -p prag --lib speaker_label) pass in release; the finite-verb guard-removal mutant fails what_is_no_speaker_label_stays_byte_for_byte on "Your mate fell off the wall"; exact source restored before positives. PRAG_OFF=speaker-label reproduces the previous commands trace byte for byte. Syntax regenerated. No full suite or full semantics claim.

Time and name roles receipt, 2026-11-04, source SHA-256 0dc8bae8fbaecb483282ae3cb0da28501fe49edbd55481eeeb18868ff09871fc. Two native tests (cargo test -p prag --lib wh_role_tests) pass in release; the mutant accepting any month word (not only a name or a season) fails a_time_value_is_a_date_or_a_year on «their march»; exact source restored. prag 146 lib tests and world 451 lib tests pass in release (world with its harness root); qagen, yomhadin, translate, roundtrip pass. PRAG_OFF=wh-time,wh-which reproduces the previous traces of the ten courses byte for byte (the step's off-run equals the earlier default).

Rule sentences receipt, 2026-11-04, source SHA-256 34ba2906a706e748847ae1e553ab877c5579c9e9a59dc2f0295a4fa09e205e36. Two native tests (cargo test -p prag --lib implication_tests) pass in release; the mutant that takes any clause marker as a condition fails rule_sentences_give_condition_and_conclusion on the «that» control; exact source restored. prag 148 lib tests, world 455 lib tests (harness root wave28-dialogue-*) and tools/fish tests (20 + 1) pass in release. The reader's frames are untouched: PRAG_OFF=student-rules reproduces the ten courses' traces byte for byte.

Event questions receipt, 2026-11-04, source SHA-256 bfbc2f7905d878080a7e7dd30ae7f1bfe8f07313c3a4cf8f0254be29e72a4b88. Three native tests (cargo test -p prag --lib event_question_tests) pass in release; with PRAG_OFF=wh-event-noun, vn-gerund or q-do-prep the matching test fails; the repair test holds its own unrepaired control. prag 151 lib tests, world 453 lib tests (harness root wave28-dialogue-*), tools/fish 20+1 pass. Measurements: docs/training.md section 31.
