The Chapter 49 fragment fixes 𝑝::=𝜏∣𝗂𝗇𝗈𝗎𝗍𝜏,𝑟::=𝑥∣𝑒.𝑓∣𝑒1[𝑒2],𝜋:𝖫𝗈𝖼⇀{𝗅𝖾𝗍,𝗏𝖺𝗋}×𝖵𝖺𝗅. Reachability is the reflexive subtree closure acc(𝜋,ℓ)={ℓ}∪⋃𝑖acc(𝜋,ℓ𝑖) when the value at ℓ contains child locations ℓ𝑖. Roots named by distinct bindings in the currently accessible frame must have pairwise disjoint accessible sets.
Path typing preserves the qualifier carried by a variable and distinguishes immutable expressions from mutable paths:
Γ(𝑥)=𝑚𝜏
Δ;Γ⊢𝗉𝖺𝗍𝗁𝑥:𝑚𝜏
T-Path-Name
Δ;Γ⊢𝑒:𝑠Δ(𝑠)(𝑓)=𝑚𝜏
Δ;Γ⊢𝗉𝖺𝗍𝗁𝑒.𝑓:𝗅𝖾𝗍𝜏
T-LetPropRef
Δ;Γ⊢𝗉𝖺𝗍𝗁𝑟:𝗏𝖺𝗋𝑠Δ(𝑠)(𝑓)=𝗏𝖺𝗋𝜏
Δ;Γ⊢𝗉𝖺𝗍𝗁𝑟.𝑓:𝗏𝖺𝗋𝜏
T-VarPropRef
Δ;Γ⊢𝑒1:[𝜏]Δ;Γ⊢𝑒2:ℤ
Δ;Γ⊢𝗉𝖺𝗍𝗁𝑒1[𝑒2]:𝗅𝖾𝗍𝜏
T-LetElemRef
Δ;Γ⊢𝗉𝖺𝗍𝗁𝑟:𝗏𝖺𝗋[𝜏]Δ;Γ⊢𝑒:ℤ
Δ;Γ⊢𝗉𝖺𝗍𝗁𝑟[𝑒]:𝗏𝖺𝗋𝜏
T-VarElemRef
Path selection is a separate small-step judgment. Its complete named rules are
𝜂1(𝑥)=ℓ𝜋(ℓ)=𝑚𝑣
Δ⊢𝜋;𝜂;𝑥⟶𝗅𝗏𝜋;𝜂;ℓ𝑚
PSS-Name
Δ⊢𝜋;𝜂;𝑟⟶𝗅𝗏𝜋′;𝜂′;𝑟′
Δ⊢𝜋;𝜂;𝑟.𝑓⟶𝗅𝗏𝜋′;𝜂′;𝑟′.𝑓
PSS-Struct
𝑚′=min(𝑚,𝑚𝑖)𝜋(ℓ)=𝑚[ℓ1,…,ℓ𝑘]𝑠Δ(𝑠)(𝑓𝑖)=𝑚𝑖𝜏𝑖
Δ⊢𝜋;𝜂;ℓ𝑚.𝑓𝑖⟶𝗅𝗏𝜋;𝜂;ℓ𝑚′𝑖
PSS-Prop
𝜋(ℓ)=𝑚[ℓ1,…,ℓ𝑘]0≤𝑐<𝑘
Δ⊢𝜋;𝜂;ℓ𝑚[𝑐]⟶𝗅𝗏𝜋;𝜂;ℓ𝑚𝑐+1
PSS-Elem
The access and assignment rules are
Δ;Γ⊢𝗉𝖺𝗍𝗁𝑟:𝗏𝖺𝗋𝜏
Δ;Γ⊢𝖺𝗋𝗀&𝑟:𝗂𝗇𝗈𝗎𝗍𝜏
T-Inout
Δ;Γ⊢𝗉𝖺𝗍𝗁𝑟:𝗏𝖺𝗋𝜏Δ;Γ⊢𝑒:𝜏
Δ;Γ⊢𝑟=𝑒:𝗎𝗇𝗂𝗍
T-Assign
The published access relation is the least reflexive, transitive relation closed by right field/index extension,
&𝑟⪯&𝑟′
&𝑟⪯&𝑟′.𝑓
Src-Field
&𝑟⪯&𝑟′
&𝑟⪯&𝑟′[𝑒]
Src-Index
and ¬const(𝑒)∨¬const(𝑒′)&𝑟[𝑒]⪯&𝑟[𝑒′]Src−Unknown−Index. It lacks the left closure needed for nested unknown-index descendants. The book therefore uses definition 49.4. It accepts only paths whose array indices are literals, compares components from the root, and requires 𝑖≠𝑗∈𝐼𝗋𝖾𝖿⟹¬(𝑎𝑖⋈𝖡𝑎𝑗). Ordinary arguments are recursively copied into mutually fresh callee roots. Access arguments map directly to existing mutable locations, and generated 𝗉𝗈𝗉 drops only copied roots. Rule T-Call carries the book exclusivity premise; ESS-Call carries the resulting physical-disjointness premise in the final store.
Assignment reaches the root only when its path has retained the mutable qualifier:
𝜋(ℓ)=𝑚𝑣0𝜋0=drop(𝜋,𝑣0)𝜋′=𝜋0[ℓ↦𝗏𝖺𝗋𝑣]
Δ⊢𝜋;𝜂;ℓ𝗏𝖺𝗋=𝑣;𝑒⟶𝜋′;𝜂;𝑒
ESS-Assign
Checked downcast succeeds only by 𝜏≠𝖠𝗇𝗒𝜋(ℓ)=𝗅𝖾𝗍𝑣typeofΔ,𝜋(𝑣)=𝜏copy(𝜋,𝑣)=(𝜋′,𝑣′)Δ⊢𝜋;𝜂;𝖻𝗈𝗑(ℓ)𝖺𝗌𝜏;𝑒⟶𝜋′;𝜂;𝑣′;𝑒ESS−Downcast. Failure of its concrete-type premise is one of the two runtime-error forms; failure of PSS-Elem’s literal bound is the other.