Definition. C⟦e⟧\mathcal{C}\llbracket e \rrbracket 的解釋 [math-SSSU]

Notation [local-0]

這裡採用 x↦vx \mapsto v 表示數學中的函數,xx 是輸入 vv 是輸出;但 ρ[x↦d]\rho[x \mapsto d] 則是指 ρ\rho 中的 xx 被替換成 dd

在開始之前我們需要大概了解 C⟦x⟧\mathcal{C}\llbracket x \rrbracket 這個解釋的定義。

  • 當 tt 是型別,則 C⟦t⟧\mathcal{C}\llbracket t \rrbracket 是一個 cpo
  • 當 s,ts, t 是型別,則 C⟦s→t⟧\mathcal{C}\llbracket s \to t \rrbracket 是一個連續函數,domain 是 C⟦s⟧\mathcal{C}\llbracket s \rrbracket 而 codomain 是 C⟦t⟧\mathcal{C}\llbracket t \rrbracket
  • ρ\rho 是一個 Γ\Gamma-環境,幫每個 Γ\Gamma 中的變數 xx 定義一個 ρ(x)∈C⟦Γ(x)⟧\rho(x) \in \mathcal{C}\llbracket \Gamma(x) \rrbracket,Γ(x)\Gamma(x) 是一個型別
  • C⟦Γ▹M:t⟧ρ∈C⟦t⟧\mathcal{C}\llbracket \Gamma \triangleright M : t \rrbracket\rho \in \mathcal{C}\llbracket t \rrbracket,要解釋成三種情形
    • C⟦Γ▹x:t⟧ρ=ρ(x)\mathcal{C}\llbracket \Gamma \triangleright x : t \rrbracket\rho = \rho(x)

      需要 ρ\rho 函數的部分,當我們在程式語言中寫下 let f : T = M 時,就在 ρ\rho 這個部分函數中加入了 f=Mf = M 的定義,注意到 ρ\rho 是部分函數,因為也可能被問到未綁定的變數 zz,這時候 ρ(z)=⊥\rho(z) = \bot

    • C⟦Γ▹λ(x:s).M:s→t⟧ρ=(d↦C⟦Γ,x:s▹M:t⟧(ρ[x↦d]))\mathcal{C}\llbracket \Gamma \triangleright \lambda (x : s). M : s \to t \rrbracket\rho = (d \mapsto \mathcal{C}\llbracket \Gamma, x : s \triangleright M : t \rrbracket(\rho[x \mapsto d]))

      為程式函數找一個數學函數作為解釋

    • C⟦Γ▹M(N):t⟧ρ=(C⟦Γ▹M:s→t⟧ρ)(C⟦Γ▹N:s⟧ρ)\mathcal{C}\llbracket \Gamma \triangleright M(N) : t \rrbracket\rho = (\mathcal{C}\llbracket \Gamma \triangleright M : s \to t \rrbracket\rho)(\mathcal{C}\llbracket \Gamma \triangleright N : s \rrbracket\rho)

      直接調用作為解釋的數學函數