Edits
This commit is contained in:
parent
6374d0a819
commit
392cced2a2
9
cbpv.bib
9
cbpv.bib
|
@ -1,4 +1,4 @@
|
|||
@inproceedings{cbpv,
|
||||
@inproceedings{cbpv-coq,
|
||||
author = {Forster, Yannick and Sch\"{a}fer, Steven and Spies, Simon and Stark, Kathrin},
|
||||
title = {{Call-by-push-value in Coq: operational, equational, and denotational theory}},
|
||||
year = 2019,
|
||||
|
@ -38,4 +38,11 @@
|
|||
keywords = {de Bruijn repersentation, multi-sorted terms, parallel substiutions, sigma-calculus},
|
||||
location = {Cascais, Portugal},
|
||||
series = {CPP 2019}
|
||||
}
|
||||
|
||||
@phdthesis{cbpv,
|
||||
author = {Levy, Paul Blain},
|
||||
school = {Queen Mary University of London},
|
||||
title = {{Call-by-push-value}},
|
||||
year = {2001}
|
||||
}
|
22
cbpv.mng
22
cbpv.mng
|
@ -44,8 +44,8 @@
|
|||
|
||||
\section{Introduction}
|
||||
|
||||
The goal of this project is to mechanize a proof of strong normalization for call-by-push-value (CBPV).
|
||||
It follows work by Forster, Sch\"afer, Spies, and Stark \citep{cbpv} on mechanizing the metatheory of CBPV in Rocq,
|
||||
The goal of this project is to mechanize a proof of strong normalization for call-by-push-value (CBPV) \citep{cbpv}.
|
||||
It follows work by Forster, Sch\"afer, Spies, and Stark \citep{cbpv-coq} on mechanizing the metatheory of CBPV in Rocq,
|
||||
but instead adapts the proof technique from POPLMark Reloaded \citep{poplmark}.
|
||||
|
||||
Both proofs, and mine, follow the same sequence of steps:
|
||||
|
@ -150,19 +150,19 @@ The general recipe for defining these for CBPV is as follows:
|
|||
whose head positions are strongly neutral,
|
||||
while all other subterms are strongly normal.
|
||||
\item Strongly normal values are constructors
|
||||
whose subterms are strongly normal,
|
||||
or strongly neutral values, \ie variables.
|
||||
with strongly normal subterms
|
||||
or strongly neutral values.
|
||||
\item Strongly normal computations are constructors
|
||||
whose subterms are strongly normal,
|
||||
or strongly neutral computations,
|
||||
or computations which reduce to strongly normal computations
|
||||
with strongly normal subterms,
|
||||
strongly neutral computations,
|
||||
or computations that reduce to strongly normal computations
|
||||
(backward closure).
|
||||
\item Strong head reduction consists of $\beta$ reductions
|
||||
for all eliminators around the corresponding constructors,
|
||||
and congruent reductions in head positions.
|
||||
\end{itemize}
|
||||
|
||||
Additionally, strong reduction requires premises asserting that
|
||||
Additionally, head reduction requires premises asserting that
|
||||
the subterms that may ``disappear'' after reduction be strongly normal
|
||||
so that backward closure actually closes over strongly normal terms.
|
||||
These subterms are the values that get substituted into a computation,
|
||||
|
@ -261,7 +261,7 @@ However, I want to maximize the amount of mutual inductives used in this project
|
|||
so we instead define the logical relation as an inductive binary relation
|
||||
between the type and the set of terms of its interpretation,
|
||||
denoted as $[[⟦A⟧ ↘ P]]$ and $[[⟦B⟧ ↘ P]]$ below.
|
||||
I use set builder notation to define the sets and set membership,
|
||||
I use set builder and set membership notation,
|
||||
but they are implemented in the mechanization as functions
|
||||
that take terms and return propositions and as function applications.
|
||||
Here, the conjunctions ($\wedge$), disjunctions ($\vee$), equalities ($=$), implications ($\Rightarrow$),
|
||||
|
@ -661,7 +661,7 @@ of the structure of both reductions.
|
|||
Strong reduction of the head position eliminates the cases of $\beta$-reduction,
|
||||
leaving the cases where the head position steps or the other position steps.
|
||||
If the head position steps, we use \nameref{lem:commute}
|
||||
to join the strong reduction and the single-step reduction together,
|
||||
to join the strong head reduction and the single-step reduction together,
|
||||
then use the first induction hypothesis.
|
||||
Otherwise, we use the second induction hypothesis.
|
||||
We need the last premise to step through either of the subterms,
|
||||
|
@ -710,7 +710,7 @@ traditional strong normalization of well typed terms holds as a corollary.
|
|||
The cases for the first three correspond to the admissible strongly normal rules,
|
||||
using \nameref{lem:sound-sne} as needed,
|
||||
except for the \rref*{SN-Red} case, which uses \nameref{lem:closure-sn}.
|
||||
The cases for strong reduction hold by construction.
|
||||
The cases for strong head reduction hold by construction.
|
||||
\end{proof}
|
||||
|
||||
\begin{corollary}
|
||||
|
|
22
cbpv.tex
22
cbpv.tex
|
@ -44,8 +44,8 @@
|
|||
|
||||
\section{Introduction}
|
||||
|
||||
The goal of this project is to mechanize a proof of strong normalization for call-by-push-value (CBPV).
|
||||
It follows work by Forster, Sch\"afer, Spies, and Stark \citep{cbpv} on mechanizing the metatheory of CBPV in Rocq,
|
||||
The goal of this project is to mechanize a proof of strong normalization for call-by-push-value (CBPV) \citep{cbpv}.
|
||||
It follows work by Forster, Sch\"afer, Spies, and Stark \citep{cbpv-coq} on mechanizing the metatheory of CBPV in Rocq,
|
||||
but instead adapts the proof technique from POPLMark Reloaded \citep{poplmark}.
|
||||
|
||||
Both proofs, and mine, follow the same sequence of steps:
|
||||
|
@ -150,19 +150,19 @@ The general recipe for defining these for CBPV is as follows:
|
|||
whose head positions are strongly neutral,
|
||||
while all other subterms are strongly normal.
|
||||
\item Strongly normal values are constructors
|
||||
whose subterms are strongly normal,
|
||||
or strongly neutral values, \ie variables.
|
||||
with strongly normal subterms
|
||||
or strongly neutral values.
|
||||
\item Strongly normal computations are constructors
|
||||
whose subterms are strongly normal,
|
||||
or strongly neutral computations,
|
||||
or computations which reduce to strongly normal computations
|
||||
with strongly normal subterms,
|
||||
strongly neutral computations,
|
||||
or computations that reduce to strongly normal computations
|
||||
(backward closure).
|
||||
\item Strong head reduction consists of $\beta$ reductions
|
||||
for all eliminators around the corresponding constructors,
|
||||
and congruent reductions in head positions.
|
||||
\end{itemize}
|
||||
|
||||
Additionally, strong reduction requires premises asserting that
|
||||
Additionally, head reduction requires premises asserting that
|
||||
the subterms that may ``disappear'' after reduction be strongly normal
|
||||
so that backward closure actually closes over strongly normal terms.
|
||||
These subterms are the values that get substituted into a computation,
|
||||
|
@ -261,7 +261,7 @@ However, I want to maximize the amount of mutual inductives used in this project
|
|||
so we instead define the logical relation as an inductive binary relation
|
||||
between the type and the set of terms of its interpretation,
|
||||
denoted as $ \mathopen{\llbracket} \ottnt{A} \mathclose{\rrbracket} \searrow \ottnt{P} $ and $ \mathopen{\llbracket} \ottnt{B} \mathclose{\rrbracket} \searrow \ottnt{P} $ below.
|
||||
I use set builder notation to define the sets and set membership,
|
||||
I use set builder and set membership notation,
|
||||
but they are implemented in the mechanization as functions
|
||||
that take terms and return propositions and as function applications.
|
||||
Here, the conjunctions ($\wedge$), disjunctions ($\vee$), equalities ($=$), implications ($\Rightarrow$),
|
||||
|
@ -661,7 +661,7 @@ of the structure of both reductions.
|
|||
Strong reduction of the head position eliminates the cases of $\beta$-reduction,
|
||||
leaving the cases where the head position steps or the other position steps.
|
||||
If the head position steps, we use \nameref{lem:commute}
|
||||
to join the strong reduction and the single-step reduction together,
|
||||
to join the strong head reduction and the single-step reduction together,
|
||||
then use the first induction hypothesis.
|
||||
Otherwise, we use the second induction hypothesis.
|
||||
We need the last premise to step through either of the subterms,
|
||||
|
@ -710,7 +710,7 @@ traditional strong normalization of well typed terms holds as a corollary.
|
|||
The cases for the first three correspond to the admissible strongly normal rules,
|
||||
using \nameref{lem:sound-sne} as needed,
|
||||
except for the \rref*{SN-Red} case, which uses \nameref{lem:closure-sn}.
|
||||
The cases for strong reduction hold by construction.
|
||||
The cases for strong head reduction hold by construction.
|
||||
\end{proof}
|
||||
|
||||
\begin{corollary}
|
||||
|
|
Loading…
Reference in New Issue