| Internet-Draft | Carrier Identity Core | July 2026 |
| Le | Expires 26 January 2027 | [Page] |
This document specifies Carrier Identity Core, a minimal, proof-bearing identity kernel for content-derived node identity, canonical references, and finite structural graphs.¶
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.¶
Informative derivations of the exact structural theorem schemas are provided in an informative appendix.¶
This document does not define computational security experiments, evidence records, proof admission, resource evaluation, consensus, liveness, finality, governance, or operational protocol behavior.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 26 January 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
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.¶
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.¶
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 (Appendix D); 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.¶
| Term | Meaning in this specification |
|---|---|
| Carrier | A lane-indexed node body whose canonical construction determines a content-derived identifier. The formal type realizing a carrier is Body. |
| Substrate | The radix, alphabet, frame codec, and stable-binding digest width fixed before any lane is declared. |
| Lane authority | 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). |
| Reference authority | A lane authority extended with one proof-bearing reference binding for each lane. |
| Closed lane binding | The pair consisting of a lane's primitive binding and reference binding. Neither component is replaceable. |
| Node body | The proof-independent tuple that contributes to identity. |
| Occurrence | A node body paired with an opaque proof object. The proof object is not an identity input. |
| Hash purpose | One of the four lane-bound-hash roles: parameter, content, references, or identifier. The transcript tag is not a hash purpose. |
| Lane-bound hashing | Hashing of an explicit hash-purpose tag frame, lane-descriptor frame, and message under the suite fixed by the lane. |
| Qualified Node Key | The dependent pair (lane, identifier). It is the structural graph key. |
| Canonical references | A duplicate-free, strictly ordered finite sequence of Qualified Node Keys admitted by a lane. |
| Structural graph | A finite Qualified-Node-Key map to node bodies with edges derived only from body references. |
| Kernel | The set of formation rules, identity constructions, canonical reference rules, structural graph validity conditions, and exact theorem schemas defined by this document. |
| Exactness certificate | A proof-bearing layer over a carrier system that names lanes proven to satisfy the four exact-body-binding hash-injectivity premises. |
Definitions, equations, typed records, theorem schemas, and explicitly labeled requirements are normative within this document. Examples, notes, and informative references are not normative.¶
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 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
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.¶
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.¶
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.¶
The theorem schemas stated in the main body are normative. The derivations in the informative derivation appendix do not add normative requirements.¶
Normative references are incorporated only to the extent stated below.¶
This section summarizes the normative formation requirements defined in this document. The full definitions in the corresponding sections are authoritative.¶
The informative appendices do not add conformance requirements.¶
Carrier Identity Core defines exactly:¶
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.¶
The core does not define:¶
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.¶
Admission, trust, evidence, resource accounting, consensus, finality, governance, and operational liveness are outside the scope of this document.¶
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.¶
This core is compared informatively with [RFC6920], [RFC8949], [RFC8785], [RFC9052], [RFC9162], [RFC9562], [FIPS180-4], and [SP800-185]; nothing is imported from any of them.¶
The following constructors are primitive mathematical notation:¶
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 < j < |R|, R[i] ≠ R[j]. For m : FinMap K V, domain(m) := { k : K | m[k] is defined }.¶
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¶
For R : FinSeq A, r ∈ R means ∃ j < |R|. R[j] = r.¶
For a finite sequence s, |s| is its length, ε is the empty sequence, and s ‖ t is concatenation. Equality is typed equality.¶
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 h : x = y and v : B(x), transport_h(v) : B(y) denotes equality substitution along that specific witness h; a theorem using transport binds h explicitly. A function displayed with an arrow is total unless a partial arrow ⇀ is shown. A record is telescopic when a later field type depends only on preceding fields.¶
For an alphabet A, a frame codec is:¶
FrameCodec[A] := ⟨ input_language : Set (FinSeq A), frame : FinSeq A → FinSeq A, parse : FinSeq A ⇀ FinSeq A × FinSeq A ⟩¶
For a codec c, write D_c := c.input_language. It is well formed exactly when:¶
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)
¶
Because c.parse 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:¶
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
¶
FrameCodecWellFormed(c) entails FrameLeftCancellation(c): parsing the same raw sequence through the two round-trip equations yields the same unique result. FrameInjective(c) follows by applying left cancellation with x = y = ε.¶
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.¶
A substrate is the following telescopic record:¶
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)
⟩
¶
For a fixed β : Substrate, define:¶
Σ_β := {0,…,β.radix−1}
Σ*_β := FinSeq Σ_β
Σ^n_β := { s ∈ Σ*_β | |s| = n }
D_frame,β := β.frame_codec.input_language
Frame_β := β.frame_codec.frame
ParseFrame_β := β.frame_codec.parse
¶
The natural-number order on Σ_β = {0,…,radix−1} induces a strict total lexicographic order <lex on Σ*_β. For s, t : Σ*_β, s <lex t holds iff either s is a proper prefix of t, or there exists k < min(|s|, |t|) with s[j] = t[j] for all j < k and s[k] < t[k].¶
A stable binding is a finite value, never a function value:¶
StableRuleBinding_β := ⟨
owner_id : Σ*_β,
rule_id : Σ*_β,
revision : Σ*_β,
digest : Σ^{β.binding_digest_length}_β
⟩
¶
StableRuleBindingWellFormed_β(b) := b.owner_id ≠ ε ∧ b.rule_id ≠ ε ∧ b.revision ≠ ε¶
A type, function, or predicate may be paired with a stable identity:¶
BoundType_β := ⟨ binding : StableRuleBinding_β, carrier : Type ⟩ BoundFunction_β[A,B] := ⟨ binding : StableRuleBinding_β, apply : A → B ⟩ BoundPredicate_β[A] := ⟨ binding : StableRuleBinding_β, holds : A → Prop ⟩¶
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.¶
For a base β, a hash suite is:¶
HashSuite_β := ⟨
suite_binding : StableRuleBinding_β,
output_length : Nat,
output_length_positive : output_length > 0,
hash : Σ*_β → Σ^{output_length}_β
⟩
¶
HashSuiteWellFormed_β(σ) := StableRuleBindingWellFormed_β(σ.suite_binding) ∧ σ.output_length > 0¶
No injectivity, collision resistance, or computational property follows from this definition.¶
The finite type HashPurpose has exactly four distinct constructors:¶
identifierPurpose parameterPurpose contentPurpose referencesPurpose¶
The transcript tag is a separate lane field. It is not a fifth hash purpose and has no lane-bound-hash domain.¶
For a base β, a finite nominal type Λ, and λ : Λ, the primitive lane binding is the following telescopic record:¶
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_β
⟩
¶
The identity_context_bytes 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.¶
The primitive binding is well formed when:¶
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)
¶
covered_lbh_domain is a plain function on the finite four-constructor type HashPurpose. 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 Section 6.3. The transcript-tag distinctness conjunct formalizes the separation stated in Section 7.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.¶
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.¶
A lane authority is:¶
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
⟹ λ = μ
⟩
¶
This record is finite and well founded. It does not mention Qualified Node Keys, references, bodies, or a completed carrier system.¶
For α : LaneAuthority, define:¶
Σ_α := Σ_{α.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
¶
For α : LaneAuthority:¶
QualifiedNodeKey_α := DepPair (λ : Lane_α). IdSpace_α(λ) Reference_α := QualifiedNodeKey_α¶
For q = ⟨λ,i⟩:¶
idBytes_α,λ(i) := i ReferenceFrameValid_α(q) := laneBytes_α(λ) ∈ D_frame,α ∧ idBytes_α,λ(i) ∈ D_frame,α referenceBytes_α(q) := Frame_α(laneBytes_α(λ)) ‖ Frame_α(idBytes_α,λ(i))¶
referenceBytes_α represents the typed pair; it does not define dependent-pair equality.¶
For α : LaneAuthority and λ : Lane_α:¶
LaneReferenceBinding⟦α⟧(λ) := ⟨
reference_shape : BoundPredicate_{α.base}[QualifiedNodeKey_α],
reference_accumulator :
BoundFunction_{α.base}[
FinSeq QualifiedNodeKey_α,
Σ*_α]
⟩
¶
For a candidate reference binding b : LaneReferenceBinding⟦α⟧(λ):¶
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])) }
¶
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)
¶
The accumulator law is scoped to canonical references. It does not claim injectivity on arbitrary sequences.¶
ReferenceFrameValid_α(q) holds for every q : QualifiedNodeKey_α formed from a valid lane authority: laneBytes_α(λ) ∈ D_frame,α follows from LanePrimitiveBindingWellFormed (lane descriptor in frame), and idBytes_α,λ(i) = i ∈ D_frame,α holds because identifiers are digests of fixed output length and LanePrimitiveBindingWellFormed requires every digest-length string to lie in D_frame,α. Duplicate-freeness in CanonicalReferencesFor is implied by the strict <lex order together with injectivity of referenceBytes_α; these two conditions are stated explicitly so that Section 8.2 stands independently of Section 9.¶
A reference authority is:¶
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(λ))
⟩
¶
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.¶
For χ : ReferenceAuthority, write αχ := χ.lane_authority and define:¶
Lane_χ := Lane_αχ
QualifiedNodeKey_χ := QualifiedNodeKey_αχ
Reference_χ := Reference_αχ
referenceBindingOf_χ := χ.reference_binding_of
CanonicalReferences_χ,λ :=
CanonicalReferencesFor⟦αχ⟧(
λ, referenceBindingOf_χ(λ))
referenceAdmitted_χ,λ :=
referenceBindingOf_χ(λ).reference_shape.holds
refsAccumulator_χ,λ :=
referenceBindingOf_χ(λ).reference_accumulator.apply
¶
The complete lane binding is the finite pair:¶
ClosedLaneBinding⟦χ⟧(λ) := ⟨ primitive : LanePrimitiveBinding⟦αχ.base,Lane_χ⟧(λ), references : LaneReferenceBinding⟦αχ⟧(λ) ⟩ closedBindingOf⟦χ⟧(λ) := ⟨ primitive := primitiveBindingOf_αχ(λ), references := referenceBindingOf_χ(λ) ⟩¶
For χ : ReferenceAuthority and λ : Lane_χ:¶
Body_χ,λ := ⟨ parameter : ProofParameter_αχ,λ, context : Context_αχ,λ, payload : Payload_αχ,λ, index : Index_αχ,λ, references : CanonicalReferences_χ,λ ⟩ Occurrence_χ,λ := ⟨ body : Body_χ,λ, proof : Proof_αχ,λ ⟩ Body_χ := DepPair (λ : Lane_χ). Body_χ,λ Occurrence_χ := DepPair (λ : Lane_χ). Occurrence_χ,λ¶
Packing and projections are definitional. Proof objects are excluded from every construction below.¶
For χ : ReferenceAuthority, λ : Lane_χ, p : HashPurpose, and message : Σ*_αχ:¶
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))¶
For b : Body_χ,λ:¶
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))¶
The transcript contains six framed segments and one fixed-width index segment, ordered as shown:¶
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)⟩
¶
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.¶
The fixed-width index is not additionally framed.¶
For b : Body_χ,λ:¶
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,αχ¶
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))
¶
Given LanePrimitiveBindingWellFormed for the lane's primitive binding, the conjuncts ParameterFrameValid, ContentFrameValid, TranscriptFrameValid, and the first two conjuncts of each LaneHashInputValid instance (the purpose-tag and lane-descriptor frame memberships) are theorems that follow from LanePrimitiveBindingWellFormed alone. The contingent content of BodyConstructionValid_χ,λ(b) is exactly IdentifierFrameValid_χ,λ(b) together with the four D_LBH memberships.¶
The exact preimage languages range over all typed bodies. They are not filtered by BodyConstructionValid:¶
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_χ,λ }
¶
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) }
¶
A carrier system is:¶
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)
⟩
¶
body_inhabitant 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. construction_formation_proof is a genuine witness over every typed body. It is not a proposition defined and then silently assumed. The inhabitant forces ProofParameter_λ, Context_λ, Payload_λ, and Index_λ to be inhabited for every lane; CanonicalReferences_λ is always inhabited by ε. Proof_λ may be empty, in which case Occurrence_λ is uninhabited for that lane.¶
This universal obligation is intentional. Body_χ,λ 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 D_frame,αχ = Σ*_{αχ} can usually discharge the frame clauses directly. A bounded frame domain already discharges encoder-output and digest admissibility at lane formation (Section 7.2); if D_frame,αχ cannot contain them, LanePrimitiveBindingWellFormed fails before any CarrierSystem is attempted. The residual construction-formation obligation is that every assembled transcript remains in D_frame,αχ 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 CarrierSystem.¶
Forming a CarrierSystem does not by itself establish HashInjectiveOn for any lane or hash purpose. HashSuiteWellFormed places no injectivity requirement on hash; a lane whose hash is a constant function can still form a valid CarrierSystem. Identity uniqueness (Section 10) requires this as a separate, additional hypothesis. The exactness-certificate layer in Section 10.7 names lanes for which that additional hypothesis has been supplied.¶
One instance κ : CarrierSystem is fixed for the remainder of the document. It is arbitrary but fixed: every construction and theorem schema below is parametric in κ and may be instantiated with any carrier system. Let χκ := κ.reference_authority and ακ := χκ.lane_authority. The following unqualified aliases are local to this same κ:¶
Σ := Σ_ακ
Σ* := Σ*_ακ
Σ^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_χκ(λ)
¶
The proof-bearing consequences are:¶
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(λ)
¶
ConstructionDomainFormation follows by expanding the four preimage languages and applying BodyConstructionFormation to their witness bodies. It is not circular because those languages contain every typed body without a validity filter.¶
Theorem ReferenceBytesInjective states that referenceBytes is injective on frame-valid references. For q = ⟨λ,i⟩, dependent-pair equality gives lane equality before same-lane identifier equality:¶
ReferenceFrameValid(q₁) ∧ ReferenceFrameValid(q₂) ∧ referenceBytes(q₁) = referenceBytes(q₂) ⟹ q₁ = q₂¶
The proof uses frame cancellation, ακ.lane_descriptor_unique, and typed identifier equality. Because ReferenceFrameValid holds for every QNK in a valid lane authority (established in Section 8.2), the frame-valid premises of this injectivity theorem are always satisfied and need not be separately discharged by callers.¶
Packing and projections are definitional:¶
packBody(λ,b) := ⟨λ,b⟩ packOccurrence(λ,c) := ⟨λ,c⟩ laneOfBody(⟨λ,b⟩) := λ laneOfOccurrence(⟨λ,c⟩) := λ bodyOfOccurrence(⟨λ,c⟩) := ⟨λ,c.body⟩ bodyValue(⟨λ,b⟩) := b referencesOfBody(⟨λ,b⟩) := b.references¶
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.¶
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.¶
The dependency skeleton of the exact laws is:¶
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
¶
No stage imports an admission, evidence, cost, computational, comparison, or policy premise.¶
For λ : Lane, p : HashPurpose, and a language S:¶
HashInjectiveOn(λ,p,S) :=
S ⊆ D_LBH(λ,p)
∧ ∀ x,y ∈ S.
hashSuite(λ).hash(x) = hashSuite(λ).hash(y)
⟹ x = y
¶
The purpose-specific domain-closure conjunct is part of the premise rather than an external side condition. For the four named preimage languages, ConstructionDomainFormation(λ) supplies that conjunct; only exact hash injectivity remains an independent assumption. This premise is not implied by hash-suite formation.¶
HashInjectiveOn(λ,p,S) is an exact idealization. It is satisfiable only when |S| ≤ |Σ^{hashSuite(λ).output_length}|; when an identity-relevant carrier makes S 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.¶
For a,b : Body_λ:¶
BodyConstructionValid_λ(a)
∧ BodyConstructionValid_λ(b)
∧ HashInjectiveOn(
λ, identifierPurpose, IdentifierPreimageLanguage_λ)
∧ identifier_λ(a) = identifier_λ(b)
⟹ Transcript_λ(a) = Transcript_λ(b)
¶
The actual identifier preimage is:¶
LBHInput_λ(identifierPurpose, Frame(Transcript_λ(b)))¶
For a,b : Body_λ:¶
BodyConstructionValid_λ(a) ∧ BodyConstructionValid_λ(b) ∧ Transcript_λ(a) = Transcript_λ(b) ⟹ ParameterDigest_λ(a) = ParameterDigest_λ(b) ∧ ContentDigest_λ(a) = ContentDigest_λ(b) ∧ a.index = b.index ∧ ReferencesDigest_λ(a) = ReferencesDigest_λ(b)¶
The proof uses five applications of frame left cancellation, equality of fixed-width index prefixes, injectivity of L_λ, and frame injectivity for the final reference digest.¶
For a,b : Body_λ, each component theorem explicitly includes construction validity:¶
BodyConstructionValid_λ(a)
∧ BodyConstructionValid_λ(b)
∧ HashInjectiveOn(
λ, parameterPurpose, ParameterPreimageLanguage_λ)
∧ ParameterDigest_λ(a) = ParameterDigest_λ(b)
⟹ a.parameter = b.parameter
¶
BodyConstructionValid_λ(a)
∧ BodyConstructionValid_λ(b)
∧ HashInjectiveOn(
λ, contentPurpose, ContentPreimageLanguage_λ)
∧ ContentDigest_λ(a) = ContentDigest_λ(b)
⟹ a.context = b.context
∧ a.payload = b.payload
¶
BodyConstructionValid_λ(a)
∧ BodyConstructionValid_λ(b)
∧ HashInjectiveOn(
λ, referencesPurpose, ReferencesPreimageLanguage_λ)
∧ ReferencesDigest_λ(a) = ReferencesDigest_λ(b)
⟹ a.references = b.references
¶
These conclusions additionally use the injective canonical encoders and reference accumulator carried by the formation proofs.¶
ExactBodyBindingPremises(λ) :=
HashInjectiveOn(
λ, identifierPurpose, IdentifierPreimageLanguage_λ)
∧ HashInjectiveOn(
λ, parameterPurpose, ParameterPreimageLanguage_λ)
∧ HashInjectiveOn(
λ, contentPurpose, ContentPreimageLanguage_λ)
∧ HashInjectiveOn(
λ, referencesPurpose, ReferencesPreimageLanguage_λ)
¶
BodyConstructionValid_λ(a) ∧ BodyConstructionValid_λ(b) ∧ ExactBodyBindingPremises(λ) ∧ identifier_λ(a) = identifier_λ(b) ⟹ a = b¶
BodyConstructionValid_λ(a)
∧ BodyConstructionValid_μ(b)
∧ qualifiedNodeKey_λ(a) = qualifiedNodeKey_μ(b)
∧ ExactBodyBindingPremises(λ)
⟹ ∃ h : λ = μ.
transport_h(a) = b
¶
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.¶
Exactness is not a formation stage. It is a proof-bearing layer over a formed carrier system. No field of LaneAuthority, ReferenceAuthority, or CarrierSystem depends on this layer, and forming a CarrierSystem does not force any lane to satisfy the exact-body-binding premises.¶
For χ : ReferenceAuthority, define:¶
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
¶
For ι : CarrierSystem, write χι := ι.reference_authority. Define:¶
ExactBodyBindingPremises⟦ι⟧(λ) :=
HashInjectiveOn_{χι}(
λ, identifierPurpose, IdentifierPreimageLanguage_{χι,λ})
∧ HashInjectiveOn_{χι}(
λ, parameterPurpose, ParameterPreimageLanguage_{χι,λ})
∧ HashInjectiveOn_{χι}(
λ, contentPurpose, ContentPreimageLanguage_{χι,λ})
∧ HashInjectiveOn_{χι}(
λ, referencesPurpose, ReferencesPreimageLanguage_{χι,λ})
ExactLanePredicate(ι) :=
{ λ : Lane_{χι} |
ExactBodyBindingPremises⟦ι⟧(λ) }
¶
An exactness certificate is:¶
ExactnessCertificate := ⟨
base : CarrierSystem,
exact_lanes : Set (Lane_{base.reference_authority}),
exact_lanes_sound :
∀ λ ∈ exact_lanes.
ExactBodyBindingPremises⟦base⟧(λ)
⟩
¶
For ε : ExactnessCertificate, define:¶
baseOfExact(ε) := ε.base ExactLanes(ε) := ε.exact_lanes exactLanesSound(ε) := ε.exact_lanes_sound¶
Applied to a carrier system ι, ExactLanePredicate(ι) denotes the derived exact-lane predicate. Applied to an exactness certificate ε, ExactLanes(ε) denotes the carried set ε.exact_lanes. 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:¶
λ ∈ ExactLanes(ε) ⟹ ExactBodyBindingPremises⟦baseOfExact(ε)⟧(λ)¶
and therefore:¶
ExactLanes(ε) ⊆ ExactLanePredicate(baseOfExact(ε)).¶
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.¶
For the fixed instance κ of Section 8.7, HashInjectiveOn(λ,p,S) in Section 10.1 is exactly HashInjectiveOn_{χκ}(λ,p,S), and ExactBodyBindingPremises(λ) in Section 10.5 is exactly ExactBodyBindingPremises⟦κ⟧(λ); the unqualified names are the κ-instances of the parameterized definitions.¶
When an exactness certificate ε with baseOfExact(ε) = κ is fixed, a theorem schema in Section 10.2–Section 10.6 that requires the four hash-injectivity premises for a lane λ may be instantiated with the single hypothesis λ ∈ ExactLanes(ε). This hypothesis unfolds to the same four HashInjectiveOn premises and does not assert that every lane of the base is exact.¶
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
⟩
¶
For q ∈ G.vertices, bodyAt(G,q) denotes the unique value G.body_of[q] established by exact_vertex_domain.¶
ReferenceEdges(G) :=
{ (r,q) : QualifiedNodeKey × QualifiedNodeKey |
q ∈ G.vertices
∧ r ∈ referencesOfBody(bodyAt(G,q)) }
InternalEdges(G) :=
ReferenceEdges(G) ∩ (G.vertices × G.vertices)
¶
The orientation is (referenced, referencing). No independent edge relation is an input.¶
KeyConsistent(G) :=
∀ q ∈ G.vertices.
let packedBody := bodyAt(G,q) in
let λ := laneOfBody(packedBody) in
q = qualifiedNodeKey_λ(bodyValue(packedBody))
¶
GraphInScope(G,scope) :=
G.vertices ⊆ scope.graph_universe
∧ ∀ q ∈ G.vertices.
bodyAt(G,q) ∈ scope.object_domain
¶
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)
¶
allowed_external is a proposition over Reference × QualifiedNodeKey and is not constrained to lie within graph_universe. 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.¶
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)
¶
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)
¶
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.¶
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:¶
This document has no IANA actions.¶
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.¶
The core is formed in the following strict order:¶
Substrate ↓ LaneAuthority ↓ QualifiedNodeKey over that authority ↓ ReferenceAuthority ↓ Body and identity constructions ↓ CarrierSystem with body inhabitant and construction-formation witness¶
No record field depends on a later stage. In particular:¶
The optional exactness layer is not a formation dependency of the records above:¶
CarrierSystem ↓ (optional) ExactnessCertificate¶
It depends only on a completed CarrierSystem and the exact-body-binding premises; no earlier record depends on it.¶
The following are definitional or proof-bearing parts of κ:¶
D_LBH(λ,p) and its stable binding are explicit lane fields for every hash purpose.¶
The following invariants are not part of CarrierSystem formation. They hold only when an ExactnessCertificate ε is supplied:¶
ExactLanes(ε) contains only lanes λ for which all four HashInjectiveOn premises in ExactBodyBindingPremises⟦baseOfExact(ε)⟧(λ) hold.¶
λ ∈ ExactLanes(ε) is proof-bearing evidence for exact body binding in that lane.¶
CarrierSystem and still be absent from a given ExactnessCertificate; absence from exact_lanes does not imply failure of ExactBodyBindingPremises.¶
ExactBodyBindingPremises⟦baseOfExact(ε)⟧, it cannot belong to ExactLanes(ε) for any exactness certificate ε over that base.¶
ExactLanes(ε), since the corresponding HashInjectiveOn premise fails.¶
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:¶
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¶
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.¶
This appendix is informative.¶
The following ASCII equivalents are provided for tooling convenience. They do not change the normative meaning of the mathematical notation.¶
| Unicode | ASCII | Meaning |
|---|---|---|
| Σ | Sigma | Finite alphabet |
| Σ* | SigmaStar | Finite sequences over Sigma |
| Σ^n | Sigma^n | Sequences of length n |
| ε | epsilon | Empty sequence |
| ‖ | || | Sequence concatenation |
| ⇀ | partial | Partial function arrow |
| ∈ | in | Set/sequence membership |
| ∀ | forall | Universal quantifier |
| ∃ | exists | Existential quantifier |
| ⟹ | implies | Logical implication |
| ⟺ | iff | Logical equivalence |
| ∧ | and | Conjunction |
| ¬ | not | Negation |
| ⊆ | subseteq | Set inclusion |
| λ | lambda | Lane variable |
| μ | mu | Lane variable |
| χ | chi | Reference authority variable |
| κ | kappa | Carrier system variable |
| β | beta | Substrate variable |
| α | alpha | Lane authority variable |
| ⟨x,y⟩ | <x,y> | Dependent pair / record |
| ⟦x⟧ | [[x]] | Parameterized definition |
| |s| | length(s) | Sequence length |
| <lex | lex_less | Lexicographic order |
| − | - | Minus |
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.¶
For one fixed lane λ and bodies a,b : Body_λ, write BodiesValid(λ,a,b) for BodyConstructionValid_λ(a) ∧ BodyConstructionValid_λ(b), and write ExactBindingAssumptions(λ) for the four hash-injectivity premises of ExactBodyBindingPremises(λ) in Section 10.5. These are abbreviations only and introduce no additional premise. Each HashInjectiveOn(λ,p,S) includes the subset condition S ⊆ D_LBH(λ,p); for the named preimage languages that condition is supplied by ConstructionDomainFormation(λ).¶
FrameInjective (Section 6.1): for x,y ∈ D_frame with Frame(x) = Frame(y), apply parser round-trip with empty tails; ParseFrame is single-valued, so x = y. FrameLeftCancellation (Section 6.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.¶
For BodiesValid(λ,a,b) with Transcript_λ(a) = Transcript_λ(b): 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 L_λ(index) ‖ Frame(ReferencesDigest). Both index encodings have the fixed width declared by bindingOf(λ), so the fixed-width prefixes are equal; index-encoder injectivity gives a.index = b.index, and frame injectivity recovers references-digest equality. The frame membership of every component digest is supplied by TranscriptFrameValid, a conjunct of BodyConstructionValid. This derives the theorem of Section 10.3.¶
For the theorem of Section 10.2: the identifier preimages LBHInput_λ(identifierPurpose, Frame(Transcript_λ(·))) of a and b lie in IdentifierPreimageLanguage_λ; 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 IdentifierFrameValid — yields transcript equality. For each recovery theorem of Section 10.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 CanonicalReferences_λ supplied by ReferenceBindingWellFormed(λ), recovers the source components. The theorem of Section 10.5 composes these steps: transcript equality, digest and index equality by Appendix F.3, component recovery, and record extensionality — two records of the same telescopic record type are equal when all corresponding fields are equal.¶
Let e : qualifiedNodeKey_λ(a) = qualifiedNodeKey_μ(b). Equality of dependent pairs gives h_e := congrArg(firstProjection, e) : λ = μ and, after transport, transport^{IdSpace}_{h_e}(identifier_λ(a)) = identifier_μ(b). A coherence lemma proved by path induction on h_e gives identifier_μ(transport^{Body}_{h_e}(a)) = transport^{IdSpace}_{h_e}(identifier_λ(a)); transitivity yields same-lane identifier equality in lane μ. Transporting the left body's construction-validity witness and ExactBindingAssumptions(λ) along h_e and applying exact body binding in lane μ gives transport_{h_e}(a) = b, deriving the theorem of Section 10.6. The witness is extracted from the same key equality; no proof irrelevance or hidden choice of a lane-equality proof is used.¶
ReferenceBytesInjective (Section 9) 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 referenceBytes and <lex 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, ClosureValid places the referenced endpoint of every derived edge in G.vertices while the referencing endpoint is internal by the definition of ReferenceEdges, so ReferenceEdges(G) = InternalEdges(G); with G.vertices finite, each body carrying a finite canonical reference sequence, and InternallyAcyclic(G) excluding every directed cycle, a valid closed structural graph is a finite directed acyclic graph in the orientation (referenced, referencing).¶