The Principia Machina/Tutorial/3 Write the Translation Manifold: Difference between revisions
DeltaS Zero (talk | contribs) Post-TPC-PY page batch B3 (S154, S159): HF4 (help set; S171-LITERALS) |
m 1 revision imported |
||
(No difference)
| |||
Latest revision as of 13:34, 30 September 2026
| The Principia Machina: map |
|---|
| Reading the diagrams Structure key Process key Definition of terms Roles |
| Reading by audience Start here: the walk through The operator's guide Tutorial: create a UUID Workspace Container (UWC) Public Recorder inputs Sponsors: your first agent |
| The specification Contents: parts, tables, diagrams TPS 0.5.0 (declared 2026-10-03, revision 8; machine-optimized text) Decisions (the foundations record, one line each) |
Tutorial: create a new UWC. One small example - a mass on a spring, moving along one line, with nothing else in its world - is taken from a blank file to a declared UWC in eight steps. Each step says what runs today and what is specified but not yet built. It explains; the specification governs. Field-by-field reference: Public Recorder inputs.
Purpose
Write the second zone: first the header, then one entry for each degree of freedom (DOF), t included.
Explains: TPS 0.3.0 (declared final on 2026-09-28 at revision 6; it follows TPS 0.1.1, declared final on 2026-09-26), whose sections 2.2 to 2.5 carry the zone schemas with the optional declared form, the ROLE field, the D variable and the structure check (records D92.1, D98.1, D99.1, D100.1, D103.1-D105.1, D106.1-D108.1, D132.1, D176.1, D177.1, D179.1 and D186.1); TPC-PY 0.1.0 (declared on 2026-09-28, tree digest a00161c1b321fd66abc591209007d46a7fa6290097835060e50f381426259043, conformed TPS 0.3.0; tpc_zone 0.5.0, tpc_units 0.1.1, tpc_tests 0.2.0, tpc_form 0.2.0, tpc_eom 0.1.0; schema 0.5.0) with check_draft 0.5.0, and TPC-PY 0.2.0 (declared on 2026-09-30; tree digest 2998ac4c24dff83bd047a691081b7d27bb25c9d26512bffe519f5c2b6ba127e2, conformed TPS 0.4.0; tpc_zone 0.5.1, tpc_units 0.1.2, tpc_tests 0.2.1, tpc_form 0.2.1, tpc_eom 0.2.0; schema 0.5.0) with check_draft 0.6.0. Where this page and the specification differ, the specification governs.
Step 3.1: the environment inventory
List the quantities of the world the kernel describes, each with its dimension. These are what the DOF will be identified with.
"ENVIRONMENT_INVENTORY": [
{"ENVIRONMENT_QUANTITY": "time", "DIMENSION": "T1"},
{"ENVIRONMENT_QUANTITY": "position", "DIMENSION": "L1"},
{"ENVIRONMENT_QUANTITY": "velocity", "DIMENSION": "L1 T-1"},
{"ENVIRONMENT_QUANTITY": "transverse_position", "DIMENSION": "L1"}
]
The quantity z is identified with is named transverse_position, not "height": the kernel declares no gravity, so it has no up and no down, only along the axis and across it.
Step 3.2: the signature
List the relations on the DOF that the identification must carry into the world. Here: the rate of change of position with time is velocity.
"SIGNATURE": [
{
"NAME": "time_derivative",
"OVER": ["x", "v", "t"],
"IMAGE": "d/dt maps position to velocity",
"FORM": "D(x, t) = v",
"IMAGE_FORM": "D(position, time) = velocity"
}
]
IMAGE is prose. FORM and IMAGE_FORM are the optional declared pair, both or neither: FORM is the relation over the DOF, and IMAGE_FORM the same relation over the environment quantities. With the pair, the checker tests that IMAGE_FORM is FORM with each DOF replaced by the quantity its entry names (IC4 (a), read syntactically; TPS 2.3).
Step 3.3: the transformations
List the changes of description under which an identification stays the same: here, moving the origin of time.
"TRANSFORMATIONS": [
{"NAME": "time_translation", "STATEMENT": "t -> t + t0"}
]
Step 3.4: the entries
One entry per DOF. Each says what the DOF is (IDENTIFICATION), where that holds (DOMAIN), what would show it false (FALSIFIER) and how severe that test is (FALSIFIER_CLASS), which laws and constraints it carries (BEARS), and its dimension.
"ENTRIES": [
{
"NAME": "E_t",
"DOF": "t",
"DOMAIN": "always",
"ENVIRONMENT_QUANTITY": "time",
"IDENTIFICATION": "t is the reading of a laboratory clock from an arbitrary origin",
"FALSIFIER": "a second clock whose readings differ from t by more than a constant offset beyond the stated uncertainty",
"FALSIFIER_CLASS": "F3",
"BEARS": [],
"DIMENSION": "T1"
},
{
"NAME": "E_x",
"DOF": "x",
"DOMAIN": "|x| < x_max",
"ENVIRONMENT_QUANTITY": "position",
"IDENTIFICATION": "x is the displacement of the mass along the spring axis from the point where the spring exerts no force",
"FALSIFIER": "a measured spring force not proportional to x inside the domain",
"FALSIFIER_CLASS": "F3",
"BEARS": ["EOM_X", "KIN"],
"DIMENSION": "L1"
},
{
"NAME": "E_v",
"DOF": "v",
"DOMAIN": "|x| < x_max",
"ENVIRONMENT_QUANTITY": "velocity",
"IDENTIFICATION": "v is the rate of change of x with t",
"FALSIFIER": "a measured velocity that differs from the rate of change of the measured x beyond uncertainty",
"FALSIFIER_CLASS": "F2",
"BEARS": ["KIN"],
"DIMENSION": "L1 T-1"
},
{
"NAME": "E_z",
"DOF": "z",
"DOMAIN": "always",
"ENVIRONMENT_QUANTITY": "transverse_position",
"IDENTIFICATION": "z is the displacement of the mass perpendicular to the spring axis",
"FALSIFIER": "a measured z different from 0 beyond its uncertainty",
"FALSIFIER_CLASS": "F3",
"BEARS": ["EOM_Z", "C_NOZ"],
"DIMENSION": "L1"
}
]
Choosing the falsifier class:
- E_x names a measured spring force: an outside measurement could contradict it. F3, external.
- E_v can be checked by anyone from the recorded values alone. F2, independent.
- E_z and E_t name outside measurements, a transverse displacement and a second clock. F3.
F1 - a test only the author's own re-derivation can make - is admitted but weak; F0, no falsifier, is refused.
E_t identifies the time. Its falsifier allows a constant offset between clocks, because the transformation above says a shift of the time origin changes nothing. E_t bears no law: the laws use t, but no law is about t.
E_z identifies z although C_NOZ fixes it. A fixed DOF stays in the manifold and needs an entry, and E_z bears C_NOZ. Only a DOF that a constraint removes has no entry (record D107.1).
Step 3.5: check
Add "TrM": { "HEADER": { ... }, "ENTRIES": [ ... ] } beside the TPK and run the checker again (examples/spring_step3_tpk_trm.json):
TPK PASS
T2 PASS
T5 PASS
T4 PASS
T6 PASS
TrM PASS
IC1-IC4 PASS
TMS MISSING (not checked)
FINAL not run: a zone is missing
Advisory result (TPC-PY: tpc_zone 0.5.1, tpc_units 0.1.2, tpc_tests 0.2.1, tpc_form 0.2.1, tpc_eom 0.2.0; schema 0.5.0). TPX decides at the gate.
The manifold passes its structural check and then the isomorphism checks IC1 to IC4: each of the four environment quantities is identified by exactly one entry, and each DOF by exactly one; the dimensions match on both sides; every law and constraint an entry bears is about DOF that have entries; and the signature's FORM, carried through the entries, reads as its IMAGE_FORM.
Tips
- Every entry needs all nine fields, including NAME: a measured result will later name the entry it belongs to.
- An inventory quantity that no entry uses is refused by IC1. A DOF no entry reaches is not refused: IC2 holds it as a named gap, and the Measure Set's IC2_POLICY settles it at the final pass.
- The checks take quantities by name. Two names for one quantity - "position" and "displacement" - count as two; list each quantity once.
- Name quantities for what the kernel contains. A word like "height" or "track" brings gravity and a support into the reader's mind that the kernel does not declare.
Non-goals
The manifold has no field for exclusions. To restrict the kernel, go back to step 2 and add a constraint (TPS 2.3). The manifold cannot add physics either: a force exists in the UWC only if the kernel declares it.
Worked example
The step is its own example. Field rules: Inputs: the Translation Manifold.
Governing sections: TPS 2.3 and 2.1.
Previous: 2 Write the Prime Kernel. Next: 4 Write the Measure Set.