The Principia Machina/TFK template: Difference between revisions
DeltaS Zero (talk | contribs) New page: a complete draft TFK that passes the gate, in pieces with a note on every field and the lists that repeat marked; Special:TpmCheck (TPX 0.2.0) starts with its blocks |
m 1 revision imported |
||
(No difference)
| |||
Latest revision as of 05:21, 1 October 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) |
A help page for anyone writing a draft Full Kernel (TFK): an author of a new UWC, an operator, or an AI agent testing The Principia Machina. It explains; the specification governs. Start at the inputs index; for a guided walk from a blank file to a declared UWC, follow the tutorial.
Purpose
A complete draft TFK that passes the new-UWC gate as written, shown in pieces with a note before each piece: what every field holds, which fields may be left out, and which lists repeat. The box on Special:TpmCheck starts with this draft. Run it as it is to see a passing result, then change it into your own system.
Explains: the zone schemas of TPS 2.2, 2.3 and 2.4 (schema 0.5.0) and the gate of TPS 5.5. Checked on 2026-10-01 with TPC-PY's check_draft 0.6.0 and with TPC-PHP, the calculator TPX runs: PASS in both, labelled structurally regular, D(TFK) d8b7fb01cff25e80820ceefbf9dd29ebe3676b45f110fb63ac5a5552edeb4a9c. Where this page and the specification differ, the specification governs.
How to read this page
- The grey blocks in the three zone sections, read from top to bottom, are one JSON object: the draft. The note above each block explains it. Nothing in a note is part of the draft.
- JSON has no comments. Notes stay on this page, never in your draft: the gate refuses any field it does not know, so a field called
COMMENTorNOTEis refused, not ignored. - The notes use four marks:
| Mark | Meaning |
|---|---|
| REQUIRED | must be present. |
| OPTIONAL | may be left out. |
| DEFAULT | may be left out, and then means the value shown. Written out or left out, the digest is the same. |
| REPEATS | a list. Write one item per thing your system has, separated by commas, as many as it needs. The order of the items changes nothing, the digest included, except in a yardstick's KEY, where order is the meaning. |
- Names are letters, digits and the underscore, ASCII only, not starting with a digit, and unique across the whole Prime Kernel, not only within one kind: a DOF and a constant may not share a name.
- Numbers: a decimal is a string in quotes (
"0.05","6.674e-11"); the two whole numbers N_X and S_MAX are not in quotes. The other way round is refused as the wrong type. Respelling a decimal ("0.050"for"0.05") changes no digest. - Dimensions are base dimensions with their exponents, the exponent always written:
L1 T-1,M1 L1 T-2,1for a pure number. Units are SI symbols with exponents:m,kg m s-2. Both are on Text and numbers. - Field by field, in full: the Prime Kernel, the Translation Manifold, the Measure Set and yardsticks. When the gate refuses: refusal messages.
What the template describes
A mass m on a spring of stiffness k_s, moving along the spring's axis (x, with velocity v, in time t), driven along that axis by a force F the kernel takes as given, with motion across the axis (z) fixed at 0, asserted only while |x| < x_max. It is the tutorial's spring with one addition, the driving force, and with every optional part used once, so that every field of every zone appears.
The kernel is a closed world: it contains these laws and nothing else. There is no gravity, friction, air resistance or electric force in it, because none is declared. To add one, declare it: a constant and a term in a law (the Prime Kernel, first section).
One top-level field is left out: MODULES_USED, the list of ENVIRONMENT MODULES a draft claims. No ENVIRONMENT MODULE is declared yet, so the gate can satisfy no claim; leave it out.
The Prime Kernel (TPK)
The draft opens, and the first zone begins. PARAMETERS is DEFAULT, with one field, D_VARIABLES: "ONE" (the default) when every derivative D(x, s) in the kernel is taken with respect to one variable, here the time t; "SEVERAL" for laws that change in space and in time. The six kinds that follow may come in any order, and a kind you do not need may be left out.
{
"TPK": {
"PARAMETERS": {"D_VARIABLES": "ONE"},
DOF, REPEATS: one object per degree of freedom, a variable the laws leave free to relate. NAME and DIMENSION are REQUIRED. ROLE is OPTIONAL and has one value, "INPUT": a quantity the kernel takes as given, such as the driving force F here, which needs no equation of motion of its own. If a law takes a derivative, its variable (here t) is a DOF too, and no constraint may fix or remove it. Every DOF must be named in the REFS of some law (T5).
"DOF": [
{"NAME": "t", "DIMENSION": "T1"},
{"NAME": "x", "DIMENSION": "L1"},
{"NAME": "v", "DIMENSION": "L1 T-1"},
{"NAME": "z", "DIMENSION": "L1"},
{"NAME": "F", "DIMENSION": "M1 L1 T-2", "ROLE": "INPUT"}
],
CONSTANT, REPEATS: one object per named physical quantity. NAME and DIMENSION are REQUIRED. VALUE, UNIT and UNCERTAINTY are OPTIONAL, with three rules: a VALUE needs a UNIT and a UNIT needs a VALUE; UNCERTAINTY needs a VALUE, is not negative, and is in the same UNIT; the UNIT must have the constant's DIMENSION. Here m and k_s are left symbolic and x_max has a value. A law whose every name has a value is evaluated at the final pass and must not be false (T3).
"CONSTANT": [
{"NAME": "m", "DIMENSION": "M1"},
{"NAME": "k_s", "DIMENSION": "M1 T-2"},
{"NAME": "x_max", "DIMENSION": "L1", "VALUE": "0.05", "UNIT": "m", "UNCERTAINTY": "0.001"}
],
LAW, REPEATS: one object per statement the kernel takes as given. NAME, STATEMENT (prose), REFS and ROLE are REQUIRED; EQUATION is OPTIONAL.
- REFS, REPEATS: every DOF and CONSTANT the law uses, each once, in any order. A law cites no other law.
- ROLE:
EOM(x)when the law is the equation of motion of the DOFx;CONSTRAINTfor a relation the motion must keep;CONSTITUTIVEfor a law giving a force or a material's response;INVARIANTfor a quantity the motion keeps;DEFINITIONfor a law defining one quantity from others. Capitals, no spaces. - EQUATION: the same law in the declared form. It must name exactly the names in REFS, and both sides must have one dimension (T4).
D(v, t)is the derivative ofvwith respect tot;D(z, t, 2)the second derivative. The grammar is in TPS 2.2. - Equations of motion: every DOF except the time, an INPUT DOF and a DOF a constraint fixes or removes needs exactly one law with ROLE
EOM(its name). HereKINgivesxandEOM_Xgivesv.EOM_Zrestates the motion ofz, which the constraintC_NOZfixes, so its ROLE isCONSTRAINT, notEOM(z). The structure check reads these at the final pass; it refuses nothing, and a missing equation is a named gap the UWC must fill first (EOM-0).
"LAW": [
{
"NAME": "EOM_X",
"STATEMENT": "m dv/dt = -k_s x + F",
"REFS": ["m", "v", "k_s", "x", "F", "t"],
"ROLE": "EOM(v)",
"EQUATION": "m * D(v, t) = -k_s * x + F"
},
{
"NAME": "KIN",
"STATEMENT": "dx/dt = v",
"REFS": ["x", "v", "t"],
"ROLE": "EOM(x)",
"EQUATION": "D(x, t) = v"
},
{
"NAME": "EOM_Z",
"STATEMENT": "m d2z/dt2 = 0",
"REFS": ["m", "z", "t"],
"ROLE": "CONSTRAINT",
"EQUATION": "m * D(z, t, 2) = 0"
}
],
ASSUMPTION, REPEATS: one object per proposition taken as given that the laws do not already say. NAME, PROPOSITION (prose) and REFS are REQUIRED; REFS REPEATS and may be empty, []. One proposition each: "k_s and m are positive" is two claims and is refused (T2), so it is written as the two entries below.
"ASSUMPTION": [
{"NAME": "A_kpos", "PROPOSITION": "k_s is positive", "REFS": ["k_s"]},
{"NAME": "A_mpos", "PROPOSITION": "m is positive", "REFS": ["m"]}
],
CONSTRAINT, REPEATS: one object per restriction on one DOF. NAME, TARGET (the one DOF), ACTION and STATEMENT (prose) are REQUIRED. ACTION is "FIX" or "REMOVE". FIX needs a VALUE and a UNIT with the TARGET's dimension; REMOVE takes neither. A fixed DOF keeps its Translation Manifold entry, as z does below; a removed DOF must have none. The TARGET must be named by some law (T5). A constraint restricts which motions the kernel describes; it declares no force.
"CONSTRAINT": [
{
"NAME": "C_NOZ",
"TARGET": "z",
"ACTION": "FIX",
"VALUE": "0",
"UNIT": "m",
"STATEMENT": "only motion on the spring axis is described: z = 0"
}
],
BOUNDARY, REPEATS: one object per region condition. Several boundaries all hold together; with none, the kernel is asserted everywhere. NAME, PREDICATE (prose, true where the kernel is asserted) and REFS are REQUIRED; CONDITION, the predicate in the declared form, is OPTIONAL, and must be decided for every value (T6). The last line closes the Prime Kernel.
"BOUNDARY": [
{
"NAME": "B_small",
"PREDICATE": "|x| < x_max",
"REFS": ["x", "x_max"],
"CONDITION": "abs(x) < x_max"
}
]
},
The Translation Manifold (TrM)
The second zone says what each DOF is in the environment the kernel describes. It has two REQUIRED parts, HEADER and ENTRIES. The header's three parts are REQUIRED too, but each is a list that may be empty, [].
ENVIRONMENT_INVENTORY, REPEATS: the measurable quantities of the environment, each with ENVIRONMENT_QUANTITY (a name, unique in the inventory) and DIMENSION, both REQUIRED. Every quantity listed must be identified by some entry below (IC1). Name them for what the kernel contains: a quantity called height suggests a gravity this kernel does not have.
"TrM": {
"HEADER": {
"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"},
{"ENVIRONMENT_QUANTITY": "applied_force", "DIMENSION": "M1 L1 T-2"}
],
SIGNATURE, REPEATS, may be []: the relations on the DOF that the identification must carry. NAME, OVER (REPEATS: the DOF it acts on) and IMAGE (prose: what it becomes in the environment) are REQUIRED. FORM and IMAGE_FORM are OPTIONAL, both or neither: FORM is the relation over the DOF, naming exactly OVER; IMAGE_FORM is the same relation over inventory quantities. With each DOF replaced by its entry's quantity, FORM must read exactly as IMAGE_FORM (IC4 (a)).
"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"
}
],
TRANSFORMATIONS, REPEATS, may be []: the re-representations under which an identification stays the same, such as a shift of the time origin or a change of units. NAME and STATEMENT (prose) are REQUIRED. The last line closes the header.
"TRANSFORMATIONS": [
{"NAME": "time_translation", "STATEMENT": "t -> t + t0"}
]
},
ENTRIES, REPEATS: one entry for every DOF of the kernel except a removed one; a fixed DOF and an INPUT DOF have one too. All nine fields are REQUIRED:
- NAME, unique among entries; a measured result names it as its QUANTITY.
- DOF, the kernel DOF it identifies; ENVIRONMENT_QUANTITY, the inventory quantity that DOF is.
- DOMAIN, prose, not blank: where the identification holds.
- IDENTIFICATION, prose: the identification itself.
- FALSIFIER, prose, not blank: what would show the identification false.
- FALSIFIER_CLASS:
"F1"(only an error in the author's own working shows it false),"F2"(a second party can test it from the fields alone) or"F3"(an external measurement could contradict it). - BEARS, REPEATS, may be
[]: the kernel LAW and CONSTRAINT names this entry carries into the environment. - DIMENSION: equal to its DOF's and to its quantity's (IC4 (b)).
No DOF may have two entries, and no quantity two DOF (IC3). A DOF with no entry is an untied DOF: a named gap, or a refusal under IC2_POLICY REJECT (IC2).
"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"
},
The other four entries: the same nine fields for x, v, z and F. The last line closes the Translation Manifold.
{
"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"
},
{
"NAME": "E_F",
"DOF": "F",
"DOMAIN": "always",
"ENVIRONMENT_QUANTITY": "applied_force",
"IDENTIFICATION": "F is the force an external driver applies to the mass along the spring axis",
"FALSIFIER": "a force gauge in line with the driver reading a force different from F beyond its uncertainty",
"FALSIFIER_CLASS": "F3",
"BEARS": ["EOM_X"],
"DIMENSION": "M1 L1 T-2"
}
]
},
The Measure Set (TMS)
The third zone holds the numbers and conventions by which records in the UWC are compared and ordered. It holds no physics.
PARAMETERS, REQUIRED:
STEP_CONVENTION, REQUIRED, prose, not blank: what counts as one derivation step.K, REQUIRED, a positive decimal as a string: the multiplier in the test of whether two measured values contradict (SR3).N_X, REQUIRED, a whole number of at least 2, not in quotes: how many independent contradictions of a standing record open an audit on it (SR6).S_MAX, REQUIRED, a whole number of at least 1, not in quotes: the depth that bounds T3.IC2_POLICY, DEFAULT"GAP": an untied DOF is a named gap;"REJECT"refuses it.PROMOTION_FLOOR, DEFAULT"F2": the falsifier class a result must reach to be promoted;"F1","F2"or"F3".STRUCTURE_CHECK, DEFAULT"ON": whether the structure check of the equations of motion runs at the final pass."OFF"gives the label Structure not Validated at Inception, reason CHECK OFF.
"TMS": {
"PARAMETERS": {
"STEP_CONVENTION": "one application of an inference rule or algebraic identity is one step",
"K": "2",
"N_X": 2,
"S_MAX": 10,
"IC2_POLICY": "GAP",
"PROMOTION_FLOOR": "F2",
"STRUCTURE_CHECK": "ON"
},
CONSTANTS, REPEATS, OPTIONAL (left out means empty): the named weights a yardstick uses, each with NAME and VALUE (a decimal as a string), both REQUIRED. A yardstick contains no literal number, so every weight it uses is named here. They are not physics: a mass or a stiffness goes in the Prime Kernel.
"CONSTANTS": [
{"NAME": "w_a", "VALUE": "1"},
{"NAME": "w_s", "VALUE": "0.5"}
],
YARDSTICKS, REPEATS, OPTIONAL (left out means empty): the UWC's own rules for ordering records. NAME, KEY and LIMITING are all REQUIRED.
- KEY, REPEATS, and here the order is the meaning: two records are compared term by term, first to last, and the first term that differs decides, the lower value closer. It begins with
SR1, andSR1appears nowhere else. Terms:A(the number of assumptions),S(the number of steps),NEG:term, andWSUM:weight*term;... with each weight a name from CONSTANTS; no spaces inside a term. Adding an assumption must never bring a record closer (SR9 C2). The full list is on the yardsticks page. - LIMITING, REPEATS, may be
[]but not left out: limiting cases, each with DOMAIN (prose) and KEY. Inside that DOMAIN, and only there, its KEY replaces the main KEY.
The last lines close the Measure Set and the draft.
"YARDSTICKS": [
{
"NAME": "combined_distance",
"KEY": ["SR1", "WSUM:w_a*A;w_s*S", "S"],
"LIMITING": [
{"DOMAIN": "results that hold only at x = 0", "KEY": ["SR1", "S", "A"]}
]
}
]
}
}
What the gate prints for it
Run unchanged, the gate prints these lines first (a plain copy, not part of the draft). Then come the inspections the declaring authority still owes, the GATE line and the line naming TPX's version.
TPK PASS
T2 PASS
T5 PASS
T4 PASS
T6 PASS
TrM PASS
IC1-IC4 PASS
TMS PASS
YARDSTICK combined_distance: C1 pass, C2 pass, C4 pass
FINAL T3 (constraints and laws) and IC2 PASS
STRUCTURE map (shown whatever STRUCTURE_CHECK says): analysis RUN; D variable t
F: INPUT
t: INDEPENDENT
v: DETERMINED (LAW EOM_X)
x: DETERMINED (LAW KIN)
z: FIXED
index 0, initial values 2 (the determined part; information)
closed: EOM_Z (ZERO)
STRUCTURE findings: none
STRUCTURE structurally regular
D(TPK) 44d25cd24f7cf812f79cfea910810b0de7e315d2866b872e33d67b9daff451aa
D(TrM) 8948b6e86fe5f2286053acb42b88d7db52bfb4bbb0f99cc2c68bf8d375aa4ee4
D(TMS) 3dce947d86f9826f98bb85e856cce2fcb8e347399b41806c7a597b1aa7681c50
D(TFK) d8b7fb01cff25e80820ceefbf9dd29ebe3676b45f110fb63ac5a5552edeb4a9c
Change one character inside a block and the digests change; respell a decimal, a dimension, a unit or the spacing of a form, or reorder the items of a list other than a KEY, and they do not (TPS 2.5).
Making it your own
- Write down your system's degrees of freedom, constants and laws before you touch the draft.
- Replace the template's entries kind by kind, keeping the shape: one object per item in each REPEATS list, commas between them, none after the last.
- Delete what you do not need: an OPTIONAL field; a kind of the Prime Kernel; the Measure Set's CONSTANTS and YARDSTICKS together; a header list, by writing
[]. - Run the gate after each change. When it refuses, the first problem it names is the one to fix; refusal messages explains each.
To start again from the template, open Special:TpmCheck afresh.
Non-goals
The template shows a draft that is well formed and passes the gate. It does not show that the spring's physics is right for any real spring, and a draft that passes the gate is still a draft: nothing is stored and no UWC is created.
For maintainers
Special:TpmCheck starts with the text of this page's blocks whose opening tag is exactly <pre class="tfk-template"> followed by a line break, joined in page order; TPX's setting $wgTpxCheckTemplatePage names this page. Other pre blocks are not read. After any edit, the joined blocks must still be one draft that passes the gate; run it there and update the digests above.