The frozen expression grammar has variables, fixed-arity symbols, nonrecursive sharing lets, simultaneous recursive lets, and left-linear constructor cases. The denotation clauses apply to case-free expressions; top-level cases in function definitions generate one rewrite rule per alternative. The result is a finite rooted equation graph whose equations, including garbage equations, are retained. A source step is defined exactly by one graph-rewrite step.
Conventional graph typing assigns one scheme instance to every symbol equation. Uniqueness graph typing refines each incident type with attributes 𝗎≤𝗆. In the root-extended graph, one incoming reference checks 𝑇𝐺(𝑛)≤𝜎𝑖; more than one checks [𝑇𝐺(𝑛)]≤𝜎𝑖. Correction must be defined. Source contraction is 𝐵,𝑦:[𝜎],𝑧:[𝜎]⊢𝐸:𝜏𝐵,𝑥:𝜎⊢𝐸[𝑦:=𝑥,𝑧:=𝑥]:𝜏Contr. Sharing and subsumption retain every premise of their source rules:
𝐵⊢𝐸:𝜎𝐵,𝑥:𝜎⊢𝐸′:𝜏
𝐵⊢𝗅𝖾𝗍𝑥=𝐸𝗂𝗇𝐸′:𝜏
Share
𝐵⊢𝐸:𝜎𝜎≤𝜏
𝐵⊢𝐸:𝜏
Sub
The cycle rule corrects recursive interfaces receiving multiple incoming edges.
Conventional inference generates finite first-order equations and uses a most general unifier. Attribute inference is a separate finite inequality closure. Its principal result is relative to a fixed conventional solution. It rejects precisely a closure deriving 𝗆≤𝗎; there is no full principal uniqueness theorem in the frozen system.
An update may reuse a matched node only with one incoming reference, outer attribute 𝗎, a fitting declared layout, and correctly typed retained outgoing edges. This rule decides eligibility; it does not add a machine-store semantics.
The core left values are 𝑤::=𝑥∣∗𝑤. A copy reads without changing the store; a move returns the value and replaces the selected owner position by 𝜕𝑇. Moving through a borrow is not a rule. Assignment drops the old target before writing; block exit drops the top lexical frame.
The flow judgment is Γ⊢⟨𝑡:𝑇⟩𝜎ℓ⊣Γ′. A unique access requires no overlapping live borrow. A shared access requires no overlapping live mutable borrow. Borrow invariance checks the result type by extending the output with a fresh anonymous binding.
The termination repair requires an injective 𝜙:𝜅→ℕ with 𝑣∈𝜏(𝑥)⇒𝜙(𝑥)>𝜙(𝑣). Recursive place operations use the lexicographic measure (𝜙(𝗋𝗈𝗈𝗍(𝑤)),𝑑(𝑤)). Move and drop delete dependency edges; declaration adds a highest-ranked fresh vertex; assignment reranks the finite updated path above its new dependencies.
Oxide v4 uses numeric places 𝜋, dereferencing place expressions 𝑝, reference types &𝜌𝜔𝜏, and loans 𝜔𝑝. Its judgment is Σ;Δ;Γ;Θ⊢𝑒:𝜏⇒Γ′. Γ is an ordered sequence of frames containing variables and concrete regions; a concrete region maps to a finite loan set.
Ownership safety Δ;Γ;Θ⊢𝜔𝑝⇒𝐿 rejects every overlapping loan for a unique use and every overlapping unique loan for a shared use. Reborrows carry an exclusion obligation for the suspended parent. 𝗀𝖼-𝗅𝗈𝖺𝗇𝗌Θ(Γ) empties exactly the concrete regions absent from all types in Γ and Θ. The 𝗌𝗁𝗂𝖿𝗍 and 𝖿𝗋𝖺𝗆𝖾𝖽 reductions pop only the latest runtime and static frame. Region rewriting and output-environment union are parts of preservation and may not be replaced by equality.