<?xml version='1.0' encoding='UTF-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" docName="draft-le-carrier-identity-core-00" ipr="trust200902" submissionType="IETF" tocInclude="true" sortRefs="false" symRefs="true">
  <front>
    <title abbrev="Carrier Identity Core">Carrier Identity Core: A Proof-Bearing Kernel for Content-Derived Node Identity and Structural Graphs</title>
    <seriesInfo name="Internet-Draft" value="draft-le-carrier-identity-core-00"/>
    <author fullname="Thanh Le" initials="T." surname="Le">
      <address>
        <postal>
          <country>VN</country>
        </postal>
        <email>vnlemanhthanh@gmail.com</email>
      </address>
    </author>
    <date/>
    <abstract>
      <t>This document specifies Carrier Identity Core, a minimal, proof-bearing identity kernel for content-derived node identity, canonical references, and finite structural graphs.</t>
      <t>It defines a finite-sequence substrate, a self-contained frame and hash interface, staged formation of immutable lanes, node bodies and proof-bearing occurrences, Qualified Node Keys, canonical reference construction, exact structural theorem schemas, and structural graph validity.</t>
      <t>Informative derivations of the exact structural theorem schemas are provided in an informative appendix.</t>
      <t>This document does not define computational security experiments, evidence records, proof admission, resource evaluation, consensus, liveness, finality, governance, or operational protocol behavior.</t>
    </abstract>
  </front>
  <middle>
    <section>
      <name>Introduction</name>
      <t>This document specifies Carrier Identity Core, a minimal, proof-bearing identity kernel for content-derived node identity, canonical references, and finite structural graphs. The kernel separates three questions that content-addressed systems commonly conflate: whether an object is validly formed, whether its identifier is unique, and whether a structural graph over such objects is valid. Each question is answered at a distinct layer with distinct obligations. The kernel is minimal in the sense that it defines only the formation, identity, reference, and graph-validity layers required to separate structural validity from exactness and operational policy.</t>
      <t>Formation is a structural obligation: every lane, body, transcript, identifier, and Qualified Node Key carries a proof-bearing formation witness, and a carrier system exists only when identity construction is total over every declared body type. Identifier uniqueness is not assumed from formation: it is a conditional theorem that holds exactly when named hash-injectivity premises hold, and an exactness certificate names the lanes for which those premises have been proved. Structural graph validity is derived from canonical body references alone and is independent of exactness, admission, evidence, and consensus.</t>
      <t>Admission, trust, evidence, governance, consensus, resource accounting, and computational security are intentionally outside this core. An importing specification can add such judgments over core values within the extension boundary (<xref target="app-boundary"/>); the formation rules, identity construction, canonical reference interpretation, and graph truth defined here are not subject to redefinition there. Typical uses include content-derived node identifiers in provenance graphs, artifact graphs, and transparency structures, and importing protocols that need a stable identity kernel separate from admission, evidence, and governance.</t>
    </section>
    <section toc="include">
      <name>Terminology</name>
      <table align="left">
        <thead>
          <tr>
            <th>Term</th>
            <th>Meaning in this specification</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>Carrier</td>
            <td>A lane-indexed node body whose canonical construction determines a content-derived identifier. The formal type realizing a carrier is Body.</td>
          </tr>
          <tr>
            <td>Substrate</td>
            <td>The radix, alphabet, frame codec, and stable-binding digest width fixed before any lane is declared.</td>
          </tr>
          <tr>
            <td>Lane authority</td>
            <td>A finite nominal lane type together with one proof-bearing primitive binding for each lane. A lane plays the role of a sort in a many-sorted signature; the name "lane" is retained for its derived vocabulary (lane-bound hashing, lane descriptor).</td>
          </tr>
          <tr>
            <td>Reference authority</td>
            <td>A lane authority extended with one proof-bearing reference binding for each lane.</td>
          </tr>
          <tr>
            <td>Closed lane binding</td>
            <td>The pair consisting of a lane's primitive binding and reference binding. Neither component is replaceable.</td>
          </tr>
          <tr>
            <td>Node body</td>
            <td>The proof-independent tuple that contributes to identity.</td>
          </tr>
          <tr>
            <td>Occurrence</td>
            <td>A node body paired with an opaque proof object. The proof object is not an identity input.</td>
          </tr>
          <tr>
            <td>Hash purpose</td>
            <td>One of the four lane-bound-hash roles: parameter, content, references, or identifier. The transcript tag is not a hash purpose.</td>
          </tr>
          <tr>
            <td>Lane-bound hashing</td>
            <td>Hashing of an explicit hash-purpose tag frame, lane-descriptor frame, and message under the suite fixed by the lane.</td>
          </tr>
          <tr>
            <td>Qualified Node Key</td>
            <td>The dependent pair (lane, identifier). It is the structural graph key.</td>
          </tr>
          <tr>
            <td>Canonical references</td>
            <td>A duplicate-free, strictly ordered finite sequence of Qualified Node Keys admitted by a lane.</td>
          </tr>
          <tr>
            <td>Structural graph</td>
            <td>A finite Qualified-Node-Key map to node bodies with edges derived only from body references.</td>
          </tr>
          <tr>
            <td>Kernel</td>
            <td>The set of formation rules, identity constructions, canonical reference rules, structural graph validity conditions, and exact theorem schemas defined by this document.</td>
          </tr>
          <tr>
            <td>Exactness certificate</td>
            <td>A proof-bearing layer over a carrier system that names lanes proven to satisfy the four exact-body-binding hash-injectivity premises.</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section toc="include">
      <name>Conventions and Definitions</name>
      <t>Definitions, equations, typed records, theorem schemas, and explicitly labeled requirements are normative within this document. Examples, notes, and informative references are not normative.</t>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
      <t>Lowercase uses of "must", "should", or "may" are descriptive only and do not carry requirement strength unless the corresponding uppercase BCP 14 keyword is used.</t>
      <t>The normative requirements in this document apply to specifications that claim conformance to Carrier Identity Core. They do not by themselves impose interoperability requirements on implementations unless an importing specification explicitly adopts them.</t>
      <t>The formation dependency order, the core and exactness invariants, and the extension boundary (Appendices A through D) are normative. The ASCII equivalence table and the theorem-schema derivations (Appendices E and F) are informative.</t>
      <t>The theorem schemas stated in the main body are normative. The derivations in the informative derivation appendix do not add normative requirements.</t>
      <t>Normative references are incorporated only to the extent stated below.</t>
    </section>
    <section toc="include">
      <name>Core Conformance Requirements</name>
      <t>This section summarizes the normative formation requirements defined in this document. The full definitions in the corresponding sections are authoritative.</t>
      <ol spacing="normal">
        <li>A Substrate MUST satisfy FrameCodecWellFormed.</li>
        <li>A StableRuleBinding MUST have non-empty owner_id, rule_id, and revision.</li>
        <li>A HashSuite MUST have positive output_length.</li>
        <li>Each lane MUST have exactly one primitive binding and exactly one reference binding.</li>
        <li>Each primitive binding MUST satisfy LanePrimitiveBindingWellFormed.</li>
        <li>The four hash-purpose tags MUST be pairwise distinct.</li>
        <li>The transcript tag MUST be distinct from every hash-purpose tag.</li>
        <li>The index encoder, parameter encoder, context encoder, and payload encoder MUST be injective.</li>
        <li>The parameter encoder, context encoder, and payload encoder outputs, and all digest-length strings, MUST lie in D_frame.</li>
        <li>Canonical references MUST be duplicate-free and strictly ordered by referenceBytes.</li>
        <li>The reference accumulator MUST be injective on canonical reference sequences.</li>
        <li>A CarrierSystem MUST provide a body inhabitant for every lane.</li>
        <li>A CarrierSystem MUST provide a construction-formation witness for every typed body.</li>
        <li>StructuralGraphValid MUST require graph scope, body-construction validity, key consistency, closure validity, and internal acyclicity.</li>
        <li>An ExactnessCertificate MUST name only lanes satisfying ExactBodyBindingPremises.</li>
        <li>An importing specification MUST NOT redefine, override, weaken, strengthen, or shadow any core definition within the extension boundary (<xref target="app-boundary"/>), including but not limited to the illustrative names listed there.</li>
      </ol>
      <t>The informative appendices do not add conformance requirements.</t>
    </section>
    <section toc="include">
      <name>Scope and independence</name>
      <t>Carrier Identity Core defines exactly:</t>
      <ol spacing="normal">
        <li>a finite-sequence substrate;</li>
        <li>a self-contained frame and hash interface;</li>
        <li>staged, proof-bearing formation of immutable lanes;</li>
        <li>node bodies and proof-bearing occurrences;</li>
        <li>transcript, identifier, Qualified Node Key, and canonical reference construction;</li>
        <li>finite structural graphs, closure, and internal acyclicity;</li>
        <li>exact structural theorem schemas whose premises are stated inside this document; and</li>
        <li>an optional exactness-certificate layer that names a proof-certified subset of lanes satisfying the exact-body-binding premises.</li>
      </ol>
      <t>Detailed derivations of the exact structural theorem schemas appear in the derivation appendix and are informative. They do not alter the normative theorem schemas stated in the main body.</t>
      <t>The core does not define:</t>
      <ul spacing="normal">
        <li>computational security experiments;</li>
        <li>evidence records;</li>
        <li>obligation registries;</li>
        <li>proof admission;</li>
        <li>resource evaluation;</li>
        <li>semantic comparison;</li>
        <li>fork classification;</li>
        <li>lineage, transition choice, recovery, or branch preference;</li>
        <li>governance; or</li>
        <li>consensus, liveness, and finality.</li>
      </ul>
      <t>This document has no semantic dependency on another specification. A separate specification MAY import these definitions, but MUST NOT alter their formation, identity, reference interpretation, or graph truth.</t>
      <t>Admission, trust, evidence, resource accounting, consensus, finality, governance, and operational liveness are outside the scope of this document.</t>
      <t>ParseFrame is used in the substrate well-formedness laws and derived frame laws but not in identity construction or structural theorem conclusions after substrate formation. It is retained, together with LaneBindingValid and Occurrence with its projections (packOccurrence, laneOfOccurrence, bodyOfOccurrence), as export surface for importing specifications; none of these is consumed by any later construction in this core.</t>
      <t>This core is compared informatively with <xref target="RFC6920"/>, <xref target="RFC8949"/>, <xref target="RFC8785"/>, <xref target="RFC9052"/>, <xref target="RFC9162"/>, <xref target="RFC9562"/>, <xref target="FIPS180-4"/>, and <xref target="SP800-185"/>; nothing is imported from any of them.</t>
      <section toc="include">
        <name>Mathematical notation</name>
        <t>The following constructors are primitive mathematical notation:</t>
        <t>A finite non-empty nominal Type is a finite non-empty set of names with decidable equality; equality of lanes is propositional equality in the model, and implementations require a decidable equality procedure. A finite sequence R is duplicate-free iff for all i &lt; j &lt; |R|, R[i] ≠ R[j]. For m : FinMap K V, domain(m) := { k : K | m[k] is defined }.</t>
        <sourcecode type="pseudocode"><![CDATA[
Type, Prop, Bool, Nat
Set A                 set of values of type A
FinSet A              finite set of values of type A
FinSeq A              finite sequence of values of type A
FinMap K V            finite partial map from K to V
Option A := None | Some(A)
DepPair (x : A). B(x) dependent pair
transport_h(x)        equality transport of x along a bound witness h
]]></sourcecode>
        <t>For <tt>R : FinSeq A</tt>, <tt>r ∈ R</tt> means <tt>∃ j &lt; |R|. R[j] = r</tt>.</t>
        <t>For a finite sequence <tt>s</tt>, <tt>|s|</tt> is its length, <tt>ε</tt> is the empty sequence, and <tt>s ‖ t</tt> is concatenation. Equality is typed equality.</t>
        <t>Equality appearing in formulas is typed propositional equality, not judgmental equality of a particular proof assistant. Definitional equality is used only for unfolding records, projections, and local aliases. When equality between values of dependent types is required, an explicit witness h is bound and transport_h is used. For <tt>h : x = y</tt> and <tt>v : B(x)</tt>, <tt>transport_h(v) : B(y)</tt> denotes equality substitution along that specific witness <tt>h</tt>; a theorem using transport binds <tt>h</tt> explicitly. A function displayed with an arrow is total unless a partial arrow <tt>⇀</tt> is shown. A record is <strong>telescopic</strong> when a later field type depends only on preceding fields.</t>
      </section>
    </section>
    <section toc="include" anchor="s-1">
      <name>Substrate</name>
      <section toc="include" anchor="s-1-1">
        <name>Parameterized frame codec</name>
        <t>For an alphabet <tt>A</tt>, a frame codec is:</t>
        <sourcecode type="pseudocode"><![CDATA[
FrameCodec[A] := ⟨
  input_language : Set (FinSeq A),
  frame : FinSeq A → FinSeq A,
  parse : FinSeq A ⇀ FinSeq A × FinSeq A
⟩
]]></sourcecode>
        <t>For a codec <tt>c</tt>, write <tt>D_c := c.input_language</tt>. It is well formed exactly when:</t>
        <sourcecode type="pseudocode"><![CDATA[
FrameCodecWellFormed(c) :=
  (∀ a ∈ D_c. ∀ rest.
     c.parse(c.frame(a) ‖ rest) = Some(a, rest))
  ∧ (∀ raw,a,rest.
     c.parse(raw) = Some(a, rest)
       ⟹ a ∈ D_c ∧ raw = c.frame(a) ‖ rest)
]]></sourcecode>
        <t>Because <tt>c.parse</tt> is a partial function, it is single-valued. Round-trip therefore derives the following laws for admitted frame inputs; they are not independent formation axioms:</t>
        <sourcecode type="pseudocode"><![CDATA[
FrameLeftCancellation(c) :=
  ∀ a,b ∈ D_c. ∀ x,y.
    c.frame(a) ‖ x = c.frame(b) ‖ y
      ⟹ a = b ∧ x = y

FrameInjective(c) :=
  ∀ a,b ∈ D_c.
    c.frame(a) = c.frame(b) ⟹ a = b
]]></sourcecode>
        <t><tt>FrameCodecWellFormed(c)</tt> entails <tt>FrameLeftCancellation(c)</tt>: parsing the same raw sequence through the two round-trip equations yields the same unique result. <tt>FrameInjective(c)</tt> follows by applying left cancellation with <tt>x = y = ε</tt>.</t>
        <t>Two consequences follow from FrameCodecWellFormed: admitted frame outputs are prefix-free over D_frame, and no admitted frame output is empty when D_frame contains more than one element. This core does not constrain frame(x) for x outside D_frame; implementations SHOULD reject inputs outside D_frame before framing.</t>
      </section>
      <section toc="include" anchor="s-1-2">
        <name>Base record</name>
        <t>A substrate is the following telescopic record:</t>
        <sourcecode type="pseudocode"><![CDATA[
Substrate := ⟨
  radix : Nat,
  radix_at_least_two : radix ≥ 2,
  binding_digest_length : Nat,
  binding_digest_length_positive : binding_digest_length > 0,
  frame_codec : FrameCodec[{0,…,radix−1}],
  frame_codec_formation : FrameCodecWellFormed(frame_codec)
⟩
]]></sourcecode>
        <t>For a fixed <tt>β : Substrate</tt>, define:</t>
        <sourcecode type="pseudocode"><![CDATA[
Σ_β := {0,…,β.radix−1}
Σ*_β := FinSeq Σ_β
Σ^n_β := { s ∈ Σ*_β | |s| = n }
D_frame,β := β.frame_codec.input_language
Frame_β := β.frame_codec.frame
ParseFrame_β := β.frame_codec.parse
]]></sourcecode>
        <t>The natural-number order on <tt>Σ_β = {0,…,radix−1}</tt> induces a strict total lexicographic order <tt>&lt;lex</tt> on <tt>Σ*_β</tt>. For <tt>s, t : Σ*_β</tt>, <tt>s &lt;lex t</tt> holds iff either <tt>s</tt> is a proper prefix of <tt>t</tt>, or there exists <tt>k &lt; min(|s|, |t|)</tt> with <tt>s[j] = t[j]</tt> for all <tt>j &lt; k</tt> and <tt>s[k] &lt; t[k]</tt>.</t>
      </section>
      <section toc="include" anchor="s-1-3">
        <name>Stable semantic bindings</name>
        <t>A stable binding is a finite value, never a function value:</t>
        <sourcecode type="pseudocode"><![CDATA[
StableRuleBinding_β := ⟨
  owner_id : Σ*_β,
  rule_id : Σ*_β,
  revision : Σ*_β,
  digest : Σ^{β.binding_digest_length}_β
⟩
]]></sourcecode>
        <sourcecode type="pseudocode"><![CDATA[
StableRuleBindingWellFormed_β(b) :=
  b.owner_id ≠ ε
  ∧ b.rule_id ≠ ε
  ∧ b.revision ≠ ε
]]></sourcecode>
        <t>A type, function, or predicate may be paired with a stable identity:</t>
        <sourcecode type="pseudocode"><![CDATA[
BoundType_β := ⟨
  binding : StableRuleBinding_β,
  carrier : Type
⟩

BoundFunction_β[A,B] := ⟨
  binding : StableRuleBinding_β,
  apply : A → B
⟩

BoundPredicate_β[A] := ⟨
  binding : StableRuleBinding_β,
  holds : A → Prop
⟩
]]></sourcecode>
        <t>The semantic value is selected by the binding record that contains it. A function value, predicate value, or host-language object identity is never a canonical role key.</t>
      </section>
    </section>
    <section toc="include" anchor="s-2">
      <name>Primitive lane authority</name>
      <section toc="include" anchor="s-2-1">
        <name>Hash suites and hash purposes</name>
        <t>For a base <tt>β</tt>, a hash suite is:</t>
        <sourcecode type="pseudocode"><![CDATA[
HashSuite_β := ⟨
  suite_binding : StableRuleBinding_β,
  output_length : Nat,
  output_length_positive : output_length > 0,
  hash : Σ*_β → Σ^{output_length}_β
⟩
]]></sourcecode>
        <sourcecode type="pseudocode"><![CDATA[
HashSuiteWellFormed_β(σ) :=
  StableRuleBindingWellFormed_β(σ.suite_binding)
  ∧ σ.output_length > 0
]]></sourcecode>
        <t>No injectivity, collision resistance, or computational property follows from this definition.</t>
        <t>The finite type <tt>HashPurpose</tt> has exactly four distinct constructors:</t>
        <sourcecode type="pseudocode"><![CDATA[
identifierPurpose
parameterPurpose
contentPurpose
referencesPurpose
]]></sourcecode>
        <t>The transcript tag is a separate lane field. It is not a fifth hash purpose and has no lane-bound-hash domain.</t>
      </section>
      <section toc="include" anchor="s-2-2">
        <name>Primitive lane binding</name>
        <t>For a base <tt>β</tt>, a finite nominal type <tt>Λ</tt>, and <tt>λ : Λ</tt>, the primitive lane binding is the following telescopic record:</t>
        <sourcecode type="pseudocode"><![CDATA[
LanePrimitiveBinding⟦β,Λ⟧(λ) := ⟨
  lane_registry_binding : StableRuleBinding_β,
  lane_descriptor : Σ*_β,
  lane_descriptor_binding : StableRuleBinding_β,

  hash_suite : HashSuite_β,
  proof_parameter : BoundType_β,
  proof_object : BoundType_β,
  context : BoundType_β,
  payload : BoundType_β,
  index : BoundType_β,

  transcript_tag : Σ*_β,
  transcript_tag_binding : StableRuleBinding_β,
  hash_purpose_tags : BoundFunction_β[HashPurpose, Σ*_β],
  covered_lbh_domain : HashPurpose → BoundPredicate_β[Σ*_β],

  index_width : Nat,
  index_encoder :
    BoundFunction_β[index.carrier, Σ^{index_width}_β],
  parameter_encoder :
    BoundFunction_β[proof_parameter.carrier, Σ*_β],
  context_encoder :
    BoundFunction_β[context.carrier, Σ*_β],
  payload_encoder :
    BoundFunction_β[payload.carrier, Σ*_β],

  identity_context_bytes : Σ*_β,
  identity_context_binding : StableRuleBinding_β
⟩
]]></sourcecode>
        <t>The <tt>identity_context_bytes</tt> field is an explicit identity input. This core does not define its semantics. An importing specification MUST NOT assume that this field cryptographically commits any unstated semantics unless that specification defines an explicit conformance rule for the field.</t>
        <t>The primitive binding is well formed when:</t>
        <sourcecode type="pseudocode"><![CDATA[
LanePrimitiveBindingWellFormed⟦β,Λ⟧(λ,b) :=
  StableRuleBindingWellFormed_β(b.lane_registry_binding)
  ∧ b.lane_descriptor ∈ D_frame,β
  ∧ StableRuleBindingWellFormed_β(b.lane_descriptor_binding)
  ∧ HashSuiteWellFormed_β(b.hash_suite)

  ∧ StableRuleBindingWellFormed_β(b.proof_parameter.binding)
  ∧ StableRuleBindingWellFormed_β(b.proof_object.binding)
  ∧ StableRuleBindingWellFormed_β(b.context.binding)
  ∧ StableRuleBindingWellFormed_β(b.payload.binding)
  ∧ StableRuleBindingWellFormed_β(b.index.binding)

  ∧ b.transcript_tag ∈ D_frame,β
  ∧ StableRuleBindingWellFormed_β(b.transcript_tag_binding)
  ∧ StableRuleBindingWellFormed_β(b.hash_purpose_tags.binding)
  ∧ (∀ p : HashPurpose.
       b.hash_purpose_tags.apply(p) ∈ D_frame,β)
  ∧ (∀ p,q : HashPurpose.
       b.hash_purpose_tags.apply(p)
         = b.hash_purpose_tags.apply(q)
       ⟹ p = q)
  ∧ (∀ p : HashPurpose.
       b.transcript_tag ≠ b.hash_purpose_tags.apply(p))
  ∧ (∀ p : HashPurpose.
       StableRuleBindingWellFormed_β(
         b.covered_lbh_domain(p).binding))

  ∧ b.index_width > 0
  ∧ StableRuleBindingWellFormed_β(b.index_encoder.binding)
  ∧ StableRuleBindingWellFormed_β(b.parameter_encoder.binding)
  ∧ StableRuleBindingWellFormed_β(b.context_encoder.binding)
  ∧ StableRuleBindingWellFormed_β(b.payload_encoder.binding)

  ∧ (∀ i,j : b.index.carrier.
       b.index_encoder.apply(i) = b.index_encoder.apply(j)
       ⟹ i = j)
  ∧ (∀ u,v : b.proof_parameter.carrier.
       b.parameter_encoder.apply(u) = b.parameter_encoder.apply(v)
       ⟹ u = v)
  ∧ (∀ c,d : b.context.carrier.
       b.context_encoder.apply(c) = b.context_encoder.apply(d)
       ⟹ c = d)
  ∧ (∀ x,y : b.payload.carrier.
       b.payload_encoder.apply(x) = b.payload_encoder.apply(y)
       ⟹ x = y)

  ∧ (∀ u : b.proof_parameter.carrier.
       b.parameter_encoder.apply(u) ∈ D_frame,β)
  ∧ (∀ c : b.context.carrier.
       b.context_encoder.apply(c) ∈ D_frame,β)
  ∧ (∀ x : b.payload.carrier.
       b.payload_encoder.apply(x) ∈ D_frame,β)
  ∧ (∀ z : Σ^{b.hash_suite.output_length}_β.
       z ∈ D_frame,β)

  ∧ b.identity_context_bytes ∈ D_frame,β
  ∧ StableRuleBindingWellFormed_β(
       b.identity_context_binding)
]]></sourcecode>
        <t><tt>covered_lbh_domain</tt> is a plain function on the finite four-constructor type <tt>HashPurpose</tt>. It is equivalent in definition to four separate bound predicates, one per purpose, and therefore does not introduce a higher-order or recursive binding that would violate <xref target="s-1-3"/>. The transcript-tag distinctness conjunct formalizes the separation stated in <xref target="s-2-1"/>: no hash-purpose tag equals the transcript tag, so domain-separation of lane-bound hashing is strict. Hash-purpose tags need not be distinct across lanes, because the framed lane descriptor provides cross-lane domain separation.</t>
        <t>This core permits empty lane descriptors, transcript tags, or identity context bytes when they are admitted by D_frame; importing specifications MAY require non-empty administrative values. If the index carrier has more values than radix^index_width, no injective fixed-width index encoder exists and the primitive binding cannot be well formed.</t>
      </section>
      <section toc="include" anchor="s-2-3">
        <name>Lane authority record</name>
        <t>A lane authority is:</t>
        <sourcecode type="pseudocode"><![CDATA[
LaneAuthority := ⟨
  base : Substrate,
  lanes : finite non-empty nominal Type,
  primitive_binding_of :
    (λ : lanes) → LanePrimitiveBinding⟦base,lanes⟧(λ),
  primitive_formation_proof :
    ∀ λ : lanes.
      LanePrimitiveBindingWellFormed⟦base,lanes⟧(
        λ, primitive_binding_of(λ)),
  lane_descriptor_unique :
    ∀ λ,μ : lanes.
      primitive_binding_of(λ).lane_descriptor
        = primitive_binding_of(μ).lane_descriptor
      ⟹ λ = μ
⟩
]]></sourcecode>
        <t>This record is finite and well founded. It does not mention Qualified Node Keys, references, bodies, or a completed carrier system.</t>
        <t>For <tt>α : LaneAuthority</tt>, define:</t>
        <sourcecode type="pseudocode"><![CDATA[
Σ_α := Σ_{α.base}
Σ*_α := Σ*_{α.base}
Σ^n_α := Σ^n_{α.base}
D_frame,α := D_frame_{α.base}
Frame_α := Frame_{α.base}
Lane_α := α.lanes
primitiveBindingOf_α := α.primitive_binding_of

laneBytes_α(λ) := primitiveBindingOf_α(λ).lane_descriptor
hashSuite_α(λ) := primitiveBindingOf_α(λ).hash_suite
IdSpace_α(λ) := Σ^{hashSuite_α(λ).output_length}_α

ProofParameter_α,λ :=
  primitiveBindingOf_α(λ).proof_parameter.carrier
Proof_α,λ := primitiveBindingOf_α(λ).proof_object.carrier
Context_α,λ := primitiveBindingOf_α(λ).context.carrier
Payload_α,λ := primitiveBindingOf_α(λ).payload.carrier
Index_α,λ := primitiveBindingOf_α(λ).index.carrier

transcriptTag_α,λ :=
  primitiveBindingOf_α(λ).transcript_tag
tag_α,λ(p) :=
  primitiveBindingOf_α(λ).hash_purpose_tags.apply(p)
D_LBH,α(λ,p) :=
  primitiveBindingOf_α(λ).covered_lbh_domain(p).holds
D_LBH_binding,α(λ,p) :=
  primitiveBindingOf_α(λ).covered_lbh_domain(p).binding

L_α,λ := primitiveBindingOf_α(λ).index_encoder.apply
encodeParameter_α,λ :=
  primitiveBindingOf_α(λ).parameter_encoder.apply
encodeContext_α,λ :=
  primitiveBindingOf_α(λ).context_encoder.apply
encodePayload_α,λ :=
  primitiveBindingOf_α(λ).payload_encoder.apply
identityContextBytes_α,λ :=
  primitiveBindingOf_α(λ).identity_context_bytes
]]></sourcecode>
      </section>
    </section>
    <section toc="include" anchor="s-3">
      <name>Reference authority and system formation</name>
      <section toc="include" anchor="s-3-1">
        <name>Qualified Node Keys over a lane authority</name>
        <t>For <tt>α : LaneAuthority</tt>:</t>
        <sourcecode type="pseudocode"><![CDATA[
QualifiedNodeKey_α :=
  DepPair (λ : Lane_α). IdSpace_α(λ)

Reference_α := QualifiedNodeKey_α
]]></sourcecode>
        <t>For <tt>q = ⟨λ,i⟩</tt>:</t>
        <sourcecode type="pseudocode"><![CDATA[
idBytes_α,λ(i) := i

ReferenceFrameValid_α(q) :=
  laneBytes_α(λ) ∈ D_frame,α
  ∧ idBytes_α,λ(i) ∈ D_frame,α

referenceBytes_α(q) :=
  Frame_α(laneBytes_α(λ))
  ‖ Frame_α(idBytes_α,λ(i))
]]></sourcecode>
        <t><tt>referenceBytes_α</tt> represents the typed pair; it does not define dependent-pair equality.</t>
      </section>
      <section toc="include" anchor="s-3-2">
        <name>Reference binding</name>
        <t>For <tt>α : LaneAuthority</tt> and <tt>λ : Lane_α</tt>:</t>
        <sourcecode type="pseudocode"><![CDATA[
LaneReferenceBinding⟦α⟧(λ) := ⟨
  reference_shape : BoundPredicate_{α.base}[QualifiedNodeKey_α],
  reference_accumulator :
    BoundFunction_{α.base}[
      FinSeq QualifiedNodeKey_α,
      Σ*_α]
⟩
]]></sourcecode>
        <t>For a candidate reference binding <tt>b : LaneReferenceBinding⟦α⟧(λ)</tt>:</t>
        <sourcecode type="pseudocode"><![CDATA[
CanonicalReferencesFor⟦α⟧(λ,b) :=
  { R : FinSeq Reference_α |
      (∀ r ∈ R. ReferenceFrameValid_α(r))
      ∧ (∀ r ∈ R. b.reference_shape.holds(r))
      ∧ R is duplicate-free by typed Reference_α equality
      ∧ (∀ i,j. i < j < |R| ⟹
           referenceBytes_α(R[i])
             <lex referenceBytes_α(R[j])) }
]]></sourcecode>
        <sourcecode type="pseudocode"><![CDATA[
LaneReferenceBindingWellFormed⟦α⟧(λ,b) :=
  StableRuleBindingWellFormed_{α.base}(
    b.reference_shape.binding)
  ∧ StableRuleBindingWellFormed_{α.base}(
    b.reference_accumulator.binding)
  ∧ (∀ R,S : CanonicalReferencesFor⟦α⟧(λ,b).
       b.reference_accumulator.apply(R)
         = b.reference_accumulator.apply(S)
       ⟹ R = S)
]]></sourcecode>
        <t>The accumulator law is scoped to canonical references. It does not claim injectivity on arbitrary sequences.</t>
        <t><tt>ReferenceFrameValid_α(q)</tt> holds for every <tt>q : QualifiedNodeKey_α</tt> formed from a valid lane authority: <tt>laneBytes_α(λ) ∈ D_frame,α</tt> follows from <tt>LanePrimitiveBindingWellFormed</tt> (lane descriptor in frame), and <tt>idBytes_α,λ(i) = i ∈ D_frame,α</tt> holds because identifiers are digests of fixed output length and <tt>LanePrimitiveBindingWellFormed</tt> requires every digest-length string to lie in <tt>D_frame,α</tt>. Duplicate-freeness in <tt>CanonicalReferencesFor</tt> is implied by the strict <tt>&lt;lex</tt> order together with injectivity of <tt>referenceBytes_α</tt>; these two conditions are stated explicitly so that <xref target="s-3-2"/> stands independently of <xref target="s-4"/>.</t>
      </section>
      <section toc="include" anchor="s-3-3">
        <name>Reference authority</name>
        <t>A reference authority is:</t>
        <sourcecode type="pseudocode"><![CDATA[
ReferenceAuthority := ⟨
  lane_authority : LaneAuthority,
  reference_binding_of :
    (λ : lane_authority.lanes) →
      LaneReferenceBinding⟦lane_authority⟧(λ),
  reference_formation_proof :
    ∀ λ : lane_authority.lanes.
      LaneReferenceBindingWellFormed⟦lane_authority⟧(
        λ, reference_binding_of(λ))
⟩
]]></sourcecode>
        <t>This is the first formation stage that may mention Qualified Node Keys. It depends on a completed lane authority and does not feed back into lane formation.</t>
        <t>For <tt>χ : ReferenceAuthority</tt>, write <tt>αχ := χ.lane_authority</tt> and define:</t>
        <sourcecode type="pseudocode"><![CDATA[
Lane_χ := Lane_αχ
QualifiedNodeKey_χ := QualifiedNodeKey_αχ
Reference_χ := Reference_αχ
referenceBindingOf_χ := χ.reference_binding_of

CanonicalReferences_χ,λ :=
  CanonicalReferencesFor⟦αχ⟧(
    λ, referenceBindingOf_χ(λ))

referenceAdmitted_χ,λ :=
  referenceBindingOf_χ(λ).reference_shape.holds
refsAccumulator_χ,λ :=
  referenceBindingOf_χ(λ).reference_accumulator.apply
]]></sourcecode>
        <t>The complete lane binding is the finite pair:</t>
        <sourcecode type="pseudocode"><![CDATA[
ClosedLaneBinding⟦χ⟧(λ) := ⟨
  primitive : LanePrimitiveBinding⟦αχ.base,Lane_χ⟧(λ),
  references : LaneReferenceBinding⟦αχ⟧(λ)
⟩

closedBindingOf⟦χ⟧(λ) := ⟨
  primitive := primitiveBindingOf_αχ(λ),
  references := referenceBindingOf_χ(λ)
⟩
]]></sourcecode>
      </section>
      <section toc="include" anchor="s-3-4">
        <name>Bodies and occurrences</name>
        <t>For <tt>χ : ReferenceAuthority</tt> and <tt>λ : Lane_χ</tt>:</t>
        <sourcecode type="pseudocode"><![CDATA[
Body_χ,λ := ⟨
  parameter : ProofParameter_αχ,λ,
  context : Context_αχ,λ,
  payload : Payload_αχ,λ,
  index : Index_αχ,λ,
  references : CanonicalReferences_χ,λ
⟩

Occurrence_χ,λ := ⟨
  body : Body_χ,λ,
  proof : Proof_αχ,λ
⟩

Body_χ := DepPair (λ : Lane_χ). Body_χ,λ
Occurrence_χ := DepPair (λ : Lane_χ). Occurrence_χ,λ
]]></sourcecode>
        <t>Packing and projections are definitional. Proof objects are excluded from every construction below.</t>
      </section>
      <section toc="include" anchor="s-3-5">
        <name>Identity construction before final closure</name>
        <t>For <tt>χ : ReferenceAuthority</tt>, <tt>λ : Lane_χ</tt>, <tt>p : HashPurpose</tt>, and <tt>message : Σ*_αχ</tt>:</t>
        <sourcecode type="pseudocode"><![CDATA[
LBHInput_χ,λ(p,message) :=
  Frame_αχ(tag_αχ,λ(p))
  ‖ Frame_αχ(laneBytes_αχ(λ))
  ‖ message

LaneHashInputValid_χ,λ(p,message) :=
  tag_αχ,λ(p) ∈ D_frame,αχ
  ∧ laneBytes_αχ(λ) ∈ D_frame,αχ
  ∧ D_LBH,αχ(λ,p)(LBHInput_χ,λ(p,message))

LBH_χ,λ(p,message) :=
  hashSuite_αχ(λ).hash(LBHInput_χ,λ(p,message))
]]></sourcecode>
        <t>For <tt>b : Body_χ,λ</tt>:</t>
        <sourcecode type="pseudocode"><![CDATA[
ParameterMessage_χ,λ(b) :=
  Frame_αχ(encodeParameter_αχ,λ(b.parameter))

ContentMessage_χ,λ(b) :=
  Frame_αχ(encodeContext_αχ,λ(b.context))
  ‖ Frame_αχ(encodePayload_αχ,λ(b.payload))

ReferencesMessage_χ,λ(b) :=
  refsAccumulator_χ,λ(b.references)

ParameterDigest_χ,λ(b) :=
  LBH_χ,λ(parameterPurpose, ParameterMessage_χ,λ(b))

ContentDigest_χ,λ(b) :=
  LBH_χ,λ(contentPurpose, ContentMessage_χ,λ(b))

ReferencesDigest_χ,λ(b) :=
  LBH_χ,λ(referencesPurpose, ReferencesMessage_χ,λ(b))
]]></sourcecode>
        <t>The transcript contains six framed segments and one fixed-width index segment, ordered as shown:</t>
        <sourcecode type="pseudocode"><![CDATA[
Transcript_χ,λ(b) :=
    Frame_αχ(transcriptTag_αχ,λ)
  ‖ Frame_αχ(laneBytes_αχ(λ))
  ‖ Frame_αχ(identityContextBytes_αχ,λ)
  ‖ Frame_αχ(ParameterDigest_χ,λ(b))
  ‖ Frame_αχ(ContentDigest_χ,λ(b))
  ‖ L_αχ,λ(b.index)
  ‖ Frame_αχ(ReferencesDigest_χ,λ(b))

IdentifierMessage_χ,λ(b) :=
  Frame_αχ(Transcript_χ,λ(b))

identifier_χ,λ(b) :=
  LBH_χ,λ(identifierPurpose, IdentifierMessage_χ,λ(b))

qualifiedNodeKey_χ,λ(b) :=
  ⟨λ, identifier_χ,λ(b)⟩
]]></sourcecode>
        <t>Because IdentifierMessage frames the entire transcript, the assembled transcript is itself an identity-relevant frame input; its admissibility is exactly the IdentifierFrameValid conjunct of BodyConstructionValid. The reference accumulator output is used directly as a lane-bound-hash message and is not framed; it is therefore not required to lie in D_frame.</t>
        <t>The fixed-width index is not additionally framed.</t>
      </section>
      <section toc="include" anchor="s-3-6">
        <name>Construction validity and non-circular preimage languages</name>
        <t>For <tt>b : Body_χ,λ</tt>:</t>
        <sourcecode type="pseudocode"><![CDATA[
ParameterFrameValid_χ,λ(b) :=
  encodeParameter_αχ,λ(b.parameter) ∈ D_frame,αχ

ContentFrameValid_χ,λ(b) :=
  encodeContext_αχ,λ(b.context) ∈ D_frame,αχ
  ∧ encodePayload_αχ,λ(b.payload) ∈ D_frame,αχ

TranscriptFrameValid_χ,λ(b) :=
  transcriptTag_αχ,λ ∈ D_frame,αχ
  ∧ laneBytes_αχ(λ) ∈ D_frame,αχ
  ∧ identityContextBytes_αχ,λ ∈ D_frame,αχ
  ∧ ParameterDigest_χ,λ(b) ∈ D_frame,αχ
  ∧ ContentDigest_χ,λ(b) ∈ D_frame,αχ
  ∧ ReferencesDigest_χ,λ(b) ∈ D_frame,αχ

IdentifierFrameValid_χ,λ(b) :=
  Transcript_χ,λ(b) ∈ D_frame,αχ
]]></sourcecode>
        <sourcecode type="pseudocode"><![CDATA[
BodyConstructionValid_χ,λ(b) :=
  ParameterFrameValid_χ,λ(b)
  ∧ ContentFrameValid_χ,λ(b)
  ∧ TranscriptFrameValid_χ,λ(b)
  ∧ IdentifierFrameValid_χ,λ(b)
  ∧ LaneHashInputValid_χ,λ(
       parameterPurpose, ParameterMessage_χ,λ(b))
  ∧ LaneHashInputValid_χ,λ(
       contentPurpose, ContentMessage_χ,λ(b))
  ∧ LaneHashInputValid_χ,λ(
       referencesPurpose, ReferencesMessage_χ,λ(b))
  ∧ LaneHashInputValid_χ,λ(
       identifierPurpose, IdentifierMessage_χ,λ(b))
]]></sourcecode>
        <t>Given <tt>LanePrimitiveBindingWellFormed</tt> for the lane's primitive binding, the conjuncts <tt>ParameterFrameValid</tt>, <tt>ContentFrameValid</tt>, <tt>TranscriptFrameValid</tt>, and the first two conjuncts of each <tt>LaneHashInputValid</tt> instance (the purpose-tag and lane-descriptor frame memberships) are theorems that follow from <tt>LanePrimitiveBindingWellFormed</tt> alone. The contingent content of <tt>BodyConstructionValid_χ,λ(b)</tt> is exactly <tt>IdentifierFrameValid_χ,λ(b)</tt> together with the four <tt>D_LBH</tt> memberships.</t>
        <t>The exact preimage languages range over <strong>all typed bodies</strong>. They are not filtered by <tt>BodyConstructionValid</tt>:</t>
        <sourcecode type="pseudocode"><![CDATA[
ParameterPreimageLanguage_χ,λ :=
  { LBHInput_χ,λ(parameterPurpose, ParameterMessage_χ,λ(b)) |
      b : Body_χ,λ }

ContentPreimageLanguage_χ,λ :=
  { LBHInput_χ,λ(contentPurpose, ContentMessage_χ,λ(b)) |
      b : Body_χ,λ }

ReferencesPreimageLanguage_χ,λ :=
  { LBHInput_χ,λ(referencesPurpose, ReferencesMessage_χ,λ(b)) |
      b : Body_χ,λ }

IdentifierPreimageLanguage_χ,λ :=
  { LBHInput_χ,λ(identifierPurpose, IdentifierMessage_χ,λ(b)) |
      b : Body_χ,λ }
]]></sourcecode>
        <sourcecode type="pseudocode"><![CDATA[
ConstructionDomainClosed_χ(λ) :=
  ParameterPreimageLanguage_χ,λ
    ⊆ { x | D_LBH,αχ(λ,parameterPurpose)(x) }
  ∧ ContentPreimageLanguage_χ,λ
    ⊆ { x | D_LBH,αχ(λ,contentPurpose)(x) }
  ∧ ReferencesPreimageLanguage_χ,λ
    ⊆ { x | D_LBH,αχ(λ,referencesPurpose)(x) }
  ∧ IdentifierPreimageLanguage_χ,λ
    ⊆ { x | D_LBH,αχ(λ,identifierPurpose)(x) }
]]></sourcecode>
      </section>
      <section toc="include" anchor="s-3-7">
        <name>Final carrier system</name>
        <t>A carrier system is:</t>
        <sourcecode type="pseudocode"><![CDATA[
CarrierSystem := ⟨
  reference_authority : ReferenceAuthority,
  body_inhabitant :
    ∀ λ : Lane_{reference_authority}.
      Body_{reference_authority,λ},
  construction_formation_proof :
    ∀ λ : Lane_{reference_authority}.
    ∀ b : Body_{reference_authority,λ}.
      BodyConstructionValid_{reference_authority,λ}(b)
⟩
]]></sourcecode>
        <t><tt>body_inhabitant</tt> prevents system formation from succeeding only because a lane's body type is empty. It establishes one structural body per lane; it does not assert an accepted occurrence, inhabit the proof-object type, or import admission semantics. <tt>construction_formation_proof</tt> is a genuine witness over every typed body. It is not a proposition defined and then silently assumed. The inhabitant forces <tt>ProofParameter_λ</tt>, <tt>Context_λ</tt>, <tt>Payload_λ</tt>, and <tt>Index_λ</tt> to be inhabited for every lane; <tt>CanonicalReferences_λ</tt> is always inhabited by <tt>ε</tt>. <tt>Proof_λ</tt> may be empty, in which case <tt>Occurrence_λ</tt> is uninhabited for that lane.</t>
        <t>This universal obligation is intentional. <tt>Body_χ,λ</tt> is the carrier of bodies for which the lane claims that identity construction is total; it is not an unrestricted raw-value universe later filtered by operational reachability or admission. A realization with <tt>D_frame,αχ = Σ*_{αχ}</tt> can usually discharge the frame clauses directly. A bounded frame domain already discharges encoder-output and digest admissibility at lane formation (<xref target="s-2-2"/>); if <tt>D_frame,αχ</tt> cannot contain them, <tt>LanePrimitiveBindingWellFormed</tt> fails before any <tt>CarrierSystem</tt> is attempted. The residual construction-formation obligation is that every assembled transcript remains in <tt>D_frame,αχ</tt> and that the four lane-bound-hash domains cover their preimage languages. A realization that combines an unbounded carrier with a frame domain too small to contain every resulting construction does not form a <tt>CarrierSystem</tt>.</t>
        <t>Forming a <tt>CarrierSystem</tt> does not by itself establish <tt>HashInjectiveOn</tt> for any lane or hash purpose. <tt>HashSuiteWellFormed</tt> places no injectivity requirement on <tt>hash</tt>; a lane whose <tt>hash</tt> is a constant function can still form a valid <tt>CarrierSystem</tt>. Identity uniqueness (<xref target="s-5"/>) requires this as a separate, additional hypothesis. The exactness-certificate layer in <xref target="s-5-7"/> names lanes for which that additional hypothesis has been supplied.</t>
        <t>One instance <tt>κ : CarrierSystem</tt> is fixed for the remainder of the document. It is arbitrary but fixed: every construction and theorem schema below is parametric in <tt>κ</tt> and may be instantiated with any carrier system. Let <tt>χκ := κ.reference_authority</tt> and <tt>ακ := χκ.lane_authority</tt>. The following unqualified aliases are local to this same <tt>κ</tt>:</t>
        <sourcecode type="pseudocode"><![CDATA[
Σ := Σ_ακ
Σ* := Σ*_ακ
Σ^n := Σ^n_ακ
D_frame := D_frame,ακ
Frame := Frame_ακ
ParseFrame := ParseFrame_{ακ.base}

StableRuleBinding := StableRuleBinding_{ακ.base}
BoundType := BoundType_{ακ.base}
BoundFunction := BoundFunction_{ακ.base}
BoundPredicate := BoundPredicate_{ακ.base}
HashSuite := HashSuite_{ακ.base}

StableRuleBindingWellFormed :=
  StableRuleBindingWellFormed_{ακ.base}
HashSuiteWellFormed := HashSuiteWellFormed_{ακ.base}

Lane := Lane_χκ
QualifiedNodeKey := QualifiedNodeKey_χκ
Reference := Reference_χκ
Body_λ := Body_χκ,λ
Occurrence_λ := Occurrence_χκ,λ
Body := Body_χκ
Occurrence := Occurrence_χκ
CanonicalReferences_λ := CanonicalReferences_χκ,λ

primitiveBindingOf(λ) := primitiveBindingOf_ακ(λ)
referenceBindingOf(λ) := referenceBindingOf_χκ(λ)
ClosedLaneBinding(λ) := ClosedLaneBinding⟦χκ⟧(λ)
bindingOf(λ) := closedBindingOf⟦χκ⟧(λ)

laneBytes(λ) := laneBytes_ακ(λ)
hashSuite(λ) := hashSuite_ακ(λ)
IdSpace(λ) := IdSpace_ακ(λ)
ProofParameter_λ := ProofParameter_ακ,λ
Proof_λ := Proof_ακ,λ
Context_λ := Context_ακ,λ
Payload_λ := Payload_ακ,λ
Index_λ := Index_ακ,λ

transcriptTag_λ := transcriptTag_ακ,λ
tag_λ := tag_ακ,λ
D_LBH(λ,p) := { x | D_LBH,ακ(λ,p)(x) }
D_LBHBinding(λ,p) := D_LBH_binding,ακ(λ,p)
L_λ := L_ακ,λ
encodeParameter_λ := encodeParameter_ακ,λ
encodeContext_λ := encodeContext_ακ,λ
encodePayload_λ := encodePayload_ακ,λ
identityContextBytes_λ := identityContextBytes_ακ,λ
referenceAdmitted_λ := referenceAdmitted_χκ,λ
refsAccumulator_λ := refsAccumulator_χκ,λ

ReferenceFrameValid := ReferenceFrameValid_ακ
referenceBytes := referenceBytes_ακ
LBHInput_λ := LBHInput_χκ,λ
LaneHashInputValid_λ := LaneHashInputValid_χκ,λ
LBH_λ := LBH_χκ,λ
ParameterMessage_λ := ParameterMessage_χκ,λ
ContentMessage_λ := ContentMessage_χκ,λ
ReferencesMessage_λ := ReferencesMessage_χκ,λ
ParameterDigest_λ := ParameterDigest_χκ,λ
ContentDigest_λ := ContentDigest_χκ,λ
ReferencesDigest_λ := ReferencesDigest_χκ,λ
Transcript_λ := Transcript_χκ,λ
IdentifierMessage_λ := IdentifierMessage_χκ,λ
identifier_λ := identifier_χκ,λ
qualifiedNodeKey_λ := qualifiedNodeKey_χκ,λ
BodyConstructionValid_λ := BodyConstructionValid_χκ,λ

ParameterPreimageLanguage_λ :=
  ParameterPreimageLanguage_χκ,λ
ContentPreimageLanguage_λ := ContentPreimageLanguage_χκ,λ
ReferencesPreimageLanguage_λ :=
  ReferencesPreimageLanguage_χκ,λ
IdentifierPreimageLanguage_λ :=
  IdentifierPreimageLanguage_χκ,λ
ConstructionDomainClosed(λ) :=
  ConstructionDomainClosed_χκ(λ)
]]></sourcecode>
        <t>The proof-bearing consequences are:</t>
        <sourcecode type="pseudocode"><![CDATA[
LanePrimitiveWellFormed(λ) :=
  LanePrimitiveBindingWellFormed⟦ακ.base,Lane⟧(
    λ, primitiveBindingOf(λ))

LanePrimitiveFormation(λ) :
  LanePrimitiveWellFormed(λ) :=
    ακ.primitive_formation_proof(λ)

ReferenceBindingWellFormed(λ) :=
  LaneReferenceBindingWellFormed⟦ακ⟧(
    λ, referenceBindingOf(λ))

ReferenceBindingFormation(λ) :
  ReferenceBindingWellFormed(λ) :=
    χκ.reference_formation_proof(λ)

LaneWellFormed(λ) :=
  LanePrimitiveWellFormed(λ)
  ∧ ReferenceBindingWellFormed(λ)

LaneFormation(λ) : LaneWellFormed(λ) :=
  ⟨LanePrimitiveFormation(λ),
   ReferenceBindingFormation(λ)⟩

LaneBindingValid(λ,b) :=
  b = bindingOf(λ) ∧ LaneWellFormed(λ)

BodyInhabitant(λ) : Body_λ :=
  κ.body_inhabitant(λ)

BodyConstructionFormation(λ,b) :
  BodyConstructionValid_λ(b) :=
    κ.construction_formation_proof(λ,b)

ConstructionDomainFormation(λ) :
  ConstructionDomainClosed(λ)
]]></sourcecode>
        <t><tt>ConstructionDomainFormation</tt> follows by expanding the four preimage languages and applying <tt>BodyConstructionFormation</tt> to their witness bodies. It is not circular because those languages contain every typed body without a validity filter.</t>
      </section>
    </section>
    <section toc="include" anchor="s-4">
      <name>Canonical references, body projections, and ReferenceBytesInjective</name>
      <t>Theorem ReferenceBytesInjective states that <tt>referenceBytes</tt> is injective on frame-valid references. For <tt>q = ⟨λ,i⟩</tt>, dependent-pair equality gives lane equality before same-lane identifier equality:</t>
      <sourcecode type="pseudocode"><![CDATA[
ReferenceFrameValid(q₁)
∧ ReferenceFrameValid(q₂)
∧ referenceBytes(q₁) = referenceBytes(q₂)
  ⟹ q₁ = q₂
]]></sourcecode>
      <t>The proof uses frame cancellation, <tt>ακ.lane_descriptor_unique</tt>, and typed identifier equality. Because <tt>ReferenceFrameValid</tt> holds for every QNK in a valid lane authority (established in <xref target="s-3-2"/>), the frame-valid premises of this injectivity theorem are always satisfied and need not be separately discharged by callers.</t>
      <t>Packing and projections are definitional:</t>
      <sourcecode type="pseudocode"><![CDATA[
packBody(λ,b) := ⟨λ,b⟩
packOccurrence(λ,c) := ⟨λ,c⟩
laneOfBody(⟨λ,b⟩) := λ
laneOfOccurrence(⟨λ,c⟩) := λ
bodyOfOccurrence(⟨λ,c⟩) := ⟨λ,c.body⟩
bodyValue(⟨λ,b⟩) := b
referencesOfBody(⟨λ,b⟩) := b.references
]]></sourcecode>
    </section>
    <section toc="include" anchor="s-5">
      <name>Exact structural laws</name>
      <t>The theorem schemas in this section are exact structural laws. They are normative consequences of the definitions when their stated premises hold. They do not impose formation obligations on CarrierSystem unless an ExactnessCertificate is asserted.</t>
      <t>Exact hash injectivity is a mathematical premise, not an implementation property. Concrete instantiations cannot generally satisfy exact injectivity over infinite preimage languages with finite hash output spaces. Such instantiations rely on computational collision resistance specified outside this core.</t>
      <t>The dependency skeleton of the exact laws is:</t>
      <sourcecode type="pseudocode"><![CDATA[
identifier equality
  + identifier-purpose hash injectivity
  + construction-valid identifier preimages
    ⇒ transcript equality

transcript equality
  + frame left cancellation
  + fixed-width injective index encoding
    ⇒ component-digest equality and index equality

component-digest equality
  + construction-specific hash injectivity
  + injective canonical encoders / reference accumulator
    ⇒ component source-value equality

component equality
    ⇒ body equality
]]></sourcecode>
      <t>No stage imports an admission, evidence, cost, computational, comparison, or policy premise.</t>
      <section toc="include" anchor="s-5-1">
        <name>Hash injectivity on a named language</name>
        <t>For <tt>λ : Lane</tt>, <tt>p : HashPurpose</tt>, and a language <tt>S</tt>:</t>
        <sourcecode type="pseudocode"><![CDATA[
HashInjectiveOn(λ,p,S) :=
  S ⊆ D_LBH(λ,p)
  ∧ ∀ x,y ∈ S.
      hashSuite(λ).hash(x) = hashSuite(λ).hash(y)
        ⟹ x = y
]]></sourcecode>
        <t>The purpose-specific domain-closure conjunct is part of the premise rather than an external side condition. For the four named preimage languages, <tt>ConstructionDomainFormation(λ)</tt> supplies that conjunct; only exact hash injectivity remains an independent assumption. This premise is not implied by hash-suite formation.</t>
        <t><tt>HashInjectiveOn(λ,p,S)</tt> is an exact idealization. It is satisfiable only when <tt>|S| ≤ |Σ^{hashSuite(λ).output_length}|</tt>; when an identity-relevant carrier makes <tt>S</tt> infinite, the premise is uninhabitable and every theorem citing it holds vacuously. A realization discharges these theorems only computationally, by replacing each exact-injectivity premise with collision resistance of the lane’s hash suite on the corresponding language. That substitution is outside this core.</t>
      </section>
      <section toc="include" anchor="s-5-2">
        <name>Theorem IdentifierTranscriptBinding</name>
        <t>For <tt>a,b : Body_λ</tt>:</t>
        <sourcecode type="pseudocode"><![CDATA[
BodyConstructionValid_λ(a)
∧ BodyConstructionValid_λ(b)
∧ HashInjectiveOn(
    λ, identifierPurpose, IdentifierPreimageLanguage_λ)
∧ identifier_λ(a) = identifier_λ(b)
  ⟹ Transcript_λ(a) = Transcript_λ(b)
]]></sourcecode>
        <t>The actual identifier preimage is:</t>
        <sourcecode type="pseudocode"><![CDATA[
LBHInput_λ(identifierPurpose, Frame(Transcript_λ(b)))
]]></sourcecode>
      </section>
      <section toc="include" anchor="s-5-3">
        <name>Theorem TranscriptDecomposition</name>
        <t>For <tt>a,b : Body_λ</tt>:</t>
        <sourcecode type="pseudocode"><![CDATA[
BodyConstructionValid_λ(a)
∧ BodyConstructionValid_λ(b)
∧ Transcript_λ(a) = Transcript_λ(b)
  ⟹ ParameterDigest_λ(a) = ParameterDigest_λ(b)
   ∧ ContentDigest_λ(a) = ContentDigest_λ(b)
   ∧ a.index = b.index
   ∧ ReferencesDigest_λ(a) = ReferencesDigest_λ(b)
]]></sourcecode>
        <t>The proof uses five applications of frame left cancellation, equality of fixed-width index prefixes, injectivity of <tt>L_λ</tt>, and frame injectivity for the final reference digest.</t>
      </section>
      <section toc="include" anchor="s-5-4">
        <name>Theorems ExactParameterRecovery, ExactContentRecovery, ExactReferencesRecovery</name>
        <t>For <tt>a,b : Body_λ</tt>, each component theorem explicitly includes construction validity:</t>
        <sourcecode type="pseudocode"><![CDATA[
BodyConstructionValid_λ(a)
∧ BodyConstructionValid_λ(b)
∧ HashInjectiveOn(
    λ, parameterPurpose, ParameterPreimageLanguage_λ)
∧ ParameterDigest_λ(a) = ParameterDigest_λ(b)
  ⟹ a.parameter = b.parameter
]]></sourcecode>
        <sourcecode type="pseudocode"><![CDATA[
BodyConstructionValid_λ(a)
∧ BodyConstructionValid_λ(b)
∧ HashInjectiveOn(
    λ, contentPurpose, ContentPreimageLanguage_λ)
∧ ContentDigest_λ(a) = ContentDigest_λ(b)
  ⟹ a.context = b.context
   ∧ a.payload = b.payload
]]></sourcecode>
        <sourcecode type="pseudocode"><![CDATA[
BodyConstructionValid_λ(a)
∧ BodyConstructionValid_λ(b)
∧ HashInjectiveOn(
    λ, referencesPurpose, ReferencesPreimageLanguage_λ)
∧ ReferencesDigest_λ(a) = ReferencesDigest_λ(b)
  ⟹ a.references = b.references
]]></sourcecode>
        <t>These conclusions additionally use the injective canonical encoders and reference accumulator carried by the formation proofs.</t>
      </section>
      <section toc="include" anchor="s-5-5">
        <name>Theorem ExactBodyBinding</name>
        <sourcecode type="pseudocode"><![CDATA[
ExactBodyBindingPremises(λ) :=
  HashInjectiveOn(
    λ, identifierPurpose, IdentifierPreimageLanguage_λ)
  ∧ HashInjectiveOn(
    λ, parameterPurpose, ParameterPreimageLanguage_λ)
  ∧ HashInjectiveOn(
    λ, contentPurpose, ContentPreimageLanguage_λ)
  ∧ HashInjectiveOn(
    λ, referencesPurpose, ReferencesPreimageLanguage_λ)
]]></sourcecode>
        <sourcecode type="pseudocode"><![CDATA[
BodyConstructionValid_λ(a)
∧ BodyConstructionValid_λ(b)
∧ ExactBodyBindingPremises(λ)
∧ identifier_λ(a) = identifier_λ(b)
  ⟹ a = b
]]></sourcecode>
      </section>
      <section toc="include" anchor="s-5-6">
        <name>Theorem QualifiedKeyUniqueness</name>
        <sourcecode type="pseudocode"><![CDATA[
BodyConstructionValid_λ(a)
∧ BodyConstructionValid_μ(b)
∧ qualifiedNodeKey_λ(a) = qualifiedNodeKey_μ(b)
∧ ExactBodyBindingPremises(λ)
  ⟹ ∃ h : λ = μ.
        transport_h(a) = b
]]></sourcecode>
        <t>The equality witness is bound by the conclusion. The lane-equality witness extracted from the key equality transports the construction-validity witness and the exact-body-binding premises from λ to μ before exact body binding is applied in lane μ. No proof-irrelevance or implicit choice of a lane-equality proof is assumed.</t>
      </section>
      <section toc="include" anchor="s-5-7">
        <name>Exactness certificates</name>
        <t>Exactness is not a formation stage. It is a proof-bearing layer over a formed carrier system. No field of <tt>LaneAuthority</tt>, <tt>ReferenceAuthority</tt>, or <tt>CarrierSystem</tt> depends on this layer, and forming a <tt>CarrierSystem</tt> does not force any lane to satisfy the exact-body-binding premises.</t>
        <t>For <tt>χ : ReferenceAuthority</tt>, define:</t>
        <sourcecode type="pseudocode"><![CDATA[
D_LBH_χ(λ,p) := { x | D_LBH,χ.lane_authority(λ,p)(x) }
hashSuite_χ(λ) := hashSuite_{χ.lane_authority}(λ)

HashInjectiveOn_χ(λ,p,S) :=
  S ⊆ D_LBH_χ(λ,p)
  ∧ ∀ x,y ∈ S.
      hashSuite_χ(λ).hash(x) = hashSuite_χ(λ).hash(y)
        ⟹ x = y
]]></sourcecode>
        <t>For <tt>ι : CarrierSystem</tt>, write <tt>χι := ι.reference_authority</tt>. Define:</t>
        <sourcecode type="pseudocode"><![CDATA[
ExactBodyBindingPremises⟦ι⟧(λ) :=
  HashInjectiveOn_{χι}(
    λ, identifierPurpose, IdentifierPreimageLanguage_{χι,λ})
  ∧ HashInjectiveOn_{χι}(
    λ, parameterPurpose, ParameterPreimageLanguage_{χι,λ})
  ∧ HashInjectiveOn_{χι}(
    λ, contentPurpose, ContentPreimageLanguage_{χι,λ})
  ∧ HashInjectiveOn_{χι}(
    λ, referencesPurpose, ReferencesPreimageLanguage_{χι,λ})

ExactLanePredicate(ι) :=
  { λ : Lane_{χι} |
      ExactBodyBindingPremises⟦ι⟧(λ) }
]]></sourcecode>
        <t>An exactness certificate is:</t>
        <sourcecode type="pseudocode"><![CDATA[
ExactnessCertificate := ⟨
  base : CarrierSystem,
  exact_lanes : Set (Lane_{base.reference_authority}),
  exact_lanes_sound :
    ∀ λ ∈ exact_lanes.
      ExactBodyBindingPremises⟦base⟧(λ)
⟩
]]></sourcecode>
        <t>For <tt>ε : ExactnessCertificate</tt>, define:</t>
        <sourcecode type="pseudocode"><![CDATA[
baseOfExact(ε) := ε.base
ExactLanes(ε) := ε.exact_lanes
exactLanesSound(ε) := ε.exact_lanes_sound
]]></sourcecode>
        <t>Applied to a carrier system <tt>ι</tt>, <tt>ExactLanePredicate(ι)</tt> denotes the derived exact-lane predicate. Applied to an exactness certificate <tt>ε</tt>, <tt>ExactLanes(ε)</tt> denotes the carried set <tt>ε.exact_lanes</tt>. The two names are distinct; neither is an overload of the other. The soundness field makes the carried set a lower bound for the derived predicate:</t>
        <sourcecode type="pseudocode"><![CDATA[
λ ∈ ExactLanes(ε)
  ⟹ ExactBodyBindingPremises⟦baseOfExact(ε)⟧(λ)
]]></sourcecode>
        <t>and therefore:</t>
        <sourcecode type="pseudocode"><![CDATA[
ExactLanes(ε) ⊆ ExactLanePredicate(baseOfExact(ε)).
]]></sourcecode>
        <t>The layer is a certificate, not a classification. The empty set is always an admissible carried set, two exactness certificates over the same base may carry different sets, and a larger carried set carries strictly more proof content. Membership asserts a proof; non-membership asserts nothing.</t>
        <t>For the fixed instance <tt>κ</tt> of <xref target="s-3-7"/>, <tt>HashInjectiveOn(λ,p,S)</tt> in <xref target="s-5-1"/> is exactly <tt>HashInjectiveOn_{χκ}(λ,p,S)</tt>, and <tt>ExactBodyBindingPremises(λ)</tt> in <xref target="s-5-5"/> is exactly <tt>ExactBodyBindingPremises⟦κ⟧(λ)</tt>; the unqualified names are the κ-instances of the parameterized definitions.</t>
        <t>When an exactness certificate <tt>ε</tt> with <tt>baseOfExact(ε) = κ</tt> is fixed, a theorem schema in <xref target="s-5-2"/>–<xref target="s-5-6"/> that requires the four hash-injectivity premises for a lane <tt>λ</tt> may be instantiated with the single hypothesis <tt>λ ∈ ExactLanes(ε)</tt>. This hypothesis unfolds to the same four <tt>HashInjectiveOn</tt> premises and does not assert that every lane of the base is exact.</t>
      </section>
    </section>
    <section toc="include" anchor="s-6">
      <name>Structural graphs</name>
      <section toc="include" anchor="s-6-1">
        <name>Graph scope and state</name>
        <sourcecode type="pseudocode"><![CDATA[
ReferenceBoundary :=
    ClosedBoundary
  | OpenBoundary(
      allowed_external : Reference × QualifiedNodeKey → Prop)

GraphScope := ⟨
  object_domain : Set Body,
  graph_universe : Set QualifiedNodeKey,
  reference_boundary : ReferenceBoundary
⟩

GraphState := ⟨
  vertices : FinSet QualifiedNodeKey,
  body_of : FinMap QualifiedNodeKey Body,
  exact_vertex_domain : domain(body_of) = vertices
⟩
]]></sourcecode>
        <t>For <tt>q ∈ G.vertices</tt>, <tt>bodyAt(G,q)</tt> denotes the unique value <tt>G.body_of[q]</tt> established by <tt>exact_vertex_domain</tt>.</t>
      </section>
      <section toc="include" anchor="s-6-2">
        <name>Derived edges</name>
        <sourcecode type="pseudocode"><![CDATA[
ReferenceEdges(G) :=
  { (r,q) : QualifiedNodeKey × QualifiedNodeKey |
      q ∈ G.vertices
      ∧ r ∈ referencesOfBody(bodyAt(G,q)) }

InternalEdges(G) :=
  ReferenceEdges(G) ∩ (G.vertices × G.vertices)
]]></sourcecode>
        <t>The orientation is <tt>(referenced, referencing)</tt>. No independent edge relation is an input.</t>
      </section>
      <section toc="include" anchor="s-6-3">
        <name>Key consistency, scope, and closure</name>
        <sourcecode type="pseudocode"><![CDATA[
KeyConsistent(G) :=
  ∀ q ∈ G.vertices.
    let packedBody := bodyAt(G,q) in
    let λ := laneOfBody(packedBody) in
    q = qualifiedNodeKey_λ(bodyValue(packedBody))
]]></sourcecode>
        <sourcecode type="pseudocode"><![CDATA[
GraphInScope(G,scope) :=
  G.vertices ⊆ scope.graph_universe
  ∧ ∀ q ∈ G.vertices.
      bodyAt(G,q) ∈ scope.object_domain
]]></sourcecode>
        <sourcecode type="pseudocode"><![CDATA[
ClosureValid(G,scope) :=
  match scope.reference_boundary with
    ClosedBoundary ->
      ∀ (r,q) ∈ ReferenceEdges(G). r ∈ G.vertices
    OpenBoundary(allowed_external) ->
      ∀ (r,q) ∈ ReferenceEdges(G).
        r ∈ G.vertices ∨ allowed_external(r,q)
]]></sourcecode>
        <t><tt>allowed_external</tt> is a proposition over <tt>Reference × QualifiedNodeKey</tt> and is not constrained to lie within <tt>graph_universe</tt>. This is intentional: an external reference may designate a node in a different graph or universe; the open boundary predicate is supplied by the caller and may be empty, universal, or otherwise scoped as needed.</t>
      </section>
      <section toc="include" anchor="s-6-4">
        <name>Paths and internal acyclicity</name>
        <sourcecode type="pseudocode"><![CDATA[
Path(G,source,target) :=
  source ∈ G.vertices
  ∧ target ∈ G.vertices
  ∧ ∃ v : FinSeq QualifiedNodeKey.
      |v| ≥ 2
      ∧ v[0] = source
      ∧ v[|v|−1] = target
      ∧ (∀ j < |v|. v[j] ∈ G.vertices)
      ∧ (∀ j : Nat. j+1 < |v| ⟹
           (v[j],v[j+1]) ∈ InternalEdges(G))

InternallyAcyclic(G) :=
  ¬∃ q ∈ G.vertices. Path(G,q,q)
]]></sourcecode>
      </section>
      <section toc="include" anchor="s-6-5">
        <name>Structural graph validity</name>
        <sourcecode type="pseudocode"><![CDATA[
StructuralGraphValid(G,scope) :=
  GraphInScope(G,scope)
  ∧ (∀ q ∈ G.vertices.
       let packedBody := bodyAt(G,q) in
       BodyConstructionValid_{laneOfBody(packedBody)}(
         bodyValue(packedBody)))
  ∧ KeyConsistent(G)
  ∧ ClosureValid(G,scope)
  ∧ InternallyAcyclic(G)
]]></sourcecode>
        <t>For a closed boundary, this establishes a finite directed acyclic graph. For an open boundary, it still establishes graph scope, body-construction validity, key consistency, closure relative to the explicit external-reference predicate, and internal acyclicity. It does not establish acyclicity after external references are resolved. An importing specification that requires global acyclicity MUST define additional closure or validation rules.</t>
      </section>
    </section>
    <section toc="include">
      <name>Security Considerations</name>
      <t>This specification defines an abstract identity and structural-graph model. It does not by itself provide confidentiality, integrity, authenticity, availability, or denial-of-service protection. The following considerations apply:</t>
      <ol spacing="normal">
        <li>A valid CarrierSystem does not imply identifier uniqueness. Identifier uniqueness requires the exact hash-injectivity premises defined in <xref target="s-5-1"/> and <xref target="s-5-5"/>. A lane whose hash function is constant can still form a valid CarrierSystem, but MUST NOT be assumed to provide collision-resistant identity binding.</li>
        <li>An ExactnessCertificate whose exact_lanes set is empty provides no exact-body-binding assurance for any lane. Its existence alone MUST NOT be interpreted as evidence that identifier uniqueness holds; assurance extends only to lanes explicitly included in exact_lanes.</li>
        <li>The exact injectivity premises are mathematical idealizations. When an identity-relevant carrier induces an infinite preimage language and the hash output space is finite, exact injectivity is unsatisfiable. Concrete instantiations therefore rely on computational collision resistance of the selected hash suite. The choice of hash function, output length, and security margin is outside the scope of this core and MUST be specified by importing protocols; hash-algorithm agility for those selections is addressed by BCP 201 <xref target="RFC7696"/>.</li>
        <li>Implementations MUST ensure that the frame codec is deterministic and unambiguous. Ambiguous parsing or non-canonical framing can cause distinct serialized forms to produce the same logical object, or the same serialized form to be interpreted differently.</li>
        <li>Canonical references are ordered by referenceBytes to prevent reference-order malleability. The reference accumulator MUST be injective on canonical reference sequences; otherwise two distinct canonical reference sets could produce the same references digest.</li>
        <li>The four hash-purpose tags MUST remain pairwise distinct, and the transcript tag MUST remain distinct from all of them. Losing the first separation can allow one hash purpose to be confused with another; losing the second can allow a framed transcript to be confused with a lane-bound-hash input. Either failure weakens the identifier binding.</li>
        <li>StableRuleBinding digests are not validated by this core; a stable binding is a nominal anchor, not a self-verifying cryptographic credential. This core does not require owner_id, rule_id, revision, or digest values to be unique or globally meaningful; importing specifications that assign administrative, version-control, governance, or trust semantics to these fields MUST define uniqueness, validation, and binding rules. An importing specification that assigns trust, governance, or version-control semantics to these digests MUST define the binding between each digest and its semantic content.</li>
        <li>The identity_context_bytes field is an explicit identity input. This specification does not define its semantics. If an importing specification assigns security-relevant meaning to this field, that specification MUST define how the field is validated, bound, and protected against substitution.</li>
        <li>Open graph boundaries permit external references. StructuralGraphValid establishes internal acyclicity only. It does not establish acyclicity after external references are resolved. Protocols that resolve external references MUST define their own cycle-prevention rules if global acyclicity is required. External references are Qualified Node Keys over the same lane authority: they may designate nodes absent from the current graph, but they do not designate nodes of a different lane authority or identifier scheme, and cross-authority references require an explicit mapping defined outside this core.</li>
        <li>Proof objects are excluded from body identity. Two occurrences with the same body but different proofs have the same Qualified Node Key. Proof validation, admission, and trust are out of scope for this core.</li>
        <li>Identifiers are content-derived. If the selected hash suite lacks preimage resistance, or if parameter, context, payload, or reference data are low-entropy or guessable, identifiers may reveal or allow enumeration of the underlying content. Importing specifications that require confidentiality MUST specify preimage-resistance and entropy requirements or additional protective measures.</li>
        <li>Because identity is content-derived, identical bodies produce identical Qualified Node Keys. This may enable correlation across graphs, sessions, or importing protocols. If unlinkability is required, importing specifications MUST define context separation, salting, or encryption mechanisms outside this core.</li>
        <li>Implementations SHOULD impose bounded limits on frame length, reference sequence length, graph vertex and edge counts, and proof object size; validation of large structural graphs may require significant memory and processing resources, and resource limits and rejection policies are outside this core.</li>
        <li>Predicates such as D_LBH, reference_shape, and allowed_external are mathematical propositions in this core. Operational implementations MUST use decidable, bounded validation procedures when these predicates are evaluated at runtime.</li>
        <li>Because GraphState keys vertices by Qualified Node Key, two distinct bodies with the same key cannot appear as separate vertices. Detection or handling of identifier collisions requires exactness premises or additional rules outside this core.</li>
      </ol>
    </section>
    <section toc="include">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
      <t>This specification does not create any IANA registries. Stable bindings, lane descriptors, hash-suite bindings, transcript tags, hash-purpose tags, and related identifiers are administrative or protocol-local values unless an importing specification defines a registry for them.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner"/>
            <date month="March" year="1997"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba"/>
            <date month="May" year="2017"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC6920" target="https://www.rfc-editor.org/info/rfc6920">
          <front>
            <title>Naming Things with Hashes</title>
            <author initials="S." surname="Farrell" fullname="S. Farrell"/>
            <author initials="D." surname="Kutscher" fullname="D. Kutscher"/>
            <author initials="C." surname="Dannewitz" fullname="C. Dannewitz"/>
            <author initials="B." surname="Ohlman" fullname="B. Ohlman"/>
            <author initials="A." surname="Keranen" fullname="A. Keranen"/>
            <author initials="P." surname="Hallam-Baker" fullname="P. Hallam-Baker"/>
            <date month="April" year="2013"/>
          </front>
          <seriesInfo name="RFC" value="6920"/>
          <seriesInfo name="DOI" value="10.17487/RFC6920"/>
          <annotation>Comparison point for content-derived naming; no syntax or registry from RFC 6920 is imported.</annotation>
        </reference>
        <reference anchor="RFC8949" target="https://www.rfc-editor.org/info/rfc8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author initials="C." surname="Bormann" fullname="C. Bormann"/>
            <author initials="P." surname="Hoffman" fullname="P. Hoffman"/>
            <date month="December" year="2020"/>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
          <annotation>Comparison point for deterministic framing and decoding; no CBOR data model or encoding rule is imported.</annotation>
        </reference>
        <reference anchor="RFC8785" target="https://www.rfc-editor.org/info/rfc8785">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author initials="A." surname="Rundgren" fullname="A. Rundgren"/>
            <author initials="B." surname="Jordan" fullname="B. Jordan"/>
            <author initials="S." surname="Erdtman" fullname="S. Erdtman"/>
            <date month="June" year="2020"/>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
          <annotation>Comparison point for canonical representation discipline; no JSON syntax or canonicalization rule is imported.</annotation>
        </reference>
        <reference anchor="RFC9052" target="https://www.rfc-editor.org/info/rfc9052">
          <front>
            <title>CBOR Object Signing and Encryption (COSE): Structures and Process</title>
            <author initials="J." surname="Schaad" fullname="J. Schaad"/>
            <date month="August" year="2022"/>
          </front>
          <seriesInfo name="STD" value="96"/>
          <seriesInfo name="RFC" value="9052"/>
          <seriesInfo name="DOI" value="10.17487/RFC9052"/>
          <annotation>Comparison point for protected algorithm and context binding; no COSE structure is imported.</annotation>
        </reference>
        <reference anchor="RFC9162" target="https://www.rfc-editor.org/info/rfc9162">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <author initials="B." surname="Laurie" fullname="B. Laurie"/>
            <author initials="E." surname="Messeri" fullname="E. Messeri"/>
            <author initials="R." surname="Stradling" fullname="R. Stradling"/>
            <date month="December" year="2021"/>
          </front>
          <seriesInfo name="RFC" value="9162"/>
          <seriesInfo name="DOI" value="10.17487/RFC9162"/>
          <annotation>Comparison point for finite authenticated graph structures; no log protocol or Merkle construction is imported.</annotation>
        </reference>
        <reference anchor="RFC9562" target="https://www.rfc-editor.org/info/rfc9562">
          <front>
            <title>Universally Unique IDentifiers (UUIDs)</title>
            <author initials="K." surname="Davis" fullname="K. Davis"/>
            <author initials="B." surname="Peabody" fullname="B. Peabody"/>
            <author initials="P." surname="Leach" fullname="P. Leach"/>
            <date month="May" year="2024"/>
          </front>
          <seriesInfo name="RFC" value="9562"/>
          <seriesInfo name="DOI" value="10.17487/RFC9562"/>
          <annotation>Comparison point for name-based identifiers that truncate digests into a fixed 128-bit format; no UUID version, format, or namespace rule is imported.</annotation>
        </reference>
        <reference anchor="FIPS180-4" target="https://csrc.nist.gov/pubs/fips/180-4/upd1/final">
          <front>
            <title>Secure Hash Standard (SHS)</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date month="August" year="2015"/>
          </front>
          <seriesInfo name="NIST FIPS" value="180-4"/>
          <seriesInfo name="DOI" value="10.6028/NIST.FIPS.180-4"/>
          <annotation>Example family of fixed-output hash functions; this core does not select a concrete hash.</annotation>
        </reference>
        <reference anchor="SP800-185" target="https://csrc.nist.gov/pubs/sp/800/185/final">
          <front>
            <title>SHA-3 Derived Functions: cSHAKE, KMAC, TupleHash, and ParallelHash</title>
            <author initials="J." surname="Kelsey" fullname="J. Kelsey"/>
            <author initials="S." surname="Chang" fullname="S. Chang"/>
            <author initials="R." surname="Perlner" fullname="R. Perlner"/>
            <date month="December" year="2016"/>
          </front>
          <seriesInfo name="NIST SP" value="800-185"/>
          <seriesInfo name="DOI" value="10.6028/NIST.SP.800-185"/>
          <annotation>Comparison point for domain separation; no construction from SP 800-185 is imported.</annotation>
        </reference>
        <reference anchor="RFC7696" target="https://www.rfc-editor.org/info/rfc7696">
          <front>
            <title>Guidelines for Cryptographic Algorithm Agility and Selecting Mandatory-to-Implement Algorithms</title>
            <author initials="R." surname="Housley" fullname="R. Housley"/>
            <date month="November" year="2015"/>
          </front>
          <seriesInfo name="BCP" value="201"/>
          <seriesInfo name="RFC" value="7696"/>
          <seriesInfo name="DOI" value="10.17487/RFC7696"/>
          <annotation>Guidance for hash-algorithm selection and agility in importing protocols; no requirement from BCP 201 is imported into this core.</annotation>
        </reference>
      </references>
    </references>
    <section toc="include" anchor="app-order">
      <name>Formation dependency order</name>
      <t>The core is formed in the following strict order:</t>
      <sourcecode type="pseudocode"><![CDATA[
Substrate
  ↓
LaneAuthority
  ↓
QualifiedNodeKey over that authority
  ↓
ReferenceAuthority
  ↓
Body and identity constructions
  ↓
CarrierSystem with body inhabitant and construction-formation witness
]]></sourcecode>
      <t>No record field depends on a later stage. In particular:</t>
      <ul spacing="normal">
        <li>lane formation does not mention references or Qualified Node Keys;</li>
        <li>reference formation depends on a completed lane authority;</li>
        <li>non-vacuous construction closure depends on completed primitive and reference bindings; and</li>
        <li>no formation proof is introduced outside the record that owns it.</li>
      </ul>
      <t>The optional exactness layer is not a formation dependency of the records above:</t>
      <sourcecode type="pseudocode"><![CDATA[
CarrierSystem
  ↓ (optional)
ExactnessCertificate
]]></sourcecode>
      <t>It depends only on a completed <tt>CarrierSystem</tt> and the exact-body-binding premises; no earlier record depends on it.</t>
    </section>
    <section toc="include" anchor="app-core-inv">
      <name>Core invariants</name>
      <t>The following are definitional or proof-bearing parts of <tt>κ</tt>:</t>
      <ol spacing="normal">
        <li>The substrate is formed before lanes and carries parser round-trip and parser-soundness formation; frame left cancellation and frame injectivity are derived.</li>
        <li>Every lane has exactly one primitive binding and one reference binding.</li>
        <li>Every primitive and reference binding has a formation witness.</li>
        <li>Lane descriptors are injective inside the finite lane authority.</li>
        <li>The transcript tag is separate from and distinct from the four hash-purpose tags.</li>
        <li><tt>D_LBH(λ,p)</tt> and its stable binding are explicit lane fields for every hash purpose.</li>
        <li>Every lane has at least one typed body.</li>
        <li>Every typed body has a construction-formation witness.</li>
        <li>Every construction preimage language ranges over all typed bodies and is included in its declared lane-bound-hash domain.</li>
        <li>Proof objects are excluded from body identity.</li>
        <li>Qualified Node Key equality is dependent-pair equality, and cross-lane body transport binds its equality witness explicitly.</li>
        <li>Reference edges are derived only from canonical body references.</li>
        <li>Structural graph validity is independent of evidence, admission, and resource availability.</li>
      </ol>
    </section>
    <section toc="include" anchor="app-exact-inv">
      <name>Exactness invariants (require ExactnessCertificate)</name>
      <t>The following invariants are not part of <tt>CarrierSystem</tt> formation. They hold only when an <tt>ExactnessCertificate</tt> ε is supplied:</t>
      <ol spacing="normal">
        <li><tt>ExactLanes(ε)</tt> contains only lanes λ for which all four <tt>HashInjectiveOn</tt> premises in <tt>ExactBodyBindingPremises⟦baseOfExact(ε)⟧(λ)</tt> hold.</li>
        <li>Membership <tt>λ ∈ ExactLanes(ε)</tt> is proof-bearing evidence for exact body binding in that lane.</li>
        <li>A lane may form a valid <tt>CarrierSystem</tt> and still be absent from a given <tt>ExactnessCertificate</tt>; absence from <tt>exact_lanes</tt> does not imply failure of <tt>ExactBodyBindingPremises</tt>.</li>
        <li>If a lane does not satisfy <tt>ExactBodyBindingPremises⟦baseOfExact(ε)⟧</tt>, it cannot belong to <tt>ExactLanes(ε)</tt> for any exactness certificate <tt>ε</tt> over that base.</li>
        <li>A lane whose hash suite is constant on a preimage language with two distinct inputs cannot belong to <tt>ExactLanes(ε)</tt>, since the corresponding <tt>HashInjectiveOn</tt> premise fails.</li>
        <li>The exactness layer does not make hash injectivity computationally true; it names where the exact idealization is assumed.</li>
      </ol>
    </section>
    <section toc="include" anchor="app-boundary">
      <name>Extension boundary</name>
      <t>An importing specification MAY define additional judgments over values from this core. It MUST NOT redefine, override, weaken, strengthen, or shadow any type, record, function, predicate, formation rule, derived frame law, or theorem schema defined by this core. These prohibitions apply to specifications that claim conformance to Carrier Identity Core and to definitions presented as Carrier Identity definitions; they do not prohibit the reuse of generic identifiers such as Body, Reference, or Lane in unrelated contexts that are not presented as conformant Carrier Identity definitions. This prohibition applies to the complete declaration surface of the referenced version of this document; the following identity- and graph-critical names are illustrative and non-exhaustive:</t>
      <sourcecode type="pseudocode"><![CDATA[
Substrate
FrameCodec
FrameCodecWellFormed
FrameLeftCancellation
FrameInjective
StableRuleBinding
HashPurpose
LaneAuthority
ReferenceAuthority
CarrierSystem
Lane
bindingOf
D_LBH
LBHInput_λ
LaneHashInputValid_λ
LBH_λ
Body_λ
Occurrence_λ
BodyConstructionValid_λ
ConstructionDomainClosed
ParameterDigest_λ
ContentDigest_λ
ReferencesDigest_λ
Transcript_λ
identifier_λ
QualifiedNodeKey
qualifiedNodeKey_λ
Reference
referenceBytes
CanonicalReferences_λ
GraphState
ReferenceEdges
InternalEdges
KeyConsistent
ClosureValid
InternallyAcyclic
StructuralGraphValid
HashInjectiveOn_χ
ExactBodyBindingPremises⟦ι⟧
ExactLanePredicate
ExactLanes
ExactnessCertificate
baseOfExact
]]></sourcecode>
      <t>An imported relation MAY compare, admit, evaluate, or govern core values, but it does not rewrite their formation, structural identity, reference interpretation, or graph truth.</t>
    </section>
    <section toc="include" anchor="app-ascii">
      <name>ASCII Equivalents for Formal Tooling</name>
      <t>This appendix is informative.</t>
      <t>The following ASCII equivalents are provided for tooling convenience. They do not change the normative meaning of the mathematical notation.</t>
      <table align="left">
        <thead>
          <tr>
            <th>Unicode</th>
            <th>ASCII</th>
            <th>Meaning</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>Σ</td>
            <td>Sigma</td>
            <td>Finite alphabet</td>
          </tr>
          <tr>
            <td>Σ*</td>
            <td>SigmaStar</td>
            <td>Finite sequences over Sigma</td>
          </tr>
          <tr>
            <td>Σ^n</td>
            <td>Sigma^n</td>
            <td>Sequences of length n</td>
          </tr>
          <tr>
            <td>ε</td>
            <td>epsilon</td>
            <td>Empty sequence</td>
          </tr>
          <tr>
            <td>‖</td>
            <td>||</td>
            <td>Sequence concatenation</td>
          </tr>
          <tr>
            <td>⇀</td>
            <td>partial</td>
            <td>Partial function arrow</td>
          </tr>
          <tr>
            <td>∈</td>
            <td>in</td>
            <td>Set/sequence membership</td>
          </tr>
          <tr>
            <td>∀</td>
            <td>forall</td>
            <td>Universal quantifier</td>
          </tr>
          <tr>
            <td>∃</td>
            <td>exists</td>
            <td>Existential quantifier</td>
          </tr>
          <tr>
            <td>⟹</td>
            <td>implies</td>
            <td>Logical implication</td>
          </tr>
          <tr>
            <td>⟺</td>
            <td>iff</td>
            <td>Logical equivalence</td>
          </tr>
          <tr>
            <td>∧</td>
            <td>and</td>
            <td>Conjunction</td>
          </tr>
          <tr>
            <td>¬</td>
            <td>not</td>
            <td>Negation</td>
          </tr>
          <tr>
            <td>⊆</td>
            <td>subseteq</td>
            <td>Set inclusion</td>
          </tr>
          <tr>
            <td>λ</td>
            <td>lambda</td>
            <td>Lane variable</td>
          </tr>
          <tr>
            <td>μ</td>
            <td>mu</td>
            <td>Lane variable</td>
          </tr>
          <tr>
            <td>χ</td>
            <td>chi</td>
            <td>Reference authority variable</td>
          </tr>
          <tr>
            <td>κ</td>
            <td>kappa</td>
            <td>Carrier system variable</td>
          </tr>
          <tr>
            <td>β</td>
            <td>beta</td>
            <td>Substrate variable</td>
          </tr>
          <tr>
            <td>α</td>
            <td>alpha</td>
            <td>Lane authority variable</td>
          </tr>
          <tr>
            <td>⟨x,y⟩</td>
            <td>&lt;x,y&gt;</td>
            <td>Dependent pair / record</td>
          </tr>
          <tr>
            <td>⟦x⟧</td>
            <td>[[x]]</td>
            <td>Parameterized definition</td>
          </tr>
          <tr>
            <td>|s|</td>
            <td>length(s)</td>
            <td>Sequence length</td>
          </tr>
          <tr>
            <td>&lt;lex</td>
            <td>lex_less</td>
            <td>Lexicographic order</td>
          </tr>
          <tr>
            <td>−</td>
            <td>-</td>
            <td>Minus</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="app-derivations">
      <name>Derivations of the Core Theorem Schemas</name>
      <t>This appendix is informative. It provides condensed derivations for theorem schemas stated in the main body; the normative statements remain those in the main body. Every derivation depends only on definitions and proof-bearing formation fields from the main body and consumes no admission, evidence, resource, computational, comparison, or policy premise.</t>
      <section anchor="ps-abbrev">
        <name>Premise abbreviations</name>
        <t>For one fixed lane <tt>λ</tt> and bodies <tt>a,b : Body_λ</tt>, write <tt>BodiesValid(λ,a,b)</tt> for <tt>BodyConstructionValid_λ(a) ∧ BodyConstructionValid_λ(b)</tt>, and write <tt>ExactBindingAssumptions(λ)</tt> for the four hash-injectivity premises of <tt>ExactBodyBindingPremises(λ)</tt> in <xref target="s-5-5"/>. These are abbreviations only and introduce no additional premise. Each <tt>HashInjectiveOn(λ,p,S)</tt> includes the subset condition <tt>S ⊆ D_LBH(λ,p)</tt>; for the named preimage languages that condition is supplied by <tt>ConstructionDomainFormation(λ)</tt>.</t>
      </section>
      <section anchor="ps-frame">
        <name>Frame laws and framed-segment decomposition</name>
        <t>FrameInjective (<xref target="s-1-1"/>): for <tt>x,y ∈ D_frame</tt> with <tt>Frame(x) = Frame(y)</tt>, apply parser round-trip with empty tails; <tt>ParseFrame</tt> is single-valued, so <tt>x = y</tt>. FrameLeftCancellation (<xref target="s-1-1"/>): apply round-trip to both sides of a framed-prefix equality; the two successful parse results are equal, yielding equality of the admitted values and of the tails. By induction using left cancellation, an equality of two concatenations of the same number of framed admitted segments followed by tails yields pairwise equality of the segments and equality of the tails.</t>
      </section>
      <section anchor="ps-transcript">
        <name>Transcript decomposition</name>
        <t>For <tt>BodiesValid(λ,a,b)</tt> with <tt>Transcript_λ(a) = Transcript_λ(b)</tt>: cancel the three lane-derived frames (transcript tag, lane descriptor, identity context bytes) and then the parameter-digest and content-digest frames. The remaining suffixes have the form <tt>L_λ(index) ‖ Frame(ReferencesDigest)</tt>. Both index encodings have the fixed width declared by <tt>bindingOf(λ)</tt>, so the fixed-width prefixes are equal; index-encoder injectivity gives <tt>a.index = b.index</tt>, and frame injectivity recovers references-digest equality. The frame membership of every component digest is supplied by <tt>TranscriptFrameValid</tt>, a conjunct of <tt>BodyConstructionValid</tt>. This derives the theorem of <xref target="s-5-3"/>.</t>
      </section>
      <section anchor="ps-binding">
        <name>Identifier binding, component recovery, and body binding</name>
        <t>For the theorem of <xref target="s-5-2"/>: the identifier preimages <tt>LBHInput_λ(identifierPurpose, Frame(Transcript_λ(·)))</tt> of <tt>a</tt> and <tt>b</tt> lie in <tt>IdentifierPreimageLanguage_λ</tt>; hash injectivity on that language yields preimage equality, cancellation of the fixed purpose-tag and lane-descriptor frames yields equality of the framed transcripts, and frame injectivity — with transcript frame membership supplied by <tt>IdentifierFrameValid</tt> — yields transcript equality. For each recovery theorem of <xref target="s-5-4"/>, hash injectivity on the corresponding preimage language yields preimage equality; cancellation of the fixed frames leaves the framed canonical encodings (parameter; context and payload) or the accumulator output (references); encoder injectivity, or accumulator injectivity on <tt>CanonicalReferences_λ</tt> supplied by <tt>ReferenceBindingWellFormed(λ)</tt>, recovers the source components. The theorem of <xref target="s-5-5"/> composes these steps: transcript equality, digest and index equality by <xref target="ps-transcript"/>, component recovery, and record extensionality — two records of the same telescopic record type are equal when all corresponding fields are equal.</t>
      </section>
      <section anchor="ps-transport">
        <name>Qualified-key transport</name>
        <t>Let <tt>e : qualifiedNodeKey_λ(a) = qualifiedNodeKey_μ(b)</tt>. Equality of dependent pairs gives <tt>h_e := congrArg(firstProjection, e) : λ = μ</tt> and, after transport, <tt>transport^{IdSpace}_{h_e}(identifier_λ(a)) = identifier_μ(b)</tt>. A coherence lemma proved by path induction on <tt>h_e</tt> gives <tt>identifier_μ(transport^{Body}_{h_e}(a)) = transport^{IdSpace}_{h_e}(identifier_λ(a))</tt>; transitivity yields same-lane identifier equality in lane <tt>μ</tt>. Transporting the left body's construction-validity witness and <tt>ExactBindingAssumptions(λ)</tt> along <tt>h_e</tt> and applying exact body binding in lane <tt>μ</tt> gives <tt>transport_{h_e}(a) = b</tt>, deriving the theorem of <xref target="s-5-6"/>. The witness is extracted from the same key equality; no proof irrelevance or hidden choice of a lane-equality proof is used.</t>
      </section>
      <section anchor="ps-graph">
        <name>Reference and closed-graph consequences</name>
        <t>ReferenceBytesInjective (<xref target="s-4"/>) follows by cancelling the lane frames, applying lane-descriptor uniqueness, and cancelling the identifier frames; its frame-valid premises hold for every Qualified Node Key in a valid lane authority. Consequently the order induced on references by <tt>referenceBytes</tt> and <tt>&lt;lex</tt> is strict and total, so two canonical reference sequences with extensionally equal typed membership are equal: both are strictly increasing under the same order, hence share the same head and, inductively, the same tail. For a closed boundary, <tt>ClosureValid</tt> places the referenced endpoint of every derived edge in <tt>G.vertices</tt> while the referencing endpoint is internal by the definition of <tt>ReferenceEdges</tt>, so <tt>ReferenceEdges(G) = InternalEdges(G)</tt>; with <tt>G.vertices</tt> finite, each body carrying a finite canonical reference sequence, and <tt>InternallyAcyclic(G)</tt> excluding every directed cycle, a valid closed structural graph is a finite directed acyclic graph in the orientation (referenced, referencing).</t>
      </section>
    </section>
  </back>
</rfc>
