revision of scp paper
This commit is contained in:
parent
4df3cb67a1
commit
6300a449ff
12 changed files with 605 additions and 19 deletions
|
@ -416,7 +416,10 @@ denotational equality to justify code transformations.
|
|||
|
||||
PLFA and SF differ in several particulars. PLFA begins with a computationally
|
||||
complete language, PCF, while SF begins with a minimal language, simply-typed
|
||||
lambda calculus with booleans. PLFA does not include type annotations in terms,
|
||||
lambda calculus with booleans. We chose PCF because it lets us use
|
||||
the same examples, based on addition and multiplication, for the early
|
||||
chapters of both Part I and Part II.
|
||||
PLFA does not include type annotations in terms,
|
||||
and uses bidirectional type inference, while SF has terms with unique types and
|
||||
uses type checking. SF also covers a simple imperative language with Hoare
|
||||
logic, and for lambda calculus covers subtyping, record types, mutable
|
||||
|
@ -433,8 +436,9 @@ added a fourth volume on random testing of Coq specifications using QuickChick.
|
|||
There is currently no tool equivalent to QuickChick for Agda.
|
||||
|
||||
There is more material that would be desirable to include in PLFA which was not
|
||||
due to limits of time, including mutable references, logical relations, System~F, and
|
||||
pure type systems. We'd especially like to include pure type systems as they
|
||||
due to limits of time, including mutable references, System~F, logical
|
||||
relations for parametricity, and pure type systems.
|
||||
We would especially like to include pure type systems as they
|
||||
provide the readers with a formal model close to the dependent types used in the
|
||||
book. Our attempts so far to formalise pure type systems have proved
|
||||
challenging, to say the least.
|
||||
|
@ -495,12 +499,17 @@ cases deal with the situation where there are potentially two
|
|||
different reductions; each case is trivially shown to be
|
||||
impossible. Five of the ten cases are redundant, as they just involve
|
||||
switching the order of the arguments. We had to copy the cases
|
||||
suitably permuted. It would be preferable to reinvoke the proof on
|
||||
nsuitably permuted. It would be preferable to reinvoke the proof on
|
||||
switched arguments, but this would not pass Agda's termination checker
|
||||
since swapping the arguments doesn't yield a recursive call on
|
||||
structurally smaller arguments. We suspect tactics could cut down the
|
||||
proof significantly. We tried to compare with SF's proof that reduction
|
||||
is deterministic, but failed to find that proof.
|
||||
structurally smaller arguments. The proof of determinism in SF
|
||||
(Chapter Norm) is for a different language of comparable size,
|
||||
and has a comparable size.
|
||||
|
||||
% We suspect tactics could cut down the
|
||||
% proof significantly.
|
||||
% We tried to compare with SF's proof that reduction
|
||||
% is deterministic, but failed to find that proof.
|
||||
|
||||
SF covers an imperative language with Hoare logic, culminating in code that
|
||||
takes an imperative programme suitably decorated with preconditions and
|
||||
|
@ -552,9 +561,8 @@ the icon is expanded. As teachers, we were aware that students might skip the
|
|||
formal proof on a first reading, and we have to hope the students
|
||||
return to it and step through it with an interactive tool in order to make it
|
||||
intelligible. We expect the students skipped over many such proofs. This
|
||||
particular proof forms the basis for a question of the mock exam and the past
|
||||
exams, so we expect most students will look at this one if not all the
|
||||
others.
|
||||
particular proof forms the basis for a question on several exams,
|
||||
so we expect most students will look at this one if not all the others.
|
||||
|
||||
\newcommand{\ex}{\texttt{x}}
|
||||
\newcommand{\why}{\texttt{y}}
|
||||
|
@ -640,7 +648,8 @@ supporting all the necessary characters. Securing one has proved
|
|||
tricky. As of this writing, we use FreeMono, but it lacks a few
|
||||
characters ($\typecolon$ and $\qedsymbol$) which are loaded from fonts with a different
|
||||
width. Long arrows are necessarily more than a single character wide.
|
||||
Instead, we compose reduction —→ from an em dash — and an arrow →.
|
||||
Instead of the unicode long arrow,
|
||||
we compose reduction —→ from an em dash — and an ordinary arrow →.
|
||||
Similarly for reflexive and transitive closure —↠.
|
||||
|
||||
\section{Progress + Preservation = Evaluation}
|
||||
|
@ -768,7 +777,7 @@ connection becomes more widely known.
|
|||
% TODO: consider rewriting this?
|
||||
The second part of PLFA first discusses two different approaches to
|
||||
modeling simply-typed lambda calculus. It first presents
|
||||
terms with named variables and and extrinsic typing relation and
|
||||
terms with named variables and extrinsic typing relation and
|
||||
then shifts to terms with de Bruijn indices that are intrinsically
|
||||
typed. The names \emph{extrinsic} and \emph{intrinsic} for these
|
||||
two approaches are taken from \citet{Reynolds-2003}.
|
||||
|
@ -805,8 +814,8 @@ the corresponding judgment in the intrinsic approach does not. The difference
|
|||
becomes more pronounced when including the code for substitution, reductions,
|
||||
and proofs of progress and preservation. In particular, where the extrinsic approach
|
||||
requires one first define substitution and reduction and then prove they
|
||||
preserve types, the intrinsic approach establishes substitution at the same time
|
||||
it defines substitution and reduction.
|
||||
preserve types, the intrinsic approach establishes substitution
|
||||
preserves types at the same time it defines substitution and reduction.
|
||||
|
||||
Stripping out examples and any proofs that appear in one but not the other (but
|
||||
could have appeared in both), the full development in PLFA for the extrinsic approach
|
||||
|
@ -835,8 +844,9 @@ advantages of de Bruijn indices and intrinsic types.
|
|||
|
||||
There are actually four possible designs, as the choice of named
|
||||
variables vs de Bruijn indices, and the choice of extrinsic vs
|
||||
intrinsic typing may be made independently. There are synergies
|
||||
between the two. Manipulation of de Bruijn indices can be notoriously
|
||||
intrinsic typing may be made independently. But the two designs
|
||||
we chose work well, while the other two are problematic.
|
||||
Manipulation of de Bruijn indices can be notoriously
|
||||
error-prone without intrinsic types to give assurance of correctness.
|
||||
For instrinsic typing with named variables, simultaneous substitution by
|
||||
open terms remains difficult.
|
||||
|
|
46
papers/scp/conflicts.txt
Normal file
46
papers/scp/conflicts.txt
Normal file
|
@ -0,0 +1,46 @@
|
|||
All (Indiana University)
|
||||
Giuseppe Castagna (Univ. of Paris Diderot)
|
||||
David Broman (KTH)
|
||||
Amal Ahmed (Northeastern Univ.)
|
||||
Dustin Jamner (Northeastern Univ.)
|
||||
Michael M. Vitousek (Facebook)
|
||||
Matteo Cimini (Univ. of Mass. Lowell)
|
||||
Carl Friedrich Bolz-Tereick (Heinrich-Heine-Universität Düsseldorf)
|
||||
David Christiansen (Galois Inv.)
|
||||
Peter Thiemann (Univ. of Freiburg)
|
||||
All (University of Edinburgh)
|
||||
Fabrizio Montesi (University of Southern Denmark)
|
||||
Marco Peressotti (University of Southern Denmark)
|
||||
J. Garrett Morris (Kansas University)
|
||||
All (University of Edinburgh)
|
||||
J. Garrett Morris (Kansas University)
|
||||
Jeremy Yallop (Cambridge)
|
||||
Jack Williams (Microsoft)
|
||||
Jakub Zalewski
|
||||
Shayan Najd
|
||||
Niki Vazou (IMDEA Software Institute)
|
||||
Anish Tondwalkar (University of California, San Diego)
|
||||
Vikram Choudhury (Indiana University)
|
||||
Ryan G. Scott (Indiana University)
|
||||
Ryan R. Newton (Indiana University)
|
||||
Ranjit Jhala (University of California, San Diego)
|
||||
Atsushi Igarashi (Kyoto University)
|
||||
Vasco T. Vasconcelos (University of Lisbon)
|
||||
Tom Schrijvers (KU Leuven)
|
||||
Bruno Oliveira (University of Hong Kong)
|
||||
Koar Mantirosian (KU Leuven)
|
||||
Marco Carbone (IT University of Copenhagen)
|
||||
Fabrizio Montesi (University of Southern Denmark)
|
||||
Carsten Schürmann (IT University of Copenhagen)
|
||||
Andreas Abel (Gothenburg University)
|
||||
Jesper Cockx (Gothenburg University)
|
||||
Dominique Devriese (Vrije Universiteit Brussel)
|
||||
Amin Timany (KU~Leuven)
|
||||
Nobuko Yoshida (Imperial)
|
||||
Raymond Hu (Hertfordshire)
|
||||
Bernardo Toninho (Universidade NOVA de Lisboa)
|
||||
Julien Lange (Kent)
|
||||
Simon Thompson (Kent)
|
||||
Nicholas Ng
|
||||
Robert Griesemer (Google)
|
||||
All (IOHK)
|
3
papers/scp/credit-author-statement.txt
Normal file
3
papers/scp/credit-author-statement.txt
Normal file
|
@ -0,0 +1,3 @@
|
|||
Philip Wadler: Writing - Original Draft, Writing - Review & Editing, Software,
|
||||
Wen Kokke: Writing - Review & Editing, Software,
|
||||
Jereemy Siek: Writing - Review & Editing, Software,
|
BIN
papers/scp/declaration-of-competing-interests.docx
Normal file
BIN
papers/scp/declaration-of-competing-interests.docx
Normal file
Binary file not shown.
BIN
papers/scp/declaration-of-competing-interests.pdf
Normal file
BIN
papers/scp/declaration-of-competing-interests.pdf
Normal file
Binary file not shown.
55
papers/scp/determinism.coq
Normal file
55
papers/scp/determinism.coq
Normal file
|
@ -0,0 +1,55 @@
|
|||
Lemma step_deterministic :
|
||||
deterministic step.
|
||||
Proof with eauto.
|
||||
unfold deterministic.
|
||||
intros t t' t'' E1 E2.
|
||||
generalize dependent t''.
|
||||
induction E1; intros t'' E2; inversion E2; subst; clear E2...
|
||||
(* ST_AppAbs *)
|
||||
- inversion H3.
|
||||
- exfalso; apply value__normal in H...
|
||||
(* ST_App1 *)
|
||||
- inversion E1.
|
||||
- f_equal...
|
||||
- exfalso; apply value__normal in H1...
|
||||
(* ST_App2 *)
|
||||
- exfalso; apply value__normal in H3...
|
||||
- exfalso; apply value__normal in H...
|
||||
- f_equal...
|
||||
(* ST_Pair1 *)
|
||||
- f_equal...
|
||||
- exfalso; apply value__normal in H1...
|
||||
(* ST_Pair2 *)
|
||||
- exfalso; apply value__normal in H...
|
||||
- f_equal...
|
||||
(* ST_Fst *)
|
||||
- f_equal...
|
||||
- exfalso.
|
||||
inversion E1; subst.
|
||||
+ apply value__normal in H0...
|
||||
+ apply value__normal in H1...
|
||||
(* ST_FstPair *)
|
||||
- exfalso.
|
||||
inversion H2; subst.
|
||||
+ apply value__normal in H...
|
||||
+ apply value__normal in H0...
|
||||
(* ST_Snd *)
|
||||
- f_equal...
|
||||
- exfalso.
|
||||
inversion E1; subst.
|
||||
+ apply value__normal in H0...
|
||||
+ apply value__normal in H1...
|
||||
(* ST_SndPair *)
|
||||
- exfalso.
|
||||
inversion H2; subst.
|
||||
+ apply value__normal in H...
|
||||
+ apply value__normal in H0...
|
||||
- (* ST_TestTrue *)
|
||||
inversion H3.
|
||||
- (* ST_TestFalse *)
|
||||
inversion H3.
|
||||
(* ST_Test *)
|
||||
- inversion E1.
|
||||
- inversion E1.
|
||||
- f_equal...
|
||||
Qed.
|
24
papers/scp/determinism.lagda
Normal file
24
papers/scp/determinism.lagda
Normal file
|
@ -0,0 +1,24 @@
|
|||
det : ∀ {M M′ M″}
|
||||
→ (M —→ M′)
|
||||
→ (M —→ M″)
|
||||
--------
|
||||
→ M′ ≡ M″
|
||||
det (ξ-·₁ L—→L′) (ξ-·₁ L—→L″) = cong₂ _·_ (det L—→L′ L—→L″) refl
|
||||
det (ξ-·₁ L—→L′) (ξ-·₂ VL M—→M″) = ⊥-elim (V¬—→ VL L—→L′)
|
||||
det (ξ-·₁ L—→L′) (β-ƛ _) = ⊥-elim (V¬—→ V-ƛ L—→L′)
|
||||
det (ξ-·₂ VL _) (ξ-·₁ L—→L″) = ⊥-elim (V¬—→ VL L—→L″)
|
||||
det (ξ-·₂ _ M—→M′) (ξ-·₂ _ M—→M″) = cong₂ _·_ refl (det M—→M′ M—→M″)
|
||||
det (ξ-·₂ _ M—→M′) (β-ƛ VM) = ⊥-elim (V¬—→ VM M—→M′)
|
||||
det (β-ƛ _) (ξ-·₁ L—→L″) = ⊥-elim (V¬—→ V-ƛ L—→L″)
|
||||
det (β-ƛ VM) (ξ-·₂ _ M—→M″) = ⊥-elim (V¬—→ VM M—→M″)
|
||||
det (β-ƛ _) (β-ƛ _) = refl
|
||||
det (ξ-suc M—→M′) (ξ-suc M—→M″) = cong `suc_ (det M—→M′ M—→M″)
|
||||
det (ξ-case L—→L′) (ξ-case L—→L″) = cong₄ case_[zero⇒_|suc_⇒_]
|
||||
(det L—→L′ L—→L″) refl refl refl
|
||||
det (ξ-case L—→L′) β-zero = ⊥-elim (V¬—→ V-zero L—→L′)
|
||||
det (ξ-case L—→L′) (β-suc VL) = ⊥-elim (V¬—→ (V-suc VL) L—→L′)
|
||||
det β-zero (ξ-case M—→M″) = ⊥-elim (V¬—→ V-zero M—→M″)
|
||||
det β-zero β-zero = refl
|
||||
det (β-suc VL) (ξ-case L—→L″) = ⊥-elim (V¬—→ (V-suc VL) L—→L″)
|
||||
det (β-suc _) (β-suc _) = refl
|
||||
det β-μ β-μ = refl
|
|
@ -11,9 +11,9 @@ Highlights for Review
|
|||
* Constructive proofs of preservation and
|
||||
progress give rise to a prototype evaluator.
|
||||
|
||||
* Using raw terms with a separate typing
|
||||
relation is far less perspicuous than using
|
||||
inherently-typed terms.
|
||||
* Using raw, extrinsically-typed terms
|
||||
is less perspicuous than using
|
||||
intrinsically-typed terms.
|
||||
|
||||
* An online final examination with access to a
|
||||
proof assistant can lead to flawless student
|
||||
|
|
437
papers/scp/response-to-reviewers.txt
Normal file
437
papers/scp/response-to-reviewers.txt
Normal file
|
@ -0,0 +1,437 @@
|
|||
[We thank the reviewers for their comments. Responses interleaved in
|
||||
brackets. The revision includes a few other improvements, in
|
||||
particular consistently using standard terms "extrinsic"/"intrinsic"
|
||||
in place of "raw"/"inherent".]
|
||||
|
||||
Ms. Ref. No.: SCICO-D-19-00172 Title: Programming Language Foundations
|
||||
in Agda Science of Computer Programming
|
||||
|
||||
Dear Professor Philip Wadler,
|
||||
|
||||
Thank you very much for having submitted to the Science of Computer
|
||||
Programming Journal.
|
||||
|
||||
We have now received reviewers' reports and a recommendation by the
|
||||
handling editor; based upon the recommendation and the reviews, we
|
||||
would like to ask you prepare a minor revision taking the comments of
|
||||
the reviewers into account.
|
||||
|
||||
The due date for revision is Feb 14, 2020. If this deadline is out of
|
||||
sync with other due dates communicated to you outside EES, then please
|
||||
contact the handling editor to settle this.
|
||||
|
||||
If you decide to revise the work, please submit a list of changes or a
|
||||
rebuttal against each point which is being raised when you submit the
|
||||
revised manuscript.
|
||||
|
||||
To submit a revision, please go to https://ees.elsevier.com/scico/ and
|
||||
login as an Author. Your username is: wadler@inf.ed.ac.uk If you need
|
||||
to retrieve password details, please go to:
|
||||
http://ees.elsevier.com/scico/automail_query.asp
|
||||
|
||||
On your Main Menu page is a folder entitled "Submissions Needing
|
||||
Revision". You will find your submission record there.
|
||||
|
||||
Once again, thank you very much for having given us the opportunity to
|
||||
consider your manuscript.
|
||||
|
||||
Mohammad Reza Mousavi, Ph.D. Editor-in-Chief Science of Computer
|
||||
Programming
|
||||
|
||||
|
||||
Reviewers' comments:
|
||||
|
||||
|
||||
The reviewers have been unanimous in accepting the article for
|
||||
publication. There are a few remarks to be considered by the authors
|
||||
for the final version, as pointed out in the reviews.
|
||||
|
||||
Reviewer #1: This article reports on experience teaching basic results
|
||||
in lambda calculus using a proof assistant based on type theory. The
|
||||
first finding is that the proof style supported by Agda,
|
||||
i.e. dependently typed programming, need not be more verbose than the
|
||||
tactic-based style supported by Coq. The second finding is a
|
||||
functional pearl: constructive proof of progress and preservation
|
||||
directly yield an interpreter. The third finding is that
|
||||
formalization of typed lambda calculus based on inherently typed terms
|
||||
is significantly more succinct than formalization in terms of a
|
||||
separate typing judgment. Finally, the authors report on flawless
|
||||
student performance on an exam using the proof assistant.
|
||||
|
||||
The last point may not seem surprising to readers with experience
|
||||
teaching this material as presented in the book Software Foundations
|
||||
(SF) by Pierce et al, specifically the volume title Programming
|
||||
Language Foundations. (Or for that matter, teaching related topics
|
||||
using a proof assistant, e.g., based on the book Concrete Semantics by
|
||||
Nipkow and Klein.) The authors have written a book, PLFA, drawing on
|
||||
corresponding chapters of the book by Pierce et al which develops a
|
||||
more extensive range of programming language theory using Coq.
|
||||
Section 2 of the article describes PLFA with reference to SF, and
|
||||
Section 7 describes experience with open source publishing.
|
||||
|
||||
At first glance I was concerned that this article might be little more
|
||||
than a promotion for the book. But in fact the article offers
|
||||
insightful comparisons between tactical proving and dependently typed
|
||||
programming style, based on extensive classroom teaching experience.
|
||||
|
||||
The book SF introduces quite a few proof tactics and it was not at all
|
||||
obvious that the same material could be covered perspicuously and
|
||||
succinctly in Agda. The examples and discussion in Section 3 make a
|
||||
convincing case for the pedagogical effectiveness of Agda for the
|
||||
toptics covered. The article acknowledges that this does not
|
||||
contradict the effectiveness of tactic-based proof assistants for
|
||||
larger scale developments.
|
||||
|
||||
As for the second finding, the authors acknowledge that the idea seems
|
||||
obvious and can to some extent be discerned in prior publications and
|
||||
online documents. But it does not seem to have been explicitly
|
||||
presented in the research literature or textbooks, and it clearly
|
||||
should be.
|
||||
|
||||
The third finding addresses alternatives dubbed extrinsic/intrinsic
|
||||
typing by Reynolds, which to my knowledge have been viewed as each
|
||||
having advantages and disadvantages -- thus tradeoffs to be considered
|
||||
afresh in each situation. The authors make a convincing case for
|
||||
intrinsic typing by comparing well informed formalizations in both
|
||||
styles and observing that intrinsic is in some sense more expressive
|
||||
and also significantly more succinct.
|
||||
|
||||
The article is very well written and easy to read. While the
|
||||
experience report style is somewhat unusual for this particular
|
||||
journal, there is substantial scientific content and the writing style
|
||||
is effective in conveying that content. Indeed, it conveys the
|
||||
authors' enthusiasm for Agda and my review was delayed because I was
|
||||
keen to get experience with PLFA. A previous version of the paper
|
||||
appeared in a conference; this article adds substantial material on
|
||||
additional chapters of the book and on teaching experiences.
|
||||
|
||||
Judgment
|
||||
|
||||
This is an excellent article worthy of publication in SCP. Below I
|
||||
mention minor points that could be addressed, but significant revision
|
||||
is not necessary as the article is already well polished.
|
||||
|
||||
|
||||
Further thoughts
|
||||
|
||||
Apropos the volume Verified Functional Algorithms of SF, it makes
|
||||
heavy use of tactical automation to handle large case analyses
|
||||
(hundreds of cases, for red-black trees). It would be quite
|
||||
interesting to see whether at least the simpler algorithms can be
|
||||
handled well in Agda.
|
||||
|
||||
[NOT DONE. Interesting, but we don't have time to do this work.]
|
||||
|
||||
page 8 lists logical relations as one of the topics not currently
|
||||
included in PLFA, but on page 8 under Adequacy a logical relation is
|
||||
used.
|
||||
|
||||
[Clarified by changing "logical relations" to "logical relations
|
||||
for parametricity"]
|
||||
|
||||
page 11 mentions not finding a proof of determinacy of reduction. The
|
||||
chapter on Normalization of SF, by Tolmach (Norm.v) does so.
|
||||
|
||||
[Thanks! Text updated.]
|
||||
|
||||
page 12 near the bottom of the page it explains some notations that
|
||||
occur on previous pages
|
||||
|
||||
[Not sure what change is requested here.]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reviewer #2: Title: Programming Language Foundations in Agda.
|
||||
|
||||
Review:
|
||||
|
||||
This paper has an interesting structure: it focus on the overall
|
||||
structure of the book "Programming Language Foundations in Agda", the
|
||||
choices made and the advantages and difficulties of using Agda to
|
||||
construct this material (with respect to other tools, in particular
|
||||
Coq). The technical details are mostly about choices and style of
|
||||
formalization, and initial results of the application of the material
|
||||
in a few courses. Let me start by saying that the article is very
|
||||
pleasant to read: the style is rather informal, but very clear and
|
||||
provides the reader a good idea of the mindset of the authors that
|
||||
lead to the choices they made, and also the influences they had along
|
||||
the way.
|
||||
|
||||
A little context regarding my backgroung, to contextualize my
|
||||
comments: I have been using Coq for roughly three years. During this
|
||||
time, I have made several exercises of formalization, including the
|
||||
untyped lambda-calculus (with explicit variable names and with
|
||||
deBruijn indices), including the Church-Rosser theorem (based on
|
||||
parallel reductions) and normalisation of left-most reductions. My
|
||||
experience with Agda is very brief.
|
||||
|
||||
In general, I liked the article very much, and I would agree with the
|
||||
majority of the claims made. The appointed topics below are mostly
|
||||
comments, suggestions and some comments on a few claims that I found
|
||||
slightly exaggerated.
|
||||
|
||||
|
||||
Section 2 ---------
|
||||
|
||||
There is not much to say about this section, since it is an overview
|
||||
of the topics that are introduced and proved in each section of the
|
||||
book. In general, I liked very much the choice of topics and their
|
||||
sequence.
|
||||
|
||||
Page 4, paragraph "Part I, Logical Foundations": suggestion: (briefly
|
||||
explain monus: the operation is known, but the name 'monus' may not be
|
||||
as common)
|
||||
|
||||
[Not done. It is a standard term, easily looked up. Explaining
|
||||
it would expand the text more than warranted.]
|
||||
|
||||
Page 7, "Discussion": it is mentioned that SF starts with STLC, while
|
||||
PLFA starts with PCF. It was not discussed the reason to skip a more
|
||||
restricte, normalizing language (STLC) rather than a more powerful
|
||||
language (PCF). Could you comment on the motivations for this choice?
|
||||
It would be very nice to be able to speak about termination proofs and
|
||||
logical relations at some place (as mentioned in future work).
|
||||
|
||||
[Added the requested comment.]
|
||||
|
||||
Page 8, "Discussion": It seems that the author claim's that the
|
||||
substitution in PCF is weaker because it is only applied to closed
|
||||
terms. However, this is a choice, since it is possible to define
|
||||
substitution for open terms (only it is usually not worth the effort,
|
||||
since it is more complex and involves alpha-renaming).
|
||||
|
||||
[The choice with substitution of open terms is described later
|
||||
in the paper, pointing out that the code was too long to include
|
||||
in the textbook.]
|
||||
|
||||
Page 8, "We'd" => "We would" (suggestion: the contraction felt way too
|
||||
informal...)
|
||||
|
||||
[Fixed.]
|
||||
|
||||
Section 3 ---------
|
||||
|
||||
Regarding the comparison between Agda and Coq, some remarks:
|
||||
|
||||
|
||||
I believe it is clear that Agda's syntax is nicer than Coq's syntax,
|
||||
in particular very familiar to Haskell programmers. I found it very
|
||||
interesting the usage of "--" coments to replicate the shape of rules,
|
||||
mixfix notation and better Unicode support. However, I although I
|
||||
believe that it was not clear to me that there is a huge advantage of
|
||||
Agda over Coq in the following two aspects:
|
||||
|
||||
-> notation: Coq's notation system, although not as flexible as Agda,
|
||||
is quite similar in terms of effectiveness: duplication of names
|
||||
seems like a minor inconvenience, and would not affect the
|
||||
formalization effort in such a negative way, as claimed by the
|
||||
authors.
|
||||
|
||||
-> style of proof: it seems to me that proving theorems in Agda feels
|
||||
like programming more than proving in Coq (due to the distinction
|
||||
between the languages). This does not seem to me as good or bad per
|
||||
se: it depends on your objectives.
|
||||
|
||||
Although it is possible to construct the proof term directly in Coq,
|
||||
it is not encouraged: the tactic language, although intimidating for
|
||||
beginners, feels very comprehensive and powerful. Although I agree
|
||||
that Coq requires an interactive process to be understood, I was not
|
||||
convinced (by the arguments given in the paper and looking at some
|
||||
more complex proofs in PLFA) that they are more readable than Coq's:
|
||||
it seems more a question of preference of style, and desire to use the
|
||||
same mechanics for programming and proving. Moreover, Coq seems to
|
||||
"hide" a little better than Adga questions regarding the definition of
|
||||
equality (you coud hide this at the beginning, and introduce it
|
||||
later). I agree with the authors that Agda exposes more directly
|
||||
Propositions as Types and avoid some duplications of Coq.
|
||||
|
||||
[The reviewer doesn't ask for specific changes.]
|
||||
|
||||
|
||||
Section 4 ---------
|
||||
|
||||
Nice idea. (no problems here)
|
||||
|
||||
|
||||
|
||||
Section 5 ---------
|
||||
|
||||
Page 16, line 45 : "and and" => "and"
|
||||
|
||||
[Fixed.]
|
||||
|
||||
Page 19, line 34 : it seems that the comparison between intrinsically
|
||||
and extrinsically-typed lambda terms is not completely fair, in the
|
||||
sense that there are two main modifications involved: => explicit
|
||||
names vs deBruijn indices => intrisicly typed vs extrinsicly typed
|
||||
terms The authors comment that there are actually four possibilities
|
||||
and comment on some difficulties with the other options. Did you
|
||||
consider introducing and contrasting each dimension at the time,
|
||||
rather than making two choices at the same time (in the book)?
|
||||
|
||||
[Rephrased to clarify that we think only the two options
|
||||
we presented work well. The following sentences explain why
|
||||
the other options are problematic.]
|
||||
|
||||
Section 6 ---------
|
||||
|
||||
Page 21, line 21: "Similar results were achieved at Edinburgh over the
|
||||
previous five years".
|
||||
|
||||
The presented data seems to suggest that the distinction between the
|
||||
two systems seems more a question of style, evidencing that it is
|
||||
possible to substitute Coq for Agda in this scenario. However, I does
|
||||
not point towards a clear advantage in either way. Maybe an
|
||||
interesting experiment would be to expose some introduction to both
|
||||
systems, and try to measure the effort of doing similar tasks in both
|
||||
platforms.
|
||||
|
||||
[The paper includes a suggestion from Nate Foster on similar lines.]
|
||||
|
||||
------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reviewer #3: The paper proposes an alternative to the textbook
|
||||
Software Foundations (SF) by Pierce et. al. SF uses Coq, while the
|
||||
authors propose the usage of Agda. The authors claim that, with Coq,
|
||||
too much effort is spent on learning tactics for proof derivation
|
||||
instead of learning programming language theory. In contrast, Agda
|
||||
makes use of no tactics, but its proofs are not much longer than those
|
||||
in Coq. As a result, the new textbook Programming Language Foundations
|
||||
in Agda (PLFA) has been written and applied to 3 courses so far
|
||||
(Edinburgh, Rio de Janeiro, and Padova). In addition to this
|
||||
contribution to education, the authors mention two other
|
||||
contributions: the insight that a constructive proof of preservation
|
||||
and progress automatically produces a prototype evaluator of the
|
||||
language; and that an intrinsic type relation requires fewer lines of
|
||||
code and is more expressive than an extrinsic type relation.
|
||||
|
||||
The paper reports the development of a solid contribution to the
|
||||
education of programming language theory and an alternative to the
|
||||
Software Foundations textbook. On a more scientific note, the usage of
|
||||
a constructive proof of preservation and progress to produce a
|
||||
prototype evaluator is a nice insight not clearly described in the
|
||||
literature.
|
||||
|
||||
As suggestions for improvement, I would like to see few comments on
|
||||
design decisions taken on PLFA: (i) SF begins with a minimal language,
|
||||
while PLFA begins with a computationally complete language. Why is
|
||||
that? Apparently, I would regard a minimal language more pedagogical.
|
||||
(ii) Why lambda calculus instead of Hoare Logic? Was that decision
|
||||
solely based on the proof automation limitations of Agda or is there a
|
||||
pedagogical advantage on doing that?
|
||||
|
||||
The text is very well written.
|
||||
|
||||
Minor fixes: Page 14, line 41. Introduce a line break over the word
|
||||
"progress." Page 16, line 45. "and and" → "and" Page 20, line
|
||||
50. "Question 3 give the students the the" → "Question 3 gives the
|
||||
students the" Overall, I would like to see the text using only the
|
||||
British spelling or the American spelling (but not both: e.g. flavour,
|
||||
behavior).
|
||||
|
||||
|
||||
|
||||
|
||||
________________
|
||||
|
||||
Data in Brief (optional):
|
||||
|
||||
We invite you to convert your supplementary data (or a part of it)
|
||||
into an additional journal publication in Data in Brief, a
|
||||
multi-disciplinary open access journal. Data in Brief articles are a
|
||||
fantastic way to describe supplementary data and associated metadata,
|
||||
or full raw datasets deposited in an external repository, which are
|
||||
otherwise unnoticed. A Data in Brief article (which will be reviewed,
|
||||
formatted, indexed, and given a DOI) will make your data easier to
|
||||
find, reproduce, and cite.
|
||||
|
||||
You can submit to Data in Brief via the Science of Computer
|
||||
Programming submission system when you upload your revised Science of
|
||||
Computer Programming manuscript. To do so, complete the template and
|
||||
follow the co-submission instructions found here:
|
||||
www.elsevier.com/dib-template. If your Science of Computer Programming
|
||||
manuscript is accepted, your Data in Brief submission will
|
||||
automatically be transferred to Data in Brief for editorial review and
|
||||
publication.
|
||||
|
||||
Please note: an open access Article Publication Charge (APC) is
|
||||
payable by the author or research funder to cover the costs associated
|
||||
with publication in Data in Brief and ensure your data article is
|
||||
immediately and permanently free to access by all. For the current APC
|
||||
see:
|
||||
www.elsevier.com/journals/data-in-brief/2352-3409/open-access-journal
|
||||
|
||||
Please contact the Data in Brief editorial office at
|
||||
dib-me@elsevier.com or visit the Data in Brief homepage
|
||||
(www.journals.elsevier.com/data-in-brief/) if you have questions or
|
||||
need further information.
|
||||
|
||||
Note: While submitting the revised manuscript, please double check the
|
||||
author names provided in the submission so that authorship related
|
||||
changes are made in the revision stage. If your manuscript is
|
||||
accepted, any authorship change will involve approval from co-authors
|
||||
and respective editor handling the submission and this may cause a
|
||||
significant delay in publishing your manuscript.
|
||||
|
||||
|
||||
METHODSX CO-SUBMISSION (OPTIONAL)
|
||||
|
||||
If you have customized (a) research method(s) for the project
|
||||
presented in your Science of Computer Programming article, you are
|
||||
invited to submit this part of your work as MethodsX article alongside
|
||||
your revised research article. MethodsX is an independent journal that
|
||||
publishes the work you have done to develop research methods to your
|
||||
specific needs or setting. This is an opportunity to get full credit
|
||||
for the time and money you may have spent on developing research
|
||||
methods, and to increase the visibility and impact of your work.
|
||||
|
||||
How does it work? 1) Fill in the MethodsX article template:
|
||||
https://www.elsevier.com/MethodsX-template 2) Place all MethodsX files
|
||||
(including graphical abstract, figures and other relevant files) into
|
||||
a .zip file and upload this as a 'Method Details (MethodsX) ' item
|
||||
alongside your revised Science of Computer Programming
|
||||
manuscript. Please ensure all of your relevant MethodsX documents are
|
||||
zipped into a single file. 3) If your Science of Computer Programming
|
||||
research article is accepted, your MethodsX article will automatically
|
||||
be transferred to MethodsX, where it will be reviewed and published as
|
||||
a separate article upon acceptance. MethodsX is a fully Open Access
|
||||
journal, the publication fee is only 520 US$.
|
||||
|
||||
Questions? Please contact the MethodsX team at methodsx@elsevier.com.
|
||||
Example MethodsX articles can be found here:
|
||||
http://www.sciencedirect.com/science/journal/22150161 Yours sincerely,
|
||||
|
||||
INTERACTIVE PLOT VIEWER (OPTIONAL)
|
||||
|
||||
Science of Computer Programming features the Interactive Plot Viewer,
|
||||
see: http://www.elsevier.com/interactiveplots. Interactive Plots
|
||||
provide easy access to the data behind plots. To include one with your
|
||||
article, please prepare a .csv file with your plot data and test it
|
||||
online at
|
||||
http://authortools.elsevier.com/interactiveplots/verification before
|
||||
submission as supplementary material. PLEASE NOTE: Science of
|
||||
Computer Programming would like to enrich online articles by
|
||||
displaying interactive figures that help the reader to visualize and
|
||||
explore your research results. For this purpose, we would like to
|
||||
invite you to upload figures in the MATLAB .FIG file format as
|
||||
supplementary material to our online submission system. Elsevier will
|
||||
generate interactive figures from these files and include them with
|
||||
the online article on SciVerse ScienceDirect. If you wish, you can
|
||||
submit .FIG files along with your revised submission.
|
||||
|
||||
________________
|
||||
|
||||
For further assistance, please visit our customer support site at
|
||||
http://help.elsevier.com/app/answers/list/p/7923. Here you can search
|
||||
for solutions on a range of topics, find answers to frequently asked
|
||||
questions and learn more about EES via interactive tutorials. You will
|
||||
also find our 24/7 support contact details should you need any further
|
||||
assistance from one of our customer support representatives.
|
||||
|
11
papers/scp/reviewers.txt
Normal file
11
papers/scp/reviewers.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
Benjamin Pierce
|
||||
University of Pennsylvania
|
||||
bcpierce@cis.upenn.edu
|
||||
|
||||
Ulf Norel
|
||||
Chalmers University
|
||||
ulfn@chalmers.se
|
||||
|
||||
Greg Michaelson
|
||||
Heriot Watt
|
||||
G.Michaelson@hw.ac.uk
|
Loading…
Reference in a new issue