mvbalaji commited on
Commit
35e2bb9
·
verified ·
1 Parent(s): 60b4ca4

Odyssey_PyPro_10M: English -> Python rsat-v1 network (safetensors), runtime, usage, provenance

Browse files
README.md ADDED
@@ -0,0 +1,163 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ library_name: safetensors
4
+ tags:
5
+ - weight-space-programming
6
+ - compiled-neural-network
7
+ - code-generation
8
+ - python
9
+ - gradient-free
10
+ - research
11
+ pipeline_tag: text-generation
12
+ ---
13
+
14
+ # Odyssey_PyPro_10M: English → Python, computed by a fixed threshold network
15
+
16
+ A small CPU neural network that reads a **plain-English request** and writes a **complete Python function**,
17
+ byte by byte, followed by an end marker. It emits `# UNSUPPORTED` when the request is outside its domain.
18
+
19
+ **How it was made.** The weights were **not trained**:
20
+ - A deterministic symbolic learner induced the English interface from 1,024 teacher-provided examples.
21
+ - A build-time compiler lowered that interface, plus an inherited code-generation backend, into the numbers of
22
+ one fixed network.
23
+
24
+ **Label.** Teacher-supervised, gradient-free English-to-Python neural compilation. This is **not** a pretrained
25
+ language model, it does **not** understand unrestricted English, and it is **not** a general coder.
26
+
27
+ ## Quick start
28
+
29
+ ```bash
30
+ pip install numpy safetensors
31
+ python odyssey_pypro.py 'Write a function named "top" with parameter "xs". Keep numbers at least 3, then sort them from largest to smallest.'
32
+ ```
33
+
34
+ Output:
35
+
36
+ ```python
37
+ def top(xs):
38
+ _v0 = list(xs)
39
+ _v1 = [_x for _x in _v0 if _x >= 3]
40
+ _v2 = sorted(_v1, reverse=True)
41
+ return _v2
42
+ ```
43
+
44
+ From Python:
45
+
46
+ ```python
47
+ from odyssey_pypro import load, generate
48
+ model = load() # model.safetensors next to the script
49
+ print(generate(model, 'Create a function called "clean" that takes a list "vals". Remove duplicate numbers, then return how many numbers there are.'))
50
+ ```
51
+
52
+ `python examples.py` runs seven requests and executes the generated functions on sample lists. One of the
53
+ seven is an intentional rejection.
54
+
55
+ ## What it understands
56
+
57
+ **Requests:**
58
+ - Bounded ASCII English, at most 512 bytes.
59
+ - The function name and argument name must be **double-quoted** identifiers.
60
+ - The input is always a `list[int]` function.
61
+ - One or two operations, in clause order; a reduction can only come last.
62
+ - Integer literals are written as digits: constants −5..5 and take counts 0..8.
63
+
64
+ | Kind | Operations |
65
+ |---|---|
66
+ | Filters | `>`, `>=`, `<`, `<=`, `==`, `!=` against a constant |
67
+ | Maps | add, subtract or multiply by a constant; negate; absolute value; square |
68
+ | List transforms | ascending sort, descending sort, reverse, stable de-duplication, take the first n |
69
+ | Reductions | sum, count, min, max (min and max of an empty list return 0) |
70
+
71
+ Altogether: 21 operation families, 119 depth-1 settings and 357 legal ordered depth-2 pairs.
72
+
73
+ **Phrasing it was taught:** about 3 phrasings per operation, such as "keep the numbers at least 3", "keep only
74
+ values of 3 or more", "sort them from largest to smallest" and "add 2 to each number". Names can come before or
75
+ after the operations ("Name the function "f" and its parameter "x"."). Clauses join with "then" or "after".
76
+
77
+ **Output:** exactly the reference Python source shown above (4-space indents, final newline), or
78
+ `# UNSUPPORTED`.
79
+
80
+ ## Results (fresh confirmation set, drawn after freezing)
81
+
82
+ | Panel | n | Exact source | Runs correctly |
83
+ |---|---|---|---|
84
+ | A: taught phrasings, new names and numbers | 256 | 256 | 256 |
85
+ | B: 72 operation pairs **never seen** in teaching | 256 | 256 | 256 |
86
+ | C: new combinations of taught phrase pieces | 256 | 256 | 256 |
87
+ | D: 128 minimal pairs (comparison, constant, name swap, operation order) | 256 | 256 | 256 |
88
+ | E: **unseen synonyms** (exploratory) | 128 | 7 | 11 |
89
+ | F: requests that must be rejected | 128 | 110 correctly rejected | — |
90
+
91
+ **The pre-registered gate did not pass.** It required ≥ 95% correct rejection, and panel F reached 85.9%.
92
+
93
+ **Known failure modes:**
94
+ - It accepts unsupported **data types** it never saw ("a list of dictionaries").
95
+ - Over-general learned keywords such as `total`, `up` and `drop` can trigger the wrong operation. For example,
96
+ "compute a running total" is read as a sum.
97
+ - Most **new synonyms** are rejected or misread. In panel E, 41 of 128 requests produced wrong code.
98
+ - Treat generated code as untrusted, and run it in a sandbox.
99
+
100
+ Executed checks used 76 input lists per program in an OS sandbox, against an independent interpreter, with
101
+ strict types and an input-mutation check. These are finite tests, not proofs.
102
+
103
+ ## Architecture (rsat-v1)
104
+
105
+ **Network:**
106
+ - 2,880 binary recurrent units.
107
+ - 260 symbols: bytes plus BOS, EOS, SEP and PAD.
108
+ - 270 input channels: symbol, mode and 8 clock phases.
109
+ - 8 synchronous ticks per input byte.
110
+ - Recurrent `R` (2880×2880), input `I` (2880×270) and output `O` (260×2880) connections in **{−1, 0, +1}**;
111
+ int16 thresholds `theta` and output `bias`.
112
+
113
+ **Size:**
114
+
115
+ | | |
116
+ |---|---|
117
+ | Nominal parameter slots | **9,823,940** (the "10M") |
118
+ | Active units | 2,877 |
119
+ | Nonzero connections | R 7,708 / I 4,812 / O 481 |
120
+
121
+ **Inference:**
122
+ - The state starts at zero for every request.
123
+ - The prefix is BOS plus the request bytes; generation starts at SEP, and each emitted byte is fed back.
124
+ - Each step is signed accumulation and thresholding. There is no matrix multiplication, attention or GPU.
125
+ - About 40 ms per request on one CPU core.
126
+
127
+ | File | Contents |
128
+ |---|---|
129
+ | `model.safetensors` | The five integer tensors (9.8 MB). Metadata: architecture id and limits. Canonical content hash `269051304c640c95536fd76e837523c3c720197213d2ea4da705e6a92371de36` |
130
+ | `runtime.py`, `sched.py` | The generic, task-neutral runtime and scheduler |
131
+ | `odyssey_pypro.py` | Loader and generator (framing and length limits only) |
132
+ | `examples.py` | Runnable examples |
133
+ | `config.json` | Shapes, symbols, channels, limits |
134
+ | `provenance/` | Induced grammar (each rule lists the teaching examples supporting it), declared priors, authorship, task contract, preregistration, development history, build record, allocation report, confirmation summary, diagnostics, baselines, benchmarks, full stage report |
135
+
136
+ ## How it was built, and what that means
137
+
138
+ 1. **Teaching corpus:** written by an LLM acting as teacher (Claude Opus 5.5). It holds 1,024 positive and
139
+ 64 rejection records, expanded from 63 authored phrase forms. These are template instantiations, not
140
+ independent human examples.
141
+ 2. **Symbolic learner** (deterministic, no gradients or fitting):
142
+ - induces role cues for which quoted name is the function and which is the argument;
143
+ - induces operation phrase windows, allowed digits, clause connectors and rejection cues;
144
+ - selects the shortest discriminative hypothesis, so every rule traces to supporting examples.
145
+ 3. **Neural compiler,** written by the same coding-agent LLM. It lowers those rules into
146
+ phase-gated detectors inside the network, and reuses a code-emission backend from an earlier stage.
147
+
148
+ **Evidence that the behavior depends on the examples:**
149
+ - With no English examples, the same compiler yields a network that accepts nothing.
150
+ - Swapping the teaching labels for "reverse" and "sort ascending", with the source unchanged, flips the model's
151
+ interpretation on 14/14 affected requests and changes 214 weights.
152
+
153
+ **Limits of the claims:**
154
+ - One continuing AI session authored the corpus, learner, compiler and evaluation recipes. A post-freeze random
155
+ seed made the test records fresh, but it does not make the evaluation independent.
156
+ - Prior knowledge comes from the authored corpus, the induction hypothesis language and the inherited backend.
157
+ All three are disclosed in `provenance/`.
158
+
159
+ ## Citation and provenance
160
+
161
+ Part of the Weight-Space Programming (WSP) research series by mvbalaji. The full source, including the teacher,
162
+ learner, compiler, evaluator and every failed round, is preserved in the originating repository (branch
163
+ `stage-004`, commit `4ebd01a`).
config.json ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "model_name": "Odyssey_PyPro_10M",
3
+ "architecture_id": "rsat-v1",
4
+ "description": "recurrent signed-add threshold network",
5
+ "H": 2880,
6
+ "V": 260,
7
+ "D_IN": 270,
8
+ "ticks_per_symbol": 8,
9
+ "symbols": {
10
+ "bytes": "0-255",
11
+ "BOS": 256,
12
+ "EOS": 257,
13
+ "SEP": 258,
14
+ "PAD": 259
15
+ },
16
+ "input_channels": {
17
+ "symbol": "0-259",
18
+ "mode_prefix": 260,
19
+ "mode_output": 261,
20
+ "phase": "262-269"
21
+ },
22
+ "tensors": {
23
+ "R": [
24
+ 2880,
25
+ 2880,
26
+ "int8 in {-1,0,1}"
27
+ ],
28
+ "I": [
29
+ 2880,
30
+ 270,
31
+ "int8 in {-1,0,1}"
32
+ ],
33
+ "O": [
34
+ 260,
35
+ 2880,
36
+ "int8 in {-1,0,1}"
37
+ ],
38
+ "theta": [
39
+ 2880,
40
+ "int16"
41
+ ],
42
+ "bias": [
43
+ 260,
44
+ "int16"
45
+ ]
46
+ },
47
+ "nominal_parameter_slots": 9823940,
48
+ "active_units": 2877,
49
+ "nonzero_connections": {
50
+ "R": 7752,
51
+ "I": 4812,
52
+ "O": 481,
53
+ "theta_nonzero": 2880,
54
+ "bias": 0
55
+ },
56
+ "input_limit_bytes": 512,
57
+ "output_limit_symbols": 2049,
58
+ "rejection_output": "# UNSUPPORTED\n",
59
+ "canonical_sha256": "269051304c640c95536fd76e837523c3c720197213d2ea4da705e6a92371de36",
60
+ "training": "none (gradient-free; symbolic induction from teaching examples + deterministic neural compilation)"
61
+ }
examples.py ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Runs example requests through Odyssey_PyPro_10M, prints the generated code, and executes it on a sample list.
2
+ python examples.py
3
+ """
4
+ import os
5
+ import sys
6
+
7
+ sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
8
+ from odyssey_pypro import REJECT, generate, load # noqa: E402
9
+
10
+ EXAMPLES = [
11
+ ('Write a function named "top" with parameter "xs". Keep numbers at least 3, then sort them from largest to smallest.',
12
+ [5, 1, 3, 9, 2, 3]),
13
+ ('Create a function called "clean" that takes a list "vals". Remove duplicate numbers, then return how many numbers there are.',
14
+ [4, 4, 2, 7, 2]),
15
+ ('Given a list called "data", write a function named "shift" that does this: Add -2 to each number.', [1, 2, 3]),
16
+ ('Square each number, then return the sum of the numbers. Name the function "sq_sum" and its parameter "nums".', [1, -2, 3]),
17
+ ('Using the input list "seq", implement the function "head3". Take the first 3 values.', [9, 8, 7, 6, 5]),
18
+ ('Define "low", a function whose argument is "arr". Keep only values below 0, then find the minimum value.', [3, -4, 0, -1]),
19
+ ('Write a function named "med" with parameter "xs". Compute the median of the numbers.', [1, 2, 3]), # unsupported
20
+ ]
21
+
22
+ if __name__ == "__main__":
23
+ model = load()
24
+ for text, sample in EXAMPLES:
25
+ src = generate(model, text)
26
+ print("REQUEST:", text)
27
+ print(src, end="")
28
+ if src != REJECT:
29
+ ns = {}
30
+ exec(src, ns) # the network's output is ordinary Python; run it only if you trust this example list
31
+ fn = [v for k, v in ns.items() if callable(v) and not k.startswith("__")][0]
32
+ print(f"# {fn.__name__}({sample}) -> {fn(list(sample))}")
33
+ print()
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:acde2e5c1008ad65a9cd69438b6077c588e711fbaad023d3ab0e00cf25ee596a
3
+ size 9827816
odyssey_pypro.py ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Odyssey_PyPro_10M: English request -> Python function, computed entirely by a fixed recurrent threshold network.
2
+
3
+ python odyssey_pypro.py 'Write a function named "top" with parameter "xs". Keep numbers at least 3, then sort them from largest to smallest.'
4
+
5
+ from odyssey_pypro import load, generate
6
+ model = load() # reads model.safetensors next to this file
7
+ print(generate(model, 'Write a function named "f" with parameter "a". Reverse the list.'))
8
+
9
+ Dependencies: numpy, safetensors. CPU only. The request bytes go into the network unchanged (BOS + bytes, then SEP);
10
+ the network itself emits every output byte and EOS. Output is either Python source or "# UNSUPPORTED\\n".
11
+ There is no tokenizer, parser, template filler or fallback in this file - only generic framing and limits.
12
+ """
13
+ from __future__ import annotations
14
+
15
+ import os
16
+ import sys
17
+
18
+ HERE = os.path.dirname(os.path.abspath(__file__))
19
+ sys.path.insert(0, HERE)
20
+ import runtime as RT # noqa: E402 (generic rsat-v1 runtime)
21
+ import sched # noqa: E402 (generic scheduler)
22
+
23
+ INPUT_LIMIT = 512 # bytes; longer input is refused, never truncated
24
+ OUTPUT_CAP = 2049 # symbols including EOS
25
+ REJECT = "# UNSUPPORTED\n"
26
+
27
+
28
+ def load(path=os.path.join(HERE, "model.safetensors")):
29
+ from safetensors.numpy import load_file
30
+ arrs = RT.validate(load_file(path), 2880)
31
+ return RT.Net(arrs, 2880)
32
+
33
+
34
+ def generate(model, request: str) -> str:
35
+ """Returns the emitted text (Python source, or REJECT). Raises ValueError for over-long input."""
36
+ data = request.encode("latin-1")
37
+ if len(data) > INPUT_LIMIT:
38
+ raise ValueError(f"request longer than {INPUT_LIMIT} bytes")
39
+ r = sched.run(model, data, OUTPUT_CAP)
40
+ if r["status"] != "eos":
41
+ raise RuntimeError(f"generation ended without EOS: {r['status']}")
42
+ return bytes(s for s in r["symbols"] if s < 256).decode("latin-1")
43
+
44
+
45
+ def main(argv):
46
+ text = argv[0] if argv else sys.stdin.read()
47
+ sys.stdout.write(generate(load(), text))
48
+ return 0
49
+
50
+
51
+ if __name__ == "__main__":
52
+ sys.exit(main(sys.argv[1:]))
provenance/AUTHORSHIP.md ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Stage 004: authorship and provenance
2
+
3
+ **Label:** teacher-supervised, gradient-free English-to-Python neural compilation.
4
+
5
+ This is **not** a pretrained language model, **not** unrestricted English understanding, and **not** evidence
6
+ for a general 1B-parameter coder.
7
+
8
+ | Item | Value |
9
+ |---|---|
10
+ | Author, teacher and constructor author | Claude Opus 5.5 (`claude-opus-5-5`), the coding agent in the Claude Code desktop app. The same continuing session ran pilot 001, studies 001/002a/002s/002b and stage 003. |
11
+ | Tools | File read/write and local shell; Python 3.12.11 and numpy 2.5.0 (project virtualenv), on CPU, with one worker. |
12
+ | Not used | Subagents, other models, API calls (the ledger has no stage-004 entries; it is unchanged at $5.469 of $30), downloads, GPUs, or the ODYSSEY project. |
13
+ | Session tokens and cost | **Unknown.** They are not exposed to the agent. Construction was not free. |
14
+
15
+ ## The three sources of prior knowledge, all disclosed
16
+
17
+ 1. **The teaching corpus,** authored by the LLM as teacher (`teaching/phrasebook.py`, expanded by
18
+ `teaching/teacher.py`):
19
+ - 63 taught operation forms, 7 request frames, 4 connectors and 24 rejection templates;
20
+ - expanded into 1,024 positive records (512 depth-1, 512 depth-2) and 64 rejection records;
21
+ - 584 unique semantic programs and 699 unique complete surface patterns.
22
+
23
+ The 1,024 records are **template instantiations**, not 1,024 independently authored language examples.
24
+ 2. **The induction machinery and its hypothesis language,** in `learner/` and listed in `reports/PRIORS.md`:
25
+ - role cues: the shortest suffix before a quote that consistently predicts the role;
26
+ - operation windows (`L [SLOT] R`) and keyword windows that bind to the next literal;
27
+ - per-family digit classes, connectors, rejection cues;
28
+ - selection by the shortest discriminative hypothesis, or greedy set cover.
29
+ 3. **The inherited backend:** the stage-003 constructor components, the expression template trie and the
30
+ renderer convention (the task grammar and Python syntax).
31
+
32
+ ## Supervision
33
+
34
+ - **Privileged teacher intent labels.** The learner reads the canonical typed operations (intent) of each
35
+ teaching record, so this is intent supervision.
36
+ - **Python labels** come from the existing renderer and agree with the interpreter. The learner does **not** use
37
+ them.
38
+ - **Source-only learning** (Python labels only) was **not run**. It is prepared as later work only in the sense
39
+ that the records already carry Python labels.
40
+
41
+ ## Separation (audited)
42
+
43
+ - **Learner and constructor:** they import only stdlib, `learner/*`, the stage-003 `wspc` components and
44
+ `wspp.task` (the public schema), plus `wspp.construct` and `runtime` for array shapes and validation.
45
+ - **Read audit:** `build.py` installs a Python audit hook. `exports/english/build_record.json` lists every
46
+ project file opened during the build, and **no teacher file, development or confirmation data, renderer,
47
+ interpreter or frozen dataset was read**.
48
+ - **No English aliases in source:** the learner and constructor source contain no English operation, role or
49
+ connector words. Every task-specific English pattern in the model traces to supporting teaching record ids
50
+ (`exports/english/grammar.json`, `support` fields).
51
+
52
+ ## Evaluation authorship
53
+
54
+ The confirmation panel recipes (`confirmation/panels.py`) and the evaluator were written by the same session.
55
+ A post-freeze random seed makes the records fresh, but it does **not** make the author independent of the
56
+ evaluation design. No independent human paraphrases were used.
provenance/DEVELOPMENT_HISTORY.md ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Stage 004 development history (chronological; development data only)
2
+
3
+ 1. **Stage 003 audit:**
4
+ - branch `stage-003` at `d49f5c4`;
5
+ - Phase A gate passed on round 2, with round 1's isolation failure preserved;
6
+ - Phase B passed on round 1;
7
+ - 2,444 units; canonical hash `3b7956a5…`;
8
+ - the archived export generates correctly in a fresh sandbox; ledger $5.469.
9
+
10
+ No discrepancies with the report.
11
+ 2. **Teacher:** phrasebook and generator written; corpus generated (teaching 1,024 + 64; development 256 + 64).
12
+ 3. **Learner v1 on a 24-record subset:** works mechanically, but the windows are over-general (expected with so
13
+ little data).
14
+ 4. **Learner v1 on the full corpus: 761 / 1,024.** Three defects were diagnosed:
15
+ - A slot-first window matched both the `-1` and `1` paths. Fix: the bare-digit path must not follow `-`.
16
+ - The `-` stage fired inside `non-negative`. Fix: slot-first stages are word-anchored.
17
+ - Phrase forms seen only in depth-2 records had no window. Fix: a depth-2 fallback.
18
+
19
+ The refinement heuristic was replaced by subset-redundancy pruning, and the teacher's unsupported-type wording
20
+ was varied (a data fix). Result: **1,024 / 1,024 and 64 / 64.**
21
+ 5. **Capacity:** about 720 pattern characters would not fit next to the backend. The keyword hypothesis (P4b) was
22
+ added and connectors and rejection cues moved to greedy set cover: down to 549 characters, still 1,024 / 1,024.
23
+ 6. **First neural lowering: 2,873 / 2,880 units.**
24
+ - The shared arg reader saved about 160 units.
25
+ - 40/40 development records, then all 1,408 records, equal the symbolic executor byte for byte.
26
+ - Development: 256/256 positive, 62/64 rejection. The 2 misses are unsupported-type requests (minimal cue
27
+ cover); kept as a known limit, since capacity leaves no room for more cues.
28
+ 7. **Empty-data control first failed to build:** units with no inputs, then a ±1 conflict on a shared
29
+ constant-off unit, then unused digit gates. Fixed with separate constant-off units and conditional
30
+ allocation.
31
+ 8. **Learning-curve crash at 128 examples:** a parameterized commit had no stored digit. Added the
32
+ "missing_literal" rejection to both the symbolic executor and the network (4 units; 3 spare left).
33
+ 9. **CLI:** removed the JSON-only `--canonicalize` option and fixed the docstring. The read audit now resolves
34
+ relative paths (`teaching.jsonl` is recorded).
35
+ 10. **Final build:** canonical hash `26905130…`, identical in 3 fresh builds; read audit clean. Diagnostics and
36
+ baselines run on development data (see `reports/`).
37
+ 11. **Confirmation round 1 (seed 5234260419253349619, dataset `bb6007f9…`): CRASHED, so incomplete, not failed.**
38
+ - The evaluator raised `AttributeError` at the static-scan step: `import evaluate` resolved to the stage-004
39
+ evaluator itself instead of the stage-003 one.
40
+ - No results file was written and no outcomes were printed or inspected. Preserved in `confirmation/round1/`
41
+ (`CRASH.log`, dataset, seed, overlap report).
42
+ 12. **Evaluator v2:**
43
+ - The stage-003 scanner is now loaded by file path.
44
+ - A `smoke` mode runs the whole evaluator on a development-seed subset (seed 12345, 40 cases): it ran end to
45
+ end and all integrity checks passed.
46
+ - The artifact is unchanged (`26905130…`).
47
+ - Re-frozen as `FREEZE_round2.json`. Round 2 draws a new seed, and it is the last allowed round.
provenance/PREREGISTRATION.md ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Stage 004 preregistration (frozen before the confirmation seed)
2
+
3
+ ## Frozen artifact and pipeline
4
+
5
+ - **Artifact:** `exports/english/model.npz`, canonical hash `269051304c640c95536fd76e837523c3c720197213d2ea4da705e6a92371de36`
6
+ (identical across 3 fresh-process builds).
7
+ - **Representation:** `58af8e31…`.
8
+ - **Teaching data:** `teaching/teaching.jsonl` and `development/dev.jsonl`, hashes in
9
+ `teaching/teaching_manifest.json`.
10
+ - **Composition holdouts:** 72 pairs (seed 40040001), listed in the manifest.
11
+ - **Surface-pattern reservation:** rules in `teaching/teacher.py`.
12
+ - **Learner, priors, constructor, build, runtime, scheduler, CLI, panel generator and evaluator:** all files and
13
+ their hashes are in `confirmation/FREEZE.json`, written by `python confirmation/evaluate.py freeze`.
14
+ - **Protocol:** the freeze is committed, then the seed is drawn with `os.urandom`, then the evaluation runs once.
15
+
16
+ ## Panels (1,280 English records; frozen allocation in `confirmation/panels.py`)
17
+
18
+ | Panel | n | Content |
19
+ |---|---|---|
20
+ | A | 256 | Known language patterns: new names, lengths and constants (128 depth-1, 128 depth-2, non-holdout pairs) |
21
+ | B | 256 | All 72 withheld family pairs, each ≥ 3 times |
22
+ | C | 256 | Reserved complete surface patterns built from taught pieces (new header × form × connector combinations, back-header placement, no final period) |
23
+ | D | 256 | 128 minimal pairs, 32 each of: comparison, constant, binding swap, operation order; every non-binding contrast is behaviourally distinguishable |
24
+ | E | 128 | Unseen vocabulary (E_FORMS, never taught). **Exploratory, not gated** |
25
+ | F | 128 | Fresh rejections, 16 per category (fresh fillers for unsupported operations, types and underspecified wording) |
26
+
27
+ ## Scoring
28
+
29
+ **Positive records:**
30
+ - exact source + final newline + EOS;
31
+ - execution in the pilot AppContainer sandbox on 12 edge lists and 64 seeded random lists against the
32
+ independent interpreter, with strict types and no mutation.
33
+
34
+ A rejection on a positive record counts as a failure of that panel. Confident wrong code (accepted but not
35
+ functional) is reported separately.
36
+
37
+ **Rejection records:** correct iff the network emits `# UNSUPPORTED\n` + EOS. Incorrect acceptance and
38
+ over-rejection are reported separately.
39
+
40
+ ## Gate (fixed now)
41
+
42
+ - **A, B, C and D, each separately:** ≥ 95% functional **and** ≥ 95% exact.
43
+ - **Family coverage:** all 21 families appear across A–D, and no family has zero functional successes.
44
+ - **F:** ≥ 95% correct rejection.
45
+ - **Integrity:**
46
+ - fresh-process isolation with symbol-for-symbol equality and no project, reference or network modules
47
+ loaded;
48
+ - shuffled replay;
49
+ - rebuild in 3 fresh processes equal to the frozen hash;
50
+ - dense definitional reference;
51
+ - cycle detection on and off;
52
+ - timing;
53
+ - static scan of the export.
54
+ - **E:** reported in full and never folded into a headline.
55
+
56
+ Every held-out pair result is reported. Thresholds and denominators are never changed afterwards, and no failed
57
+ panel is moved to exploratory.
58
+
59
+ ## Rounds
60
+
61
+ At most two rounds, and only if a genuine implementation or evaluation defect is found. Round 1 is always
62
+ preserved, and a repair needs a fresh post-freeze seed. If a holdout factor were exposed during repair, it would
63
+ be replaced, or the result would be downgraded to a temporal record holdout.
64
+
65
+ ## Development results known before freezing (development data only)
66
+
67
+ | Check | Result |
68
+ |---|---|
69
+ | Teaching set | 1,088 / 1,088 |
70
+ | Development positives | 256 / 256 exact and functional |
71
+ | Development rejections | 62 / 64 (2 unsupported-type requests accepted) |
72
+ | Neural vs symbolic | equal on all 1,408 records |
73
+ | Learning curve: 128 positives | symbolic 154/256; the network does not fit H (allocation overflow) |
74
+ | Learning curve: 512 and 1,024 positives | 256/256 |
75
+ | Empty-data control | 0/256 accepted (backend and priors only, 1,090 units) |
76
+ | Counterfactual reverse ↔ sort_asc swap | 14/14 follow the swapped labels; 214 weight entries changed |
77
+ | Mechanism checks | 190/190 |
78
+ | Ablations | 2/2 predictions held |
79
+
80
+ **Expected weakness:** rejection of unsupported *types* depends on 3 induced cues learned from only 8 teaching
81
+ records, so fresh type words in panel F may be accepted.
82
+
83
+ ## Architecture
84
+
85
+ - **Units:** 2,877 of 2,880 allocated (3 spare); 2,876 on an input-to-output path.
86
+ - **Nonzero connections:** R 7,708, I 4,812, O 481 (exact figures in `exports/english/build_record.json`).
provenance/PRIORS.md ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Priors manifest (authored, not learned)
2
+
3
+ The source of truth is `learner/priors.py`; this list mirrors it. **No English operation, role or connector words
4
+ are authored.** Every such word in the model was induced from teaching records.
5
+
6
+ | Id | Prior | Where it acts |
7
+ |---|---|---|
8
+ | P1 | Byte stream; ASCII letters matched case-insensitively outside quotes | learner masking; trie I-connections for both letter cases |
9
+ | P2 | `"…"` delimits a candidate identifier; its role is decided only by an induced cue ending with the opening quote; quoted content is never matched by language patterns | quote parity QP inhibits every trie stage; the cue's final quote opens a capture buffer |
10
+ | P3 | A pattern starting with an alphanumeric byte (or a slot) only begins at a word start | BND / NDASH anchors on the first trie stage |
11
+ | P4 | Operation-phrase hypothesis `L [SLOT] R`, where SLOT = optional `-` plus one digit from the family's observed digit class | learner candidate windows; slot stages in the trie |
12
+ | P4b | Keyword hypothesis: a slot-less window binds to the next word-anchored integer token; a pending keyword is cleared by any commit | PEND latches, literal-token units |
13
+ | P5 | Operation order = order of completion; at most two operations | ANY1/ANY2 routing to FAM1/FAM2 |
14
+ | P6 | Induced connectors mark clauses: a connector after operation 1 demands operation 2; a connector after operation 2 rejects | CON1 latch, CON2 → reject |
15
+ | P7 | Identifier syntax from the task contract; both names required | capture buffers; F0 checks |
16
+ | P8 | Structural rejection conditions: repeated role, invalid byte in a name, name > 16, leading digit, two digits outside quotes, simultaneous commits, > 2 operations, ambiguous / sign-only / missing literal, induced rejection cue | BADL latch and REJ |
17
+ | P9 | `# UNSUPPORTED\n` + EOS as the rejection output | emit.reject chain |
18
+ | P10 | Selection: shortest discriminative cue / window; greedy set cover for connectors and rejection cues; ties → leftmost, then lexicographic | learner |
19
+ | P11 | Backend and renderer convention (inherited from stage 003) | expression trie and readers |
20
+
21
+ **Induced from data** (`exports/english/grammar.json`, with supporting record ids):
22
+ - 9 role cues;
23
+ - 56 operation windows, both contiguous-slot and keyword;
24
+ - per-family digit classes;
25
+ - 2 connectors (`then`, `after`);
26
+ - 3 rejection cues (`characters`, `for`, `integers`).
provenance/STAGE_004_REPORT.md ADDED
@@ -0,0 +1,208 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Stage 004: teacher-supervised, gradient-free English-to-Python neural compilation
2
+
3
+ **Result.** One frozen rsat-v1 artifact takes raw English and emits a complete Python function plus EOS, or
4
+ `# UNSUPPORTED` plus EOS.
5
+ - **Architecture:** unchanged. H = 2,880, 9,823,940 nominal slots, ternary connections, int16 thresholds.
6
+ - **Active circuitry:** 2,877 units, with 7,708 R / 4,812 I / 481 O nonzero connections.
7
+ - **Confirmation (round 2, fresh seed):** the four core panels are **1,024/1,024 exact and functional**.
8
+ - **The registered gate did NOT pass:** rejection panel F scored **110/128 (85.9%) against the required 95%**.
9
+ - **Exploratory panel E:** unseen vocabulary is mostly not understood.
10
+
11
+ ## Headline numbers (confirmation round 2; seed 2772032359160972826; dataset `21322270…`)
12
+
13
+ | Panel | n | exact | functional | rejected | confident wrong | Gate |
14
+ |---|---|---|---|---|---|---|
15
+ | A: known language patterns | 256 | 256 | 256 | 0 | 0 | pass |
16
+ | B: withheld operation pairs (all 72 pairs, each ≥ 3 times) | 256 | 256 | 256 | 0 | 0 | pass |
17
+ | C: recombined surface patterns | 256 | 256 | 256 | 0 | 0 | pass |
18
+ | D: semantic minimal pairs (128 pairs, all both-exact) | 256 | 256 | 256 | 0 | 0 | pass |
19
+ | E: unseen vocabulary (exploratory) | 128 | 7 | 11 | 76 | 41 | not gated |
20
+ | F: rejection | 128 | — | — | 110 correct | 18 accepted | **FAIL (85.9% < 95%)** |
21
+
22
+ **Families:** all 21 appear in A–D, and every family has 100% functional success.
23
+
24
+ **Panel D by contrast type:**
25
+
26
+ | Contrast | Pairs both exact |
27
+ |---|---|
28
+ | Comparison | 32/32 |
29
+ | Constant | 32/32 |
30
+ | Binding (fn ↔ arg swap) | 32/32 |
31
+ | Operation order | 32/32 |
32
+
33
+ **Panel F by category (correct rejections):**
34
+
35
+ | Category | Correct |
36
+ |---|---|
37
+ | Invalid name | 16/16 |
38
+ | Missing name | 16/16 |
39
+ | Out of range | 16/16 |
40
+ | Three operations | 16/16 |
41
+ | Unsupported operation | 15/16 |
42
+ | Underspecified | 12/16 |
43
+ | Unsupported after a valid operation | 12/16 |
44
+ | **Unsupported type** | **7/16** |
45
+
46
+ **Rounds:**
47
+ - **Round 1** (seed 5234260419253349619) **crashed in the evaluator** before any result was written: the
48
+ static-scan import resolved to the evaluator itself. It is preserved and counted as not_run, not as a model
49
+ failure.
50
+ - **Round 2** is the second and final allowed round.
51
+
52
+ ## Answers
53
+
54
+ **1. Does raw English reach numerical inference without semantic host preprocessing?** Yes.
55
+ - The deployed package contains only the generic `runtime.py` and `sched.py` (byte-identical to stage 003), a
56
+ task-neutral CLI (512-byte input limit, output cap) and `model.npz`.
57
+ - All 1,280 confirmation records ran in a fresh AppContainer process holding only those files and the raw bytes.
58
+ Outputs were equal symbol for symbol, and no project, reference or network modules were loaded.
59
+ - The static AST scan is clean. A shuffled replay, including after rejections, gave identical outputs.
60
+ - The export contains no tokenizer, regex, parser, renderer, retrieval store or fallback, and no host-readable
61
+ English patterns.
62
+
63
+ **2. Which language mappings were induced from examples?** All task-specific English (`exports/english/grammar.json`,
64
+ each rule with the teaching record ids that support it):
65
+ - 9 role cues, for example `named "` → fn, `parameter "` → arg, and `function called "` vs `list called "`;
66
+ - 56 operation windows, for example `least` + next literal → `>=`, `{C} or more` → `>=`, `to largest` → ascending
67
+ sort, `decrease` + next literal → subtract;
68
+ - per-family digit classes, which make out-of-range literals unparsable;
69
+ - 2 connectors (`then`, `after`);
70
+ - 3 rejection cues (`characters`, `for`, `integers`).
71
+
72
+ **3. Which priors were authored or inherited?** The 11 structural priors in `reports/PRIORS.md`:
73
+ - case-insensitive bytes, with quotes delimiting names;
74
+ - word anchoring;
75
+ - the two operation hypothesis forms (contiguous slot, and keyword plus next literal);
76
+ - clause order as operation order, with at most 2 operations;
77
+ - connector semantics;
78
+ - identifier syntax;
79
+ - structural rejection conditions and the rejection string;
80
+ - the selection rule (shortest discriminative hypothesis, or greedy set cover).
81
+
82
+ The stage-003 backend and renderer convention are inherited. The teacher corpus (63 taught forms, 7 frames,
83
+ 4 connectors and rejection templates) was authored by the same LLM.
84
+
85
+ **4. Do changing examples and labels change interpretation with source held fixed?** Yes.
86
+ - **Empty data:** no English records gives 0 rules, 1,090 units, and 0/256 development positives accepted.
87
+ - **Counterfactual swap:** with the `reverse` ↔ `sort_asc` labels swapped and the source unchanged, 14/14
88
+ affected development requests follow the swapped labels (0/14 under the originals). The base model scores
89
+ 0/14 on the swapped labels, 120/120 unaffected requests are unchanged, and 214 weight entries changed.
90
+ - **Learning curve** (nested, with the same 64 rejections):
91
+
92
+ | Positive examples | Symbolic dev exact | Neural |
93
+ |---|---|---|
94
+ | 128 | 154/256 | does not fit in 2,880 units (12 spurious connectors overflow) |
95
+ | 512 | 256/256 | 256/256 |
96
+ | 1,024 | 256/256 | 256/256 |
97
+
98
+ **5. Does it compose familiar meanings in withheld pairs?** Yes, for this interface. Panel B passed all 72
99
+ withheld family pairs, 256/256. Template retrieval scores 0/256 on B and 0/256 on C. The backend already knew
100
+ every composition; what was tested is the English interface.
101
+
102
+ **6. How well does it handle genuinely new wording?** Poorly. Panel E: 11/128 functional and 7/128 exact. 76 of
103
+ the records were rejected, and 41 produced confident wrong code. For example, "drop numbers equal to 5" was read
104
+ as `==` through the learned `numbers equal` window.
105
+
106
+ **7. What does it reject, and when does it confidently generate wrong code?**
107
+ - **Reliably rejects:** three operations, missing or invalid names, out-of-range literals, and most unsupported
108
+ operations.
109
+ - **Wrongly accepts (18 of 128 F records):**
110
+ - fresh type words (9 of 16 unsupported-type records), because only 3 type cues were learned from 8 teaching
111
+ records;
112
+ - "compute a running total", which matched the learned `total` keyword (sum);
113
+ - underspecified wording that hit over-general learned keywords, such as `up` and `drop`.
114
+ - **On A–D:** no confident wrong code, and no over-rejection.
115
+
116
+ **8. Does all of this fit inside the original architecture?** Yes: 2,877 of 2,880 units, with 3 spare.
117
+ - **Front end:** 1,005 units (a 792-unit shared trie of induced rules, plus names, commit, literal and rejection
118
+ logic).
119
+ - **Backend:** 1,872 units (buffers, readers, decoder, expression trie).
120
+ - Reusing one argument reader for both occurrences saved about 160 units.
121
+ - The 128-example grammar did **not** fit.
122
+ - The JSON reader was removed, so this artifact does not accept JSON. The stage-003 JSON model stays frozen.
123
+
124
+ **9. Cost (CPU: Intel64 Family 6 Model 181; one worker).**
125
+
126
+ | Item | Value |
127
+ |---|---|
128
+ | Induction | 11.9 s |
129
+ | Neural lowering | 0.18 s |
130
+ | Short requests (≈ 80 B), in process | p50 23 ms |
131
+ | Long requests (≈ 164 B), in process | p50 48 ms |
132
+ | Development set, in process | p50 41 ms, p95 62 ms; ≈ 4,800 output bytes/s |
133
+ | Fresh-process CLI (includes startup and load) | 0.28 s |
134
+ | model.npz | 29 KB compressed |
135
+ | Loaded dense arrays | 9.8 MB |
136
+ | Process RSS after runs | ≈ 55 MB |
137
+ | Symbolic parser + renderer, same machine | 4.2 ms (the neural path is ≈ 9.8× slower) |
138
+
139
+ - **Paid API spend:** $0. The ledger is unchanged at $5.469 of $30, as reference-priced estimates, not billed
140
+ amounts.
141
+ - **Session token use and cost:** unknown.
142
+
143
+ ## Baselines (confirmation records; `reports/baselines_confirmation.json`)
144
+
145
+ | Panel | Stage 003 JSON model (privileged canonical intent) | Symbolic grammar + renderer | Template retrieval |
146
+ |---|---|---|---|
147
+ | A | 256/256 | 256/256 | 111/256 |
148
+ | B | 256/256 | 256/256 | 0/256 |
149
+ | C | 256/256 | 256/256 | 0/256 |
150
+ | D | 256/256 | 256/256 | 147/256 |
151
+ | E | 128/128 | 7/128 | 0/128 |
152
+ | F | — | 110/128 | 128/128 (it rejects every unseen template) |
153
+
154
+ The neural artifact equals the symbolic executor on every record. Its value is that it is a standalone fixed
155
+ network, not that it is more accurate than the symbolic form.
156
+
157
+ ## Integrity
158
+
159
+ - **Determinism:** 3 fresh-process rebuilds give the frozen canonical hash `269051304c64…`.
160
+ - **Runtime checks:** the dense definitional reference equals the runtime; cycle detection on vs off is equal;
161
+ tick timing matches.
162
+ - **Read audit:** the build read no teacher, development, confirmation, renderer or interpreter files
163
+ (`exports/english/build_record.json`).
164
+ - **Overlap audit:** no full-text or multi-character-name overlap with teaching or dev; panel C's surface keys
165
+ never appear in teaching or dev; no holdout pair appears in teaching or dev.
166
+
167
+ ## Distinctions kept explicit
168
+
169
+ | Distinction | |
170
+ |---|---|
171
+ | Same architecture vs unchanged weights | Same shapes and value ranges; **new** weights, not the stage-003 numbers. |
172
+ | Teacher-authored prior vs data-induced rule | `reports/PRIORS.md` vs `grammar.json` (with support ids). |
173
+ | Semantic intent supervision vs Python-only supervision | Only intent supervision was run; Python-only was **not** run. |
174
+ | Construction-time tools vs inference-time computation | Regexes, set cover and tries exist only in `learner/` and `constructor/`. Inference is signed accumulation and thresholding. |
175
+ | Familiar-pattern success vs paraphrase transfer | A–D pass; E shows little paraphrase transfer; F shows rejection is incomplete. |
176
+ | Finite-suite correctness vs proof | All results are finite tests. The only proved property is the runtime's integer bound. |
177
+
178
+ ## Commits (branch `stage-004`) and reproduction
179
+
180
+ | Commit | Content |
181
+ |---|---|
182
+ | `fbd7ce9` | Corpus, learner, constructor, diagnostics, baselines, preregistration and freeze (before the seed) |
183
+ | `befa639` | Round-1 evaluator crash preserved; evaluator v2 frozen |
184
+ | final | Round-2 results, benchmarks and this report |
185
+
186
+ Run from `wsp_python_pilot_1024/stage_004`:
187
+
188
+ ```
189
+ python reproduce.py generate --artifact exports/english/model.npz --text 'Write a function named "top" with parameter "xs". Keep numbers at least 3, then sort them from largest to smallest.'
190
+ python reproduce.py build # 3 fresh rebuilds == frozen hash
191
+ python reproduce.py stage003 # smoke-test the frozen JSON model
192
+ python reproduce.py diagnostics # curve, empty, counterfactual, mechanism, ablation
193
+ python reproduce.py baselines
194
+ python reproduce.py benchmark
195
+ python reproduce.py results
196
+ ```
197
+
198
+ **Not done:**
199
+ - Python-only supervision;
200
+ - independent human paraphrases;
201
+ - a matched direct-LLM comparison (no paid calls);
202
+ - independent replication (this was the same session);
203
+ - number words, scalar prompts and depth ≥ 3.
204
+
205
+ **Most direct improvements:**
206
+ - more and more varied rejection teaching data (type and underspecification cues);
207
+ - more phrase variety per family, to reduce over-general keywords such as `up`, `drop` and `total`;
208
+ - freeing capacity so that more rules fit; only 3 units remain spare.
provenance/TASK_CONTRACT.md ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Stage 004 task contract
2
+
3
+ **Input.** Raw ASCII English, at most **512 bytes**. A longer input is refused by the generic CLI before
4
+ inference, never truncated.
5
+ - The function name and the argument name appear as double-quoted identifiers. Each one's role is stated by the
6
+ surrounding wording.
7
+ - Integer literals are decimal digits: constants −5..5, take counts 0..8.
8
+ - English number words are **not** supported.
9
+
10
+ **Output.** The network emits either:
11
+ - exactly the stage-003 renderer source for the intended request, then EOS; or
12
+ - the rejection text `# UNSUPPORTED\n`, then EOS.
13
+
14
+ A rejection is never counted as a successful function.
15
+
16
+ **Domain.** Inherited unchanged from stage 003:
17
+ - `list[int]` functions with exactly one or two operations;
18
+ - the first of two operations returns a list, and a reduction may only come last;
19
+ - 21 families, 119 depth-1 settings and 357 legal ordered depth-2 family pairs, all recomputed from
20
+ `wspp.task` (`teaching/teacher.py::configs`, `legal_pairs`). They match stage 003, so there is no discrepancy.
21
+ - Names follow `wspp.task.valid_name` (`[A-Za-z][A-Za-z0-9_]{0,15}`, not reserved) and are distinct.
22
+
23
+ **Clause order.** Clause order is operation order. Phrasings that invert order (such as "but first") are out of
24
+ scope.
25
+
26
+ **Architecture (unchanged).**
27
+
28
+ | Parameter | Value |
29
+ |---|---|
30
+ | Recurrent state units | H = 2,880 binary |
31
+ | Symbols | 260 |
32
+ | Input channels | 270 |
33
+ | Ticks per symbol | 8 |
34
+ | Connections | R / I / O in {−1, 0, +1} |
35
+ | θ and bias | int16 |
36
+ | Nominal parameter slots | 9,823,940 |
37
+
38
+ Other properties carried over: zero reset per request, smallest-id argmax, feedback of emitted symbols, and
39
+ int32 column-wise accumulation (no MatMul at inference).
40
+
41
+ **Protocol and configuration changes (not architecture changes).**
42
+ - Generic input limit: 512 bytes.
43
+ - Output cap: 2,049 symbols, unchanged from stage 003.
44
+ - The Phase B weights are **not** reused. A new artifact is constructed in the same architecture: the JSON reader
45
+ circuitry is removed and replaced by the induced English front end, and the backend circuitry (emitter,
46
+ readers, decoder, expression trie) is reused. JSON input is **not** accepted by the English artifact, and the
47
+ stage-003 JSON model stays frozen as a reference.
48
+
49
+ **Out of scope.** Scalar prompts (for example "read two numbers and print their sum"), depth 3 and above, new
50
+ algorithms, number words, Unicode, and unrestricted English.
provenance/allocation_report.json ADDED
@@ -0,0 +1,543 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "H": 2880,
3
+ "allocated_units": 2877,
4
+ "spare_units": 3,
5
+ "nonzero": {
6
+ "R": 7752,
7
+ "I": 4812,
8
+ "O": 481,
9
+ "theta_nonzero": 2880,
10
+ "bias": 0
11
+ },
12
+ "nominal_parameter_slots": 9823940,
13
+ "max_fan_in": 195,
14
+ "max_abs_activation_bound": 69,
15
+ "max_abs_score_bound": 74,
16
+ "threshold_range": [
17
+ 1,
18
+ 6
19
+ ],
20
+ "live_units_input_to_output": 2876,
21
+ "units_not_on_live_path": 1,
22
+ "blocks": {
23
+ "en.lex": {
24
+ "ranges": [
25
+ [
26
+ 0,
27
+ 7
28
+ ]
29
+ ],
30
+ "count": 7,
31
+ "note": "BND/NDASH (previous byte is a boundary), quote parity QP, literal-token units"
32
+ },
33
+ "en.trie": {
34
+ "ranges": [
35
+ [
36
+ 7,
37
+ 799
38
+ ]
39
+ ],
40
+ "count": 792,
41
+ "note": "shared prefix trie: P = [x_c + pre + ph0 + parent_H (or anchor) - QP >= 4]; H holds for the symbol"
42
+ },
43
+ "parse.bit_detectors": {
44
+ "ranges": [
45
+ [
46
+ 799,
47
+ 805
48
+ ]
49
+ ],
50
+ "count": 6,
51
+ "note": "X_b = OR of identifier bytes whose code has bit b (stage 003)"
52
+ },
53
+ "en.names": {
54
+ "ranges": [
55
+ [
56
+ 805,
57
+ 807
58
+ ],
59
+ [
60
+ 1017,
61
+ 1023
62
+ ],
63
+ [
64
+ 1233,
65
+ 1238
66
+ ]
67
+ ],
68
+ "count": 13,
69
+ "note": "role cues open capture buffers; repeated-role / invalid byte / leading digit / overflow detectors"
70
+ },
71
+ "parse.fn_buffer": {
72
+ "ranges": [
73
+ [
74
+ 807,
75
+ 1017
76
+ ]
77
+ ],
78
+ "count": 210,
79
+ "note": "capture latch K/Q, 16 slots x 6 bits (W, M), 16 fill flags (stage 003)"
80
+ },
81
+ "parse.arg_buffer": {
82
+ "ranges": [
83
+ [
84
+ 1023,
85
+ 1233
86
+ ]
87
+ ],
88
+ "count": 210,
89
+ "note": "capture latch K/Q, 16 slots x 6 bits (W, M), 16 fill flags (stage 003)"
90
+ },
91
+ "en.commit": {
92
+ "ranges": [
93
+ [
94
+ 1238,
95
+ 1362
96
+ ]
97
+ ],
98
+ "count": 124,
99
+ "note": "commit routing (order), ANY1/2/3, pending keyword latches, literal tokens"
100
+ },
101
+ "en.literal": {
102
+ "ranges": [
103
+ [
104
+ 1362,
105
+ 1418
106
+ ]
107
+ ],
108
+ "count": 56,
109
+ "note": "MSTAGE/DSTAGE write triggers -> NEG_s, DIG_s,d latches (slot by ANY1d); ambiguity detectors"
110
+ },
111
+ "en.reject": {
112
+ "ranges": [
113
+ [
114
+ 1418,
115
+ 1425
116
+ ]
117
+ ],
118
+ "count": 7,
119
+ "note": "BADL latch (structural + learned cues), REJ, start edges"
120
+ },
121
+ "emit.select": {
122
+ "ranges": [
123
+ [
124
+ 1425,
125
+ 1461
126
+ ]
127
+ ],
128
+ "count": 36,
129
+ "note": "CUR2 latch, slot-selected SNEG/SDIG, done/more gates"
130
+ },
131
+ "emit.decoder": {
132
+ "ranges": [
133
+ [
134
+ 1461,
135
+ 1540
136
+ ]
137
+ ],
138
+ "count": 79,
139
+ "note": "RB bit bus, 63 decoders, 10 digit gates"
140
+ },
141
+ "emit.head": {
142
+ "ranges": [
143
+ [
144
+ 1540,
145
+ 1981
146
+ ]
147
+ ],
148
+ "count": 441,
149
+ "note": "def <fn>(<arg>):\\n _v0 = list(<arg>)\\n _v1 = ; ok/reject start edges"
150
+ },
151
+ "emit.reject": {
152
+ "ranges": [
153
+ [
154
+ 1981,
155
+ 2014
156
+ ]
157
+ ],
158
+ "count": 33,
159
+ "note": "# UNSUPPORTED\\n EOS"
160
+ },
161
+ "emit.tail": {
162
+ "ranges": [
163
+ [
164
+ 2014,
165
+ 2050
166
+ ]
167
+ ],
168
+ "count": 36,
169
+ "note": "\\n return _v<1|2>\\n EOS"
170
+ },
171
+ "emit.second_line": {
172
+ "ranges": [
173
+ [
174
+ 2050,
175
+ 2071
176
+ ]
177
+ ],
178
+ "count": 21,
179
+ "note": "\\n _v2 = (sets CUR2)"
180
+ },
181
+ "emit.template_trie": {
182
+ "ranges": [
183
+ [
184
+ 2074,
185
+ 2077
186
+ ],
187
+ [
188
+ 2080,
189
+ 2086
190
+ ],
191
+ [
192
+ 2089,
193
+ 2132
194
+ ],
195
+ [
196
+ 2135,
197
+ 2137
198
+ ],
199
+ [
200
+ 2140,
201
+ 2153
202
+ ],
203
+ [
204
+ 2156,
205
+ 2171
206
+ ],
207
+ [
208
+ 2174,
209
+ 2176
210
+ ],
211
+ [
212
+ 2179,
213
+ 2192
214
+ ],
215
+ [
216
+ 2195,
217
+ 2210
218
+ ],
219
+ [
220
+ 2213,
221
+ 2230
222
+ ],
223
+ [
224
+ 2233,
225
+ 2250
226
+ ],
227
+ [
228
+ 2253,
229
+ 2299
230
+ ],
231
+ [
232
+ 2302,
233
+ 2348
234
+ ],
235
+ [
236
+ 2351,
237
+ 2355
238
+ ],
239
+ [
240
+ 2358,
241
+ 2400
242
+ ],
243
+ [
244
+ 2403,
245
+ 2442
246
+ ],
247
+ [
248
+ 2445,
249
+ 2486
250
+ ],
251
+ [
252
+ 2489,
253
+ 2538
254
+ ],
255
+ [
256
+ 2541,
257
+ 2544
258
+ ],
259
+ [
260
+ 2547,
261
+ 2567
262
+ ],
263
+ [
264
+ 2570,
265
+ 2575
266
+ ],
267
+ [
268
+ 2578,
269
+ 2611
270
+ ],
271
+ [
272
+ 2614,
273
+ 2633
274
+ ],
275
+ [
276
+ 2636,
277
+ 2650
278
+ ],
279
+ [
280
+ 2653,
281
+ 2663
282
+ ],
283
+ [
284
+ 2666,
285
+ 2677
286
+ ],
287
+ [
288
+ 2680,
289
+ 2683
290
+ ],
291
+ [
292
+ 2686,
293
+ 2737
294
+ ],
295
+ [
296
+ 2740,
297
+ 2759
298
+ ],
299
+ [
300
+ 2762,
301
+ 2767
302
+ ],
303
+ [
304
+ 2770,
305
+ 2822
306
+ ],
307
+ [
308
+ 2825,
309
+ 2877
310
+ ]
311
+ ],
312
+ "count": 710,
313
+ "note": "shared expression trie (stage 003)"
314
+ },
315
+ "emit.family_groups": {
316
+ "ranges": [
317
+ [
318
+ 2071,
319
+ 2074
320
+ ],
321
+ [
322
+ 2077,
323
+ 2080
324
+ ],
325
+ [
326
+ 2086,
327
+ 2089
328
+ ],
329
+ [
330
+ 2132,
331
+ 2135
332
+ ],
333
+ [
334
+ 2137,
335
+ 2140
336
+ ],
337
+ [
338
+ 2153,
339
+ 2156
340
+ ],
341
+ [
342
+ 2171,
343
+ 2174
344
+ ],
345
+ [
346
+ 2176,
347
+ 2179
348
+ ],
349
+ [
350
+ 2192,
351
+ 2195
352
+ ],
353
+ [
354
+ 2210,
355
+ 2213
356
+ ],
357
+ [
358
+ 2230,
359
+ 2233
360
+ ],
361
+ [
362
+ 2250,
363
+ 2253
364
+ ],
365
+ [
366
+ 2299,
367
+ 2302
368
+ ],
369
+ [
370
+ 2348,
371
+ 2351
372
+ ],
373
+ [
374
+ 2355,
375
+ 2358
376
+ ],
377
+ [
378
+ 2400,
379
+ 2403
380
+ ],
381
+ [
382
+ 2442,
383
+ 2445
384
+ ],
385
+ [
386
+ 2486,
387
+ 2489
388
+ ],
389
+ [
390
+ 2538,
391
+ 2541
392
+ ],
393
+ [
394
+ 2544,
395
+ 2547
396
+ ],
397
+ [
398
+ 2567,
399
+ 2570
400
+ ],
401
+ [
402
+ 2575,
403
+ 2578
404
+ ],
405
+ [
406
+ 2611,
407
+ 2614
408
+ ],
409
+ [
410
+ 2633,
411
+ 2636
412
+ ],
413
+ [
414
+ 2650,
415
+ 2653
416
+ ],
417
+ [
418
+ 2663,
419
+ 2666
420
+ ],
421
+ [
422
+ 2677,
423
+ 2680
424
+ ],
425
+ [
426
+ 2683,
427
+ 2686
428
+ ],
429
+ [
430
+ 2737,
431
+ 2740
432
+ ],
433
+ [
434
+ 2759,
435
+ 2762
436
+ ],
437
+ [
438
+ 2767,
439
+ 2770
440
+ ],
441
+ [
442
+ 2822,
443
+ 2825
444
+ ]
445
+ ],
446
+ "count": 96,
447
+ "note": "OR of family flags for a trie branch (op-slot selected by CUR2)"
448
+ }
449
+ },
450
+ "notes": {
451
+ "language_trie_nodes": 436,
452
+ "expression_trie_nodes": 282,
453
+ "families_with_learned_windows": [
454
+ "filter>",
455
+ "filter>=",
456
+ "filter<",
457
+ "filter<=",
458
+ "filter==",
459
+ "filter!=",
460
+ "map_add",
461
+ "map_subtract",
462
+ "map_multiply",
463
+ "map_negate",
464
+ "map_abs",
465
+ "map_square",
466
+ "sort_asc",
467
+ "sort_desc",
468
+ "reverse",
469
+ "dedup",
470
+ "take",
471
+ "reduce_sum",
472
+ "reduce_count",
473
+ "reduce_min",
474
+ "reduce_max"
475
+ ],
476
+ "share_arg_reader": true,
477
+ "identifier_code": {
478
+ "A": 1,
479
+ "B": 2,
480
+ "C": 3,
481
+ "D": 4,
482
+ "E": 5,
483
+ "F": 6,
484
+ "G": 7,
485
+ "H": 8,
486
+ "I": 9,
487
+ "J": 10,
488
+ "K": 11,
489
+ "L": 12,
490
+ "M": 13,
491
+ "N": 14,
492
+ "O": 15,
493
+ "P": 16,
494
+ "Q": 17,
495
+ "R": 18,
496
+ "S": 19,
497
+ "T": 20,
498
+ "U": 21,
499
+ "V": 22,
500
+ "W": 23,
501
+ "X": 24,
502
+ "Y": 25,
503
+ "Z": 26,
504
+ "a": 27,
505
+ "b": 28,
506
+ "c": 29,
507
+ "d": 30,
508
+ "e": 31,
509
+ "f": 32,
510
+ "g": 33,
511
+ "h": 34,
512
+ "i": 35,
513
+ "j": 36,
514
+ "k": 37,
515
+ "l": 38,
516
+ "m": 39,
517
+ "n": 40,
518
+ "o": 41,
519
+ "p": 42,
520
+ "q": 43,
521
+ "r": 44,
522
+ "s": 45,
523
+ "t": 46,
524
+ "u": 47,
525
+ "v": 48,
526
+ "w": 49,
527
+ "x": 50,
528
+ "y": 51,
529
+ "z": 52,
530
+ "_": 53,
531
+ "0": 54,
532
+ "1": 55,
533
+ "2": 56,
534
+ "3": 57,
535
+ "4": 58,
536
+ "5": 59,
537
+ "6": 60,
538
+ "7": 61,
539
+ "8": 62,
540
+ "9": 63
541
+ }
542
+ }
543
+ }
provenance/baselines_confirmation.json ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "records": 1280,
3
+ "overall": {
4
+ "json_model": {
5
+ "n": 1152,
6
+ "exact": 1152
7
+ },
8
+ "symbolic": {
9
+ "n": 1280,
10
+ "exact": 1141,
11
+ "rejected": 186
12
+ },
13
+ "retrieval": {
14
+ "n": 1280,
15
+ "exact": 386,
16
+ "rejected": 1022
17
+ }
18
+ },
19
+ "by_panel": {
20
+ "A": {
21
+ "json_model": {
22
+ "n": 256,
23
+ "exact": 256
24
+ },
25
+ "symbolic": {
26
+ "n": 256,
27
+ "exact": 256,
28
+ "rejected": 0
29
+ },
30
+ "retrieval": {
31
+ "n": 256,
32
+ "exact": 111,
33
+ "rejected": 145
34
+ }
35
+ },
36
+ "B": {
37
+ "json_model": {
38
+ "n": 256,
39
+ "exact": 256
40
+ },
41
+ "symbolic": {
42
+ "n": 256,
43
+ "exact": 256,
44
+ "rejected": 0
45
+ },
46
+ "retrieval": {
47
+ "n": 256,
48
+ "exact": 0,
49
+ "rejected": 256
50
+ }
51
+ },
52
+ "C": {
53
+ "json_model": {
54
+ "n": 256,
55
+ "exact": 256
56
+ },
57
+ "symbolic": {
58
+ "n": 256,
59
+ "exact": 256,
60
+ "rejected": 0
61
+ },
62
+ "retrieval": {
63
+ "n": 256,
64
+ "exact": 0,
65
+ "rejected": 256
66
+ }
67
+ },
68
+ "D": {
69
+ "json_model": {
70
+ "n": 256,
71
+ "exact": 256
72
+ },
73
+ "symbolic": {
74
+ "n": 256,
75
+ "exact": 256,
76
+ "rejected": 0
77
+ },
78
+ "retrieval": {
79
+ "n": 256,
80
+ "exact": 147,
81
+ "rejected": 109
82
+ }
83
+ },
84
+ "E": {
85
+ "json_model": {
86
+ "n": 128,
87
+ "exact": 128
88
+ },
89
+ "symbolic": {
90
+ "n": 128,
91
+ "exact": 7,
92
+ "rejected": 76
93
+ },
94
+ "retrieval": {
95
+ "n": 128,
96
+ "exact": 0,
97
+ "rejected": 128
98
+ }
99
+ },
100
+ "F": {
101
+ "json_model": {},
102
+ "symbolic": {
103
+ "n": 128,
104
+ "exact": 110,
105
+ "rejected": 110
106
+ },
107
+ "retrieval": {
108
+ "n": 128,
109
+ "exact": 128,
110
+ "rejected": 128
111
+ }
112
+ }
113
+ },
114
+ "seconds_per_record": {
115
+ "json_model": 0.05228573359312981,
116
+ "symbolic": 0.004560427499382058,
117
+ "retrieval": 2.1028436640335714e-05
118
+ },
119
+ "retrieval_templates": 754,
120
+ "notes": "json_model receives the privileged canonical intent; symbolic shares the learned representation"
121
+ }
provenance/benchmark.json ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cpu": "Intel64 Family 6 Model 181 Stepping 0, GenuineIntel",
3
+ "python": "3.12.11 | packaged by conda-forge | (main, Jun 4 2025, 14:29:09) [MSC v.1943 64 bit (AMD64)]",
4
+ "numpy": "2.5.0",
5
+ "workers": 1,
6
+ "induction_s": 11.9327388999518,
7
+ "neural_lowering_s": 0.1773803000105545,
8
+ "weight_load_s": 0.045025100000202656,
9
+ "neural": {
10
+ "short": {
11
+ "n": 40,
12
+ "mean_input_bytes": 79.65,
13
+ "prefix_s_mean": 0.011103200001525693,
14
+ "generation_s_mean": 0.009349467494757846,
15
+ "end_to_end_s": {
16
+ "p50": 0.023430150060448796,
17
+ "p95": 0.02856851503602229,
18
+ "max": 0.02949109999462962
19
+ },
20
+ "output_bytes_per_s": 5981.624090501046
21
+ },
22
+ "long": {
23
+ "n": 40,
24
+ "mean_input_bytes": 164.25,
25
+ "prefix_s_mean": 0.024133024996262974,
26
+ "generation_s_mean": 0.020725287511595525,
27
+ "end_to_end_s": {
28
+ "p50": 0.04829245008295402,
29
+ "p95": 0.05438748496817424,
30
+ "max": 0.05734349996782839
31
+ },
32
+ "output_bytes_per_s": 5367.83868198485
33
+ },
34
+ "all_dev": {
35
+ "n": 320,
36
+ "mean_input_bytes": 118.09375,
37
+ "prefix_s_mean": 0.01974601062538568,
38
+ "generation_s_mean": 0.02064231249714794,
39
+ "end_to_end_s": {
40
+ "p50": 0.04107000009389594,
41
+ "p95": 0.06241204990074038,
42
+ "max": 0.08388289995491505
43
+ },
44
+ "output_bytes_per_s": 4788.859049278423
45
+ }
46
+ },
47
+ "symbolic_plus_renderer_s_per_request": 0.004189122499883524,
48
+ "neural_over_symbolic_x": 9.803962547057973,
49
+ "cli_fresh_process_s": {
50
+ "mean": 0.27694286664094153,
51
+ "max": 0.30242049996741116
52
+ },
53
+ "rss_mb": {
54
+ "before": 42.84765625,
55
+ "after": 54.92578125
56
+ },
57
+ "artifact": {
58
+ "model_npz_bytes": 29055,
59
+ "loaded_dense_bytes": 9827080
60
+ },
61
+ "active": {
62
+ "allocated_units": 2877,
63
+ "spare_units": 3,
64
+ "nonzero": {
65
+ "R": 7752,
66
+ "I": 4812,
67
+ "O": 481,
68
+ "theta_nonzero": 2880,
69
+ "bias": 0
70
+ },
71
+ "live_units": 2876
72
+ },
73
+ "blocks": {
74
+ "en.lex": 7,
75
+ "en.trie": 792,
76
+ "parse.bit_detectors": 6,
77
+ "en.names": 13,
78
+ "parse.fn_buffer": 210,
79
+ "parse.arg_buffer": 210,
80
+ "en.commit": 124,
81
+ "en.literal": 56,
82
+ "en.reject": 7,
83
+ "emit.select": 36,
84
+ "emit.decoder": 79,
85
+ "emit.head": 441,
86
+ "emit.reject": 33,
87
+ "emit.tail": 36,
88
+ "emit.second_line": 21,
89
+ "emit.template_trie": 710,
90
+ "emit.family_groups": 96
91
+ },
92
+ "front_end_units": 1005,
93
+ "backend_units": 1872,
94
+ "nominal_parameter_slots": 9823940
95
+ }
provenance/build_record.json ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "status": "ok",
3
+ "teaching": "stage_004/teaching/teaching.jsonl",
4
+ "teaching_sha256": "617ce7cd17a7594f70917b20994db0d6866e4d60ffd320371ec60bffcefdb5db",
5
+ "n_records": {
6
+ "positive": 1024,
7
+ "reject": 64
8
+ },
9
+ "representation_sha256": "58af8e31cdd8cf163f4569c4ad35f12484888b8125387d5943a34242cebd6a28",
10
+ "grammar_counts": {
11
+ "cues": 9,
12
+ "windows": 56,
13
+ "connectors": 2,
14
+ "reject_cues": 3
15
+ },
16
+ "teaching_validation": {
17
+ "positive_exact_intent": 1024,
18
+ "positive_n": 1024,
19
+ "reject_correct": 64,
20
+ "reject_n": 64
21
+ },
22
+ "learn_s": 11.9327388999518,
23
+ "lower_s": 0.1773803000105545,
24
+ "canonical_sha256": "269051304c640c95536fd76e837523c3c720197213d2ea4da705e6a92371de36",
25
+ "runtime_weights_sha256": "0d3e2b1206de5a75ee923fefdb44d801440ac5e57719c434163c8984a5872fe1",
26
+ "allocated_units": 2877,
27
+ "spare_units": 3,
28
+ "nonzero": {
29
+ "R": 7752,
30
+ "I": 4812,
31
+ "O": 481,
32
+ "theta_nonzero": 2880,
33
+ "bias": 0
34
+ },
35
+ "live_units": 2876,
36
+ "blocks": {
37
+ "en.lex": 7,
38
+ "en.trie": 792,
39
+ "parse.bit_detectors": 6,
40
+ "en.names": 13,
41
+ "parse.fn_buffer": 210,
42
+ "parse.arg_buffer": 210,
43
+ "en.commit": 124,
44
+ "en.literal": 56,
45
+ "en.reject": 7,
46
+ "emit.select": 36,
47
+ "emit.decoder": 79,
48
+ "emit.head": 441,
49
+ "emit.reject": 33,
50
+ "emit.tail": 36,
51
+ "emit.second_line": 21,
52
+ "emit.template_trie": 710,
53
+ "emit.family_groups": 96
54
+ },
55
+ "export_files": {
56
+ "model.npz": "a5ea9803375599aee2279c24ac8ba1592990e86793592542e4dbb34d6c97f35c",
57
+ "runtime.py": "0ecbd27133c37a2023cd8d219d9b8bc5aa1f892d9ae8e4ef725d05648adcaa7e",
58
+ "sched.py": "8e4ed8fc005f7899c27ef2e2921beeabe701a937c6600f2145b918c8bf812a92",
59
+ "wsp_generate.py": "ad5230d0bddd995784b6c20a21bc6fd132ffde80337d38a3001f913ee84f7b3b"
60
+ },
61
+ "source_sha256": {
62
+ "stage_004/learner/learn.py": "cf07b214a4ebc2081faa4d110995c88e0d41731173300dbcb9a7e35bbbf1c95a",
63
+ "stage_004/learner/priors.py": "991f5b104cbf8abc5b58345b9bb19944d25229467fddea177cf7c7e66e761775",
64
+ "stage_004/learner/symbolic.py": "ec1c3bdd2720898fad4293c76b0f1fc58accabb7a8a2d84a762b35c94dd5abe8",
65
+ "stage_004/constructor/english.py": "352f795ad0f160bfe914bcb1ac225882aab3d00077204a28fb15c913a25f6554",
66
+ "stage_003/constructor/wspc/__init__.py": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
67
+ "stage_003/constructor/wspc/builder.py": "dfc8c0cdd5a8bd521dc0067a6e4751c7dca7c74e53c580ce1459ec4c97641b65",
68
+ "stage_003/constructor/wspc/components.py": "757a7b940688588e3dcb4f7a9577d837a7f558918b36722b4bdf543be0249661",
69
+ "stage_003/constructor/wspc/grammar.py": "9c9d1316f0f6c45bb9ecf7943ef0c3c351fce16c9141cb1ad966d5e5c48a51b3",
70
+ "stage_003/constructor/wspc/model.py": "a9b4c968547ca5d5cab5d4037c1232956f26da0a424f5a6832dd4e5982592f0b",
71
+ "stage_004/build.py": "3b2dfc26b28a4ef523e33ca670b17fb73606ce3dc3204e7867ecad69f0bfad8f",
72
+ "wspp/task.py": "4eb245e150d8d0cb20f5f36dfef2541d184f8a9a8f6fe6798a06d2556fa37a9e",
73
+ "wspp/construct.py": "9e1e4a884084799fba126aeab96d99413861c0f9e41499bc68a1a38d9554afd4",
74
+ "wspp/runtime.py": "0ecbd27133c37a2023cd8d219d9b8bc5aa1f892d9ae8e4ef725d05648adcaa7e"
75
+ },
76
+ "read_audit": {
77
+ "project_files_opened": [
78
+ "mechanism_001/mech/sched.py",
79
+ "stage_003/constructor/wspc/__init__.py",
80
+ "stage_003/constructor/wspc/builder.py",
81
+ "stage_003/constructor/wspc/components.py",
82
+ "stage_003/constructor/wspc/grammar.py",
83
+ "stage_003/constructor/wspc/model.py",
84
+ "stage_004/build.py",
85
+ "stage_004/constructor/english.py",
86
+ "stage_004/exports/english/allocation_report.json",
87
+ "stage_004/exports/english/grammar.json",
88
+ "stage_004/exports/english/model.npz",
89
+ "stage_004/exports/english/runtime.py",
90
+ "stage_004/exports/english/sched.py",
91
+ "stage_004/exports/english/wsp_generate.py",
92
+ "stage_004/exports/wsp_generate.py",
93
+ "stage_004/learner/learn.py",
94
+ "stage_004/learner/priors.py",
95
+ "stage_004/learner/symbolic.py",
96
+ "stage_004/teaching/teaching.jsonl",
97
+ "wspp/construct.py",
98
+ "wspp/runtime.py",
99
+ "wspp/task.py"
100
+ ],
101
+ "forbidden_reads": []
102
+ }
103
+ }
provenance/confirmation_summary.json ADDED
@@ -0,0 +1,813 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "round": 2,
3
+ "seed": 2772032359160972826,
4
+ "dataset_sha256": "213222707f93a351aa6eb1cf16346de8f5d3fe0b873300b294f44aa17aaeff4a",
5
+ "gate": {
6
+ "A_functional_95": true,
7
+ "A_exact_95": true,
8
+ "B_functional_95": true,
9
+ "B_exact_95": true,
10
+ "C_functional_95": true,
11
+ "C_exact_95": true,
12
+ "D_functional_95": true,
13
+ "D_exact_95": true,
14
+ "all_21_families_in_core": true,
15
+ "no_family_zero_functional": true,
16
+ "F_correct_rejection_95": false,
17
+ "integrity": true,
18
+ "passed": false
19
+ },
20
+ "panels": {
21
+ "A": {
22
+ "n": 256,
23
+ "exact": 256,
24
+ "functional": 256,
25
+ "rejected": 0,
26
+ "confident_wrong": 0
27
+ },
28
+ "B": {
29
+ "n": 256,
30
+ "exact": 256,
31
+ "functional": 256,
32
+ "rejected": 0,
33
+ "confident_wrong": 0
34
+ },
35
+ "C": {
36
+ "n": 256,
37
+ "exact": 256,
38
+ "functional": 256,
39
+ "rejected": 0,
40
+ "confident_wrong": 0
41
+ },
42
+ "D": {
43
+ "n": 256,
44
+ "exact": 256,
45
+ "functional": 256,
46
+ "rejected": 0,
47
+ "confident_wrong": 0
48
+ },
49
+ "E": {
50
+ "n": 128,
51
+ "exact": 7,
52
+ "functional": 11,
53
+ "rejected": 76,
54
+ "confident_wrong": 41
55
+ },
56
+ "F": {
57
+ "n": 128,
58
+ "correct_rejection": 110,
59
+ "incorrect_acceptance": 18,
60
+ "by_category": {
61
+ "invalid_name": {
62
+ "n": 16,
63
+ "correct": 16
64
+ },
65
+ "missing_name": {
66
+ "n": 16,
67
+ "correct": 16
68
+ },
69
+ "out_of_range": {
70
+ "n": 16,
71
+ "correct": 16
72
+ },
73
+ "three_ops": {
74
+ "n": 16,
75
+ "correct": 16
76
+ },
77
+ "underspecified": {
78
+ "n": 16,
79
+ "correct": 12
80
+ },
81
+ "unsupported_after_valid": {
82
+ "n": 16,
83
+ "correct": 12
84
+ },
85
+ "unsupported_op": {
86
+ "n": 16,
87
+ "correct": 15
88
+ },
89
+ "unsupported_type": {
90
+ "n": 16,
91
+ "correct": 7
92
+ }
93
+ }
94
+ }
95
+ },
96
+ "by_family_core": {
97
+ "dedup": {
98
+ "n": 75,
99
+ "exact": 75,
100
+ "functional": 75,
101
+ "rejected": 0,
102
+ "confident_wrong": 0
103
+ },
104
+ "filter!=": {
105
+ "n": 101,
106
+ "exact": 101,
107
+ "functional": 101,
108
+ "rejected": 0,
109
+ "confident_wrong": 0
110
+ },
111
+ "filter<": {
112
+ "n": 112,
113
+ "exact": 112,
114
+ "functional": 112,
115
+ "rejected": 0,
116
+ "confident_wrong": 0
117
+ },
118
+ "filter<=": {
119
+ "n": 122,
120
+ "exact": 122,
121
+ "functional": 122,
122
+ "rejected": 0,
123
+ "confident_wrong": 0
124
+ },
125
+ "filter==": {
126
+ "n": 108,
127
+ "exact": 108,
128
+ "functional": 108,
129
+ "rejected": 0,
130
+ "confident_wrong": 0
131
+ },
132
+ "filter>": {
133
+ "n": 93,
134
+ "exact": 93,
135
+ "functional": 93,
136
+ "rejected": 0,
137
+ "confident_wrong": 0
138
+ },
139
+ "filter>=": {
140
+ "n": 106,
141
+ "exact": 106,
142
+ "functional": 106,
143
+ "rejected": 0,
144
+ "confident_wrong": 0
145
+ },
146
+ "map_abs": {
147
+ "n": 65,
148
+ "exact": 65,
149
+ "functional": 65,
150
+ "rejected": 0,
151
+ "confident_wrong": 0
152
+ },
153
+ "map_add": {
154
+ "n": 91,
155
+ "exact": 91,
156
+ "functional": 91,
157
+ "rejected": 0,
158
+ "confident_wrong": 0
159
+ },
160
+ "map_multiply": {
161
+ "n": 95,
162
+ "exact": 95,
163
+ "functional": 95,
164
+ "rejected": 0,
165
+ "confident_wrong": 0
166
+ },
167
+ "map_negate": {
168
+ "n": 87,
169
+ "exact": 87,
170
+ "functional": 87,
171
+ "rejected": 0,
172
+ "confident_wrong": 0
173
+ },
174
+ "map_square": {
175
+ "n": 79,
176
+ "exact": 79,
177
+ "functional": 79,
178
+ "rejected": 0,
179
+ "confident_wrong": 0
180
+ },
181
+ "map_subtract": {
182
+ "n": 96,
183
+ "exact": 96,
184
+ "functional": 96,
185
+ "rejected": 0,
186
+ "confident_wrong": 0
187
+ },
188
+ "reduce_count": {
189
+ "n": 32,
190
+ "exact": 32,
191
+ "functional": 32,
192
+ "rejected": 0,
193
+ "confident_wrong": 0
194
+ },
195
+ "reduce_max": {
196
+ "n": 36,
197
+ "exact": 36,
198
+ "functional": 36,
199
+ "rejected": 0,
200
+ "confident_wrong": 0
201
+ },
202
+ "reduce_min": {
203
+ "n": 26,
204
+ "exact": 26,
205
+ "functional": 26,
206
+ "rejected": 0,
207
+ "confident_wrong": 0
208
+ },
209
+ "reduce_sum": {
210
+ "n": 25,
211
+ "exact": 25,
212
+ "functional": 25,
213
+ "rejected": 0,
214
+ "confident_wrong": 0
215
+ },
216
+ "reverse": {
217
+ "n": 64,
218
+ "exact": 64,
219
+ "functional": 64,
220
+ "rejected": 0,
221
+ "confident_wrong": 0
222
+ },
223
+ "sort_asc": {
224
+ "n": 65,
225
+ "exact": 65,
226
+ "functional": 65,
227
+ "rejected": 0,
228
+ "confident_wrong": 0
229
+ },
230
+ "sort_desc": {
231
+ "n": 51,
232
+ "exact": 51,
233
+ "functional": 51,
234
+ "rejected": 0,
235
+ "confident_wrong": 0
236
+ },
237
+ "take": {
238
+ "n": 83,
239
+ "exact": 83,
240
+ "functional": 83,
241
+ "rejected": 0,
242
+ "confident_wrong": 0
243
+ }
244
+ },
245
+ "panel_B_pairs": {
246
+ "dedup|filter<": {
247
+ "n": 4,
248
+ "exact": 4,
249
+ "functional": 4,
250
+ "rejected": 0,
251
+ "confident_wrong": 0
252
+ },
253
+ "dedup|filter>=": {
254
+ "n": 4,
255
+ "exact": 4,
256
+ "functional": 4,
257
+ "rejected": 0,
258
+ "confident_wrong": 0
259
+ },
260
+ "dedup|map_multiply": {
261
+ "n": 3,
262
+ "exact": 3,
263
+ "functional": 3,
264
+ "rejected": 0,
265
+ "confident_wrong": 0
266
+ },
267
+ "dedup|reduce_count": {
268
+ "n": 4,
269
+ "exact": 4,
270
+ "functional": 4,
271
+ "rejected": 0,
272
+ "confident_wrong": 0
273
+ },
274
+ "dedup|reduce_max": {
275
+ "n": 3,
276
+ "exact": 3,
277
+ "functional": 3,
278
+ "rejected": 0,
279
+ "confident_wrong": 0
280
+ },
281
+ "dedup|reduce_sum": {
282
+ "n": 4,
283
+ "exact": 4,
284
+ "functional": 4,
285
+ "rejected": 0,
286
+ "confident_wrong": 0
287
+ },
288
+ "dedup|reverse": {
289
+ "n": 3,
290
+ "exact": 3,
291
+ "functional": 3,
292
+ "rejected": 0,
293
+ "confident_wrong": 0
294
+ },
295
+ "filter!=|filter<=": {
296
+ "n": 4,
297
+ "exact": 4,
298
+ "functional": 4,
299
+ "rejected": 0,
300
+ "confident_wrong": 0
301
+ },
302
+ "filter!=|reduce_max": {
303
+ "n": 4,
304
+ "exact": 4,
305
+ "functional": 4,
306
+ "rejected": 0,
307
+ "confident_wrong": 0
308
+ },
309
+ "filter!=|reduce_sum": {
310
+ "n": 3,
311
+ "exact": 3,
312
+ "functional": 3,
313
+ "rejected": 0,
314
+ "confident_wrong": 0
315
+ },
316
+ "filter<=|map_add": {
317
+ "n": 4,
318
+ "exact": 4,
319
+ "functional": 4,
320
+ "rejected": 0,
321
+ "confident_wrong": 0
322
+ },
323
+ "filter<=|map_subtract": {
324
+ "n": 3,
325
+ "exact": 3,
326
+ "functional": 3,
327
+ "rejected": 0,
328
+ "confident_wrong": 0
329
+ },
330
+ "filter<=|reduce_max": {
331
+ "n": 4,
332
+ "exact": 4,
333
+ "functional": 4,
334
+ "rejected": 0,
335
+ "confident_wrong": 0
336
+ },
337
+ "filter<=|take": {
338
+ "n": 3,
339
+ "exact": 3,
340
+ "functional": 3,
341
+ "rejected": 0,
342
+ "confident_wrong": 0
343
+ },
344
+ "filter<|dedup": {
345
+ "n": 4,
346
+ "exact": 4,
347
+ "functional": 4,
348
+ "rejected": 0,
349
+ "confident_wrong": 0
350
+ },
351
+ "filter<|map_abs": {
352
+ "n": 3,
353
+ "exact": 3,
354
+ "functional": 3,
355
+ "rejected": 0,
356
+ "confident_wrong": 0
357
+ },
358
+ "filter<|map_square": {
359
+ "n": 4,
360
+ "exact": 4,
361
+ "functional": 4,
362
+ "rejected": 0,
363
+ "confident_wrong": 0
364
+ },
365
+ "filter<|reduce_count": {
366
+ "n": 3,
367
+ "exact": 3,
368
+ "functional": 3,
369
+ "rejected": 0,
370
+ "confident_wrong": 0
371
+ },
372
+ "filter<|reduce_max": {
373
+ "n": 4,
374
+ "exact": 4,
375
+ "functional": 4,
376
+ "rejected": 0,
377
+ "confident_wrong": 0
378
+ },
379
+ "filter==|filter<=": {
380
+ "n": 4,
381
+ "exact": 4,
382
+ "functional": 4,
383
+ "rejected": 0,
384
+ "confident_wrong": 0
385
+ },
386
+ "filter==|reduce_count": {
387
+ "n": 3,
388
+ "exact": 3,
389
+ "functional": 3,
390
+ "rejected": 0,
391
+ "confident_wrong": 0
392
+ },
393
+ "filter==|reverse": {
394
+ "n": 4,
395
+ "exact": 4,
396
+ "functional": 4,
397
+ "rejected": 0,
398
+ "confident_wrong": 0
399
+ },
400
+ "filter==|sort_asc": {
401
+ "n": 4,
402
+ "exact": 4,
403
+ "functional": 4,
404
+ "rejected": 0,
405
+ "confident_wrong": 0
406
+ },
407
+ "filter>=|filter==": {
408
+ "n": 4,
409
+ "exact": 4,
410
+ "functional": 4,
411
+ "rejected": 0,
412
+ "confident_wrong": 0
413
+ },
414
+ "filter>=|map_abs": {
415
+ "n": 4,
416
+ "exact": 4,
417
+ "functional": 4,
418
+ "rejected": 0,
419
+ "confident_wrong": 0
420
+ },
421
+ "filter>=|map_subtract": {
422
+ "n": 3,
423
+ "exact": 3,
424
+ "functional": 3,
425
+ "rejected": 0,
426
+ "confident_wrong": 0
427
+ },
428
+ "filter>=|reduce_max": {
429
+ "n": 4,
430
+ "exact": 4,
431
+ "functional": 4,
432
+ "rejected": 0,
433
+ "confident_wrong": 0
434
+ },
435
+ "filter>=|reduce_sum": {
436
+ "n": 3,
437
+ "exact": 3,
438
+ "functional": 3,
439
+ "rejected": 0,
440
+ "confident_wrong": 0
441
+ },
442
+ "filter>=|sort_desc": {
443
+ "n": 4,
444
+ "exact": 4,
445
+ "functional": 4,
446
+ "rejected": 0,
447
+ "confident_wrong": 0
448
+ },
449
+ "filter>|dedup": {
450
+ "n": 3,
451
+ "exact": 3,
452
+ "functional": 3,
453
+ "rejected": 0,
454
+ "confident_wrong": 0
455
+ },
456
+ "filter>|filter>": {
457
+ "n": 4,
458
+ "exact": 4,
459
+ "functional": 4,
460
+ "rejected": 0,
461
+ "confident_wrong": 0
462
+ },
463
+ "filter>|map_abs": {
464
+ "n": 3,
465
+ "exact": 3,
466
+ "functional": 3,
467
+ "rejected": 0,
468
+ "confident_wrong": 0
469
+ },
470
+ "filter>|map_add": {
471
+ "n": 4,
472
+ "exact": 4,
473
+ "functional": 4,
474
+ "rejected": 0,
475
+ "confident_wrong": 0
476
+ },
477
+ "filter>|sort_desc": {
478
+ "n": 3,
479
+ "exact": 3,
480
+ "functional": 3,
481
+ "rejected": 0,
482
+ "confident_wrong": 0
483
+ },
484
+ "map_abs|filter<": {
485
+ "n": 3,
486
+ "exact": 3,
487
+ "functional": 3,
488
+ "rejected": 0,
489
+ "confident_wrong": 0
490
+ },
491
+ "map_abs|filter>": {
492
+ "n": 4,
493
+ "exact": 4,
494
+ "functional": 4,
495
+ "rejected": 0,
496
+ "confident_wrong": 0
497
+ },
498
+ "map_abs|map_abs": {
499
+ "n": 4,
500
+ "exact": 4,
501
+ "functional": 4,
502
+ "rejected": 0,
503
+ "confident_wrong": 0
504
+ },
505
+ "map_abs|map_negate": {
506
+ "n": 3,
507
+ "exact": 3,
508
+ "functional": 3,
509
+ "rejected": 0,
510
+ "confident_wrong": 0
511
+ },
512
+ "map_abs|sort_asc": {
513
+ "n": 4,
514
+ "exact": 4,
515
+ "functional": 4,
516
+ "rejected": 0,
517
+ "confident_wrong": 0
518
+ },
519
+ "map_add|filter<": {
520
+ "n": 3,
521
+ "exact": 3,
522
+ "functional": 3,
523
+ "rejected": 0,
524
+ "confident_wrong": 0
525
+ },
526
+ "map_add|map_multiply": {
527
+ "n": 4,
528
+ "exact": 4,
529
+ "functional": 4,
530
+ "rejected": 0,
531
+ "confident_wrong": 0
532
+ },
533
+ "map_add|map_negate": {
534
+ "n": 3,
535
+ "exact": 3,
536
+ "functional": 3,
537
+ "rejected": 0,
538
+ "confident_wrong": 0
539
+ },
540
+ "map_add|map_square": {
541
+ "n": 4,
542
+ "exact": 4,
543
+ "functional": 4,
544
+ "rejected": 0,
545
+ "confident_wrong": 0
546
+ },
547
+ "map_add|sort_desc": {
548
+ "n": 4,
549
+ "exact": 4,
550
+ "functional": 4,
551
+ "rejected": 0,
552
+ "confident_wrong": 0
553
+ },
554
+ "map_multiply|filter>": {
555
+ "n": 3,
556
+ "exact": 3,
557
+ "functional": 3,
558
+ "rejected": 0,
559
+ "confident_wrong": 0
560
+ },
561
+ "map_multiply|filter>=": {
562
+ "n": 4,
563
+ "exact": 4,
564
+ "functional": 4,
565
+ "rejected": 0,
566
+ "confident_wrong": 0
567
+ },
568
+ "map_multiply|map_negate": {
569
+ "n": 3,
570
+ "exact": 3,
571
+ "functional": 3,
572
+ "rejected": 0,
573
+ "confident_wrong": 0
574
+ },
575
+ "map_negate|map_multiply": {
576
+ "n": 4,
577
+ "exact": 4,
578
+ "functional": 4,
579
+ "rejected": 0,
580
+ "confident_wrong": 0
581
+ },
582
+ "map_negate|map_negate": {
583
+ "n": 3,
584
+ "exact": 3,
585
+ "functional": 3,
586
+ "rejected": 0,
587
+ "confident_wrong": 0
588
+ },
589
+ "map_negate|map_square": {
590
+ "n": 4,
591
+ "exact": 4,
592
+ "functional": 4,
593
+ "rejected": 0,
594
+ "confident_wrong": 0
595
+ },
596
+ "map_negate|reduce_count": {
597
+ "n": 4,
598
+ "exact": 4,
599
+ "functional": 4,
600
+ "rejected": 0,
601
+ "confident_wrong": 0
602
+ },
603
+ "map_negate|sort_asc": {
604
+ "n": 3,
605
+ "exact": 3,
606
+ "functional": 3,
607
+ "rejected": 0,
608
+ "confident_wrong": 0
609
+ },
610
+ "map_square|map_abs": {
611
+ "n": 4,
612
+ "exact": 4,
613
+ "functional": 4,
614
+ "rejected": 0,
615
+ "confident_wrong": 0
616
+ },
617
+ "map_square|map_add": {
618
+ "n": 3,
619
+ "exact": 3,
620
+ "functional": 3,
621
+ "rejected": 0,
622
+ "confident_wrong": 0
623
+ },
624
+ "map_square|reverse": {
625
+ "n": 4,
626
+ "exact": 4,
627
+ "functional": 4,
628
+ "rejected": 0,
629
+ "confident_wrong": 0
630
+ },
631
+ "map_subtract|filter==": {
632
+ "n": 3,
633
+ "exact": 3,
634
+ "functional": 3,
635
+ "rejected": 0,
636
+ "confident_wrong": 0
637
+ },
638
+ "map_subtract|map_add": {
639
+ "n": 4,
640
+ "exact": 4,
641
+ "functional": 4,
642
+ "rejected": 0,
643
+ "confident_wrong": 0
644
+ },
645
+ "map_subtract|map_negate": {
646
+ "n": 4,
647
+ "exact": 4,
648
+ "functional": 4,
649
+ "rejected": 0,
650
+ "confident_wrong": 0
651
+ },
652
+ "map_subtract|reverse": {
653
+ "n": 3,
654
+ "exact": 3,
655
+ "functional": 3,
656
+ "rejected": 0,
657
+ "confident_wrong": 0
658
+ },
659
+ "map_subtract|sort_asc": {
660
+ "n": 4,
661
+ "exact": 4,
662
+ "functional": 4,
663
+ "rejected": 0,
664
+ "confident_wrong": 0
665
+ },
666
+ "map_subtract|sort_desc": {
667
+ "n": 3,
668
+ "exact": 3,
669
+ "functional": 3,
670
+ "rejected": 0,
671
+ "confident_wrong": 0
672
+ },
673
+ "map_subtract|take": {
674
+ "n": 4,
675
+ "exact": 4,
676
+ "functional": 4,
677
+ "rejected": 0,
678
+ "confident_wrong": 0
679
+ },
680
+ "reverse|filter>=": {
681
+ "n": 3,
682
+ "exact": 3,
683
+ "functional": 3,
684
+ "rejected": 0,
685
+ "confident_wrong": 0
686
+ },
687
+ "reverse|map_subtract": {
688
+ "n": 4,
689
+ "exact": 4,
690
+ "functional": 4,
691
+ "rejected": 0,
692
+ "confident_wrong": 0
693
+ },
694
+ "reverse|reduce_min": {
695
+ "n": 3,
696
+ "exact": 3,
697
+ "functional": 3,
698
+ "rejected": 0,
699
+ "confident_wrong": 0
700
+ },
701
+ "sort_asc|reduce_min": {
702
+ "n": 3,
703
+ "exact": 3,
704
+ "functional": 3,
705
+ "rejected": 0,
706
+ "confident_wrong": 0
707
+ },
708
+ "sort_desc|map_negate": {
709
+ "n": 4,
710
+ "exact": 4,
711
+ "functional": 4,
712
+ "rejected": 0,
713
+ "confident_wrong": 0
714
+ },
715
+ "take|map_negate": {
716
+ "n": 3,
717
+ "exact": 3,
718
+ "functional": 3,
719
+ "rejected": 0,
720
+ "confident_wrong": 0
721
+ },
722
+ "take|reduce_max": {
723
+ "n": 4,
724
+ "exact": 4,
725
+ "functional": 4,
726
+ "rejected": 0,
727
+ "confident_wrong": 0
728
+ },
729
+ "take|reduce_sum": {
730
+ "n": 3,
731
+ "exact": 3,
732
+ "functional": 3,
733
+ "rejected": 0,
734
+ "confident_wrong": 0
735
+ },
736
+ "take|reverse": {
737
+ "n": 4,
738
+ "exact": 4,
739
+ "functional": 4,
740
+ "rejected": 0,
741
+ "confident_wrong": 0
742
+ },
743
+ "take|take": {
744
+ "n": 3,
745
+ "exact": 3,
746
+ "functional": 3,
747
+ "rejected": 0,
748
+ "confident_wrong": 0
749
+ }
750
+ },
751
+ "panel_D_pairs": {
752
+ "comparison": {
753
+ "n": 32,
754
+ "both_exact": 32
755
+ },
756
+ "constant": {
757
+ "n": 32,
758
+ "both_exact": 32
759
+ },
760
+ "binding": {
761
+ "n": 32,
762
+ "both_exact": 32
763
+ },
764
+ "order": {
765
+ "n": 32,
766
+ "both_exact": 32
767
+ }
768
+ },
769
+ "failure_reasons": {
770
+ "wrong_output": 38,
771
+ "rejected": 76,
772
+ "type": 3
773
+ },
774
+ "performance": {
775
+ "per_request_s_mean": 0.04098325132763421,
776
+ "p50": 0.04162069992162287,
777
+ "p95": 0.05980392998317254,
778
+ "max": 0.09588249993976206,
779
+ "max_input_bytes": 205,
780
+ "max_output_symbols": 164,
781
+ "eval_wall_s": 582.6750720000127
782
+ },
783
+ "integrity": {
784
+ "isolation_sandbox": "ok",
785
+ "isolation_all_equal": true,
786
+ "isolation_flagged_modules": [],
787
+ "isolation_files": [
788
+ "model.npz",
789
+ "requests.json",
790
+ "runtime.py",
791
+ "sched.py",
792
+ "wsp_generate.py"
793
+ ],
794
+ "isolation_inference_s": 59.55046790000051,
795
+ "shuffled_replay_equal": true,
796
+ "rebuilds": [
797
+ "269051304c640c95536fd76e837523c3c720197213d2ea4da705e6a92371de36",
798
+ "269051304c640c95536fd76e837523c3c720197213d2ea4da705e6a92371de36",
799
+ "269051304c640c95536fd76e837523c3c720197213d2ea4da705e6a92371de36"
800
+ ],
801
+ "rebuild_equal_frozen": true,
802
+ "dense_reference_equal": true,
803
+ "cycle_detection_on_off_equal": true,
804
+ "timing_ok": true,
805
+ "export_static_scan": {
806
+ "_disclosed_fallback_imports": [
807
+ "sched.py: wspp (except ImportError branch; unreachable when runtime.py is beside sched.py; isolation run checks loaded modules)"
808
+ ]
809
+ },
810
+ "passed": true
811
+ },
812
+ "round1": "crashed in the evaluator before producing results (preserved in the source repository)"
813
+ }
provenance/diag_ablation.json ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "language_block_reverse_windows": {
3
+ "cut_units": [
4
+ 715
5
+ ],
6
+ "prediction": "reverse-only requests -> REJECT; others unchanged",
7
+ "reverse_only": {
8
+ "pos_n": 1,
9
+ "pos_accepted": 0,
10
+ "pos_exact": 1
11
+ },
12
+ "others": {
13
+ "pos_n": 60,
14
+ "pos_accepted": 60,
15
+ "pos_exact": 60
16
+ }
17
+ },
18
+ "backend_block_arg_memory": {
19
+ "latches_cut": 96,
20
+ "prediction": "all requests -> REJECT (argument name missing)",
21
+ "observed": {
22
+ "pos_n": 60,
23
+ "pos_accepted": 0,
24
+ "pos_exact": 60
25
+ }
26
+ }
27
+ }
provenance/diag_counterfactual.json ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "swap": {
3
+ "reverse": "sort_asc",
4
+ "sort_asc": "reverse"
5
+ },
6
+ "build_error": null,
7
+ "grammar_counts": {
8
+ "cues": 9,
9
+ "windows": 56,
10
+ "connectors": 2,
11
+ "reject_cues": 3
12
+ },
13
+ "dev_affected_n": 14,
14
+ "cf_model_follows_swapped_labels": {
15
+ "pos_n": 14,
16
+ "pos_accepted": 14,
17
+ "pos_exact": 14
18
+ },
19
+ "cf_model_matches_original_labels": {
20
+ "pos_n": 14,
21
+ "pos_accepted": 14,
22
+ "pos_exact": 0
23
+ },
24
+ "base_model_follows_swapped_labels": {
25
+ "pos_n": 14,
26
+ "pos_accepted": 14,
27
+ "pos_exact": 0
28
+ },
29
+ "cf_model_unaffected_dev_exact": {
30
+ "pos_n": 120,
31
+ "pos_accepted": 120,
32
+ "pos_exact": 120
33
+ },
34
+ "weights_changed": true,
35
+ "differing_entries": {
36
+ "R": 80,
37
+ "I": 122,
38
+ "O": 0,
39
+ "theta": 12,
40
+ "bias": 0
41
+ },
42
+ "swapped_windows": [
43
+ [
44
+ "reverse",
45
+ "ascending"
46
+ ],
47
+ [
48
+ "reverse",
49
+ "increasing"
50
+ ],
51
+ [
52
+ "reverse",
53
+ "to largest"
54
+ ],
55
+ [
56
+ "sort_asc",
57
+ "reverse"
58
+ ]
59
+ ],
60
+ "base_windows": [
61
+ [
62
+ "reverse",
63
+ "reverse"
64
+ ],
65
+ [
66
+ "sort_asc",
67
+ "ascending"
68
+ ],
69
+ [
70
+ "sort_asc",
71
+ "increasing"
72
+ ],
73
+ [
74
+ "sort_asc",
75
+ "to largest"
76
+ ]
77
+ ]
78
+ }
provenance/diag_empty_data.json ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "grammar_counts": {
3
+ "cues": 0,
4
+ "windows": 0,
5
+ "connectors": 0,
6
+ "reject_cues": 0
7
+ },
8
+ "build_error": null,
9
+ "units": 1090,
10
+ "nonzero": {
11
+ "R": 3179,
12
+ "I": 1749,
13
+ "O": 173,
14
+ "theta_nonzero": 2880,
15
+ "bias": 0
16
+ },
17
+ "dev": {
18
+ "pos_n": 256,
19
+ "pos_accepted": 0,
20
+ "pos_exact": 0,
21
+ "rej_n": 64,
22
+ "rej_correct": 64
23
+ },
24
+ "families_with_any_window": []
25
+ }
provenance/diag_learning_curve.json ADDED
@@ -0,0 +1,119 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "positives": 128,
4
+ "rejections": 64,
5
+ "grammar_counts": {
6
+ "cues": 9,
7
+ "windows": 50,
8
+ "connectors": 12,
9
+ "reject_cues": 4
10
+ },
11
+ "build_s": 1.7274123000679538,
12
+ "teaching_validation": {
13
+ "positive_exact_intent": 124,
14
+ "positive_n": 128,
15
+ "reject_correct": 63,
16
+ "reject_n": 64
17
+ },
18
+ "settings_covered_d1": 49,
19
+ "pairs_covered_d2": 60,
20
+ "dev_symbolic": {
21
+ "positive_n": 256,
22
+ "positive_exact": 154,
23
+ "positive_accepted": 177,
24
+ "reject_n": 64,
25
+ "reject_exact": 61,
26
+ "reject_accepted": 3
27
+ },
28
+ "representation_sha256": "8ce01724d853dee610d04cd94e38672aac19614b2957b09983fba396d9a91707",
29
+ "build_error": "BuildError: allocation overflow: needs more than H=2880 units (block emit.template_trie)"
30
+ },
31
+ {
32
+ "positives": 512,
33
+ "rejections": 64,
34
+ "grammar_counts": {
35
+ "cues": 9,
36
+ "windows": 56,
37
+ "connectors": 2,
38
+ "reject_cues": 3
39
+ },
40
+ "build_s": 6.306715399958193,
41
+ "teaching_validation": {
42
+ "positive_exact_intent": 512,
43
+ "positive_n": 512,
44
+ "reject_correct": 64,
45
+ "reject_n": 64
46
+ },
47
+ "settings_covered_d1": 111,
48
+ "pairs_covered_d2": 197,
49
+ "dev_symbolic": {
50
+ "positive_n": 256,
51
+ "positive_exact": 256,
52
+ "positive_accepted": 256,
53
+ "reject_n": 64,
54
+ "reject_exact": 62,
55
+ "reject_accepted": 2
56
+ },
57
+ "representation_sha256": "d02f68daaeb82d0b6279dc37c414acc8899a5d992a84261f9f7474b15bdedfd2",
58
+ "units": 2877,
59
+ "nonzero": {
60
+ "R": 7752,
61
+ "I": 4812,
62
+ "O": 481,
63
+ "theta_nonzero": 2880,
64
+ "bias": 0
65
+ },
66
+ "dev": {
67
+ "pos_n": 256,
68
+ "pos_accepted": 256,
69
+ "pos_exact": 256,
70
+ "pos_functional": 256,
71
+ "rej_n": 64,
72
+ "rej_correct": 62
73
+ }
74
+ },
75
+ {
76
+ "positives": 1024,
77
+ "rejections": 64,
78
+ "grammar_counts": {
79
+ "cues": 9,
80
+ "windows": 56,
81
+ "connectors": 2,
82
+ "reject_cues": 3
83
+ },
84
+ "build_s": 11.936003100010566,
85
+ "teaching_validation": {
86
+ "positive_exact_intent": 1024,
87
+ "positive_n": 1024,
88
+ "reject_correct": 64,
89
+ "reject_n": 64
90
+ },
91
+ "settings_covered_d1": 119,
92
+ "pairs_covered_d2": 285,
93
+ "dev_symbolic": {
94
+ "positive_n": 256,
95
+ "positive_exact": 256,
96
+ "positive_accepted": 256,
97
+ "reject_n": 64,
98
+ "reject_exact": 62,
99
+ "reject_accepted": 2
100
+ },
101
+ "representation_sha256": "58af8e31cdd8cf163f4569c4ad35f12484888b8125387d5943a34242cebd6a28",
102
+ "units": 2877,
103
+ "nonzero": {
104
+ "R": 7752,
105
+ "I": 4812,
106
+ "O": 481,
107
+ "theta_nonzero": 2880,
108
+ "bias": 0
109
+ },
110
+ "dev": {
111
+ "pos_n": 256,
112
+ "pos_accepted": 256,
113
+ "pos_exact": 256,
114
+ "pos_functional": 256,
115
+ "rej_n": 64,
116
+ "rej_correct": 62
117
+ }
118
+ }
119
+ ]
provenance/diag_mechanism.json ADDED
@@ -0,0 +1,167 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "summary": {
3
+ "arg_renamed": {
4
+ "n": 40,
5
+ "variant_exact": 40,
6
+ "base_exact": 40
7
+ },
8
+ "constant_changed": {
9
+ "n": 30,
10
+ "variant_exact": 30,
11
+ "base_exact": 30
12
+ },
13
+ "fn_renamed": {
14
+ "n": 40,
15
+ "variant_exact": 40,
16
+ "base_exact": 40
17
+ },
18
+ "names_moved": {
19
+ "n": 40,
20
+ "variant_exact": 40,
21
+ "base_exact": 40
22
+ },
23
+ "order_reversed": {
24
+ "n": 40,
25
+ "variant_exact": 40,
26
+ "base_exact": 40
27
+ }
28
+ },
29
+ "rows": [
30
+ {
31
+ "change": "fn_renamed",
32
+ "base_ok": true,
33
+ "variant_ok": true,
34
+ "output_changed_as_label": true
35
+ },
36
+ {
37
+ "change": "arg_renamed",
38
+ "base_ok": true,
39
+ "variant_ok": true,
40
+ "output_changed_as_label": true
41
+ },
42
+ {
43
+ "change": "order_reversed",
44
+ "base_ok": true,
45
+ "variant_ok": true,
46
+ "output_changed_as_label": true
47
+ },
48
+ {
49
+ "change": "names_moved",
50
+ "base_ok": true,
51
+ "variant_ok": true,
52
+ "output_changed_as_label": true
53
+ },
54
+ {
55
+ "change": "constant_changed",
56
+ "base_ok": true,
57
+ "variant_ok": true,
58
+ "output_changed_as_label": true
59
+ },
60
+ {
61
+ "change": "fn_renamed",
62
+ "base_ok": true,
63
+ "variant_ok": true,
64
+ "output_changed_as_label": true
65
+ },
66
+ {
67
+ "change": "arg_renamed",
68
+ "base_ok": true,
69
+ "variant_ok": true,
70
+ "output_changed_as_label": true
71
+ },
72
+ {
73
+ "change": "order_reversed",
74
+ "base_ok": true,
75
+ "variant_ok": true,
76
+ "output_changed_as_label": true
77
+ },
78
+ {
79
+ "change": "names_moved",
80
+ "base_ok": true,
81
+ "variant_ok": true,
82
+ "output_changed_as_label": true
83
+ },
84
+ {
85
+ "change": "constant_changed",
86
+ "base_ok": true,
87
+ "variant_ok": true,
88
+ "output_changed_as_label": true
89
+ },
90
+ {
91
+ "change": "fn_renamed",
92
+ "base_ok": true,
93
+ "variant_ok": true,
94
+ "output_changed_as_label": true
95
+ },
96
+ {
97
+ "change": "arg_renamed",
98
+ "base_ok": true,
99
+ "variant_ok": true,
100
+ "output_changed_as_label": true
101
+ },
102
+ {
103
+ "change": "order_reversed",
104
+ "base_ok": true,
105
+ "variant_ok": true,
106
+ "output_changed_as_label": true
107
+ },
108
+ {
109
+ "change": "names_moved",
110
+ "base_ok": true,
111
+ "variant_ok": true,
112
+ "output_changed_as_label": true
113
+ },
114
+ {
115
+ "change": "constant_changed",
116
+ "base_ok": true,
117
+ "variant_ok": true,
118
+ "output_changed_as_label": true
119
+ },
120
+ {
121
+ "change": "fn_renamed",
122
+ "base_ok": true,
123
+ "variant_ok": true,
124
+ "output_changed_as_label": true
125
+ },
126
+ {
127
+ "change": "arg_renamed",
128
+ "base_ok": true,
129
+ "variant_ok": true,
130
+ "output_changed_as_label": true
131
+ },
132
+ {
133
+ "change": "order_reversed",
134
+ "base_ok": true,
135
+ "variant_ok": true,
136
+ "output_changed_as_label": true
137
+ },
138
+ {
139
+ "change": "names_moved",
140
+ "base_ok": true,
141
+ "variant_ok": true,
142
+ "output_changed_as_label": true
143
+ },
144
+ {
145
+ "change": "fn_renamed",
146
+ "base_ok": true,
147
+ "variant_ok": true,
148
+ "output_changed_as_label": true
149
+ }
150
+ ],
151
+ "example": "Write a function named \"top\" with parameter \"xs\". Keep numbers at least 3, then sort them from largest to smallest.",
152
+ "example_output": "def top(xs):\n _v0 = list(xs)\n _v1 = [_x for _x in _v0 if _x >= 3]\n _v2 = sorted(_v1, reverse=True)\n return _v2\n",
153
+ "prefix_phase0_active_unit_counts_by_block": {
154
+ "en.lex": 65,
155
+ "parse.bit_detectors": 320,
156
+ "en.names": 250,
157
+ "en.trie": 75,
158
+ "parse.fn_buffer": 1163,
159
+ "parse.arg_buffer": 620,
160
+ "en.commit": 187,
161
+ "en.literal": 44,
162
+ "en.reject": 94,
163
+ "emit.select": 126,
164
+ "emit.head": 42,
165
+ "emit.family_groups": 420
166
+ }
167
+ }
provenance/induced_grammar.json ADDED
@@ -0,0 +1,3743 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cues": [
3
+ {
4
+ "text": "be called \"",
5
+ "role": "fn",
6
+ "support": [
7
+ "teach-p0010",
8
+ "teach-p0016",
9
+ "teach-p0023",
10
+ "teach-p0029",
11
+ "teach-p0037",
12
+ "teach-p0040",
13
+ "teach-p0048",
14
+ "teach-p0053",
15
+ "teach-p0056",
16
+ "teach-p0058",
17
+ "teach-p0065",
18
+ "teach-p0069",
19
+ "teach-p0073",
20
+ "teach-p0074",
21
+ "teach-p0076",
22
+ "teach-p0078",
23
+ "teach-p0106",
24
+ "teach-p0116",
25
+ "teach-p0160",
26
+ "teach-p0164",
27
+ "teach-p0166",
28
+ "teach-p0190",
29
+ "teach-p0193",
30
+ "teach-p0200",
31
+ "teach-p0225",
32
+ "teach-p0228",
33
+ "teach-p0232",
34
+ "teach-p0236",
35
+ "teach-p0249",
36
+ "teach-p0253",
37
+ "teach-p0254",
38
+ "teach-p0262",
39
+ "teach-p0265",
40
+ "teach-p0268",
41
+ "teach-p0284",
42
+ "teach-p0287",
43
+ "teach-p0291",
44
+ "teach-p0294",
45
+ "teach-p0300",
46
+ "teach-p0301",
47
+ "teach-p0310",
48
+ "teach-p0314",
49
+ "teach-p0326",
50
+ "teach-p0340",
51
+ "teach-p0351",
52
+ "teach-p0354",
53
+ "teach-p0370",
54
+ "teach-p0379",
55
+ "teach-p0397",
56
+ "teach-p0409",
57
+ "teach-p0419",
58
+ "teach-p0421",
59
+ "teach-p0425",
60
+ "teach-p0439",
61
+ "teach-p0448",
62
+ "teach-p0460",
63
+ "teach-p0461",
64
+ "teach-p0464",
65
+ "teach-p0468",
66
+ "teach-p0470",
67
+ "teach-p0472",
68
+ "teach-p0473",
69
+ "teach-p0482",
70
+ "teach-p0490",
71
+ "teach-p0495",
72
+ "teach-p0502",
73
+ "teach-p0512",
74
+ "teach-p0516",
75
+ "teach-p0539",
76
+ "teach-p0540",
77
+ "teach-p0549",
78
+ "teach-p0554",
79
+ "teach-p0568",
80
+ "teach-p0571",
81
+ "teach-p0572",
82
+ "teach-p0578",
83
+ "teach-p0582",
84
+ "teach-p0583",
85
+ "teach-p0586",
86
+ "teach-p0589",
87
+ "teach-p0604",
88
+ "teach-p0607",
89
+ "teach-p0611",
90
+ "teach-p0612",
91
+ "teach-p0619",
92
+ "teach-p0635",
93
+ "teach-p0639",
94
+ "teach-p0647",
95
+ "teach-p0654",
96
+ "teach-p0662",
97
+ "teach-p0675",
98
+ "teach-p0687",
99
+ "teach-p0688",
100
+ "teach-p0691",
101
+ "teach-p0692",
102
+ "teach-p0694",
103
+ "teach-p0697",
104
+ "teach-p0700",
105
+ "teach-p0720",
106
+ "teach-p0722",
107
+ "teach-p0725",
108
+ "teach-p0726",
109
+ "teach-p0737",
110
+ "teach-p0738",
111
+ "teach-p0754",
112
+ "teach-p0760",
113
+ "teach-p0767",
114
+ "teach-p0777",
115
+ "teach-p0778",
116
+ "teach-p0781",
117
+ "teach-p0790",
118
+ "teach-p0791",
119
+ "teach-p0793",
120
+ "teach-p0794",
121
+ "teach-p0806",
122
+ "teach-p0807",
123
+ "teach-p0808",
124
+ "teach-p0811",
125
+ "teach-p0814",
126
+ "teach-p0833",
127
+ "teach-p0846",
128
+ "teach-p0847",
129
+ "teach-p0848",
130
+ "teach-p0851",
131
+ "teach-p0862",
132
+ "teach-p0867",
133
+ "teach-p0868",
134
+ "teach-p0871",
135
+ "teach-p0881",
136
+ "teach-p0882",
137
+ "teach-p0887",
138
+ "teach-p0896",
139
+ "teach-p0899",
140
+ "teach-p0904",
141
+ "teach-p0905",
142
+ "teach-p0916",
143
+ "teach-p0921",
144
+ "teach-p0928",
145
+ "teach-p0935",
146
+ "teach-p0950",
147
+ "teach-p0969",
148
+ "teach-p0974",
149
+ "teach-p0976",
150
+ "teach-p0990",
151
+ "teach-p0992",
152
+ "teach-p0995",
153
+ "teach-p1003",
154
+ "teach-p1015",
155
+ "teach-p1020"
156
+ ]
157
+ },
158
+ {
159
+ "text": "define \"",
160
+ "role": "fn",
161
+ "support": [
162
+ "teach-p0004",
163
+ "teach-p0007",
164
+ "teach-p0009",
165
+ "teach-p0012",
166
+ "teach-p0026",
167
+ "teach-p0031",
168
+ "teach-p0038",
169
+ "teach-p0045",
170
+ "teach-p0050",
171
+ "teach-p0059",
172
+ "teach-p0061",
173
+ "teach-p0067",
174
+ "teach-p0082",
175
+ "teach-p0084",
176
+ "teach-p0087",
177
+ "teach-p0093",
178
+ "teach-p0117",
179
+ "teach-p0123",
180
+ "teach-p0128",
181
+ "teach-p0139",
182
+ "teach-p0140",
183
+ "teach-p0142",
184
+ "teach-p0175",
185
+ "teach-p0176",
186
+ "teach-p0187",
187
+ "teach-p0195",
188
+ "teach-p0201",
189
+ "teach-p0203",
190
+ "teach-p0215",
191
+ "teach-p0220",
192
+ "teach-p0223",
193
+ "teach-p0224",
194
+ "teach-p0231",
195
+ "teach-p0239",
196
+ "teach-p0240",
197
+ "teach-p0242",
198
+ "teach-p0257",
199
+ "teach-p0277",
200
+ "teach-p0293",
201
+ "teach-p0298",
202
+ "teach-p0304",
203
+ "teach-p0305",
204
+ "teach-p0317",
205
+ "teach-p0327",
206
+ "teach-p0339",
207
+ "teach-p0353",
208
+ "teach-p0356",
209
+ "teach-p0357",
210
+ "teach-p0359",
211
+ "teach-p0373",
212
+ "teach-p0375",
213
+ "teach-p0376",
214
+ "teach-p0383",
215
+ "teach-p0386",
216
+ "teach-p0391",
217
+ "teach-p0392",
218
+ "teach-p0433",
219
+ "teach-p0442",
220
+ "teach-p0443",
221
+ "teach-p0477",
222
+ "teach-p0489",
223
+ "teach-p0499",
224
+ "teach-p0530",
225
+ "teach-p0546",
226
+ "teach-p0550",
227
+ "teach-p0551",
228
+ "teach-p0561",
229
+ "teach-p0567",
230
+ "teach-p0570",
231
+ "teach-p0574",
232
+ "teach-p0580",
233
+ "teach-p0581",
234
+ "teach-p0588",
235
+ "teach-p0591",
236
+ "teach-p0603",
237
+ "teach-p0610",
238
+ "teach-p0617",
239
+ "teach-p0625",
240
+ "teach-p0631",
241
+ "teach-p0636",
242
+ "teach-p0637",
243
+ "teach-p0641",
244
+ "teach-p0643",
245
+ "teach-p0653",
246
+ "teach-p0656",
247
+ "teach-p0661",
248
+ "teach-p0666",
249
+ "teach-p0674",
250
+ "teach-p0679",
251
+ "teach-p0680",
252
+ "teach-p0695",
253
+ "teach-p0711",
254
+ "teach-p0727",
255
+ "teach-p0732",
256
+ "teach-p0739",
257
+ "teach-p0741",
258
+ "teach-p0749",
259
+ "teach-p0783",
260
+ "teach-p0789",
261
+ "teach-p0812",
262
+ "teach-p0818",
263
+ "teach-p0839",
264
+ "teach-p0850",
265
+ "teach-p0852",
266
+ "teach-p0855",
267
+ "teach-p0861",
268
+ "teach-p0878",
269
+ "teach-p0885",
270
+ "teach-p0888",
271
+ "teach-p0891",
272
+ "teach-p0897",
273
+ "teach-p0912",
274
+ "teach-p0914",
275
+ "teach-p0918",
276
+ "teach-p0919",
277
+ "teach-p0930",
278
+ "teach-p0943",
279
+ "teach-p0951",
280
+ "teach-p0965",
281
+ "teach-p0968",
282
+ "teach-p0970",
283
+ "teach-p0975",
284
+ "teach-p0979",
285
+ "teach-p0984",
286
+ "teach-p0993",
287
+ "teach-p1009",
288
+ "teach-p1023"
289
+ ]
290
+ },
291
+ {
292
+ "text": "function \"",
293
+ "role": "fn",
294
+ "support": [
295
+ "teach-p0000",
296
+ "teach-p0003",
297
+ "teach-p0008",
298
+ "teach-p0015",
299
+ "teach-p0017",
300
+ "teach-p0018",
301
+ "teach-p0022",
302
+ "teach-p0030",
303
+ "teach-p0033",
304
+ "teach-p0035",
305
+ "teach-p0041",
306
+ "teach-p0042",
307
+ "teach-p0044",
308
+ "teach-p0049",
309
+ "teach-p0054",
310
+ "teach-p0060",
311
+ "teach-p0064",
312
+ "teach-p0068",
313
+ "teach-p0070",
314
+ "teach-p0075",
315
+ "teach-p0077",
316
+ "teach-p0085",
317
+ "teach-p0088",
318
+ "teach-p0090",
319
+ "teach-p0091",
320
+ "teach-p0096",
321
+ "teach-p0098",
322
+ "teach-p0102",
323
+ "teach-p0105",
324
+ "teach-p0108",
325
+ "teach-p0109",
326
+ "teach-p0111",
327
+ "teach-p0115",
328
+ "teach-p0118",
329
+ "teach-p0119",
330
+ "teach-p0122",
331
+ "teach-p0124",
332
+ "teach-p0125",
333
+ "teach-p0127",
334
+ "teach-p0129",
335
+ "teach-p0130",
336
+ "teach-p0135",
337
+ "teach-p0138",
338
+ "teach-p0145",
339
+ "teach-p0147",
340
+ "teach-p0148",
341
+ "teach-p0150",
342
+ "teach-p0156",
343
+ "teach-p0159",
344
+ "teach-p0163",
345
+ "teach-p0167",
346
+ "teach-p0169",
347
+ "teach-p0178",
348
+ "teach-p0182",
349
+ "teach-p0188",
350
+ "teach-p0191",
351
+ "teach-p0192",
352
+ "teach-p0197",
353
+ "teach-p0199",
354
+ "teach-p0204",
355
+ "teach-p0205",
356
+ "teach-p0207",
357
+ "teach-p0209",
358
+ "teach-p0211",
359
+ "teach-p0212",
360
+ "teach-p0213",
361
+ "teach-p0217",
362
+ "teach-p0219",
363
+ "teach-p0221",
364
+ "teach-p0233",
365
+ "teach-p0235",
366
+ "teach-p0237",
367
+ "teach-p0244",
368
+ "teach-p0245",
369
+ "teach-p0246",
370
+ "teach-p0247",
371
+ "teach-p0248",
372
+ "teach-p0250",
373
+ "teach-p0251",
374
+ "teach-p0252",
375
+ "teach-p0255",
376
+ "teach-p0258",
377
+ "teach-p0272",
378
+ "teach-p0274",
379
+ "teach-p0275",
380
+ "teach-p0276",
381
+ "teach-p0279",
382
+ "teach-p0283",
383
+ "teach-p0286",
384
+ "teach-p0288",
385
+ "teach-p0290",
386
+ "teach-p0296",
387
+ "teach-p0302",
388
+ "teach-p0306",
389
+ "teach-p0307",
390
+ "teach-p0308",
391
+ "teach-p0309",
392
+ "teach-p0311",
393
+ "teach-p0316",
394
+ "teach-p0318",
395
+ "teach-p0324",
396
+ "teach-p0325",
397
+ "teach-p0329",
398
+ "teach-p0332",
399
+ "teach-p0335",
400
+ "teach-p0336",
401
+ "teach-p0337",
402
+ "teach-p0342",
403
+ "teach-p0344",
404
+ "teach-p0345",
405
+ "teach-p0346",
406
+ "teach-p0347",
407
+ "teach-p0350",
408
+ "teach-p0361",
409
+ "teach-p0362",
410
+ "teach-p0366",
411
+ "teach-p0367",
412
+ "teach-p0368",
413
+ "teach-p0377",
414
+ "teach-p0382",
415
+ "teach-p0385",
416
+ "teach-p0388",
417
+ "teach-p0389",
418
+ "teach-p0390",
419
+ "teach-p0393",
420
+ "teach-p0394",
421
+ "teach-p0395",
422
+ "teach-p0398",
423
+ "teach-p0402",
424
+ "teach-p0406",
425
+ "teach-p0408",
426
+ "teach-p0410",
427
+ "teach-p0411",
428
+ "teach-p0412",
429
+ "teach-p0414",
430
+ "teach-p0415",
431
+ "teach-p0417",
432
+ "teach-p0420",
433
+ "teach-p0424",
434
+ "teach-p0429",
435
+ "teach-p0432",
436
+ "teach-p0434",
437
+ "teach-p0435",
438
+ "teach-p0438",
439
+ "teach-p0445",
440
+ "teach-p0447",
441
+ "teach-p0453",
442
+ "teach-p0454",
443
+ "teach-p0458",
444
+ "teach-p0459",
445
+ "teach-p0465",
446
+ "teach-p0469",
447
+ "teach-p0479",
448
+ "teach-p0480",
449
+ "teach-p0481",
450
+ "teach-p0485",
451
+ "teach-p0486",
452
+ "teach-p0491",
453
+ "teach-p0492",
454
+ "teach-p0493",
455
+ "teach-p0497",
456
+ "teach-p0498",
457
+ "teach-p0508",
458
+ "teach-p0509",
459
+ "teach-p0510",
460
+ "teach-p0513",
461
+ "teach-p0514",
462
+ "teach-p0518",
463
+ "teach-p0519",
464
+ "teach-p0522",
465
+ "teach-p0524",
466
+ "teach-p0529",
467
+ "teach-p0531",
468
+ "teach-p0533",
469
+ "teach-p0534",
470
+ "teach-p0538",
471
+ "teach-p0543",
472
+ "teach-p0545",
473
+ "teach-p0553",
474
+ "teach-p0555",
475
+ "teach-p0557",
476
+ "teach-p0560",
477
+ "teach-p0563",
478
+ "teach-p0564",
479
+ "teach-p0565",
480
+ "teach-p0575",
481
+ "teach-p0576",
482
+ "teach-p0584",
483
+ "teach-p0593",
484
+ "teach-p0595",
485
+ "teach-p0596",
486
+ "teach-p0601",
487
+ "teach-p0602",
488
+ "teach-p0606",
489
+ "teach-p0609",
490
+ "teach-p0615",
491
+ "teach-p0616",
492
+ "teach-p0622",
493
+ "teach-p0623",
494
+ "teach-p0624",
495
+ "teach-p0626",
496
+ "teach-p0627",
497
+ "teach-p0642",
498
+ "teach-p0644",
499
+ "teach-p0645",
500
+ "teach-p0646",
501
+ "teach-p0649",
502
+ "teach-p0650",
503
+ "teach-p0651",
504
+ "teach-p0655",
505
+ "teach-p0657",
506
+ "teach-p0658",
507
+ "teach-p0664",
508
+ "teach-p0665",
509
+ "teach-p0668",
510
+ "teach-p0671",
511
+ "teach-p0676",
512
+ "teach-p0677",
513
+ "teach-p0678",
514
+ "teach-p0682",
515
+ "teach-p0685",
516
+ "teach-p0689",
517
+ "teach-p0690",
518
+ "teach-p0693",
519
+ "teach-p0701",
520
+ "teach-p0704",
521
+ "teach-p0706",
522
+ "teach-p0713",
523
+ "teach-p0714",
524
+ "teach-p0719",
525
+ "teach-p0728",
526
+ "teach-p0729",
527
+ "teach-p0730",
528
+ "teach-p0735",
529
+ "teach-p0740",
530
+ "teach-p0744",
531
+ "teach-p0750",
532
+ "teach-p0752",
533
+ "teach-p0753",
534
+ "teach-p0756",
535
+ "teach-p0758",
536
+ "teach-p0762",
537
+ "teach-p0763",
538
+ "teach-p0764",
539
+ "teach-p0765",
540
+ "teach-p0766",
541
+ "teach-p0769",
542
+ "teach-p0770",
543
+ "teach-p0771",
544
+ "teach-p0776",
545
+ "teach-p0779",
546
+ "teach-p0780",
547
+ "teach-p0782",
548
+ "teach-p0796",
549
+ "teach-p0799",
550
+ "teach-p0801",
551
+ "teach-p0813",
552
+ "teach-p0819",
553
+ "teach-p0822",
554
+ "teach-p0823",
555
+ "teach-p0824",
556
+ "teach-p0825",
557
+ "teach-p0827",
558
+ "teach-p0829",
559
+ "teach-p0831",
560
+ "teach-p0832",
561
+ "teach-p0836",
562
+ "teach-p0842",
563
+ "teach-p0843",
564
+ "teach-p0845",
565
+ "teach-p0858",
566
+ "teach-p0859",
567
+ "teach-p0866",
568
+ "teach-p0873",
569
+ "teach-p0879",
570
+ "teach-p0880",
571
+ "teach-p0892",
572
+ "teach-p0901",
573
+ "teach-p0902",
574
+ "teach-p0903",
575
+ "teach-p0907",
576
+ "teach-p0908",
577
+ "teach-p0913",
578
+ "teach-p0924",
579
+ "teach-p0925",
580
+ "teach-p0927",
581
+ "teach-p0931",
582
+ "teach-p0933",
583
+ "teach-p0936",
584
+ "teach-p0937",
585
+ "teach-p0938",
586
+ "teach-p0944",
587
+ "teach-p0945",
588
+ "teach-p0957",
589
+ "teach-p0959",
590
+ "teach-p0964",
591
+ "teach-p0966",
592
+ "teach-p0971",
593
+ "teach-p0973",
594
+ "teach-p0981",
595
+ "teach-p0985",
596
+ "teach-p0987",
597
+ "teach-p0989",
598
+ "teach-p0991",
599
+ "teach-p0996",
600
+ "teach-p0997",
601
+ "teach-p0998",
602
+ "teach-p1000",
603
+ "teach-p1016",
604
+ "teach-p1021",
605
+ "teach-p1022"
606
+ ]
607
+ },
608
+ {
609
+ "text": "function called \"",
610
+ "role": "fn",
611
+ "support": [
612
+ "teach-p0005",
613
+ "teach-p0014",
614
+ "teach-p0025",
615
+ "teach-p0028",
616
+ "teach-p0032",
617
+ "teach-p0036",
618
+ "teach-p0046",
619
+ "teach-p0051",
620
+ "teach-p0072",
621
+ "teach-p0080",
622
+ "teach-p0092",
623
+ "teach-p0095",
624
+ "teach-p0126",
625
+ "teach-p0132",
626
+ "teach-p0141",
627
+ "teach-p0149",
628
+ "teach-p0153",
629
+ "teach-p0154",
630
+ "teach-p0168",
631
+ "teach-p0171",
632
+ "teach-p0177",
633
+ "teach-p0208",
634
+ "teach-p0238",
635
+ "teach-p0241",
636
+ "teach-p0267",
637
+ "teach-p0282",
638
+ "teach-p0289",
639
+ "teach-p0295",
640
+ "teach-p0297",
641
+ "teach-p0303",
642
+ "teach-p0313",
643
+ "teach-p0320",
644
+ "teach-p0322",
645
+ "teach-p0328",
646
+ "teach-p0330",
647
+ "teach-p0333",
648
+ "teach-p0349",
649
+ "teach-p0355",
650
+ "teach-p0358",
651
+ "teach-p0360",
652
+ "teach-p0364",
653
+ "teach-p0369",
654
+ "teach-p0372",
655
+ "teach-p0400",
656
+ "teach-p0401",
657
+ "teach-p0403",
658
+ "teach-p0407",
659
+ "teach-p0418",
660
+ "teach-p0427",
661
+ "teach-p0428",
662
+ "teach-p0431",
663
+ "teach-p0436",
664
+ "teach-p0437",
665
+ "teach-p0444",
666
+ "teach-p0452",
667
+ "teach-p0462",
668
+ "teach-p0471",
669
+ "teach-p0474",
670
+ "teach-p0475",
671
+ "teach-p0484",
672
+ "teach-p0501",
673
+ "teach-p0507",
674
+ "teach-p0523",
675
+ "teach-p0528",
676
+ "teach-p0536",
677
+ "teach-p0537",
678
+ "teach-p0542",
679
+ "teach-p0559",
680
+ "teach-p0566",
681
+ "teach-p0569",
682
+ "teach-p0573",
683
+ "teach-p0585",
684
+ "teach-p0594",
685
+ "teach-p0597",
686
+ "teach-p0598",
687
+ "teach-p0620",
688
+ "teach-p0632",
689
+ "teach-p0638",
690
+ "teach-p0652",
691
+ "teach-p0669",
692
+ "teach-p0681",
693
+ "teach-p0684",
694
+ "teach-p0702",
695
+ "teach-p0703",
696
+ "teach-p0709",
697
+ "teach-p0715",
698
+ "teach-p0716",
699
+ "teach-p0734",
700
+ "teach-p0742",
701
+ "teach-p0743",
702
+ "teach-p0747",
703
+ "teach-p0748",
704
+ "teach-p0768",
705
+ "teach-p0773",
706
+ "teach-p0774",
707
+ "teach-p0788",
708
+ "teach-p0798",
709
+ "teach-p0802",
710
+ "teach-p0803",
711
+ "teach-p0815",
712
+ "teach-p0816",
713
+ "teach-p0820",
714
+ "teach-p0830",
715
+ "teach-p0835",
716
+ "teach-p0838",
717
+ "teach-p0849",
718
+ "teach-p0853",
719
+ "teach-p0860",
720
+ "teach-p0864",
721
+ "teach-p0869",
722
+ "teach-p0872",
723
+ "teach-p0875",
724
+ "teach-p0877",
725
+ "teach-p0889",
726
+ "teach-p0894",
727
+ "teach-p0900",
728
+ "teach-p0906",
729
+ "teach-p0923",
730
+ "teach-p0932",
731
+ "teach-p0934",
732
+ "teach-p0939",
733
+ "teach-p0940",
734
+ "teach-p0946",
735
+ "teach-p0961",
736
+ "teach-p0967",
737
+ "teach-p0977",
738
+ "teach-p0978",
739
+ "teach-p0983",
740
+ "teach-p1004",
741
+ "teach-p1012",
742
+ "teach-p1017"
743
+ ]
744
+ },
745
+ {
746
+ "text": "is \"",
747
+ "role": "arg",
748
+ "support": [
749
+ "teach-p0004",
750
+ "teach-p0007",
751
+ "teach-p0009",
752
+ "teach-p0012",
753
+ "teach-p0026",
754
+ "teach-p0031",
755
+ "teach-p0038",
756
+ "teach-p0045",
757
+ "teach-p0050",
758
+ "teach-p0059",
759
+ "teach-p0061",
760
+ "teach-p0067",
761
+ "teach-p0082",
762
+ "teach-p0084",
763
+ "teach-p0087",
764
+ "teach-p0093",
765
+ "teach-p0117",
766
+ "teach-p0123",
767
+ "teach-p0128",
768
+ "teach-p0139",
769
+ "teach-p0140",
770
+ "teach-p0142",
771
+ "teach-p0175",
772
+ "teach-p0176",
773
+ "teach-p0187",
774
+ "teach-p0195",
775
+ "teach-p0201",
776
+ "teach-p0203",
777
+ "teach-p0215",
778
+ "teach-p0220",
779
+ "teach-p0223",
780
+ "teach-p0224",
781
+ "teach-p0231",
782
+ "teach-p0239",
783
+ "teach-p0240",
784
+ "teach-p0242",
785
+ "teach-p0257",
786
+ "teach-p0277",
787
+ "teach-p0293",
788
+ "teach-p0298",
789
+ "teach-p0304",
790
+ "teach-p0305",
791
+ "teach-p0317",
792
+ "teach-p0327",
793
+ "teach-p0339",
794
+ "teach-p0353",
795
+ "teach-p0356",
796
+ "teach-p0357",
797
+ "teach-p0359",
798
+ "teach-p0373",
799
+ "teach-p0375",
800
+ "teach-p0376",
801
+ "teach-p0383",
802
+ "teach-p0386",
803
+ "teach-p0391",
804
+ "teach-p0392",
805
+ "teach-p0433",
806
+ "teach-p0442",
807
+ "teach-p0443",
808
+ "teach-p0477",
809
+ "teach-p0489",
810
+ "teach-p0499",
811
+ "teach-p0530",
812
+ "teach-p0546",
813
+ "teach-p0550",
814
+ "teach-p0551",
815
+ "teach-p0561",
816
+ "teach-p0567",
817
+ "teach-p0570",
818
+ "teach-p0574",
819
+ "teach-p0580",
820
+ "teach-p0581",
821
+ "teach-p0588",
822
+ "teach-p0591",
823
+ "teach-p0603",
824
+ "teach-p0610",
825
+ "teach-p0617",
826
+ "teach-p0625",
827
+ "teach-p0631",
828
+ "teach-p0636",
829
+ "teach-p0637",
830
+ "teach-p0641",
831
+ "teach-p0643",
832
+ "teach-p0653",
833
+ "teach-p0656",
834
+ "teach-p0661",
835
+ "teach-p0666",
836
+ "teach-p0674",
837
+ "teach-p0679",
838
+ "teach-p0680",
839
+ "teach-p0695",
840
+ "teach-p0711",
841
+ "teach-p0727",
842
+ "teach-p0732",
843
+ "teach-p0739",
844
+ "teach-p0741",
845
+ "teach-p0749",
846
+ "teach-p0783",
847
+ "teach-p0789",
848
+ "teach-p0812",
849
+ "teach-p0818",
850
+ "teach-p0839",
851
+ "teach-p0850",
852
+ "teach-p0852",
853
+ "teach-p0855",
854
+ "teach-p0861",
855
+ "teach-p0878",
856
+ "teach-p0885",
857
+ "teach-p0888",
858
+ "teach-p0891",
859
+ "teach-p0897",
860
+ "teach-p0912",
861
+ "teach-p0914",
862
+ "teach-p0918",
863
+ "teach-p0919",
864
+ "teach-p0930",
865
+ "teach-p0943",
866
+ "teach-p0951",
867
+ "teach-p0965",
868
+ "teach-p0968",
869
+ "teach-p0970",
870
+ "teach-p0975",
871
+ "teach-p0979",
872
+ "teach-p0984",
873
+ "teach-p0993",
874
+ "teach-p1009",
875
+ "teach-p1023"
876
+ ]
877
+ },
878
+ {
879
+ "text": "list \"",
880
+ "role": "arg",
881
+ "support": [
882
+ "teach-p0000",
883
+ "teach-p0003",
884
+ "teach-p0005",
885
+ "teach-p0010",
886
+ "teach-p0014",
887
+ "teach-p0016",
888
+ "teach-p0022",
889
+ "teach-p0023",
890
+ "teach-p0025",
891
+ "teach-p0028",
892
+ "teach-p0029",
893
+ "teach-p0032",
894
+ "teach-p0033",
895
+ "teach-p0035",
896
+ "teach-p0036",
897
+ "teach-p0037",
898
+ "teach-p0040",
899
+ "teach-p0041",
900
+ "teach-p0042",
901
+ "teach-p0044",
902
+ "teach-p0046",
903
+ "teach-p0048",
904
+ "teach-p0049",
905
+ "teach-p0051",
906
+ "teach-p0053",
907
+ "teach-p0054",
908
+ "teach-p0056",
909
+ "teach-p0058",
910
+ "teach-p0060",
911
+ "teach-p0065",
912
+ "teach-p0069",
913
+ "teach-p0070",
914
+ "teach-p0072",
915
+ "teach-p0073",
916
+ "teach-p0074",
917
+ "teach-p0076",
918
+ "teach-p0078",
919
+ "teach-p0080",
920
+ "teach-p0085",
921
+ "teach-p0088",
922
+ "teach-p0090",
923
+ "teach-p0091",
924
+ "teach-p0092",
925
+ "teach-p0095",
926
+ "teach-p0102",
927
+ "teach-p0106",
928
+ "teach-p0109",
929
+ "teach-p0116",
930
+ "teach-p0118",
931
+ "teach-p0119",
932
+ "teach-p0122",
933
+ "teach-p0124",
934
+ "teach-p0126",
935
+ "teach-p0127",
936
+ "teach-p0129",
937
+ "teach-p0130",
938
+ "teach-p0132",
939
+ "teach-p0141",
940
+ "teach-p0147",
941
+ "teach-p0149",
942
+ "teach-p0150",
943
+ "teach-p0153",
944
+ "teach-p0154",
945
+ "teach-p0156",
946
+ "teach-p0159",
947
+ "teach-p0160",
948
+ "teach-p0163",
949
+ "teach-p0164",
950
+ "teach-p0166",
951
+ "teach-p0167",
952
+ "teach-p0168",
953
+ "teach-p0169",
954
+ "teach-p0171",
955
+ "teach-p0177",
956
+ "teach-p0178",
957
+ "teach-p0182",
958
+ "teach-p0188",
959
+ "teach-p0190",
960
+ "teach-p0191",
961
+ "teach-p0193",
962
+ "teach-p0197",
963
+ "teach-p0199",
964
+ "teach-p0200",
965
+ "teach-p0204",
966
+ "teach-p0205",
967
+ "teach-p0208",
968
+ "teach-p0209",
969
+ "teach-p0211",
970
+ "teach-p0212",
971
+ "teach-p0213",
972
+ "teach-p0217",
973
+ "teach-p0221",
974
+ "teach-p0225",
975
+ "teach-p0228",
976
+ "teach-p0232",
977
+ "teach-p0236",
978
+ "teach-p0237",
979
+ "teach-p0238",
980
+ "teach-p0241",
981
+ "teach-p0245",
982
+ "teach-p0246",
983
+ "teach-p0247",
984
+ "teach-p0248",
985
+ "teach-p0249",
986
+ "teach-p0250",
987
+ "teach-p0252",
988
+ "teach-p0253",
989
+ "teach-p0254",
990
+ "teach-p0255",
991
+ "teach-p0262",
992
+ "teach-p0265",
993
+ "teach-p0267",
994
+ "teach-p0268",
995
+ "teach-p0272",
996
+ "teach-p0274",
997
+ "teach-p0275",
998
+ "teach-p0276",
999
+ "teach-p0282",
1000
+ "teach-p0283",
1001
+ "teach-p0284",
1002
+ "teach-p0286",
1003
+ "teach-p0287",
1004
+ "teach-p0289",
1005
+ "teach-p0290",
1006
+ "teach-p0291",
1007
+ "teach-p0294",
1008
+ "teach-p0295",
1009
+ "teach-p0296",
1010
+ "teach-p0297",
1011
+ "teach-p0300",
1012
+ "teach-p0301",
1013
+ "teach-p0303",
1014
+ "teach-p0307",
1015
+ "teach-p0309",
1016
+ "teach-p0310",
1017
+ "teach-p0311",
1018
+ "teach-p0313",
1019
+ "teach-p0314",
1020
+ "teach-p0320",
1021
+ "teach-p0322",
1022
+ "teach-p0324",
1023
+ "teach-p0326",
1024
+ "teach-p0328",
1025
+ "teach-p0329",
1026
+ "teach-p0330",
1027
+ "teach-p0332",
1028
+ "teach-p0333",
1029
+ "teach-p0335",
1030
+ "teach-p0336",
1031
+ "teach-p0337",
1032
+ "teach-p0340",
1033
+ "teach-p0342",
1034
+ "teach-p0346",
1035
+ "teach-p0349",
1036
+ "teach-p0350",
1037
+ "teach-p0351",
1038
+ "teach-p0354",
1039
+ "teach-p0355",
1040
+ "teach-p0358",
1041
+ "teach-p0360",
1042
+ "teach-p0361",
1043
+ "teach-p0362",
1044
+ "teach-p0364",
1045
+ "teach-p0368",
1046
+ "teach-p0369",
1047
+ "teach-p0370",
1048
+ "teach-p0372",
1049
+ "teach-p0379",
1050
+ "teach-p0385",
1051
+ "teach-p0389",
1052
+ "teach-p0390",
1053
+ "teach-p0394",
1054
+ "teach-p0397",
1055
+ "teach-p0398",
1056
+ "teach-p0400",
1057
+ "teach-p0401",
1058
+ "teach-p0402",
1059
+ "teach-p0403",
1060
+ "teach-p0406",
1061
+ "teach-p0407",
1062
+ "teach-p0409",
1063
+ "teach-p0411",
1064
+ "teach-p0412",
1065
+ "teach-p0414",
1066
+ "teach-p0417",
1067
+ "teach-p0418",
1068
+ "teach-p0419",
1069
+ "teach-p0421",
1070
+ "teach-p0425",
1071
+ "teach-p0427",
1072
+ "teach-p0428",
1073
+ "teach-p0431",
1074
+ "teach-p0432",
1075
+ "teach-p0434",
1076
+ "teach-p0435",
1077
+ "teach-p0436",
1078
+ "teach-p0437",
1079
+ "teach-p0438",
1080
+ "teach-p0439",
1081
+ "teach-p0444",
1082
+ "teach-p0448",
1083
+ "teach-p0452",
1084
+ "teach-p0453",
1085
+ "teach-p0458",
1086
+ "teach-p0459",
1087
+ "teach-p0460",
1088
+ "teach-p0461",
1089
+ "teach-p0462",
1090
+ "teach-p0464",
1091
+ "teach-p0465",
1092
+ "teach-p0468",
1093
+ "teach-p0469",
1094
+ "teach-p0470",
1095
+ "teach-p0471",
1096
+ "teach-p0472",
1097
+ "teach-p0473",
1098
+ "teach-p0474",
1099
+ "teach-p0475",
1100
+ "teach-p0480",
1101
+ "teach-p0481",
1102
+ "teach-p0482",
1103
+ "teach-p0484",
1104
+ "teach-p0490",
1105
+ "teach-p0491",
1106
+ "teach-p0493",
1107
+ "teach-p0495",
1108
+ "teach-p0501",
1109
+ "teach-p0502",
1110
+ "teach-p0507",
1111
+ "teach-p0508",
1112
+ "teach-p0509",
1113
+ "teach-p0512",
1114
+ "teach-p0514",
1115
+ "teach-p0516",
1116
+ "teach-p0518",
1117
+ "teach-p0523",
1118
+ "teach-p0528",
1119
+ "teach-p0529",
1120
+ "teach-p0531",
1121
+ "teach-p0534",
1122
+ "teach-p0536",
1123
+ "teach-p0537",
1124
+ "teach-p0538",
1125
+ "teach-p0539",
1126
+ "teach-p0540",
1127
+ "teach-p0542",
1128
+ "teach-p0543",
1129
+ "teach-p0545",
1130
+ "teach-p0549",
1131
+ "teach-p0554",
1132
+ "teach-p0555",
1133
+ "teach-p0559",
1134
+ "teach-p0564",
1135
+ "teach-p0565",
1136
+ "teach-p0566",
1137
+ "teach-p0568",
1138
+ "teach-p0569",
1139
+ "teach-p0571",
1140
+ "teach-p0572",
1141
+ "teach-p0573",
1142
+ "teach-p0575",
1143
+ "teach-p0576",
1144
+ "teach-p0578",
1145
+ "teach-p0582",
1146
+ "teach-p0583",
1147
+ "teach-p0584",
1148
+ "teach-p0585",
1149
+ "teach-p0586",
1150
+ "teach-p0589",
1151
+ "teach-p0593",
1152
+ "teach-p0594",
1153
+ "teach-p0597",
1154
+ "teach-p0598",
1155
+ "teach-p0602",
1156
+ "teach-p0604",
1157
+ "teach-p0606",
1158
+ "teach-p0607",
1159
+ "teach-p0609",
1160
+ "teach-p0611",
1161
+ "teach-p0612",
1162
+ "teach-p0619",
1163
+ "teach-p0620",
1164
+ "teach-p0622",
1165
+ "teach-p0623",
1166
+ "teach-p0626",
1167
+ "teach-p0632",
1168
+ "teach-p0635",
1169
+ "teach-p0638",
1170
+ "teach-p0639",
1171
+ "teach-p0642",
1172
+ "teach-p0644",
1173
+ "teach-p0645",
1174
+ "teach-p0646",
1175
+ "teach-p0647",
1176
+ "teach-p0649",
1177
+ "teach-p0652",
1178
+ "teach-p0654",
1179
+ "teach-p0658",
1180
+ "teach-p0662",
1181
+ "teach-p0664",
1182
+ "teach-p0665",
1183
+ "teach-p0668",
1184
+ "teach-p0669",
1185
+ "teach-p0675",
1186
+ "teach-p0676",
1187
+ "teach-p0677",
1188
+ "teach-p0678",
1189
+ "teach-p0681",
1190
+ "teach-p0684",
1191
+ "teach-p0685",
1192
+ "teach-p0687",
1193
+ "teach-p0688",
1194
+ "teach-p0689",
1195
+ "teach-p0690",
1196
+ "teach-p0691",
1197
+ "teach-p0692",
1198
+ "teach-p0693",
1199
+ "teach-p0694",
1200
+ "teach-p0697",
1201
+ "teach-p0700",
1202
+ "teach-p0701",
1203
+ "teach-p0702",
1204
+ "teach-p0703",
1205
+ "teach-p0706",
1206
+ "teach-p0709",
1207
+ "teach-p0713",
1208
+ "teach-p0715",
1209
+ "teach-p0716",
1210
+ "teach-p0719",
1211
+ "teach-p0720",
1212
+ "teach-p0722",
1213
+ "teach-p0725",
1214
+ "teach-p0726",
1215
+ "teach-p0728",
1216
+ "teach-p0730",
1217
+ "teach-p0734",
1218
+ "teach-p0735",
1219
+ "teach-p0737",
1220
+ "teach-p0738",
1221
+ "teach-p0740",
1222
+ "teach-p0742",
1223
+ "teach-p0743",
1224
+ "teach-p0744",
1225
+ "teach-p0747",
1226
+ "teach-p0748",
1227
+ "teach-p0750",
1228
+ "teach-p0752",
1229
+ "teach-p0753",
1230
+ "teach-p0754",
1231
+ "teach-p0756",
1232
+ "teach-p0758",
1233
+ "teach-p0760",
1234
+ "teach-p0764",
1235
+ "teach-p0767",
1236
+ "teach-p0768",
1237
+ "teach-p0773",
1238
+ "teach-p0774",
1239
+ "teach-p0776",
1240
+ "teach-p0777",
1241
+ "teach-p0778",
1242
+ "teach-p0779",
1243
+ "teach-p0781",
1244
+ "teach-p0782",
1245
+ "teach-p0788",
1246
+ "teach-p0790",
1247
+ "teach-p0791",
1248
+ "teach-p0793",
1249
+ "teach-p0794",
1250
+ "teach-p0796",
1251
+ "teach-p0798",
1252
+ "teach-p0799",
1253
+ "teach-p0801",
1254
+ "teach-p0802",
1255
+ "teach-p0803",
1256
+ "teach-p0806",
1257
+ "teach-p0807",
1258
+ "teach-p0808",
1259
+ "teach-p0811",
1260
+ "teach-p0813",
1261
+ "teach-p0814",
1262
+ "teach-p0815",
1263
+ "teach-p0816",
1264
+ "teach-p0819",
1265
+ "teach-p0820",
1266
+ "teach-p0822",
1267
+ "teach-p0825",
1268
+ "teach-p0830",
1269
+ "teach-p0832",
1270
+ "teach-p0833",
1271
+ "teach-p0835",
1272
+ "teach-p0836",
1273
+ "teach-p0838",
1274
+ "teach-p0842",
1275
+ "teach-p0843",
1276
+ "teach-p0846",
1277
+ "teach-p0847",
1278
+ "teach-p0848",
1279
+ "teach-p0849",
1280
+ "teach-p0851",
1281
+ "teach-p0853",
1282
+ "teach-p0858",
1283
+ "teach-p0859",
1284
+ "teach-p0860",
1285
+ "teach-p0862",
1286
+ "teach-p0864",
1287
+ "teach-p0867",
1288
+ "teach-p0868",
1289
+ "teach-p0869",
1290
+ "teach-p0871",
1291
+ "teach-p0872",
1292
+ "teach-p0873",
1293
+ "teach-p0875",
1294
+ "teach-p0877",
1295
+ "teach-p0879",
1296
+ "teach-p0880",
1297
+ "teach-p0881",
1298
+ "teach-p0882",
1299
+ "teach-p0887",
1300
+ "teach-p0889",
1301
+ "teach-p0892",
1302
+ "teach-p0894",
1303
+ "teach-p0896",
1304
+ "teach-p0899",
1305
+ "teach-p0900",
1306
+ "teach-p0901",
1307
+ "teach-p0902",
1308
+ "teach-p0904",
1309
+ "teach-p0905",
1310
+ "teach-p0906",
1311
+ "teach-p0907",
1312
+ "teach-p0908",
1313
+ "teach-p0916",
1314
+ "teach-p0921",
1315
+ "teach-p0923",
1316
+ "teach-p0924",
1317
+ "teach-p0925",
1318
+ "teach-p0927",
1319
+ "teach-p0928",
1320
+ "teach-p0931",
1321
+ "teach-p0932",
1322
+ "teach-p0933",
1323
+ "teach-p0934",
1324
+ "teach-p0935",
1325
+ "teach-p0936",
1326
+ "teach-p0937",
1327
+ "teach-p0938",
1328
+ "teach-p0939",
1329
+ "teach-p0940",
1330
+ "teach-p0944",
1331
+ "teach-p0945",
1332
+ "teach-p0946",
1333
+ "teach-p0950",
1334
+ "teach-p0957",
1335
+ "teach-p0961",
1336
+ "teach-p0966",
1337
+ "teach-p0967",
1338
+ "teach-p0969",
1339
+ "teach-p0971",
1340
+ "teach-p0973",
1341
+ "teach-p0974",
1342
+ "teach-p0976",
1343
+ "teach-p0977",
1344
+ "teach-p0978",
1345
+ "teach-p0983",
1346
+ "teach-p0985",
1347
+ "teach-p0987",
1348
+ "teach-p0989",
1349
+ "teach-p0990",
1350
+ "teach-p0992",
1351
+ "teach-p0995",
1352
+ "teach-p0996",
1353
+ "teach-p0998",
1354
+ "teach-p1000",
1355
+ "teach-p1003",
1356
+ "teach-p1004",
1357
+ "teach-p1012",
1358
+ "teach-p1015",
1359
+ "teach-p1016",
1360
+ "teach-p1017",
1361
+ "teach-p1020",
1362
+ "teach-p1022"
1363
+ ]
1364
+ },
1365
+ {
1366
+ "text": "list called \"",
1367
+ "role": "arg",
1368
+ "support": [
1369
+ "teach-p0001",
1370
+ "teach-p0002",
1371
+ "teach-p0066",
1372
+ "teach-p0081",
1373
+ "teach-p0083",
1374
+ "teach-p0086",
1375
+ "teach-p0094",
1376
+ "teach-p0104",
1377
+ "teach-p0107",
1378
+ "teach-p0110",
1379
+ "teach-p0121",
1380
+ "teach-p0133",
1381
+ "teach-p0136",
1382
+ "teach-p0143",
1383
+ "teach-p0144",
1384
+ "teach-p0157",
1385
+ "teach-p0170",
1386
+ "teach-p0172",
1387
+ "teach-p0179",
1388
+ "teach-p0184",
1389
+ "teach-p0186",
1390
+ "teach-p0196",
1391
+ "teach-p0202",
1392
+ "teach-p0216",
1393
+ "teach-p0218",
1394
+ "teach-p0230",
1395
+ "teach-p0234",
1396
+ "teach-p0243",
1397
+ "teach-p0263",
1398
+ "teach-p0264",
1399
+ "teach-p0270",
1400
+ "teach-p0278",
1401
+ "teach-p0285",
1402
+ "teach-p0315",
1403
+ "teach-p0319",
1404
+ "teach-p0323",
1405
+ "teach-p0331",
1406
+ "teach-p0341",
1407
+ "teach-p0348",
1408
+ "teach-p0371",
1409
+ "teach-p0374",
1410
+ "teach-p0378",
1411
+ "teach-p0380",
1412
+ "teach-p0381",
1413
+ "teach-p0396",
1414
+ "teach-p0399",
1415
+ "teach-p0404",
1416
+ "teach-p0416",
1417
+ "teach-p0422",
1418
+ "teach-p0440",
1419
+ "teach-p0450",
1420
+ "teach-p0451",
1421
+ "teach-p0455",
1422
+ "teach-p0463",
1423
+ "teach-p0487",
1424
+ "teach-p0488",
1425
+ "teach-p0496",
1426
+ "teach-p0503",
1427
+ "teach-p0504",
1428
+ "teach-p0506",
1429
+ "teach-p0517",
1430
+ "teach-p0520",
1431
+ "teach-p0521",
1432
+ "teach-p0526",
1433
+ "teach-p0527",
1434
+ "teach-p0541",
1435
+ "teach-p0544",
1436
+ "teach-p0562",
1437
+ "teach-p0590",
1438
+ "teach-p0599",
1439
+ "teach-p0600",
1440
+ "teach-p0605",
1441
+ "teach-p0614",
1442
+ "teach-p0618",
1443
+ "teach-p0621",
1444
+ "teach-p0633",
1445
+ "teach-p0640",
1446
+ "teach-p0663",
1447
+ "teach-p0672",
1448
+ "teach-p0683",
1449
+ "teach-p0696",
1450
+ "teach-p0698",
1451
+ "teach-p0707",
1452
+ "teach-p0710",
1453
+ "teach-p0718",
1454
+ "teach-p0723",
1455
+ "teach-p0724",
1456
+ "teach-p0736",
1457
+ "teach-p0746",
1458
+ "teach-p0751",
1459
+ "teach-p0755",
1460
+ "teach-p0759",
1461
+ "teach-p0786",
1462
+ "teach-p0795",
1463
+ "teach-p0797",
1464
+ "teach-p0800",
1465
+ "teach-p0809",
1466
+ "teach-p0821",
1467
+ "teach-p0826",
1468
+ "teach-p0834",
1469
+ "teach-p0840",
1470
+ "teach-p0854",
1471
+ "teach-p0856",
1472
+ "teach-p0874",
1473
+ "teach-p0883",
1474
+ "teach-p0884",
1475
+ "teach-p0893",
1476
+ "teach-p0909",
1477
+ "teach-p0911",
1478
+ "teach-p0920",
1479
+ "teach-p0922",
1480
+ "teach-p0926",
1481
+ "teach-p0929",
1482
+ "teach-p0941",
1483
+ "teach-p0942",
1484
+ "teach-p0948",
1485
+ "teach-p0952",
1486
+ "teach-p0953",
1487
+ "teach-p0955",
1488
+ "teach-p0958",
1489
+ "teach-p0972",
1490
+ "teach-p0982",
1491
+ "teach-p0986",
1492
+ "teach-p0988",
1493
+ "teach-p0994",
1494
+ "teach-p0999",
1495
+ "teach-p1002",
1496
+ "teach-p1005",
1497
+ "teach-p1007",
1498
+ "teach-p1008",
1499
+ "teach-p1010",
1500
+ "teach-p1014"
1501
+ ]
1502
+ },
1503
+ {
1504
+ "text": "named \"",
1505
+ "role": "fn",
1506
+ "support": [
1507
+ "teach-p0001",
1508
+ "teach-p0002",
1509
+ "teach-p0006",
1510
+ "teach-p0011",
1511
+ "teach-p0013",
1512
+ "teach-p0019",
1513
+ "teach-p0020",
1514
+ "teach-p0021",
1515
+ "teach-p0024",
1516
+ "teach-p0027",
1517
+ "teach-p0034",
1518
+ "teach-p0039",
1519
+ "teach-p0043",
1520
+ "teach-p0047",
1521
+ "teach-p0052",
1522
+ "teach-p0055",
1523
+ "teach-p0057",
1524
+ "teach-p0062",
1525
+ "teach-p0063",
1526
+ "teach-p0066",
1527
+ "teach-p0071",
1528
+ "teach-p0079",
1529
+ "teach-p0081",
1530
+ "teach-p0083",
1531
+ "teach-p0086",
1532
+ "teach-p0089",
1533
+ "teach-p0094",
1534
+ "teach-p0097",
1535
+ "teach-p0099",
1536
+ "teach-p0100",
1537
+ "teach-p0101",
1538
+ "teach-p0103",
1539
+ "teach-p0104",
1540
+ "teach-p0107",
1541
+ "teach-p0110",
1542
+ "teach-p0112",
1543
+ "teach-p0113",
1544
+ "teach-p0114",
1545
+ "teach-p0120",
1546
+ "teach-p0121",
1547
+ "teach-p0131",
1548
+ "teach-p0133",
1549
+ "teach-p0134",
1550
+ "teach-p0136",
1551
+ "teach-p0137",
1552
+ "teach-p0143",
1553
+ "teach-p0144",
1554
+ "teach-p0146",
1555
+ "teach-p0151",
1556
+ "teach-p0152",
1557
+ "teach-p0155",
1558
+ "teach-p0157",
1559
+ "teach-p0158",
1560
+ "teach-p0161",
1561
+ "teach-p0162",
1562
+ "teach-p0165",
1563
+ "teach-p0170",
1564
+ "teach-p0172",
1565
+ "teach-p0173",
1566
+ "teach-p0174",
1567
+ "teach-p0179",
1568
+ "teach-p0180",
1569
+ "teach-p0181",
1570
+ "teach-p0183",
1571
+ "teach-p0184",
1572
+ "teach-p0185",
1573
+ "teach-p0186",
1574
+ "teach-p0189",
1575
+ "teach-p0194",
1576
+ "teach-p0196",
1577
+ "teach-p0198",
1578
+ "teach-p0202",
1579
+ "teach-p0206",
1580
+ "teach-p0210",
1581
+ "teach-p0214",
1582
+ "teach-p0216",
1583
+ "teach-p0218",
1584
+ "teach-p0222",
1585
+ "teach-p0226",
1586
+ "teach-p0227",
1587
+ "teach-p0229",
1588
+ "teach-p0230",
1589
+ "teach-p0234",
1590
+ "teach-p0243",
1591
+ "teach-p0256",
1592
+ "teach-p0259",
1593
+ "teach-p0260",
1594
+ "teach-p0261",
1595
+ "teach-p0263",
1596
+ "teach-p0264",
1597
+ "teach-p0266",
1598
+ "teach-p0269",
1599
+ "teach-p0270",
1600
+ "teach-p0271",
1601
+ "teach-p0273",
1602
+ "teach-p0278",
1603
+ "teach-p0280",
1604
+ "teach-p0281",
1605
+ "teach-p0285",
1606
+ "teach-p0292",
1607
+ "teach-p0299",
1608
+ "teach-p0312",
1609
+ "teach-p0315",
1610
+ "teach-p0319",
1611
+ "teach-p0321",
1612
+ "teach-p0323",
1613
+ "teach-p0331",
1614
+ "teach-p0334",
1615
+ "teach-p0338",
1616
+ "teach-p0341",
1617
+ "teach-p0343",
1618
+ "teach-p0348",
1619
+ "teach-p0352",
1620
+ "teach-p0363",
1621
+ "teach-p0365",
1622
+ "teach-p0371",
1623
+ "teach-p0374",
1624
+ "teach-p0378",
1625
+ "teach-p0380",
1626
+ "teach-p0381",
1627
+ "teach-p0384",
1628
+ "teach-p0387",
1629
+ "teach-p0396",
1630
+ "teach-p0399",
1631
+ "teach-p0404",
1632
+ "teach-p0405",
1633
+ "teach-p0413",
1634
+ "teach-p0416",
1635
+ "teach-p0422",
1636
+ "teach-p0423",
1637
+ "teach-p0426",
1638
+ "teach-p0430",
1639
+ "teach-p0440",
1640
+ "teach-p0441",
1641
+ "teach-p0446",
1642
+ "teach-p0449",
1643
+ "teach-p0450",
1644
+ "teach-p0451",
1645
+ "teach-p0455",
1646
+ "teach-p0456",
1647
+ "teach-p0457",
1648
+ "teach-p0463",
1649
+ "teach-p0466",
1650
+ "teach-p0467",
1651
+ "teach-p0476",
1652
+ "teach-p0478",
1653
+ "teach-p0483",
1654
+ "teach-p0487",
1655
+ "teach-p0488",
1656
+ "teach-p0494",
1657
+ "teach-p0496",
1658
+ "teach-p0500",
1659
+ "teach-p0503",
1660
+ "teach-p0504",
1661
+ "teach-p0505",
1662
+ "teach-p0506",
1663
+ "teach-p0511",
1664
+ "teach-p0515",
1665
+ "teach-p0517",
1666
+ "teach-p0520",
1667
+ "teach-p0521",
1668
+ "teach-p0525",
1669
+ "teach-p0526",
1670
+ "teach-p0527",
1671
+ "teach-p0532",
1672
+ "teach-p0535",
1673
+ "teach-p0541",
1674
+ "teach-p0544",
1675
+ "teach-p0547",
1676
+ "teach-p0548",
1677
+ "teach-p0552",
1678
+ "teach-p0556",
1679
+ "teach-p0558",
1680
+ "teach-p0562",
1681
+ "teach-p0577",
1682
+ "teach-p0579",
1683
+ "teach-p0587",
1684
+ "teach-p0590",
1685
+ "teach-p0592",
1686
+ "teach-p0599",
1687
+ "teach-p0600",
1688
+ "teach-p0605",
1689
+ "teach-p0608",
1690
+ "teach-p0613",
1691
+ "teach-p0614",
1692
+ "teach-p0618",
1693
+ "teach-p0621",
1694
+ "teach-p0628",
1695
+ "teach-p0629",
1696
+ "teach-p0630",
1697
+ "teach-p0633",
1698
+ "teach-p0634",
1699
+ "teach-p0640",
1700
+ "teach-p0648",
1701
+ "teach-p0659",
1702
+ "teach-p0660",
1703
+ "teach-p0663",
1704
+ "teach-p0667",
1705
+ "teach-p0670",
1706
+ "teach-p0672",
1707
+ "teach-p0673",
1708
+ "teach-p0683",
1709
+ "teach-p0686",
1710
+ "teach-p0696",
1711
+ "teach-p0698",
1712
+ "teach-p0699",
1713
+ "teach-p0705",
1714
+ "teach-p0707",
1715
+ "teach-p0708",
1716
+ "teach-p0710",
1717
+ "teach-p0712",
1718
+ "teach-p0717",
1719
+ "teach-p0718",
1720
+ "teach-p0721",
1721
+ "teach-p0723",
1722
+ "teach-p0724",
1723
+ "teach-p0731",
1724
+ "teach-p0733",
1725
+ "teach-p0736",
1726
+ "teach-p0745",
1727
+ "teach-p0746",
1728
+ "teach-p0751",
1729
+ "teach-p0755",
1730
+ "teach-p0757",
1731
+ "teach-p0759",
1732
+ "teach-p0761",
1733
+ "teach-p0772",
1734
+ "teach-p0775",
1735
+ "teach-p0784",
1736
+ "teach-p0785",
1737
+ "teach-p0786",
1738
+ "teach-p0787",
1739
+ "teach-p0792",
1740
+ "teach-p0795",
1741
+ "teach-p0797",
1742
+ "teach-p0800",
1743
+ "teach-p0804",
1744
+ "teach-p0805",
1745
+ "teach-p0809",
1746
+ "teach-p0810",
1747
+ "teach-p0817",
1748
+ "teach-p0821",
1749
+ "teach-p0826",
1750
+ "teach-p0828",
1751
+ "teach-p0834",
1752
+ "teach-p0837",
1753
+ "teach-p0840",
1754
+ "teach-p0841",
1755
+ "teach-p0844",
1756
+ "teach-p0854",
1757
+ "teach-p0856",
1758
+ "teach-p0857",
1759
+ "teach-p0863",
1760
+ "teach-p0865",
1761
+ "teach-p0870",
1762
+ "teach-p0874",
1763
+ "teach-p0876",
1764
+ "teach-p0883",
1765
+ "teach-p0884",
1766
+ "teach-p0886",
1767
+ "teach-p0890",
1768
+ "teach-p0893",
1769
+ "teach-p0895",
1770
+ "teach-p0898",
1771
+ "teach-p0909",
1772
+ "teach-p0910",
1773
+ "teach-p0911",
1774
+ "teach-p0915",
1775
+ "teach-p0917",
1776
+ "teach-p0920",
1777
+ "teach-p0922",
1778
+ "teach-p0926",
1779
+ "teach-p0929",
1780
+ "teach-p0941",
1781
+ "teach-p0942",
1782
+ "teach-p0947",
1783
+ "teach-p0948",
1784
+ "teach-p0949",
1785
+ "teach-p0952",
1786
+ "teach-p0953",
1787
+ "teach-p0954",
1788
+ "teach-p0955",
1789
+ "teach-p0956",
1790
+ "teach-p0958",
1791
+ "teach-p0960",
1792
+ "teach-p0962",
1793
+ "teach-p0963",
1794
+ "teach-p0972",
1795
+ "teach-p0980",
1796
+ "teach-p0982",
1797
+ "teach-p0986",
1798
+ "teach-p0988",
1799
+ "teach-p0994",
1800
+ "teach-p0999",
1801
+ "teach-p1001",
1802
+ "teach-p1002",
1803
+ "teach-p1005",
1804
+ "teach-p1006",
1805
+ "teach-p1007",
1806
+ "teach-p1008",
1807
+ "teach-p1010",
1808
+ "teach-p1011",
1809
+ "teach-p1013",
1810
+ "teach-p1014",
1811
+ "teach-p1018",
1812
+ "teach-p1019"
1813
+ ]
1814
+ },
1815
+ {
1816
+ "text": "parameter \"",
1817
+ "role": "arg",
1818
+ "support": [
1819
+ "teach-p0006",
1820
+ "teach-p0008",
1821
+ "teach-p0011",
1822
+ "teach-p0013",
1823
+ "teach-p0015",
1824
+ "teach-p0017",
1825
+ "teach-p0018",
1826
+ "teach-p0019",
1827
+ "teach-p0020",
1828
+ "teach-p0021",
1829
+ "teach-p0024",
1830
+ "teach-p0027",
1831
+ "teach-p0030",
1832
+ "teach-p0034",
1833
+ "teach-p0039",
1834
+ "teach-p0043",
1835
+ "teach-p0047",
1836
+ "teach-p0052",
1837
+ "teach-p0055",
1838
+ "teach-p0057",
1839
+ "teach-p0062",
1840
+ "teach-p0063",
1841
+ "teach-p0064",
1842
+ "teach-p0068",
1843
+ "teach-p0071",
1844
+ "teach-p0075",
1845
+ "teach-p0077",
1846
+ "teach-p0079",
1847
+ "teach-p0089",
1848
+ "teach-p0096",
1849
+ "teach-p0097",
1850
+ "teach-p0098",
1851
+ "teach-p0099",
1852
+ "teach-p0100",
1853
+ "teach-p0101",
1854
+ "teach-p0103",
1855
+ "teach-p0105",
1856
+ "teach-p0108",
1857
+ "teach-p0111",
1858
+ "teach-p0112",
1859
+ "teach-p0113",
1860
+ "teach-p0114",
1861
+ "teach-p0115",
1862
+ "teach-p0120",
1863
+ "teach-p0125",
1864
+ "teach-p0131",
1865
+ "teach-p0134",
1866
+ "teach-p0135",
1867
+ "teach-p0137",
1868
+ "teach-p0138",
1869
+ "teach-p0145",
1870
+ "teach-p0146",
1871
+ "teach-p0148",
1872
+ "teach-p0151",
1873
+ "teach-p0152",
1874
+ "teach-p0155",
1875
+ "teach-p0158",
1876
+ "teach-p0161",
1877
+ "teach-p0162",
1878
+ "teach-p0165",
1879
+ "teach-p0173",
1880
+ "teach-p0174",
1881
+ "teach-p0180",
1882
+ "teach-p0181",
1883
+ "teach-p0183",
1884
+ "teach-p0185",
1885
+ "teach-p0189",
1886
+ "teach-p0192",
1887
+ "teach-p0194",
1888
+ "teach-p0198",
1889
+ "teach-p0206",
1890
+ "teach-p0207",
1891
+ "teach-p0210",
1892
+ "teach-p0214",
1893
+ "teach-p0219",
1894
+ "teach-p0222",
1895
+ "teach-p0226",
1896
+ "teach-p0227",
1897
+ "teach-p0229",
1898
+ "teach-p0233",
1899
+ "teach-p0235",
1900
+ "teach-p0244",
1901
+ "teach-p0251",
1902
+ "teach-p0256",
1903
+ "teach-p0258",
1904
+ "teach-p0259",
1905
+ "teach-p0260",
1906
+ "teach-p0261",
1907
+ "teach-p0266",
1908
+ "teach-p0269",
1909
+ "teach-p0271",
1910
+ "teach-p0273",
1911
+ "teach-p0279",
1912
+ "teach-p0280",
1913
+ "teach-p0281",
1914
+ "teach-p0288",
1915
+ "teach-p0292",
1916
+ "teach-p0299",
1917
+ "teach-p0302",
1918
+ "teach-p0306",
1919
+ "teach-p0308",
1920
+ "teach-p0312",
1921
+ "teach-p0316",
1922
+ "teach-p0318",
1923
+ "teach-p0321",
1924
+ "teach-p0325",
1925
+ "teach-p0334",
1926
+ "teach-p0338",
1927
+ "teach-p0343",
1928
+ "teach-p0344",
1929
+ "teach-p0345",
1930
+ "teach-p0347",
1931
+ "teach-p0352",
1932
+ "teach-p0363",
1933
+ "teach-p0365",
1934
+ "teach-p0366",
1935
+ "teach-p0367",
1936
+ "teach-p0377",
1937
+ "teach-p0382",
1938
+ "teach-p0384",
1939
+ "teach-p0387",
1940
+ "teach-p0388",
1941
+ "teach-p0393",
1942
+ "teach-p0395",
1943
+ "teach-p0405",
1944
+ "teach-p0408",
1945
+ "teach-p0410",
1946
+ "teach-p0413",
1947
+ "teach-p0415",
1948
+ "teach-p0420",
1949
+ "teach-p0423",
1950
+ "teach-p0424",
1951
+ "teach-p0426",
1952
+ "teach-p0429",
1953
+ "teach-p0430",
1954
+ "teach-p0441",
1955
+ "teach-p0445",
1956
+ "teach-p0446",
1957
+ "teach-p0447",
1958
+ "teach-p0449",
1959
+ "teach-p0454",
1960
+ "teach-p0456",
1961
+ "teach-p0457",
1962
+ "teach-p0466",
1963
+ "teach-p0467",
1964
+ "teach-p0476",
1965
+ "teach-p0478",
1966
+ "teach-p0479",
1967
+ "teach-p0483",
1968
+ "teach-p0485",
1969
+ "teach-p0486",
1970
+ "teach-p0492",
1971
+ "teach-p0494",
1972
+ "teach-p0497",
1973
+ "teach-p0498",
1974
+ "teach-p0500",
1975
+ "teach-p0505",
1976
+ "teach-p0510",
1977
+ "teach-p0511",
1978
+ "teach-p0513",
1979
+ "teach-p0515",
1980
+ "teach-p0519",
1981
+ "teach-p0522",
1982
+ "teach-p0524",
1983
+ "teach-p0525",
1984
+ "teach-p0532",
1985
+ "teach-p0533",
1986
+ "teach-p0535",
1987
+ "teach-p0547",
1988
+ "teach-p0548",
1989
+ "teach-p0552",
1990
+ "teach-p0553",
1991
+ "teach-p0556",
1992
+ "teach-p0557",
1993
+ "teach-p0558",
1994
+ "teach-p0560",
1995
+ "teach-p0563",
1996
+ "teach-p0577",
1997
+ "teach-p0579",
1998
+ "teach-p0587",
1999
+ "teach-p0592",
2000
+ "teach-p0595",
2001
+ "teach-p0596",
2002
+ "teach-p0601",
2003
+ "teach-p0608",
2004
+ "teach-p0613",
2005
+ "teach-p0615",
2006
+ "teach-p0616",
2007
+ "teach-p0624",
2008
+ "teach-p0627",
2009
+ "teach-p0628",
2010
+ "teach-p0629",
2011
+ "teach-p0630",
2012
+ "teach-p0634",
2013
+ "teach-p0648",
2014
+ "teach-p0650",
2015
+ "teach-p0651",
2016
+ "teach-p0655",
2017
+ "teach-p0657",
2018
+ "teach-p0659",
2019
+ "teach-p0660",
2020
+ "teach-p0667",
2021
+ "teach-p0670",
2022
+ "teach-p0671",
2023
+ "teach-p0673",
2024
+ "teach-p0682",
2025
+ "teach-p0686",
2026
+ "teach-p0699",
2027
+ "teach-p0704",
2028
+ "teach-p0705",
2029
+ "teach-p0708",
2030
+ "teach-p0712",
2031
+ "teach-p0714",
2032
+ "teach-p0717",
2033
+ "teach-p0721",
2034
+ "teach-p0729",
2035
+ "teach-p0731",
2036
+ "teach-p0733",
2037
+ "teach-p0745",
2038
+ "teach-p0757",
2039
+ "teach-p0761",
2040
+ "teach-p0762",
2041
+ "teach-p0763",
2042
+ "teach-p0765",
2043
+ "teach-p0766",
2044
+ "teach-p0769",
2045
+ "teach-p0770",
2046
+ "teach-p0771",
2047
+ "teach-p0772",
2048
+ "teach-p0775",
2049
+ "teach-p0780",
2050
+ "teach-p0784",
2051
+ "teach-p0785",
2052
+ "teach-p0787",
2053
+ "teach-p0792",
2054
+ "teach-p0804",
2055
+ "teach-p0805",
2056
+ "teach-p0810",
2057
+ "teach-p0817",
2058
+ "teach-p0823",
2059
+ "teach-p0824",
2060
+ "teach-p0827",
2061
+ "teach-p0828",
2062
+ "teach-p0829",
2063
+ "teach-p0831",
2064
+ "teach-p0837",
2065
+ "teach-p0841",
2066
+ "teach-p0844",
2067
+ "teach-p0845",
2068
+ "teach-p0857",
2069
+ "teach-p0863",
2070
+ "teach-p0865",
2071
+ "teach-p0866",
2072
+ "teach-p0870",
2073
+ "teach-p0876",
2074
+ "teach-p0886",
2075
+ "teach-p0890",
2076
+ "teach-p0895",
2077
+ "teach-p0898",
2078
+ "teach-p0903",
2079
+ "teach-p0910",
2080
+ "teach-p0913",
2081
+ "teach-p0915",
2082
+ "teach-p0917",
2083
+ "teach-p0947",
2084
+ "teach-p0949",
2085
+ "teach-p0954",
2086
+ "teach-p0956",
2087
+ "teach-p0959",
2088
+ "teach-p0960",
2089
+ "teach-p0962",
2090
+ "teach-p0963",
2091
+ "teach-p0964",
2092
+ "teach-p0980",
2093
+ "teach-p0981",
2094
+ "teach-p0991",
2095
+ "teach-p0997",
2096
+ "teach-p1001",
2097
+ "teach-p1006",
2098
+ "teach-p1011",
2099
+ "teach-p1013",
2100
+ "teach-p1018",
2101
+ "teach-p1019",
2102
+ "teach-p1021"
2103
+ ]
2104
+ }
2105
+ ],
2106
+ "windows": [
2107
+ {
2108
+ "L": "copy",
2109
+ "slot": false,
2110
+ "R": "",
2111
+ "family": "dedup",
2112
+ "binds_next_literal": false,
2113
+ "support": [
2114
+ "teach-p0215"
2115
+ ]
2116
+ },
2117
+ {
2118
+ "L": "drop",
2119
+ "slot": false,
2120
+ "R": "",
2121
+ "family": "dedup",
2122
+ "binds_next_literal": false,
2123
+ "support": [
2124
+ "teach-p0328"
2125
+ ]
2126
+ },
2127
+ {
2128
+ "L": "duplicate",
2129
+ "slot": false,
2130
+ "R": "",
2131
+ "family": "dedup",
2132
+ "binds_next_literal": false,
2133
+ "support": [
2134
+ "teach-p0008",
2135
+ "teach-p0475"
2136
+ ]
2137
+ },
2138
+ {
2139
+ "L": "from ",
2140
+ "slot": true,
2141
+ "R": "",
2142
+ "family": "filter!=",
2143
+ "binds_next_literal": false,
2144
+ "support": [
2145
+ "teach-p0042",
2146
+ "teach-p0128",
2147
+ "teach-p0172",
2148
+ "teach-p0179",
2149
+ "teach-p0199",
2150
+ "teach-p0232",
2151
+ "teach-p0246",
2152
+ "teach-p0290",
2153
+ "teach-p0296",
2154
+ "teach-p0304",
2155
+ "teach-p0329",
2156
+ "teach-p0500"
2157
+ ]
2158
+ },
2159
+ {
2160
+ "L": "not",
2161
+ "slot": false,
2162
+ "R": "",
2163
+ "family": "filter!=",
2164
+ "binds_next_literal": true,
2165
+ "support": [
2166
+ "teach-p0027",
2167
+ "teach-p0038",
2168
+ "teach-p0052",
2169
+ "teach-p0057",
2170
+ "teach-p0068",
2171
+ "teach-p0082",
2172
+ "teach-p0142",
2173
+ "teach-p0148",
2174
+ "teach-p0160",
2175
+ "teach-p0261",
2176
+ "teach-p0265",
2177
+ "teach-p0272",
2178
+ "teach-p0313",
2179
+ "teach-p0358",
2180
+ "teach-p0391",
2181
+ "teach-p0392",
2182
+ "teach-p0427",
2183
+ "teach-p0460"
2184
+ ]
2185
+ },
2186
+ {
2187
+ "L": "value equal",
2188
+ "slot": false,
2189
+ "R": "",
2190
+ "family": "filter!=",
2191
+ "binds_next_literal": true,
2192
+ "support": [
2193
+ "teach-p0054",
2194
+ "teach-p0092",
2195
+ "teach-p0121",
2196
+ "teach-p0222",
2197
+ "teach-p0226",
2198
+ "teach-p0234",
2199
+ "teach-p0285",
2200
+ "teach-p0289",
2201
+ "teach-p0312",
2202
+ "teach-p0342",
2203
+ "teach-p0436",
2204
+ "teach-p0463",
2205
+ "teach-p0465",
2206
+ "teach-p0504"
2207
+ ]
2208
+ },
2209
+ {
2210
+ "L": "below",
2211
+ "slot": false,
2212
+ "R": "",
2213
+ "family": "filter<",
2214
+ "binds_next_literal": true,
2215
+ "support": [
2216
+ "teach-p0003",
2217
+ "teach-p0019",
2218
+ "teach-p0108",
2219
+ "teach-p0111",
2220
+ "teach-p0126",
2221
+ "teach-p0158",
2222
+ "teach-p0167",
2223
+ "teach-p0171",
2224
+ "teach-p0182",
2225
+ "teach-p0184",
2226
+ "teach-p0213",
2227
+ "teach-p0217",
2228
+ "teach-p0258",
2229
+ "teach-p0308",
2230
+ "teach-p0344",
2231
+ "teach-p0346",
2232
+ "teach-p0396",
2233
+ "teach-p0420",
2234
+ "teach-p0440",
2235
+ "teach-p0450",
2236
+ "teach-p0453",
2237
+ "teach-p0501",
2238
+ "teach-p0505"
2239
+ ]
2240
+ },
2241
+ {
2242
+ "L": "less than ",
2243
+ "slot": true,
2244
+ "R": "",
2245
+ "family": "filter<",
2246
+ "binds_next_literal": false,
2247
+ "support": [
2248
+ "teach-p0014",
2249
+ "teach-p0087",
2250
+ "teach-p0119",
2251
+ "teach-p0140",
2252
+ "teach-p0149",
2253
+ "teach-p0233",
2254
+ "teach-p0247",
2255
+ "teach-p0310",
2256
+ "teach-p0321",
2257
+ "teach-p0359",
2258
+ "teach-p0361",
2259
+ "teach-p0382",
2260
+ "teach-p0397",
2261
+ "teach-p0406",
2262
+ "teach-p0412",
2263
+ "teach-p0441",
2264
+ "teach-p0461",
2265
+ "teach-p0476"
2266
+ ]
2267
+ },
2268
+ {
2269
+ "L": "smaller",
2270
+ "slot": false,
2271
+ "R": "",
2272
+ "family": "filter<",
2273
+ "binds_next_literal": true,
2274
+ "support": [
2275
+ "teach-p0066",
2276
+ "teach-p0081",
2277
+ "teach-p0175",
2278
+ "teach-p0176",
2279
+ "teach-p0186",
2280
+ "teach-p0210",
2281
+ "teach-p0243",
2282
+ "teach-p0254",
2283
+ "teach-p0339",
2284
+ "teach-p0348",
2285
+ "teach-p0443",
2286
+ "teach-p0449",
2287
+ "teach-p0470",
2288
+ "teach-p0499"
2289
+ ]
2290
+ },
2291
+ {
2292
+ "L": "",
2293
+ "slot": true,
2294
+ "R": " or less",
2295
+ "family": "filter<=",
2296
+ "binds_next_literal": false,
2297
+ "support": [
2298
+ "teach-p0022",
2299
+ "teach-p0105",
2300
+ "teach-p0168",
2301
+ "teach-p0238",
2302
+ "teach-p0250",
2303
+ "teach-p0279",
2304
+ "teach-p0345",
2305
+ "teach-p0349",
2306
+ "teach-p0381",
2307
+ "teach-p0429"
2308
+ ]
2309
+ },
2310
+ {
2311
+ "L": "less than or",
2312
+ "slot": false,
2313
+ "R": "",
2314
+ "family": "filter<=",
2315
+ "binds_next_literal": true,
2316
+ "support": [
2317
+ "teach-p0047",
2318
+ "teach-p0063",
2319
+ "teach-p0083",
2320
+ "teach-p0090",
2321
+ "teach-p0129",
2322
+ "teach-p0260",
2323
+ "teach-p0270",
2324
+ "teach-p0280",
2325
+ "teach-p0287",
2326
+ "teach-p0351",
2327
+ "teach-p0373",
2328
+ "teach-p0375",
2329
+ "teach-p0405",
2330
+ "teach-p0434",
2331
+ "teach-p0435",
2332
+ "teach-p0466",
2333
+ "teach-p0482"
2334
+ ]
2335
+ },
2336
+ {
2337
+ "L": "most",
2338
+ "slot": false,
2339
+ "R": "",
2340
+ "family": "filter<=",
2341
+ "binds_next_literal": true,
2342
+ "support": [
2343
+ "teach-p0041",
2344
+ "teach-p0044",
2345
+ "teach-p0078",
2346
+ "teach-p0117",
2347
+ "teach-p0137",
2348
+ "teach-p0156",
2349
+ "teach-p0177",
2350
+ "teach-p0192",
2351
+ "teach-p0200",
2352
+ "teach-p0206",
2353
+ "teach-p0225",
2354
+ "teach-p0245",
2355
+ "teach-p0300",
2356
+ "teach-p0390",
2357
+ "teach-p0415",
2358
+ "teach-p0418",
2359
+ "teach-p0428",
2360
+ "teach-p0431",
2361
+ "teach-p0439",
2362
+ "teach-p0481"
2363
+ ]
2364
+ },
2365
+ {
2366
+ "L": "equal ",
2367
+ "slot": true,
2368
+ "R": "",
2369
+ "family": "filter==",
2370
+ "binds_next_literal": false,
2371
+ "support": [
2372
+ "teach-p0001",
2373
+ "teach-p0035",
2374
+ "teach-p0144",
2375
+ "teach-p0207",
2376
+ "teach-p0218",
2377
+ "teach-p0320",
2378
+ "teach-p0355",
2379
+ "teach-p0414",
2380
+ "teach-p0447",
2381
+ "teach-p0479",
2382
+ "teach-p0496",
2383
+ "teach-p0506"
2384
+ ]
2385
+ },
2386
+ {
2387
+ "L": "exactly",
2388
+ "slot": false,
2389
+ "R": "",
2390
+ "family": "filter==",
2391
+ "binds_next_literal": true,
2392
+ "support": [
2393
+ "teach-p0056",
2394
+ "teach-p0097",
2395
+ "teach-p0100",
2396
+ "teach-p0107",
2397
+ "teach-p0155",
2398
+ "teach-p0157",
2399
+ "teach-p0204",
2400
+ "teach-p0236",
2401
+ "teach-p0292",
2402
+ "teach-p0350",
2403
+ "teach-p0394",
2404
+ "teach-p0398",
2405
+ "teach-p0469",
2406
+ "teach-p0495"
2407
+ ]
2408
+ },
2409
+ {
2410
+ "L": "numbers equal",
2411
+ "slot": false,
2412
+ "R": "",
2413
+ "family": "filter==",
2414
+ "binds_next_literal": true,
2415
+ "support": [
2416
+ "teach-p0017",
2417
+ "teach-p0050",
2418
+ "teach-p0053",
2419
+ "teach-p0141",
2420
+ "teach-p0152",
2421
+ "teach-p0205",
2422
+ "teach-p0224",
2423
+ "teach-p0239",
2424
+ "teach-p0266",
2425
+ "teach-p0273",
2426
+ "teach-p0305",
2427
+ "teach-p0360",
2428
+ "teach-p0363",
2429
+ "teach-p0389",
2430
+ "teach-p0433",
2431
+ "teach-p0452",
2432
+ "teach-p0477",
2433
+ "teach-p0510"
2434
+ ]
2435
+ },
2436
+ {
2437
+ "L": "above",
2438
+ "slot": false,
2439
+ "R": "",
2440
+ "family": "filter>",
2441
+ "binds_next_literal": true,
2442
+ "support": [
2443
+ "teach-p0011",
2444
+ "teach-p0043",
2445
+ "teach-p0072",
2446
+ "teach-p0099",
2447
+ "teach-p0103",
2448
+ "teach-p0133",
2449
+ "teach-p0135",
2450
+ "teach-p0197",
2451
+ "teach-p0264",
2452
+ "teach-p0365",
2453
+ "teach-p0380",
2454
+ "teach-p0399"
2455
+ ]
2456
+ },
2457
+ {
2458
+ "L": "are more",
2459
+ "slot": false,
2460
+ "R": "",
2461
+ "family": "filter>",
2462
+ "binds_next_literal": true,
2463
+ "support": [
2464
+ "teach-p0076",
2465
+ "teach-p0112",
2466
+ "teach-p0113",
2467
+ "teach-p0130",
2468
+ "teach-p0147",
2469
+ "teach-p0164",
2470
+ "teach-p0180",
2471
+ "teach-p0190",
2472
+ "teach-p0201",
2473
+ "teach-p0209",
2474
+ "teach-p0229",
2475
+ "teach-p0268",
2476
+ "teach-p0275",
2477
+ "teach-p0338",
2478
+ "teach-p0371",
2479
+ "teach-p0379",
2480
+ "teach-p0411",
2481
+ "teach-p0422",
2482
+ "teach-p0455",
2483
+ "teach-p0493"
2484
+ ]
2485
+ },
2486
+ {
2487
+ "L": "greater than ",
2488
+ "slot": true,
2489
+ "R": "",
2490
+ "family": "filter>",
2491
+ "binds_next_literal": false,
2492
+ "support": [
2493
+ "teach-p0028",
2494
+ "teach-p0049",
2495
+ "teach-p0055",
2496
+ "teach-p0073",
2497
+ "teach-p0075",
2498
+ "teach-p0123",
2499
+ "teach-p0127",
2500
+ "teach-p0145",
2501
+ "teach-p0161",
2502
+ "teach-p0181",
2503
+ "teach-p0211",
2504
+ "teach-p0228",
2505
+ "teach-p0235",
2506
+ "teach-p0249",
2507
+ "teach-p0309",
2508
+ "teach-p0314",
2509
+ "teach-p0316",
2510
+ "teach-p0317",
2511
+ "teach-p0332",
2512
+ "teach-p0383",
2513
+ "teach-p0409",
2514
+ "teach-p0437",
2515
+ "teach-p0480"
2516
+ ]
2517
+ },
2518
+ {
2519
+ "L": "",
2520
+ "slot": true,
2521
+ "R": " or more",
2522
+ "family": "filter>=",
2523
+ "binds_next_literal": false,
2524
+ "support": [
2525
+ "teach-p0030",
2526
+ "teach-p0039",
2527
+ "teach-p0088",
2528
+ "teach-p0151",
2529
+ "teach-p0159",
2530
+ "teach-p0189",
2531
+ "teach-p0276",
2532
+ "teach-p0278",
2533
+ "teach-p0295",
2534
+ "teach-p0299",
2535
+ "teach-p0302",
2536
+ "teach-p0306",
2537
+ "teach-p0330",
2538
+ "teach-p0366",
2539
+ "teach-p0367",
2540
+ "teach-p0374",
2541
+ "teach-p0445",
2542
+ "teach-p0459",
2543
+ "teach-p0462",
2544
+ "teach-p0488",
2545
+ "teach-p0492",
2546
+ "teach-p0503"
2547
+ ]
2548
+ },
2549
+ {
2550
+ "L": "greater than or",
2551
+ "slot": false,
2552
+ "R": "",
2553
+ "family": "filter>=",
2554
+ "binds_next_literal": true,
2555
+ "support": [
2556
+ "teach-p0060",
2557
+ "teach-p0069",
2558
+ "teach-p0086",
2559
+ "teach-p0187",
2560
+ "teach-p0231",
2561
+ "teach-p0248",
2562
+ "teach-p0253",
2563
+ "teach-p0293",
2564
+ "teach-p0298",
2565
+ "teach-p0327",
2566
+ "teach-p0356",
2567
+ "teach-p0357",
2568
+ "teach-p0378",
2569
+ "teach-p0421",
2570
+ "teach-p0438",
2571
+ "teach-p0457",
2572
+ "teach-p0473",
2573
+ "teach-p0502"
2574
+ ]
2575
+ },
2576
+ {
2577
+ "L": "least",
2578
+ "slot": false,
2579
+ "R": "",
2580
+ "family": "filter>=",
2581
+ "binds_next_literal": true,
2582
+ "support": [
2583
+ "teach-p0005",
2584
+ "teach-p0032",
2585
+ "teach-p0194",
2586
+ "teach-p0221",
2587
+ "teach-p0241",
2588
+ "teach-p0271",
2589
+ "teach-p0291",
2590
+ "teach-p0362",
2591
+ "teach-p0376",
2592
+ "teach-p0386",
2593
+ "teach-p0419",
2594
+ "teach-p0423",
2595
+ "teach-p0446",
2596
+ "teach-p0464",
2597
+ "teach-p0507"
2598
+ ]
2599
+ },
2600
+ {
2601
+ "L": "absolute",
2602
+ "slot": false,
2603
+ "R": "",
2604
+ "family": "map_abs",
2605
+ "binds_next_literal": false,
2606
+ "support": [
2607
+ "teach-p0214",
2608
+ "teach-p0467"
2609
+ ]
2610
+ },
2611
+ {
2612
+ "L": "non",
2613
+ "slot": false,
2614
+ "R": "",
2615
+ "family": "map_abs",
2616
+ "binds_next_literal": false,
2617
+ "support": [
2618
+ "teach-p0139",
2619
+ "teach-p0269"
2620
+ ]
2621
+ },
2622
+ {
2623
+ "L": "",
2624
+ "slot": true,
2625
+ "R": " to",
2626
+ "family": "map_add",
2627
+ "binds_next_literal": false,
2628
+ "support": [
2629
+ "teach-p0010",
2630
+ "teach-p0012",
2631
+ "teach-p0021",
2632
+ "teach-p0023",
2633
+ "teach-p0036",
2634
+ "teach-p0040",
2635
+ "teach-p0102",
2636
+ "teach-p0131",
2637
+ "teach-p0163",
2638
+ "teach-p0183",
2639
+ "teach-p0193",
2640
+ "teach-p0202",
2641
+ "teach-p0216",
2642
+ "teach-p0220",
2643
+ "teach-p0240",
2644
+ "teach-p0257",
2645
+ "teach-p0263",
2646
+ "teach-p0315",
2647
+ "teach-p0319",
2648
+ "teach-p0336",
2649
+ "teach-p0337",
2650
+ "teach-p0353",
2651
+ "teach-p0370",
2652
+ "teach-p0408",
2653
+ "teach-p0416",
2654
+ "teach-p0417",
2655
+ "teach-p0451",
2656
+ "teach-p0468"
2657
+ ]
2658
+ },
2659
+ {
2660
+ "L": "increase",
2661
+ "slot": false,
2662
+ "R": "",
2663
+ "family": "map_add",
2664
+ "binds_next_literal": true,
2665
+ "support": [
2666
+ "teach-p0002",
2667
+ "teach-p0034",
2668
+ "teach-p0062",
2669
+ "teach-p0091",
2670
+ "teach-p0101",
2671
+ "teach-p0120",
2672
+ "teach-p0162",
2673
+ "teach-p0170",
2674
+ "teach-p0174",
2675
+ "teach-p0198",
2676
+ "teach-p0274",
2677
+ "teach-p0323",
2678
+ "teach-p0341",
2679
+ "teach-p0393",
2680
+ "teach-p0456",
2681
+ "teach-p0474"
2682
+ ]
2683
+ },
2684
+ {
2685
+ "L": "element by ",
2686
+ "slot": true,
2687
+ "R": "",
2688
+ "family": "map_multiply",
2689
+ "binds_next_literal": false,
2690
+ "support": [
2691
+ "teach-p0009",
2692
+ "teach-p0029",
2693
+ "teach-p0084",
2694
+ "teach-p0110",
2695
+ "teach-p0146",
2696
+ "teach-p0165",
2697
+ "teach-p0169",
2698
+ "teach-p0385",
2699
+ "teach-p0413"
2700
+ ]
2701
+ },
2702
+ {
2703
+ "L": "number by",
2704
+ "slot": false,
2705
+ "R": "",
2706
+ "family": "map_multiply",
2707
+ "binds_next_literal": true,
2708
+ "support": [
2709
+ "teach-p0037",
2710
+ "teach-p0058",
2711
+ "teach-p0064",
2712
+ "teach-p0089",
2713
+ "teach-p0154",
2714
+ "teach-p0166",
2715
+ "teach-p0188",
2716
+ "teach-p0203",
2717
+ "teach-p0223",
2718
+ "teach-p0255",
2719
+ "teach-p0267",
2720
+ "teach-p0284",
2721
+ "teach-p0294",
2722
+ "teach-p0311",
2723
+ "teach-p0354",
2724
+ "teach-p0372",
2725
+ "teach-p0425",
2726
+ "teach-p0444",
2727
+ "teach-p0454",
2728
+ "teach-p0472",
2729
+ "teach-p0489"
2730
+ ]
2731
+ },
2732
+ {
2733
+ "L": "scale",
2734
+ "slot": false,
2735
+ "R": "",
2736
+ "family": "map_multiply",
2737
+ "binds_next_literal": true,
2738
+ "support": [
2739
+ "teach-p0015",
2740
+ "teach-p0024",
2741
+ "teach-p0033",
2742
+ "teach-p0085",
2743
+ "teach-p0094",
2744
+ "teach-p0138",
2745
+ "teach-p0259",
2746
+ "teach-p0286",
2747
+ "teach-p0318",
2748
+ "teach-p0322",
2749
+ "teach-p0331",
2750
+ "teach-p0430",
2751
+ "teach-p0485",
2752
+ "teach-p0487"
2753
+ ]
2754
+ },
2755
+ {
2756
+ "L": "element with",
2757
+ "slot": false,
2758
+ "R": "",
2759
+ "family": "map_negate",
2760
+ "binds_next_literal": false,
2761
+ "support": [
2762
+ "teach-p0527"
2763
+ ],
2764
+ "from_depth2": true
2765
+ },
2766
+ {
2767
+ "L": "flip",
2768
+ "slot": false,
2769
+ "R": "",
2770
+ "family": "map_negate",
2771
+ "binds_next_literal": false,
2772
+ "support": [
2773
+ "teach-p0095"
2774
+ ]
2775
+ },
2776
+ {
2777
+ "L": "negate",
2778
+ "slot": false,
2779
+ "R": "",
2780
+ "family": "map_negate",
2781
+ "binds_next_literal": false,
2782
+ "support": [
2783
+ "teach-p0013",
2784
+ "teach-p0256",
2785
+ "teach-p0347"
2786
+ ]
2787
+ },
2788
+ {
2789
+ "L": "itself",
2790
+ "slot": false,
2791
+ "R": "",
2792
+ "family": "map_square",
2793
+ "binds_next_literal": false,
2794
+ "support": [
2795
+ "teach-p0212",
2796
+ "teach-p0281"
2797
+ ]
2798
+ },
2799
+ {
2800
+ "L": "square",
2801
+ "slot": false,
2802
+ "R": "",
2803
+ "family": "map_square",
2804
+ "binds_next_literal": false,
2805
+ "support": [
2806
+ "teach-p0109",
2807
+ "teach-p0491"
2808
+ ]
2809
+ },
2810
+ {
2811
+ "L": "",
2812
+ "slot": true,
2813
+ "R": " from",
2814
+ "family": "map_subtract",
2815
+ "binds_next_literal": false,
2816
+ "support": [
2817
+ "teach-p0000",
2818
+ "teach-p0016",
2819
+ "teach-p0026",
2820
+ "teach-p0096",
2821
+ "teach-p0114",
2822
+ "teach-p0115",
2823
+ "teach-p0150",
2824
+ "teach-p0191",
2825
+ "teach-p0251",
2826
+ "teach-p0262",
2827
+ "teach-p0297",
2828
+ "teach-p0307",
2829
+ "teach-p0324",
2830
+ "teach-p0343",
2831
+ "teach-p0369",
2832
+ "teach-p0407",
2833
+ "teach-p0424",
2834
+ "teach-p0426",
2835
+ "teach-p0432",
2836
+ "teach-p0442",
2837
+ "teach-p0478",
2838
+ "teach-p0490"
2839
+ ]
2840
+ },
2841
+ {
2842
+ "L": "decrease",
2843
+ "slot": false,
2844
+ "R": "",
2845
+ "family": "map_subtract",
2846
+ "binds_next_literal": true,
2847
+ "support": [
2848
+ "teach-p0051",
2849
+ "teach-p0122",
2850
+ "teach-p0124",
2851
+ "teach-p0125",
2852
+ "teach-p0136",
2853
+ "teach-p0178",
2854
+ "teach-p0185",
2855
+ "teach-p0288",
2856
+ "teach-p0303",
2857
+ "teach-p0364",
2858
+ "teach-p0401",
2859
+ "teach-p0403",
2860
+ "teach-p0410",
2861
+ "teach-p0486",
2862
+ "teach-p0494",
2863
+ "teach-p0497",
2864
+ "teach-p0509"
2865
+ ]
2866
+ },
2867
+ {
2868
+ "L": "take ",
2869
+ "slot": true,
2870
+ "R": "",
2871
+ "family": "map_subtract",
2872
+ "binds_next_literal": false,
2873
+ "support": [
2874
+ "teach-p0065",
2875
+ "teach-p0093",
2876
+ "teach-p0116",
2877
+ "teach-p0352",
2878
+ "teach-p0483"
2879
+ ]
2880
+ },
2881
+ {
2882
+ "L": "count",
2883
+ "slot": false,
2884
+ "R": "",
2885
+ "family": "reduce_count",
2886
+ "binds_next_literal": false,
2887
+ "support": [
2888
+ "teach-p0252"
2889
+ ]
2890
+ },
2891
+ {
2892
+ "L": "how",
2893
+ "slot": false,
2894
+ "R": "",
2895
+ "family": "reduce_count",
2896
+ "binds_next_literal": false,
2897
+ "support": [
2898
+ "teach-p0067"
2899
+ ]
2900
+ },
2901
+ {
2902
+ "L": "number of",
2903
+ "slot": false,
2904
+ "R": "",
2905
+ "family": "reduce_count",
2906
+ "binds_next_literal": false,
2907
+ "support": [
2908
+ "teach-p0104",
2909
+ "teach-p0458"
2910
+ ]
2911
+ },
2912
+ {
2913
+ "L": "highest",
2914
+ "slot": false,
2915
+ "R": "",
2916
+ "family": "reduce_max",
2917
+ "binds_next_literal": false,
2918
+ "support": [
2919
+ "teach-p0048",
2920
+ "teach-p0196"
2921
+ ]
2922
+ },
2923
+ {
2924
+ "L": "maximum",
2925
+ "slot": false,
2926
+ "R": "",
2927
+ "family": "reduce_max",
2928
+ "binds_next_literal": false,
2929
+ "support": [
2930
+ "teach-p0703"
2931
+ ],
2932
+ "from_depth2": true
2933
+ },
2934
+ {
2935
+ "L": "the largest",
2936
+ "slot": false,
2937
+ "R": "",
2938
+ "family": "reduce_max",
2939
+ "binds_next_literal": false,
2940
+ "support": [
2941
+ "teach-p0132",
2942
+ "teach-p0227"
2943
+ ]
2944
+ },
2945
+ {
2946
+ "L": "lowest",
2947
+ "slot": false,
2948
+ "R": "",
2949
+ "family": "reduce_min",
2950
+ "binds_next_literal": false,
2951
+ "support": [
2952
+ "teach-p0118",
2953
+ "teach-p0143"
2954
+ ]
2955
+ },
2956
+ {
2957
+ "L": "minimum",
2958
+ "slot": false,
2959
+ "R": "",
2960
+ "family": "reduce_min",
2961
+ "binds_next_literal": false,
2962
+ "support": [
2963
+ "teach-p0652"
2964
+ ],
2965
+ "from_depth2": true
2966
+ },
2967
+ {
2968
+ "L": "the smallest",
2969
+ "slot": false,
2970
+ "R": "",
2971
+ "family": "reduce_min",
2972
+ "binds_next_literal": false,
2973
+ "support": [
2974
+ "teach-p0079",
2975
+ "teach-p0388"
2976
+ ]
2977
+ },
2978
+ {
2979
+ "L": "sum",
2980
+ "slot": false,
2981
+ "R": "",
2982
+ "family": "reduce_sum",
2983
+ "binds_next_literal": false,
2984
+ "support": [
2985
+ "teach-p0020",
2986
+ "teach-p0333"
2987
+ ]
2988
+ },
2989
+ {
2990
+ "L": "total",
2991
+ "slot": false,
2992
+ "R": "",
2993
+ "family": "reduce_sum",
2994
+ "binds_next_literal": false,
2995
+ "support": [
2996
+ "teach-p0071",
2997
+ "teach-p0384"
2998
+ ]
2999
+ },
3000
+ {
3001
+ "L": "up",
3002
+ "slot": false,
3003
+ "R": "",
3004
+ "family": "reduce_sum",
3005
+ "binds_next_literal": false,
3006
+ "support": [
3007
+ "teach-p0531"
3008
+ ],
3009
+ "from_depth2": true
3010
+ },
3011
+ {
3012
+ "L": "reverse",
3013
+ "slot": false,
3014
+ "R": "",
3015
+ "family": "reverse",
3016
+ "binds_next_literal": false,
3017
+ "support": [
3018
+ "teach-p0045",
3019
+ "teach-p0061",
3020
+ "teach-p0153"
3021
+ ]
3022
+ },
3023
+ {
3024
+ "L": "ascending",
3025
+ "slot": false,
3026
+ "R": "",
3027
+ "family": "sort_asc",
3028
+ "binds_next_literal": false,
3029
+ "support": [
3030
+ "teach-p0080"
3031
+ ]
3032
+ },
3033
+ {
3034
+ "L": "increasing",
3035
+ "slot": false,
3036
+ "R": "",
3037
+ "family": "sort_asc",
3038
+ "binds_next_literal": false,
3039
+ "support": [
3040
+ "teach-p0525"
3041
+ ],
3042
+ "from_depth2": true
3043
+ },
3044
+ {
3045
+ "L": "to largest",
3046
+ "slot": false,
3047
+ "R": "",
3048
+ "family": "sort_asc",
3049
+ "binds_next_literal": false,
3050
+ "support": [
3051
+ "teach-p0007",
3052
+ "teach-p0325",
3053
+ "teach-p0334"
3054
+ ]
3055
+ },
3056
+ {
3057
+ "L": "decreasing",
3058
+ "slot": false,
3059
+ "R": "",
3060
+ "family": "sort_desc",
3061
+ "binds_next_literal": false,
3062
+ "support": [
3063
+ "teach-p0520"
3064
+ ],
3065
+ "from_depth2": true
3066
+ },
3067
+ {
3068
+ "L": "descending",
3069
+ "slot": false,
3070
+ "R": "",
3071
+ "family": "sort_desc",
3072
+ "binds_next_literal": false,
3073
+ "support": [
3074
+ "teach-p0244",
3075
+ "teach-p0335",
3076
+ "teach-p0395"
3077
+ ]
3078
+ },
3079
+ {
3080
+ "L": "largest to",
3081
+ "slot": false,
3082
+ "R": "",
3083
+ "family": "sort_desc",
3084
+ "binds_next_literal": false,
3085
+ "support": [
3086
+ "teach-p0077"
3087
+ ]
3088
+ },
3089
+ {
3090
+ "L": "first ",
3091
+ "slot": true,
3092
+ "R": "",
3093
+ "family": "take",
3094
+ "binds_next_literal": false,
3095
+ "support": [
3096
+ "teach-p0004",
3097
+ "teach-p0006",
3098
+ "teach-p0018",
3099
+ "teach-p0025",
3100
+ "teach-p0031",
3101
+ "teach-p0046",
3102
+ "teach-p0059",
3103
+ "teach-p0070",
3104
+ "teach-p0074",
3105
+ "teach-p0098",
3106
+ "teach-p0106",
3107
+ "teach-p0134",
3108
+ "teach-p0173",
3109
+ "teach-p0195",
3110
+ "teach-p0208",
3111
+ "teach-p0219",
3112
+ "teach-p0230",
3113
+ "teach-p0237",
3114
+ "teach-p0242",
3115
+ "teach-p0277",
3116
+ "teach-p0282",
3117
+ "teach-p0283",
3118
+ "teach-p0301",
3119
+ "teach-p0326",
3120
+ "teach-p0368",
3121
+ "teach-p0377",
3122
+ "teach-p0387",
3123
+ "teach-p0400",
3124
+ "teach-p0402",
3125
+ "teach-p0404",
3126
+ "teach-p0448",
3127
+ "teach-p0471",
3128
+ "teach-p0484",
3129
+ "teach-p0498",
3130
+ "teach-p0508",
3131
+ "teach-p0511"
3132
+ ]
3133
+ }
3134
+ ],
3135
+ "digit_classes": {
3136
+ "filter!=": {
3137
+ "pos": "012345",
3138
+ "neg": "12345"
3139
+ },
3140
+ "filter<": {
3141
+ "pos": "012345",
3142
+ "neg": "12345"
3143
+ },
3144
+ "filter<=": {
3145
+ "pos": "012345",
3146
+ "neg": "12345"
3147
+ },
3148
+ "filter==": {
3149
+ "pos": "012345",
3150
+ "neg": "12345"
3151
+ },
3152
+ "filter>": {
3153
+ "pos": "012345",
3154
+ "neg": "12345"
3155
+ },
3156
+ "filter>=": {
3157
+ "pos": "012345",
3158
+ "neg": "12345"
3159
+ },
3160
+ "map_add": {
3161
+ "pos": "012345",
3162
+ "neg": "12345"
3163
+ },
3164
+ "map_multiply": {
3165
+ "pos": "012345",
3166
+ "neg": "12345"
3167
+ },
3168
+ "map_subtract": {
3169
+ "pos": "012345",
3170
+ "neg": "12345"
3171
+ },
3172
+ "take": {
3173
+ "pos": "012345678",
3174
+ "neg": ""
3175
+ }
3176
+ },
3177
+ "connectors": [
3178
+ {
3179
+ "text": "after",
3180
+ "support": [
3181
+ "teach-p0514",
3182
+ "teach-p0515",
3183
+ "teach-p0516",
3184
+ "teach-p0518",
3185
+ "teach-p0520",
3186
+ "teach-p0528",
3187
+ "teach-p0536",
3188
+ "teach-p0544",
3189
+ "teach-p0554",
3190
+ "teach-p0562",
3191
+ "teach-p0571",
3192
+ "teach-p0577",
3193
+ "teach-p0578",
3194
+ "teach-p0582",
3195
+ "teach-p0589",
3196
+ "teach-p0590",
3197
+ "teach-p0599",
3198
+ "teach-p0604",
3199
+ "teach-p0608",
3200
+ "teach-p0612",
3201
+ "teach-p0618",
3202
+ "teach-p0619",
3203
+ "teach-p0622",
3204
+ "teach-p0623",
3205
+ "teach-p0626",
3206
+ "teach-p0629",
3207
+ "teach-p0630",
3208
+ "teach-p0632",
3209
+ "teach-p0642",
3210
+ "teach-p0647",
3211
+ "teach-p0648",
3212
+ "teach-p0652",
3213
+ "teach-p0654",
3214
+ "teach-p0658",
3215
+ "teach-p0662",
3216
+ "teach-p0668",
3217
+ "teach-p0673",
3218
+ "teach-p0676",
3219
+ "teach-p0683",
3220
+ "teach-p0690",
3221
+ "teach-p0691",
3222
+ "teach-p0696",
3223
+ "teach-p0698",
3224
+ "teach-p0700",
3225
+ "teach-p0701",
3226
+ "teach-p0703",
3227
+ "teach-p0705",
3228
+ "teach-p0706",
3229
+ "teach-p0716",
3230
+ "teach-p0717",
3231
+ "teach-p0720",
3232
+ "teach-p0723",
3233
+ "teach-p0726",
3234
+ "teach-p0728",
3235
+ "teach-p0735",
3236
+ "teach-p0743",
3237
+ "teach-p0746",
3238
+ "teach-p0748",
3239
+ "teach-p0750",
3240
+ "teach-p0753",
3241
+ "teach-p0756",
3242
+ "teach-p0760",
3243
+ "teach-p0761",
3244
+ "teach-p0777",
3245
+ "teach-p0786",
3246
+ "teach-p0790",
3247
+ "teach-p0791",
3248
+ "teach-p0792",
3249
+ "teach-p0798",
3250
+ "teach-p0801",
3251
+ "teach-p0805",
3252
+ "teach-p0808",
3253
+ "teach-p0813",
3254
+ "teach-p0816",
3255
+ "teach-p0820",
3256
+ "teach-p0837",
3257
+ "teach-p0840",
3258
+ "teach-p0842",
3259
+ "teach-p0847",
3260
+ "teach-p0853",
3261
+ "teach-p0854",
3262
+ "teach-p0858",
3263
+ "teach-p0860",
3264
+ "teach-p0864",
3265
+ "teach-p0865",
3266
+ "teach-p0872",
3267
+ "teach-p0882",
3268
+ "teach-p0884",
3269
+ "teach-p0886",
3270
+ "teach-p0889",
3271
+ "teach-p0892",
3272
+ "teach-p0895",
3273
+ "teach-p0896",
3274
+ "teach-p0898",
3275
+ "teach-p0902",
3276
+ "teach-p0907",
3277
+ "teach-p0910",
3278
+ "teach-p0921",
3279
+ "teach-p0924",
3280
+ "teach-p0925",
3281
+ "teach-p0928",
3282
+ "teach-p0931",
3283
+ "teach-p0936",
3284
+ "teach-p0941",
3285
+ "teach-p0942",
3286
+ "teach-p0944",
3287
+ "teach-p0946",
3288
+ "teach-p0949",
3289
+ "teach-p0950",
3290
+ "teach-p0961",
3291
+ "teach-p0962",
3292
+ "teach-p0967",
3293
+ "teach-p0971",
3294
+ "teach-p0973",
3295
+ "teach-p0978",
3296
+ "teach-p0985",
3297
+ "teach-p0986",
3298
+ "teach-p0990",
3299
+ "teach-p0994",
3300
+ "teach-p1003",
3301
+ "teach-p1004",
3302
+ "teach-p1007",
3303
+ "teach-p1008",
3304
+ "teach-p1011",
3305
+ "teach-p1012",
3306
+ "teach-p1013",
3307
+ "teach-p1016",
3308
+ "teach-p1018",
3309
+ "teach-p1019",
3310
+ "teach-p1022"
3311
+ ]
3312
+ },
3313
+ {
3314
+ "text": "then",
3315
+ "support": [
3316
+ "teach-p0512",
3317
+ "teach-p0513",
3318
+ "teach-p0517",
3319
+ "teach-p0519",
3320
+ "teach-p0521",
3321
+ "teach-p0522",
3322
+ "teach-p0523",
3323
+ "teach-p0524",
3324
+ "teach-p0525",
3325
+ "teach-p0526",
3326
+ "teach-p0527",
3327
+ "teach-p0529",
3328
+ "teach-p0530",
3329
+ "teach-p0531",
3330
+ "teach-p0532",
3331
+ "teach-p0533",
3332
+ "teach-p0534",
3333
+ "teach-p0535",
3334
+ "teach-p0537",
3335
+ "teach-p0538",
3336
+ "teach-p0539",
3337
+ "teach-p0540",
3338
+ "teach-p0541",
3339
+ "teach-p0542",
3340
+ "teach-p0543",
3341
+ "teach-p0545",
3342
+ "teach-p0546",
3343
+ "teach-p0547",
3344
+ "teach-p0548",
3345
+ "teach-p0549",
3346
+ "teach-p0550",
3347
+ "teach-p0551",
3348
+ "teach-p0552",
3349
+ "teach-p0553",
3350
+ "teach-p0555",
3351
+ "teach-p0556",
3352
+ "teach-p0557",
3353
+ "teach-p0558",
3354
+ "teach-p0559",
3355
+ "teach-p0560",
3356
+ "teach-p0561",
3357
+ "teach-p0563",
3358
+ "teach-p0564",
3359
+ "teach-p0565",
3360
+ "teach-p0566",
3361
+ "teach-p0567",
3362
+ "teach-p0568",
3363
+ "teach-p0569",
3364
+ "teach-p0570",
3365
+ "teach-p0572",
3366
+ "teach-p0573",
3367
+ "teach-p0574",
3368
+ "teach-p0575",
3369
+ "teach-p0576",
3370
+ "teach-p0579",
3371
+ "teach-p0580",
3372
+ "teach-p0581",
3373
+ "teach-p0583",
3374
+ "teach-p0584",
3375
+ "teach-p0585",
3376
+ "teach-p0586",
3377
+ "teach-p0587",
3378
+ "teach-p0588",
3379
+ "teach-p0591",
3380
+ "teach-p0592",
3381
+ "teach-p0593",
3382
+ "teach-p0594",
3383
+ "teach-p0595",
3384
+ "teach-p0596",
3385
+ "teach-p0597",
3386
+ "teach-p0598",
3387
+ "teach-p0600",
3388
+ "teach-p0601",
3389
+ "teach-p0602",
3390
+ "teach-p0603",
3391
+ "teach-p0605",
3392
+ "teach-p0606",
3393
+ "teach-p0607",
3394
+ "teach-p0609",
3395
+ "teach-p0610",
3396
+ "teach-p0611",
3397
+ "teach-p0613",
3398
+ "teach-p0614",
3399
+ "teach-p0615",
3400
+ "teach-p0616",
3401
+ "teach-p0617",
3402
+ "teach-p0620",
3403
+ "teach-p0621",
3404
+ "teach-p0624",
3405
+ "teach-p0625",
3406
+ "teach-p0627",
3407
+ "teach-p0628",
3408
+ "teach-p0631",
3409
+ "teach-p0633",
3410
+ "teach-p0634",
3411
+ "teach-p0635",
3412
+ "teach-p0636",
3413
+ "teach-p0637",
3414
+ "teach-p0638",
3415
+ "teach-p0639",
3416
+ "teach-p0640",
3417
+ "teach-p0641",
3418
+ "teach-p0643",
3419
+ "teach-p0644",
3420
+ "teach-p0645",
3421
+ "teach-p0646",
3422
+ "teach-p0649",
3423
+ "teach-p0650",
3424
+ "teach-p0651",
3425
+ "teach-p0653",
3426
+ "teach-p0655",
3427
+ "teach-p0656",
3428
+ "teach-p0657",
3429
+ "teach-p0659",
3430
+ "teach-p0660",
3431
+ "teach-p0661",
3432
+ "teach-p0663",
3433
+ "teach-p0664",
3434
+ "teach-p0665",
3435
+ "teach-p0666",
3436
+ "teach-p0667",
3437
+ "teach-p0669",
3438
+ "teach-p0670",
3439
+ "teach-p0671",
3440
+ "teach-p0672",
3441
+ "teach-p0674",
3442
+ "teach-p0675",
3443
+ "teach-p0677",
3444
+ "teach-p0678",
3445
+ "teach-p0679",
3446
+ "teach-p0680",
3447
+ "teach-p0681",
3448
+ "teach-p0682",
3449
+ "teach-p0684",
3450
+ "teach-p0685",
3451
+ "teach-p0686",
3452
+ "teach-p0687",
3453
+ "teach-p0688",
3454
+ "teach-p0689",
3455
+ "teach-p0692",
3456
+ "teach-p0693",
3457
+ "teach-p0694",
3458
+ "teach-p0695",
3459
+ "teach-p0697",
3460
+ "teach-p0699",
3461
+ "teach-p0702",
3462
+ "teach-p0704",
3463
+ "teach-p0707",
3464
+ "teach-p0708",
3465
+ "teach-p0709",
3466
+ "teach-p0710",
3467
+ "teach-p0711",
3468
+ "teach-p0712",
3469
+ "teach-p0713",
3470
+ "teach-p0714",
3471
+ "teach-p0715",
3472
+ "teach-p0718",
3473
+ "teach-p0719",
3474
+ "teach-p0721",
3475
+ "teach-p0722",
3476
+ "teach-p0724",
3477
+ "teach-p0725",
3478
+ "teach-p0727",
3479
+ "teach-p0729",
3480
+ "teach-p0730",
3481
+ "teach-p0731",
3482
+ "teach-p0732",
3483
+ "teach-p0733",
3484
+ "teach-p0734",
3485
+ "teach-p0736",
3486
+ "teach-p0737",
3487
+ "teach-p0738",
3488
+ "teach-p0739",
3489
+ "teach-p0740",
3490
+ "teach-p0741",
3491
+ "teach-p0742",
3492
+ "teach-p0744",
3493
+ "teach-p0745",
3494
+ "teach-p0747",
3495
+ "teach-p0749",
3496
+ "teach-p0751",
3497
+ "teach-p0752",
3498
+ "teach-p0754",
3499
+ "teach-p0755",
3500
+ "teach-p0757",
3501
+ "teach-p0758",
3502
+ "teach-p0759",
3503
+ "teach-p0762",
3504
+ "teach-p0763",
3505
+ "teach-p0764",
3506
+ "teach-p0765",
3507
+ "teach-p0766",
3508
+ "teach-p0767",
3509
+ "teach-p0768",
3510
+ "teach-p0769",
3511
+ "teach-p0770",
3512
+ "teach-p0771",
3513
+ "teach-p0772",
3514
+ "teach-p0773",
3515
+ "teach-p0774",
3516
+ "teach-p0775",
3517
+ "teach-p0776",
3518
+ "teach-p0778",
3519
+ "teach-p0779",
3520
+ "teach-p0780",
3521
+ "teach-p0781",
3522
+ "teach-p0782",
3523
+ "teach-p0783",
3524
+ "teach-p0784",
3525
+ "teach-p0785",
3526
+ "teach-p0787",
3527
+ "teach-p0788",
3528
+ "teach-p0789",
3529
+ "teach-p0793",
3530
+ "teach-p0794",
3531
+ "teach-p0795",
3532
+ "teach-p0796",
3533
+ "teach-p0797",
3534
+ "teach-p0799",
3535
+ "teach-p0800",
3536
+ "teach-p0802",
3537
+ "teach-p0803",
3538
+ "teach-p0804",
3539
+ "teach-p0806",
3540
+ "teach-p0807",
3541
+ "teach-p0809",
3542
+ "teach-p0810",
3543
+ "teach-p0811",
3544
+ "teach-p0812",
3545
+ "teach-p0814",
3546
+ "teach-p0815",
3547
+ "teach-p0817",
3548
+ "teach-p0818",
3549
+ "teach-p0819",
3550
+ "teach-p0821",
3551
+ "teach-p0822",
3552
+ "teach-p0823",
3553
+ "teach-p0824",
3554
+ "teach-p0825",
3555
+ "teach-p0826",
3556
+ "teach-p0827",
3557
+ "teach-p0828",
3558
+ "teach-p0829",
3559
+ "teach-p0830",
3560
+ "teach-p0831",
3561
+ "teach-p0832",
3562
+ "teach-p0833",
3563
+ "teach-p0834",
3564
+ "teach-p0835",
3565
+ "teach-p0836",
3566
+ "teach-p0838",
3567
+ "teach-p0839",
3568
+ "teach-p0841",
3569
+ "teach-p0843",
3570
+ "teach-p0844",
3571
+ "teach-p0845",
3572
+ "teach-p0846",
3573
+ "teach-p0848",
3574
+ "teach-p0849",
3575
+ "teach-p0850",
3576
+ "teach-p0851",
3577
+ "teach-p0852",
3578
+ "teach-p0855",
3579
+ "teach-p0856",
3580
+ "teach-p0857",
3581
+ "teach-p0859",
3582
+ "teach-p0861",
3583
+ "teach-p0862",
3584
+ "teach-p0863",
3585
+ "teach-p0866",
3586
+ "teach-p0867",
3587
+ "teach-p0868",
3588
+ "teach-p0869",
3589
+ "teach-p0870",
3590
+ "teach-p0871",
3591
+ "teach-p0873",
3592
+ "teach-p0874",
3593
+ "teach-p0875",
3594
+ "teach-p0876",
3595
+ "teach-p0877",
3596
+ "teach-p0878",
3597
+ "teach-p0879",
3598
+ "teach-p0880",
3599
+ "teach-p0881",
3600
+ "teach-p0883",
3601
+ "teach-p0885",
3602
+ "teach-p0887",
3603
+ "teach-p0888",
3604
+ "teach-p0890",
3605
+ "teach-p0891",
3606
+ "teach-p0893",
3607
+ "teach-p0894",
3608
+ "teach-p0897",
3609
+ "teach-p0899",
3610
+ "teach-p0900",
3611
+ "teach-p0901",
3612
+ "teach-p0903",
3613
+ "teach-p0904",
3614
+ "teach-p0905",
3615
+ "teach-p0906",
3616
+ "teach-p0908",
3617
+ "teach-p0909",
3618
+ "teach-p0911",
3619
+ "teach-p0912",
3620
+ "teach-p0913",
3621
+ "teach-p0914",
3622
+ "teach-p0915",
3623
+ "teach-p0916",
3624
+ "teach-p0917",
3625
+ "teach-p0918",
3626
+ "teach-p0919",
3627
+ "teach-p0920",
3628
+ "teach-p0922",
3629
+ "teach-p0923",
3630
+ "teach-p0926",
3631
+ "teach-p0927",
3632
+ "teach-p0929",
3633
+ "teach-p0930",
3634
+ "teach-p0932",
3635
+ "teach-p0933",
3636
+ "teach-p0934",
3637
+ "teach-p0935",
3638
+ "teach-p0937",
3639
+ "teach-p0938",
3640
+ "teach-p0939",
3641
+ "teach-p0940",
3642
+ "teach-p0943",
3643
+ "teach-p0945",
3644
+ "teach-p0947",
3645
+ "teach-p0948",
3646
+ "teach-p0951",
3647
+ "teach-p0952",
3648
+ "teach-p0953",
3649
+ "teach-p0954",
3650
+ "teach-p0955",
3651
+ "teach-p0956",
3652
+ "teach-p0957",
3653
+ "teach-p0958",
3654
+ "teach-p0959",
3655
+ "teach-p0960",
3656
+ "teach-p0963",
3657
+ "teach-p0964",
3658
+ "teach-p0965",
3659
+ "teach-p0966",
3660
+ "teach-p0968",
3661
+ "teach-p0969",
3662
+ "teach-p0970",
3663
+ "teach-p0972",
3664
+ "teach-p0974",
3665
+ "teach-p0975",
3666
+ "teach-p0976",
3667
+ "teach-p0977",
3668
+ "teach-p0979",
3669
+ "teach-p0980",
3670
+ "teach-p0981",
3671
+ "teach-p0982",
3672
+ "teach-p0983",
3673
+ "teach-p0984",
3674
+ "teach-p0987",
3675
+ "teach-p0988",
3676
+ "teach-p0989",
3677
+ "teach-p0991",
3678
+ "teach-p0992",
3679
+ "teach-p0993",
3680
+ "teach-p0995",
3681
+ "teach-p0996",
3682
+ "teach-p0997",
3683
+ "teach-p0998",
3684
+ "teach-p0999",
3685
+ "teach-p1000",
3686
+ "teach-p1001",
3687
+ "teach-p1002",
3688
+ "teach-p1005",
3689
+ "teach-p1006",
3690
+ "teach-p1009",
3691
+ "teach-p1010",
3692
+ "teach-p1014",
3693
+ "teach-p1015",
3694
+ "teach-p1017",
3695
+ "teach-p1020",
3696
+ "teach-p1021",
3697
+ "teach-p1023"
3698
+ ]
3699
+ }
3700
+ ],
3701
+ "reject_cues": [
3702
+ {
3703
+ "text": "characters",
3704
+ "support": [
3705
+ "teach-r027",
3706
+ "teach-r059"
3707
+ ]
3708
+ },
3709
+ {
3710
+ "text": "for",
3711
+ "support": [
3712
+ "teach-r003",
3713
+ "teach-r011",
3714
+ "teach-r035"
3715
+ ]
3716
+ },
3717
+ {
3718
+ "text": "integers",
3719
+ "support": [
3720
+ "teach-r019",
3721
+ "teach-r043",
3722
+ "teach-r051"
3723
+ ]
3724
+ }
3725
+ ],
3726
+ "validation_on_teaching": {
3727
+ "positive_exact_intent": 1024,
3728
+ "positive_n": 1024,
3729
+ "reject_correct": 64,
3730
+ "reject_n": 64,
3731
+ "failures": []
3732
+ },
3733
+ "counts": {
3734
+ "cues": 9,
3735
+ "windows": 56,
3736
+ "connectors": 2,
3737
+ "reject_cues": 3
3738
+ },
3739
+ "refinement_log": [
3740
+ "refine: dropping reverse window 'put''': its matches are covered by another window"
3741
+ ],
3742
+ "representation_sha256": "58af8e31cdd8cf163f4569c4ad35f12484888b8125387d5943a34242cebd6a28"
3743
+ }
runtime.py ADDED
@@ -0,0 +1,233 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Fixed generic neural runtime: recurrent signed-add threshold network (task-neutral).
2
+
3
+ Imports only numpy/json/hashlib. It never imports the task contract, interpreter, renderer, datasets or any
4
+ expert/constructor code. Architecture id: rsat-v1.
5
+
6
+ Symbols: bytes 0..255, BOS=256, EOS=257, SEP=258, PAD=259 (V = 260).
7
+ Per-tick input x (270 channels): one-hot symbol (0..259), mode (260 = prefix, 261 = output), one-hot clock
8
+ phase (262..269). Every external symbol occupies 8 ticks (phase 0..7) with its symbol and mode held.
9
+
10
+ State: H bits, reset to 0 for every request. Synchronous update:
11
+ a_i = sum_{j: R[i,j]=+1} s_j - sum_{j: R[i,j]=-1} s_j + sum_{k: I[i,k]=+1} x_k - sum_{k: I[i,k]=-1} x_k
12
+ s'_i = 1 if a_i >= theta_i else 0
13
+ Output (after the 8th tick of every OUTPUT-mode symbol):
14
+ score_o = sum_{i: O[o,i]=+1} s_i - sum_{i: O[o,i]=-1} s_i + bias_o ; emit smallest o with maximal score.
15
+ Protocol: feed BOS then the request bytes in PREFIX mode; then feed SEP in OUTPUT mode (ending the prefix and
16
+ starting generation); after each output-mode symbol emit one symbol and feed it back (OUTPUT mode).
17
+ EOS ends generation. Emitting BOS/SEP/PAD, or more than 2,048 source bytes, is a failure.
18
+
19
+ Integer bounds (proved, enforced by validate()): connections in {-1,0,+1}; |a_i| <= H + 3 (one symbol, one
20
+ mode, one phase channel active) <= 2,883 for H = 2,880; |score| <= H + 32,767 < 2^31. All accumulation is in
21
+ int32; thresholds and biases are int16. No multiplication, matrix product, BLAS, einsum or attention is used:
22
+ contributions are added/subtracted column by column.
23
+ """
24
+ from __future__ import annotations
25
+
26
+ import hashlib
27
+ import json
28
+
29
+ import numpy as np
30
+
31
+ V, BOS, EOS, SEP, PAD = 260, 256, 257, 258, 259
32
+ MODE_PREFIX, MODE_OUTPUT = 260, 261
33
+ PHASE0 = 262
34
+ D_IN = 270
35
+ TICKS = 8
36
+ MAX_OUT_BYTES = 2048
37
+ ARCH_ID = "rsat-v1"
38
+ KEYS = ("R", "I", "O", "theta", "bias")
39
+
40
+
41
+ def shapes(H):
42
+ return {"R": (H, H), "I": (H, D_IN), "O": (V, H), "theta": (H,), "bias": (V,)}
43
+
44
+
45
+ def n_slots(H):
46
+ return H * H + 531 * H + 260
47
+
48
+
49
+ def validate(arrs, H):
50
+ sh = shapes(H)
51
+ out = {}
52
+ for k in KEYS:
53
+ a = np.asarray(arrs[k])
54
+ if a.shape != sh[k]:
55
+ raise ValueError(f"{k}: shape {a.shape} != {sh[k]}")
56
+ if not np.issubdtype(a.dtype, np.integer):
57
+ raise ValueError(f"{k}: integer dtype required, got {a.dtype}")
58
+ if k in ("R", "I", "O"):
59
+ if a.size and (a.min() < -1 or a.max() > 1):
60
+ raise ValueError(f"{k}: connections must be -1, 0 or +1")
61
+ out[k] = a.astype(np.int8)
62
+ else:
63
+ if a.size and (a.min() < -32768 or a.max() > 32767):
64
+ raise ValueError(f"{k}: must fit signed 16-bit")
65
+ out[k] = a.astype(np.int16)
66
+ return out
67
+
68
+
69
+ def weights_sha256(arrs):
70
+ h = hashlib.sha256()
71
+ for k in KEYS:
72
+ a = np.ascontiguousarray(arrs[k])
73
+ h.update(k.encode() + str(a.dtype).encode() + str(a.shape).encode() + a.tobytes())
74
+ return h.hexdigest()
75
+
76
+
77
+ def save(path, arrs, config: dict):
78
+ meta = dict(config, architecture_id=ARCH_ID, weights_sha256=weights_sha256(arrs))
79
+ blob = np.frombuffer(json.dumps(meta, sort_keys=True).encode(), dtype=np.uint8)
80
+ np.savez_compressed(path, __meta__=blob, **{k: arrs[k] for k in KEYS})
81
+ return meta
82
+
83
+
84
+ def load(path):
85
+ with np.load(path, allow_pickle=False) as z:
86
+ meta = json.loads(bytes(z["__meta__"]).decode())
87
+ arrs = {k: z[k].copy() for k in KEYS}
88
+ arrs = validate(arrs, int(meta["H"]))
89
+ if weights_sha256(arrs) != meta["weights_sha256"]:
90
+ raise ValueError("weights hash mismatch")
91
+ return arrs, meta
92
+
93
+
94
+ class Net:
95
+ """Optimized CPU implementation (exactly equal to `reference_step`; see verify_runtime)."""
96
+
97
+ def __init__(self, arrs, H):
98
+ a = validate(arrs, H)
99
+ self.H = H
100
+ self.RT = np.ascontiguousarray(a["R"].T) # row j = outgoing connections of source unit j
101
+ self.IT = np.ascontiguousarray(a["I"].T) # row k = connections of input channel k
102
+ self.OT = np.ascontiguousarray(a["O"].T) # row i = output connections of unit i
103
+ self.theta = a["theta"].astype(np.int32)
104
+ self.bias = a["bias"].astype(np.int32)
105
+ self.reset()
106
+
107
+ def reset(self):
108
+ self.s = np.zeros(self.H, dtype=bool)
109
+ self.rec = np.zeros(self.H, dtype=np.int32) # sum_j R[:, j] s_j, maintained incrementally
110
+ self.ticks = 0
111
+
112
+ def step(self, sym, mode, phase):
113
+ a = self.rec + self.IT[sym] + self.IT[mode] + self.IT[PHASE0 + phase] # int32 + int8 adds
114
+ new = a >= self.theta
115
+ on = np.flatnonzero(new & ~self.s)
116
+ off = np.flatnonzero(self.s & ~new)
117
+ if on.size:
118
+ self.rec += self.RT[on].sum(axis=0, dtype=np.int32)
119
+ if off.size:
120
+ self.rec -= self.RT[off].sum(axis=0, dtype=np.int32)
121
+ self.s = new
122
+ self.ticks += 1
123
+
124
+ def feed(self, sym, mode):
125
+ for p in range(TICKS):
126
+ self.step(sym, mode, p)
127
+
128
+ def scores(self):
129
+ act = np.flatnonzero(self.s)
130
+ sc = self.bias.copy()
131
+ if act.size:
132
+ sc += self.OT[act].sum(axis=0, dtype=np.int32)
133
+ return sc
134
+
135
+ def emit(self):
136
+ return int(np.argmax(self.scores())) # argmax returns the smallest index among maxima
137
+
138
+
139
+ def generate(net: Net, request: bytes, max_bytes=MAX_OUT_BYTES, detect_cycles=True):
140
+ """Returns dict(status, source_bytes, ticks). status: ok | invalid_symbol | too_long.
141
+ Exact cycle detection: generation is a deterministic function of (state before feeding, fed symbol);
142
+ if that pair repeats, the emitted sequence is periodic forever without EOS, so the outcome (too_long)
143
+ is decided early. The result equals running to the byte limit."""
144
+ net.reset()
145
+ net.feed(BOS, MODE_PREFIX)
146
+ for b in request:
147
+ net.feed(b, MODE_PREFIX)
148
+ cur = SEP
149
+ out = bytearray()
150
+ seen = set()
151
+ while True:
152
+ if detect_cycles:
153
+ key = (cur, np.packbits(net.s).tobytes())
154
+ if key in seen:
155
+ return {"status": "too_long", "cycle_detected": True, "source": bytes(out[:max_bytes]), "ticks": net.ticks}
156
+ seen.add(key)
157
+ net.feed(cur, MODE_OUTPUT)
158
+ y = net.emit()
159
+ if y == EOS:
160
+ return {"status": "ok", "source": bytes(out), "ticks": net.ticks}
161
+ if y >= 256:
162
+ return {"status": "invalid_symbol", "symbol": int(y), "source": bytes(out), "ticks": net.ticks}
163
+ out.append(y)
164
+ if len(out) > max_bytes:
165
+ return {"status": "too_long", "source": bytes(out[:max_bytes]), "ticks": net.ticks}
166
+ cur = y
167
+
168
+
169
+ # ---------------- slow reference (definitional; small networks / short sequences) ----------------
170
+ def reference_step(R, I, theta, s, x):
171
+ H = len(s)
172
+ new = [0] * H
173
+ for i in range(H):
174
+ acc = 0
175
+ for j in range(H):
176
+ if R[i][j] == 1 and s[j]:
177
+ acc += 1
178
+ elif R[i][j] == -1 and s[j]:
179
+ acc -= 1
180
+ for k in range(D_IN):
181
+ if I[i][k] == 1 and x[k]:
182
+ acc += 1
183
+ elif I[i][k] == -1 and x[k]:
184
+ acc -= 1
185
+ new[i] = 1 if acc >= theta[i] else 0
186
+ return new
187
+
188
+
189
+ def reference_scores(O, bias, s):
190
+ out = []
191
+ for o in range(V):
192
+ acc = int(bias[o])
193
+ for i in range(len(s)):
194
+ if O[o][i] == 1 and s[i]:
195
+ acc += 1
196
+ elif O[o][i] == -1 and s[i]:
197
+ acc -= 1
198
+ out.append(acc)
199
+ return out
200
+
201
+
202
+ def reference_generate(arrs, H, request: bytes, max_bytes=MAX_OUT_BYTES):
203
+ R, I, O = arrs["R"].tolist(), arrs["I"].tolist(), arrs["O"].tolist()
204
+ theta, bias = arrs["theta"].tolist(), arrs["bias"].tolist()
205
+ s = [0] * H
206
+ ticks = 0
207
+
208
+ def feed(sym, mode, s):
209
+ nonlocal ticks
210
+ for p in range(TICKS):
211
+ x = [0] * D_IN
212
+ x[sym] = 1
213
+ x[mode] = 1
214
+ x[PHASE0 + p] = 1
215
+ s = reference_step(R, I, theta, s, x)
216
+ ticks += 1
217
+ return s
218
+ s = feed(BOS, MODE_PREFIX, s)
219
+ for b in request:
220
+ s = feed(b, MODE_PREFIX, s)
221
+ cur, out = SEP, bytearray()
222
+ while True:
223
+ s = feed(cur, MODE_OUTPUT, s)
224
+ sc = reference_scores(O, bias, s)
225
+ y = max(range(V), key=lambda o: (sc[o], -o))
226
+ if y == EOS:
227
+ return {"status": "ok", "source": bytes(out), "ticks": ticks}
228
+ if y >= 256:
229
+ return {"status": "invalid_symbol", "symbol": y, "source": bytes(out), "ticks": ticks}
230
+ out.append(y)
231
+ if len(out) > max_bytes:
232
+ return {"status": "too_long", "source": bytes(out[:max_bytes]), "ticks": ticks}
233
+ cur = y
sched.py ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Mechanism-study scheduler (sched-v1) on the UNCHANGED pilot runtime (wspp.runtime.Net, rsat-v1).
2
+
3
+ Protocol (identical to the pilot): reset state to zero; feed BOS then the raw payload bytes in PREFIX mode
4
+ (8 ticks each, clock phase 0..7); feed SEP in OUTPUT mode; after the 8th tick of each output-mode symbol
5
+ emit argmax (smallest id on ties) and feed it back in OUTPUT mode. A run ends at EOS, at an invalid special
6
+ symbol (BOS/SEP/PAD), or when `max_symbols` symbols (EOS included) have been emitted without EOS.
7
+
8
+ Timing vocabulary: tick = one synchronous state update; symbol cycle = 8 ticks (one external symbol);
9
+ prefix = BOS + payload ticks; output = ticks spent feeding SEP and fed-back symbols; generation = both.
10
+
11
+ Cycle fast-forward (exact): the future of a run is fully determined, at each output-symbol boundary
12
+ (phase 0, OUTPUT mode, prefix fully consumed, no other scheduler buffer), by (recurrent state bits,
13
+ incremental accumulator, symbol about to be fed). These are stored as exact byte strings in a dict keyed by
14
+ the full tuple, so a hit implies exact equality (Python compares keys after hashing). On a hit the
15
+ intervening emissions repeat forever; they are replayed literally until EOS-free cap exhaustion, so the
16
+ emitted sequence equals literal execution up to the cap.
17
+ """
18
+ from __future__ import annotations
19
+
20
+ import sys
21
+ from pathlib import Path
22
+
23
+ import numpy as np
24
+
25
+ try: # inside a fresh sandbox process only runtime.py + sched.py are present
26
+ import runtime as RT # noqa: E402
27
+ except ImportError:
28
+ ROOT = Path(__file__).resolve().parents[2]
29
+ sys.path.insert(0, str(ROOT))
30
+ from wspp import runtime as RT # noqa: E402
31
+
32
+ SCHED_VERSION = "sched-v1"
33
+
34
+
35
+ def _boundary_key(net, cur):
36
+ return (int(cur), np.packbits(net.s).tobytes(), net.rec.tobytes())
37
+
38
+
39
+ def run(net: RT.Net, payload: bytes, max_symbols: int, detect_cycles=True, trace=False, trace_units=12):
40
+ net.reset()
41
+ tr = [] if trace else None
42
+
43
+ def feed(sym, mode):
44
+ for p in range(RT.TICKS):
45
+ net.step(sym, mode, p)
46
+ if trace:
47
+ act = np.flatnonzero(net.s)
48
+ tr.append({"sym": int(sym), "mode": "prefix" if mode == RT.MODE_PREFIX else "output", "phase": p,
49
+ "n_active": int(act.size), "active": act[:trace_units].tolist()})
50
+ feed(RT.BOS, RT.MODE_PREFIX)
51
+ for b in payload:
52
+ feed(b, RT.MODE_PREFIX)
53
+ prefix_ticks = net.ticks
54
+ cur = RT.SEP
55
+ out = []
56
+ seen = {}
57
+ fast_forwarded = False
58
+ while len(out) < max_symbols:
59
+ if detect_cycles:
60
+ k = _boundary_key(net, cur)
61
+ if k in seen:
62
+ j = seen[k]
63
+ period = out[j:] # emissions between the two identical boundaries (all plain bytes, no EOS)
64
+ i = 0
65
+ while len(out) < max_symbols:
66
+ out.append(period[i % len(period)])
67
+ i += 1
68
+ fast_forwarded = True
69
+ break
70
+ seen[k] = len(out)
71
+ feed(cur, RT.MODE_OUTPUT)
72
+ sc = net.scores()
73
+ y = int(np.argmax(sc))
74
+ if trace:
75
+ top = np.argsort(-sc, kind="stable")[:3]
76
+ tr.append({"emit": y, "top_scores": [[int(t), int(sc[t])] for t in top]})
77
+ out.append(y)
78
+ if y == RT.EOS:
79
+ return _res("eos", out, prefix_ticks, net.ticks, fast_forwarded, tr)
80
+ if y >= 256:
81
+ return _res("invalid_symbol", out, prefix_ticks, net.ticks, fast_forwarded, tr)
82
+ cur = y
83
+ return _res("no_eos_within_cap", out, prefix_ticks, net.ticks, fast_forwarded, tr)
84
+
85
+
86
+ def _res(status, out, prefix_ticks, ticks, ff, tr):
87
+ r = {"status": status, "symbols": out, "prefix_ticks": prefix_ticks, "output_ticks": ticks - prefix_ticks,
88
+ "fast_forwarded": ff}
89
+ if tr is not None:
90
+ r["trace"] = tr
91
+ return r
92
+
93
+
94
+ def reference_run(arrs, H, payload: bytes, max_symbols: int):
95
+ """Definitional slow path (pure-Python reference_step / reference_scores), small networks only."""
96
+ R, I, O = arrs["R"].tolist(), arrs["I"].tolist(), arrs["O"].tolist()
97
+ theta, bias = arrs["theta"].tolist(), arrs["bias"].tolist()
98
+ s = [0] * H
99
+
100
+ def feed(sym, mode, s):
101
+ for p in range(RT.TICKS):
102
+ x = [0] * RT.D_IN
103
+ x[sym] = x[mode] = x[RT.PHASE0 + p] = 1
104
+ s = RT.reference_step(R, I, theta, s, x)
105
+ return s
106
+ s = feed(RT.BOS, RT.MODE_PREFIX, s)
107
+ for b in payload:
108
+ s = feed(b, RT.MODE_PREFIX, s)
109
+ cur, out = RT.SEP, []
110
+ while len(out) < max_symbols:
111
+ s = feed(cur, RT.MODE_OUTPUT, s)
112
+ sc = RT.reference_scores(O, bias, s)
113
+ y = max(range(RT.V), key=lambda o: (sc[o], -o))
114
+ out.append(y)
115
+ if y == RT.EOS:
116
+ return {"status": "eos", "symbols": out}
117
+ if y >= 256:
118
+ return {"status": "invalid_symbol", "symbols": out}
119
+ cur = y
120
+ return {"status": "no_eos_within_cap", "symbols": out}