-
Notifications
You must be signed in to change notification settings - Fork 6
Abstracts.2019.CBPV
TBD
The program
print "hello0";
let x be 3.
let y {- : U (nat → F nat) -} be thunk (print "hello1";
λz. -- "pop z"
print "we just popped"z;
produce x+z).
print "hello2";
(print "hello3";
7' -- "push 7"
print "we just pushed 7";
force y) to w. -- "... >>= λw. ..."
print "w is bound to"w;
produce w+5 -- "return $ w+5"
of type F nat
outputs
hello0
hello2
hello3
we just pushed 7
hello1
we just popped 7
w is bound to 10
(see Section 1.5.2 for the example program, Section 3.2 and Figure 3.1 for the syntax of basic/effect-free CBPV, Section 3.4 for the extended syntax of printing CBPV)
A value is, a computation does.
CBPV decomposes the monad
T
of Moggi and Filinski into an adjunctionF ⊣ U
.
The belief that the categorical semantics of functionspace in call-by-name are easy is a consequence of a longstanding bias (going back to Church) towards functionspace, at the expense of other connectives. Try formulating a categorical semantics for sum type in call-by-name. [..] The perception of CBN's mathematical superiority (CBN satisfies the η-law for functions) is actually due to the fact that function types have been considered more important, and hence received more attention, than sum types (CBN does not satisfy the η-law for booleans) or even ground types.
Inside a ground CBN term, the only way to cause a subterm of type A → B to be evaluated is to apply it.
- value type (Section 1.5.4)
- a type of the form
U B
,∑i ∈ I Ai
,𝟏
, orA × A
for some computation typeB
, set of tags I, value typesA
- computation type (Section 1.5.4)
- a type of the form
F A
,∏i ∈ I Bi
, orA → B
for some value typeA
, set of tags I, computation typesB
- reversible derivation (Section 2.3.4)
- a derivation
Γ, Δ1 ⊢ A1 ⋯ Γ, Δn ⊢ An ----------------------- Γ, Δ ⊢ C
such that there are operations
- Θ : Tm(Γ, Δ1;A1) × ⋯ × Tm(Γ, Δn;An) → Tm(Γ, Δ;C)
- Θ' : Tm(Γ, Δ;C) → Tm(Γ, Δ1;A1) × ⋯ × Tm(Γ, Δn;An)
which are
- natural in Γ
- mutually inverse
with respect to the equational theory (for instance,
Γ, A ⊢ B Γ ⊢ A Γ ⊢ B Γ, A, B ⊢ C Γ, A ⊢ C Γ, B ⊢ C --------- →I ------------ ×I ------------ ×E ------------------ +E Γ ⊢ A → B Γ ⊢ A × B Γ, A × B ⊢ C Γ, A + B ⊢ C
are reversible derivations while the derivations
Γ ⊢ A Γ ⊢ A → B Γ ⊢ A Γ ⊢ B ---------------- →E --------- +Il --------- +Ir Γ ⊢ B Γ ⊢ A + B Γ ⊢ A + B
are not reversible)
- context (Definition 3, Definition 5)
- a closed term C[] with zero or more occurrences of a hole []
- ground context (Definition 3, Definition 5, Definition 20)
-
- a context C[] of ground type (for CBV)
- a context C[] of ground type (for CBN)
- a context C[] of ground producer type (for CBPV)
- observational equivalence (Definition 4, Definition 6, Definition 20)
- the relation M ≃ M' on terms M, M' in terms of a notion of observations m, terminal terms T, and evaluation M⇓(m,T)
- ∀ ground contexts C[], observations m, terminal terms T. C[M]⇓(m,T) ⇔ C[M']⇓(m,T) (at ground types)
- ∀ contexts C[], observations m. (∃ terminal term T. C[M]⇓(m,T)) ⇔ (∃ terminal term T'. C[M']⇓(m,T')) (at all types)
- ground type (Definition 14)
- a type of the form
∑i ∈ I 𝟏
for some set of tags I (such asbool = 𝟏 + 𝟏
) - producer type (Definition 14)
- a type of the form
F A
for some value typeA
- complex value (Section 4.2)
- a term of the form
let x be V. W
,pm V as { …, (i,x). Wi, … }
, orpm V as (x,y). W
where theW
are values, that is a term pattern-matching into values (as opposed to computations; not allowed by basic CBPV) - functor representation (Definition 61)
- an object V : 𝒞 (the "vertex") together with a family of bijections 𝒞(V,X) ≅ F(X) natural in X : 𝒞 for a set-valued functor F : 𝒞 → 𝐒𝐞𝐭
- oblique morphism (Definition 110)
- an element g ∈ O(X,Y) of a set-valued functor O : ℬop × 𝒟 → 𝐒𝐞𝐭 such that all functors of the form O(-,Y) : ℬop → 𝐒𝐞𝐭 for some Y : 𝒟 and O(X,-) : 𝒟 → 𝐒𝐞𝐭 for some X : ℬ are representable (corresponding to an adjunction from ℬ to 𝒟 given by the two representations)
- Parametrized Representability (Proposition 95)
- Let H : 𝒞 × 𝒟 → 𝐒𝐞𝐭 be a set-valued functor such that for each X : 𝒞 the set-valued functor H(X,-) : 𝒟 → 𝐒𝐞𝐭 has a representation F(X) : 𝒟, n(X) : 𝒟(F(X),-) ≅ H(X,-), then F extends uniquely to a functor from 𝒞 to 𝒟op so as to make n a natural isomorphism between 𝒟(F(-),-) and H.
- Paul Blain Levy. 2001. "Call-By-Push-Value". FAQ, course notes, tutorial slides, book.
- Paul Blain Levy. 2006. "Call-By-Push-Value: Decomposing Call-By-Value and Call-By-Name".
- Andreas Abel and Christian Sattler. 2019. "Normalization by Evaluation for Call-By-Push-Value and Polarized Lambda-Calculus".
- Eugenio Moggi. 1991. "Notions of Computation and Monads".
- Andrzej Filinski. 1996. "Controlling Effects".