CEK機械
⟨ ⟨ o M 1 M 2 . . . , E ⟩ , K ⟩ {\displaystyle \left\langle \left\langle o\ M_{1}\ M_{2}\ ...,E\right\rangle ,K\right\rangle } ⟼ c e k ⟨ ⟨ M 1 , E ⟩ , ⟨ n a r g , ⟨ o ⟩ , ⟨ ⟨ M 2 , E ⟩ , . . . ⟩ , K ⟩ ⟩ {\displaystyle \longmapsto _{\mathsf {cek}}\left\langle \left\langle M_{1},E\right\rangle ,\left\langle {\mathsf {narg}},\left\langle o\right\rangle ,\left\langle \left\langle M_{2},E\right\rangle ,...\right\rangle ,K\right\rangle \right\rangle }
⟨ ⟨ V , E ′ ⟩ , ⟨ f u n , ⟨ λ X . M , E ⟩ , K ⟩ ⟩ {\displaystyle \left\langle \left\langle V,E'\right\rangle ,\left\langle {\mathsf {fun}},\left\langle \lambda X.
CEK機械とは、ラムダ計算に対して値渡し評価戦略の操作的意味論を与えるための抽象機械の1つである。CEKとは、機械の状態を構成する3つの要素である “Control string”, “Environment”, “Continuation” に由来する。
⟨ ⟨ V , E ⟩ , ⟨ f u n , ⟨ e s c , K ′ ⟩ , K ⟩ ⟩ {\displaystyle \left\langle \left\langle V,E\right\rangle ,\left\langle {\mathsf {fun}},\left\langle {\mathsf {esc}},K'\right\rangle ,K\right\rangle \right\rangle } ⟼ c e k ⟨ ⟨ V , E ⟩ , K ′ ⟩ {\displaystyle \longmapsto _{\mathsf {cek}}\left\langle \left\langle V,E\right\rangle ,K'\right\rangle } ( V {\displaystyle V} が変数でない場合)
e v a l c e k ( M ) = f u n c t i o n {\displaystyle {\mathit {eval}}_{\mathsf {cek}}(M)={\mathsf {function}}} ( ⟨ ⟨ M , ∅ ⟩ , m t ⟩ ⟼ c e k ∗ ⟨ ⟨ ⟨ e s c , K ⟩ , E ⟩ , m t ⟩ {\displaystyle \left\langle \left\langle M,\emptyset \right\rangle ,{\mathsf {mt}}\right\rangle \longmapsto _{\mathsf {cek}}^{*}\left\langle \left\langle \left\langle {\mathsf {esc}},K\right\rangle ,E\right\rangle ,{\mathsf {mt}}\right\rangle } のとき)