author | Cezary Kaliszyk <cezarykaliszyk@gmail.com> |
Tue, 28 Feb 2012 15:13:42 +0100 | |
changeset 3124 | 528704b5830e |
parent 3104 | f7c4b8e6918b |
child 3126 | d3d5225f4f24 |
permissions | -rw-r--r-- |
3099
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
1 |
|
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
2 |
> Referee no 1: |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
3 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
4 |
> * The paper can be accepted for Logical Methods in Computer Science |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
5 |
> after minor |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
6 |
> revisions |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
7 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
8 |
> NUMBER : LMCS-2011-675 |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
9 |
> TITLE : General Bindings and Alpha-Equivalence in Nominal Isabelle |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
10 |
> AUTHOR(S) : Christian Urban, Cezary Kaliszyk |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
11 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
12 |
> Recommendation: The paper can be accepted for Logical Methods in |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
13 |
> Computer Science after minor revisions. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
14 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
15 |
> The work reported is very good, but the presentation of the paper can |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
16 |
> be improved. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
17 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
18 |
> This paper continues a line of work called "Nominal Isabelle" carried |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
19 |
> out by the first author and his colleagues for many years. The goal |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
20 |
> of this work is to support formal (machine checked) reasoning about |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
21 |
> languages with binding. With the theoretical foundation of "nominal |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
22 |
> logic" developed by Pitts and colleagues, these authors and their |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
23 |
> co-workers have developed a package to support such reasoning in the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
24 |
> Isabelle proof tool for Higher Order Logic. This toolkit has been |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
25 |
> widely used, and although the technology sometimes shows through |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
26 |
> (e.g. explicit name swapping required in arguments) it is a very good |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
27 |
> package. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
28 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
29 |
> Up to now, this package has supported single binders such as \lambda. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
30 |
> Multiple simultaneous binding (e.g. letrec) had to be coded using |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
31 |
> iterated single binders. Not only is this coding hard to reason |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
32 |
> about, it often isn't a correct representation of the intended |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
33 |
> language. This paper describes a new version of the Isabelle package, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
34 |
> "Nominal2", supporting binding of sets and lists of names in the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
35 |
> Isabelle/HOL system. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
36 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
37 |
> The amount of work involved is immense, and the first author |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
38 |
> especially has shown real commitment to continuing development of both |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
39 |
> theory and working tools. Everything provided in this package is |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
40 |
> claimed to be a definitional extension of HOL: no assumptions or |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
41 |
> built-in changes to the logic. For all of these reasons, this is very |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
42 |
> good work. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
43 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
44 |
> However, I recommend improvement of the presentation of the paper |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
45 |
> before it is accepted by LMCS. While the motivation for the work of |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
46 |
> this paper is clear to anyone who has tried to formalize such |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
47 |
> reasoning, it is not explained in the paper. E.g. on p.1 "However, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
48 |
> Nominal Isabelle has fared less well in a formalisation of the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
49 |
> algorithm W [...]." But there is no analysis in the paper of what was |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
50 |
> hard in algorithm W coded with single binders, or explanation of how |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
51 |
> it would be done in the new system reported in this paper showing why |
3102
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
52 |
> the new approach works better in practice. |
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
53 |
|
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
54 |
Added |
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
55 |
|
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
56 |
> Although this example is |
3099
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
57 |
> one of the main motivations given for the work, there is apparently no |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
58 |
> formalization of algorithm W in the library of examples that comes |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
59 |
> with Nominal2 described in this paper. I think that should be |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
60 |
> provided. Similarly for the second motivating example (on p.2 "The |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
61 |
> need of iterating single binders is also one reason why Nominal |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
62 |
> Isabelle and similar theorem provers that only provide mechanisms for |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
63 |
> binding single variables have not fared extremely well with the more |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
64 |
> advanced tasks in the POPLmark challenge [2], because also there one |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
65 |
> would like to bind multiple variables at once."). |
3102
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
66 |
|
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
67 |
No time to provide full examples yet. They will be provided |
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
68 |
once Nominal2 becomes more mature and people are using it |
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
69 |
and help to provide theories. |
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
70 |
|
3099
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
71 |
> The new Isabelle package "Nominal2", described in this paper, is not |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
72 |
> ready for users without a lot of hand-holding from the Nominal2 |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
73 |
> developers. This paper would have more impact if interested users |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
74 |
> could try the tool without so much difficulty. |
3102
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
75 |
|
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
76 |
The plan is to have Nominal Isabelle be part of the next stable |
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
77 |
release of Isabelle, which should be out before the summer 2012. |
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
78 |
At the moment it can be downloaded as a bundle and is ready |
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
79 |
to be used (we have confirmation from two groups for this). |
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
80 |
|
3099
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
81 |
> A few more specific points: |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
82 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
83 |
> Bottom of p.7: I don't understand the paragraph containing equations |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
84 |
> (2.4) and (2.5). |
3102
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
85 |
|
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
86 |
|
3099
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
87 |
> Bottom of p.9: The parameters R and fa of the alpha equivalence |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
88 |
> relation are dropped in the examples, so the examples are not clear. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
89 |
> I think there is a typo in the first example: "It can be easily |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
90 |
> checked that ({x,y},x->y) and ({y,x},y->x) are alpha-equivalent [...]" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
91 |
> Did you mean "({x,y},x->y) and ({y,x},x->y) are alpha-equivalent"? |
3102
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
92 |
|
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
93 |
|
5b5ade6bc889
added definition for generalisation of type schemes (for paper)
Christian Urban <urbanc@in.tum.de>
parents:
3099
diff
changeset
|
94 |
|
3099
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
95 |
> Referee no 2: |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
96 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
97 |
> * The paper can be accepted for Logical Methods in Computer Science |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
98 |
> after minor |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
99 |
> revisions |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
100 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
101 |
> General comments |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
102 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
103 |
> This paper describes a new implementation of the nominal_datatype package |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
104 |
> within the Isabelle/HL theorem prover. This implementation is more modular |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
105 |
> than previous versions, because it relies on (I think) three non-trivial |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
106 |
> independent packages, namely the datatype package, the function package, and |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
107 |
> the quotient package. This implementation is also more powerful than previous |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
108 |
> versions, because it deals with abstractions that bind multiple names |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
109 |
> at once, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
110 |
> and because it offers two variants of these abstractions (baptised "set" and |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
111 |
> "set+") where certain structural equivalence laws, namely the exchange of two |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
112 |
> binders and the elimination/introduction of a vacuous binder, are built |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
113 |
> directly into the alpha-equivalence relation. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
114 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
115 |
> Overall, I like the paper because it describes a useful piece of software, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
116 |
> because the architecture of this software is quite non-trivial and well |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
117 |
> designed, and because the paper is written in a very understandable style. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
118 |
> For these reasons, I believe the paper should be accepted. I do have a series |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
119 |
> of questions and suggestions for potential improvements and would be happy to |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
120 |
> review a revised version of the paper if the editor sees fit. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
121 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
122 |
> My main criticisms of the paper are: |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
123 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
124 |
> * The definition of the "nominal signature" language is not completely clear. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
125 |
> The general format at the beginning of section 4 is very clear, but is in |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
126 |
> fact too general: not everything that can be written in this format makes |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
127 |
> sense. The authors then walk the reader through a series of |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
128 |
> examples of what |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
129 |
> is *forbidden* (with informal explanations why these examples are |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
130 |
> forbidden), but in the end, a positive definition of what is *permitted* |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
131 |
> seems to be missing. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
132 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
133 |
> * The authors have isolated an important building block, the notion of |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
134 |
> (multiple-name) abstraction (in Section 3). (Actually, there are three |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
135 |
> variants of it.) This is good: it makes the whole construction modular |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
136 |
> and helps simplify what follows. I don't know if this will make sense |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
137 |
> for the authors, but I would like them to go further in this direction: |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
138 |
> identify more elementary building blocks ("combinators", if you will), |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
139 |
> study their properties in isolation, and in the end combine them to |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
140 |
> obtain a very simple explanation of the "nominal signature" format |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
141 |
> that is exposed to the user. In the present state of the paper, the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
142 |
> design of the "nominal signature" format seems somewhat ad hoc: the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
143 |
> format of the "binds" clauses is subject to several restrictions; |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
144 |
> there seems to be a distinction between "binders" and ordinary |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
145 |
> "terms"; there is a distinction between "recursive" and "non-recursive" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
146 |
> binders, and a distinction between "shallow" and "deep" binders. If |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
147 |
> one could identify a small number of elementary building blocks and |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
148 |
> explain/motivate the design of the surface specification language in |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
149 |
> terms of these elementary notions, the paper might become all the more |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
150 |
> compelling. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
151 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
152 |
> In the present state of the paper, I think the *implementation* of the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
153 |
> nominal package is very useful for the end user, but the *theory* that is |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
154 |
> presented in this paper is still a bit cumbersome: the definitions of free |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
155 |
> atoms, alpha-equivalence, etc. presented on pages 16-20 are understandable |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
156 |
> but not compelling by their simplicity. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
157 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
158 |
> * I do not quite understand the treatment of the finiteness restriction. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
159 |
> I understand that things must have finite support so as to allow picking |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
160 |
> atoms outside of their support. But finiteness side conditions seem to |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
161 |
> appear pretty early and in unexpected places; e.g. I would expect the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
162 |
> support of a set of atoms "as" to be equal to "as", regardless of whether |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
163 |
> "as" is finite or infinite. This could be clarified. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
164 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
165 |
> * The choice of abstraction "style" is limited to three built-in forms (list, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
166 |
> set, and set+). Perhaps one could make this user-extensible. After |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
167 |
> all, very |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
168 |
> few properties seem to be required of the basic abstraction forms, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
169 |
> so why not |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
170 |
> let the user define new ones? |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
171 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
172 |
> * One may argue that the set-abstractions are an attempt to kill two birds |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
173 |
> with one stone. On the one hand, we take the quotient raw terms modulo a |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
174 |
> standard notion of alpha-equivalence; on the other hand, at the same time, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
175 |
> we take the quotient modulo a notion of structural equivalence (permutation |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
176 |
> of binders, removal or introduction of vacuous binders). One could argue |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
177 |
> that dealing with structural equivalence should be left to the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
178 |
> user, because |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
179 |
> in general the structural equivalence axioms that the user needs can be |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
180 |
> arbitrarily complex and application-specific. There are object languages, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
181 |
> for instance, where abstractions commute with pairs: binding a name in a |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
182 |
> pair is the same as binding a name within each of the pair components. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
183 |
> (This is the case in first-order logic where forall distributes over |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
184 |
> conjunction.) Thus, one may fear that in many cases, the set and set+ |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
185 |
> abstractions will not be sufficiently powerful to encode the desired |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
186 |
> structural equivalence, and the user will need to explicitly define |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
187 |
> a notion |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
188 |
> of structural equivalence anyway. I don't think that the paper provides |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
189 |
> convincing evidence that set and set+ abstractions are useful. (That said, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
190 |
> they don't cost much, so why not include them? Sure.) |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
191 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
192 |
> * Here is little challenge related to set-abstractions. Could you explain how |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
193 |
> to define the syntax of an object language with a construct like this: |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
194 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
195 |
> let x1 = t1 and ... and xn = tn in t |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
196 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
197 |
> where the xi's are bound in t (this is a non-recursive multiple-let form) |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
198 |
> and the order of the definitions does not matter (that is, "let x1 = t1 |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
199 |
> and x2 = t2 in t" is alpha-equivalent to "let x2 = t2 and x1 = t1 in t")? |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
200 |
> Can you use a set-abstraction to achieve this? I am guessing that this |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
201 |
> might be possible, if one represents the definitions "x1 = t1 and ..." |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
202 |
> using a set of pairs (or a map of names to terms) as opposed to a list |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
203 |
> of pairs. I think that the system should at the very least allow encoding |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
204 |
> this example, otherwise set-abstractions will not be very useful in |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
205 |
> practice. |
3104
f7c4b8e6918b
updated to explicit set type constructor (post Isabelle 3rd January)
Christian Urban <urbanc@in.tum.de>
parents:
3102
diff
changeset
|
206 |
|
f7c4b8e6918b
updated to explicit set type constructor (post Isabelle 3rd January)
Christian Urban <urbanc@in.tum.de>
parents:
3102
diff
changeset
|
207 |
>> datatype trm = |
f7c4b8e6918b
updated to explicit set type constructor (post Isabelle 3rd January)
Christian Urban <urbanc@in.tum.de>
parents:
3102
diff
changeset
|
208 |
>> Var string |
f7c4b8e6918b
updated to explicit set type constructor (post Isabelle 3rd January)
Christian Urban <urbanc@in.tum.de>
parents:
3102
diff
changeset
|
209 |
>> | App trm trm |
f7c4b8e6918b
updated to explicit set type constructor (post Isabelle 3rd January)
Christian Urban <urbanc@in.tum.de>
parents:
3102
diff
changeset
|
210 |
>> | Lam string trm |
f7c4b8e6918b
updated to explicit set type constructor (post Isabelle 3rd January)
Christian Urban <urbanc@in.tum.de>
parents:
3102
diff
changeset
|
211 |
>> | Let "(string * trm) fset" trm |
f7c4b8e6918b
updated to explicit set type constructor (post Isabelle 3rd January)
Christian Urban <urbanc@in.tum.de>
parents:
3102
diff
changeset
|
212 |
>> Not a problem. Both finite sets and bags should be possible as |
f7c4b8e6918b
updated to explicit set type constructor (post Isabelle 3rd January)
Christian Urban <urbanc@in.tum.de>
parents:
3102
diff
changeset
|
213 |
>> constructors within the new package. |
f7c4b8e6918b
updated to explicit set type constructor (post Isabelle 3rd January)
Christian Urban <urbanc@in.tum.de>
parents:
3102
diff
changeset
|
214 |
>> Best regards and a happy new year! |
f7c4b8e6918b
updated to explicit set type constructor (post Isabelle 3rd January)
Christian Urban <urbanc@in.tum.de>
parents:
3102
diff
changeset
|
215 |
>> Andrei Popescu |
f7c4b8e6918b
updated to explicit set type constructor (post Isabelle 3rd January)
Christian Urban <urbanc@in.tum.de>
parents:
3102
diff
changeset
|
216 |
|
f7c4b8e6918b
updated to explicit set type constructor (post Isabelle 3rd January)
Christian Urban <urbanc@in.tum.de>
parents:
3102
diff
changeset
|
217 |
|
3099
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
218 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
219 |
> Detailed comments |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
220 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
221 |
> [Written while I was reading, so sometimes I ask a question whose |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
222 |
> answer comes |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
223 |
> a bit later in the paper.] |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
224 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
225 |
> p.2, "this leads to a rather clumsy formalisation of W". Could you explain |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
226 |
> why? Although I can understand why in some circumstances it is desirable to |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
227 |
> have a notion of alpha-equivalence that includes re-ordering binders, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
228 |
> I am not |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
229 |
> sure that the ML type system (or its inference algorithm) is a good |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
230 |
> illustration. If one examines the typing rules of Core ML, one finds that |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
231 |
> their premises involve a notion of equality between *types* (for |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
232 |
> instance, the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
233 |
> function application rule requires that the types of the formal and actual |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
234 |
> arguments match) but do not involve any notion of equality between *type |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
235 |
> schemes*. Type schemes are constructed and eliminated; they are never |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
236 |
> compared |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
237 |
> with one another. For this reason, it is not clear that a notion of |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
238 |
> alpha-equivalence for type schemes is required at all, let alone that it must |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
239 |
> allow re-ordering binders and/or disregarding vacuous binders. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
240 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
241 |
> p.3, "let the user chose" -> "choose" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
242 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
243 |
> p.5, I am not sure what you mean by "automatic proofs". Do you mean |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
244 |
> automatically-generated proof scripts, or proofs performed automatically by a |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
245 |
> decision procedure, or ... ? |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
246 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
247 |
> p.5, "adaption" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
248 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
249 |
> p.5, it seems strange to use the symbol "+" for composition, a |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
250 |
> non-commutative |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
251 |
> operation. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
252 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
253 |
> Equation (2.2) is unfamiliar to me. I am used to seeing "supp x" defined as |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
254 |
> the least set L such that for every permutation pi, if pi fixes L, then pi |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
255 |
> fixes x. I assume that the two definitions are equivalent? Is there a reason |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
256 |
> why you prefer this one? |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
257 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
258 |
> Proposition 2.3, item (i) is not very easy to read, because text and math |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
259 |
> are mixed and "as" happens to be an English word. More importantly, could |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
260 |
> you explain why the hypothesis "finite as" is needed? The proposition seems |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
261 |
> intuitively true if we remove this hypothesis: it states exactly that |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
262 |
> "supp x" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
263 |
> is the least set that supports x (this is actually the definition of "supp" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
264 |
> that I expected, as mentioned above). |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
265 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
266 |
> p.8, "equivariant functions have empty support". I suppose the converse is |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
267 |
> true, i.e. "functions that have empty support are equivariant". If this is |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
268 |
> correct, please say so. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
269 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
270 |
> p.8, "we used extensively Property 2.1". You mean "Proposition 2.1". Perhaps |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
271 |
> it would be good to choose distinct numbers for inline equations and for |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
272 |
> propositions. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
273 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
274 |
> p.8, "we identify four conditions: (i) [...] x and y need to have the same |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
275 |
> set of free atoms". You seem to be saying that fa(x) and fa(y) should be |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
276 |
> equal. But this is too strong; I suppose you mean fa(x) \ as = fa(y) \ bs. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
277 |
> Please clarify. (Definition 3.1 indeed clarifies this, but I believe that |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
278 |
> the text that precedes it is a bit confusing.) |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
279 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
280 |
> p.9, it seems to me that alpha-equivalence for Set+ bindings (Definition 3.3) |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
281 |
> is in a sense the most general of the three notions presented here. Indeed, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
282 |
> alpha-equivalence for Set bindings can be defined in terms of it, as follows: |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
283 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
284 |
> (as, x) =_{Set} (bs, y) |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
285 |
> if and only if |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
286 |
> (as, (as, x)) =_{Set+} (bs, (bs, y)) |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
287 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
288 |
> That is, I am comparing abstractions whose body has type "atom set * beta". |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
289 |
> The comparison of the set components forces condition (iv) of Definition 3.1. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
290 |
> Similarly, alpha-equivalence for List bindings can be defined in terms of it, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
291 |
> as follows: |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
292 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
293 |
> (as, x) =_{List} (bs, y) |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
294 |
> if and only if |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
295 |
> (set as, (as, x)) =_{Set+} (set bs, (bs, y)) |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
296 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
297 |
> That is, I am comparing abstractions whose body has type "atom list * beta". |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
298 |
> Am I correct to think that one can do this? If so, could this help eliminate |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
299 |
> some redundancy in the paper or in the implementation? And, for a |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
300 |
> more radical |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
301 |
> suggestion, could one decide to expose only Set+ equality to the programmer, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
302 |
> and let him/her explicitly encode Set/List equality where desired? |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
303 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
304 |
> p.10, "in these relation" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
305 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
306 |
> p.10, isn't equation (3.3) a *definition* of the action of permutations |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
307 |
> on the newly defined quotient type "beta abs_{set}"? |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
308 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
309 |
> p.11, why do you need to "assume that x has finite support" in order to |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
310 |
> obtain property 3.4? It seems to me that this fact should also hold for |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
311 |
> an x with infinite support. Same remark in a couple of places further |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
312 |
> down on this page. You note that "supp bs = bs" holds "for every finite |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
313 |
> set of atoms bs". Is it *not* the case that this also holds for infinite |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
314 |
> sets? If so, what *is* the support of an infinite set of atoms? Why not |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
315 |
> adopt a definition of support that validates "supp bs = bs" for *every* |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
316 |
> set of atoms bs? Is there a difficulty due to the fact that what you |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
317 |
> call a "permutation" is in a fact "a permutation with finite support"? |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
318 |
> I think it would be good to motivate your technical choices and clarify |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
319 |
> exactly where/why a finite support assumption is required. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
320 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
321 |
> p.11, "The other half is a bit more involved." I would suggest removing |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
322 |
> this rather scary sentence. The proof actually appears very simple and |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
323 |
> elegant to me. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
324 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
325 |
> p.12, "mutual recursive" -> "mutually recursive" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
326 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
327 |
> p.12, does the tool support parameterized data type definitions? If so, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
328 |
> please mention it, otherwise explain whether there is a difficulty (e.g. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
329 |
> the parameters would need to come with a notion of permutation). |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
330 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
331 |
> p.12, "Interestingly, [...] will make a difference [...]". At this |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
332 |
> point, upon |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
333 |
> first reading, this is not "interesting" but rather frustrating, because it |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
334 |
> does not sound natural: my understanding would be very much simplified if |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
335 |
> "binds ... in t u" was equivalent to "binds ... in t, binds ... in |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
336 |
> u". Because |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
337 |
> a forward pointer is missing, I cannot find immediately where this is |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
338 |
> explained, and this problem hinders my reading of the beginning of section 5. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
339 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
340 |
> p.13, the type of sets now seems to be "fset" whereas it was "set" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
341 |
> previously. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
342 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
343 |
> p.13, the type of atoms now seems to be "name", whereas it was previously |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
344 |
> "atom". The remark on the last line of page 13 leads me to understand that |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
345 |
> "name" refers to one specific sort of atoms, whereas "atom" refers to an |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
346 |
> atom of any sort (right?). The function "atom" converts one to the other; |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
347 |
> but what is its type (is it overloaded?). |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
348 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
349 |
> p.13, you distinguish shallow binders (binds x in ...) and deep binders |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
350 |
> (binds bn(x) in ...). I would hope that a shallow binder is just syntactic |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
351 |
> sugar for a deep binder where "bn" is the "singleton list" or "singleton |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
352 |
> set" function. Is this the case? If not, why not? If yes, perhaps you could |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
353 |
> remove all mentions to shallow binders in section 5. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
354 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
355 |
> p.14, "we cannot have more than one binding function for a deep binder". You |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
356 |
> exclude "binds bn_1(p) bn_2(p) in t". Couldn't this be accepted and |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
357 |
> interpreted as "binds bn_1(p) \cup bn_2(p) in t"? (I guess it does not matter |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
358 |
> much either way.) |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
359 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
360 |
> p.14, you also exclude "binds bn1(p) in t1, binds bn2(p) in t2". Two |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
361 |
> questions. First, a clarification: if bn1 and bn2 are the same function, is |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
362 |
> this allowed or excluded? Second, I don't understand why you need this |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
363 |
> restriction, that is, why you are trying to prevent an atom to be "bound and |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
364 |
> free at the same time" (bound in one sub-term and free in another). I |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
365 |
> mean, in |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
366 |
> the case of single binders, you seem to allow "binds x y in t1, binds |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
367 |
> y in t2" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
368 |
> (at least, you have not stated that you disallow this). There, occurrences of |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
369 |
> x in t1 are considered bound, whereas occurrences of x in t2 are considered |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
370 |
> free; is this correct? If so, why not allow "binds bn1(p) in t1, binds bn2(p) |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
371 |
> in t2", which seems to be of a similar nature? Is this a somewhat ad hoc |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
372 |
> restriction that simplifies your implementation work, or is there really a |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
373 |
> deep reason why accepting this clause would not make sense? |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
374 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
375 |
> p.14, example 4.4, the restriction that you impose here seems to rule out |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
376 |
> an interesting and potentially useful pattern, namely telescopes. A telescope |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
377 |
> is a list of binders, where each binder scopes over the rest of the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
378 |
> telescope, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
379 |
> and in addition all of the names introduced by the telescope are considered |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
380 |
> bound by the telescope in some separate term. I am thinking of |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
381 |
> something along |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
382 |
> the following lines: |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
383 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
384 |
> nominal_datatype trm = |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
385 |
> | Var name |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
386 |
> | Let tele::telescope body::trm binds bn(tele) in body |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
387 |
> | ... |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
388 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
389 |
> and telescope = |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
390 |
> | TNil |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
391 |
> | TCons x::name rhs::trm rest::telescope binds x in rest |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
392 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
393 |
> binder bn::telescope => atom list |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
394 |
> where bn (TNil) = [] |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
395 |
> | bn (TCons x rhs rest) = [ atom x ] @ bn(rest) |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
396 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
397 |
> You write that "if we would permit bn to return y, then it would not be |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
398 |
> respectful and therefore cannot be lifted to alpha-equated lambda-terms". I |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
399 |
> can see why there is a problem: if "x" is considered bound (therefore |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
400 |
> anonymous) in the telescope "TCons x rhs rest", then it cannot possibly be |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
401 |
> returned by a (well-behaved) function "bn". I think that the answer to this |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
402 |
> problem should be: we must pick an appropriate notion of alpha-equivalence |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
403 |
> for telescopes, and this notion of alpha-equivalence must *not* consider x |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
404 |
> as anonymous in "TCons x rhs rest". Instead, x must be considered free in |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
405 |
> this telescope. The telescopes "TCons x rhs TNil" and "TCons y rhs TNil" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
406 |
> must be considered distinct. Of course we could achieve this effect just by |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
407 |
> removing the clause "binds x in rest", but this would lead to a notion of |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
408 |
> alpha-equivalence for "Let" terms which is not the desired one: when writing |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
409 |
> "let (x1 = t1; x2 = t2) in t", we would like x1 to be bound in t2, and this |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
410 |
> will not be the case if we omit "binds x in rest" in the above definition. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
411 |
> I conclude that your design (which seems very reasonable) cannot currently |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
412 |
> express telescopes. It would be nice if you could explicitly discuss this |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
413 |
> issue. Is it conceivable that an extension of your system could deal with |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
414 |
> telescopes? Other researchers have proposed approaches that can deal with |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
415 |
> them (I am thinking e.g. of ``Binders Unbound'' by Weirich et al.). |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
416 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
417 |
> Here is another general question. How would you declare a nominal data type |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
418 |
> for ML patterns? Informally, the syntax of patterns is: |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
419 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
420 |
> p ::= |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
421 |
> x (variable) |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
422 |
> | (p, p) where bn(p1) and bn(p2) are disjoint (pair) |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
423 |
> | (p | p) where bn(p1) = bn(p2) (disjunction) |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
424 |
> | ... |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
425 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
426 |
> In the case of a pair (or conjunction) pattern, one usually requires that the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
427 |
> two components bind disjoint sets of names, whereas in the case of a |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
428 |
> disjunction pattern, one requires that the two components bind exactly the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
429 |
> same sets of names. How would you deal with this? I imagine that one could |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
430 |
> just omit these two side conditions in the definition of the nominal data |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
431 |
> type, and deal with them separately by defining a well-formedness predicate. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
432 |
> One question: in the definition of the "term" data type, at the point where |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
433 |
> one writes "binds bn(p) in t", which variant of the "binds" keyword would one |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
434 |
> use: "binds", "binds(set)", or "binds(set+)"? Does it make any difference, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
435 |
> considering that a pattern can have multiple occurrences of a name in binding |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
436 |
> position? It would be interesting if you could explain how you would handle |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
437 |
> this example. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
438 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
439 |
> Another interesting (perhaps even more tricky) example is the syntax of the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
440 |
> join-calculus. In terms of binding, it is really quite subtle and worth a |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
441 |
> look. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
442 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
443 |
> p.15, just before section 5, I note that the completion process does *not* |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
444 |
> produce any clause of the form "binds ... in x" (in the Lam case). One could |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
445 |
> have expected it to produce "binds x in x", for instance. One could imagine |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
446 |
> that, for *every* constructor argument t, there is a clause of the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
447 |
> form "binds |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
448 |
> .. in t". Here, you adopt a different approach: you seem to be partitioning |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
449 |
> the constructor arguments in two categories, the "terms" (which after |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
450 |
> completion appear in the right-hand side of exactly one "binds" clause) and |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
451 |
> the "binders" (which appear in the left-hand side of at least one "binds" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
452 |
> clause). Please clarify whether this is indeed the case. (You have |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
453 |
> presented a |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
454 |
> series of data type definitions that you forbid, but in the end, you should |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
455 |
> present a succinct summary of what is allowed.) Also, I seem to understand |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
456 |
> that the following definition is forbidden: |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
457 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
458 |
> nominal_datatype trm = |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
459 |
> | Foo t1::trm t2::trm binds bn(t1) in t2, binds bn(t2) in t1 |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
460 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
461 |
> (for some definition of "bn"). This would be forbidden because t1 and t2 are |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
462 |
> used both as "terms" and as "binders" (both on the left-hand and right-hand |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
463 |
> side of a "binds" clause). As far as I can see, however, you have not |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
464 |
> explicitly forbidden this situation. So, is it forbidden or allowed? Please |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
465 |
> clarify. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
466 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
467 |
> If there is indeed a partition between "terms" and "binders", please justify |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
468 |
> why things must be so. I can think of a more general and more symmetric |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
469 |
> approach, where instead of writing "binds bn(p) in t" and considering that "p |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
470 |
> is a binder" and "t is a term", one would write "binds bn(p) in p t" and |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
471 |
> consider that p and t play a priori symmetric roles: the only difference |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
472 |
> between them stems from the fact that we collect the bound names |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
473 |
> inside p, but |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
474 |
> not inside t. (I am not suggesting that the user should write this, but that |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
475 |
> the user syntax could be desugared down to something like this if this makes |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
476 |
> the theory simpler.) Ah, but I guess that if one were to follow this path, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
477 |
> then one would need a way of distinguishing recursive versus non-recursive |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
478 |
> binders. I guess I see why your design makes sense, but perhaps you should |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
479 |
> better explain that it is a compromise between several other possible designs |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
480 |
> (``alphacaml'', ``binders unbound'', etc. are examples of other designs) and |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
481 |
> how you reached this particular point in the design space. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
482 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
483 |
> OK, now I see that, since you allow ``recursive binders'', there is not a |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
484 |
> partition between ``terms'' and ``binders''. A recursive binder appears both |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
485 |
> on the left- and right-hand sides of a binds clause. Do you require that it |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
486 |
> appears on the left- and right-hand sides of *the same* binds clause, or do |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
487 |
> you allow the above example ("binds bn(t1) in t2, binds bn(t2) in t1")? If |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
488 |
> you do allow it, then I suppose t1 is viewed as a (non-recursive) binder in |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
489 |
> the first clause, while t2 is viewed as a (non-recursive) binder in the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
490 |
> second clause. This would be kind of weird, and (I imagine) will not lead |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
491 |
> to a reasonable notion of alpha-equivalence. I am hoping to find out later |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
492 |
> in the paper. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
493 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
494 |
> p.17, "we have to add in (5.3) the set [...]". It is not very clear whether |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
495 |
> you are suggesting that equation 5.3 is incomplete and something should be |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
496 |
> added to it, or equation 5.3 is fine and you are referring to B' which is |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
497 |
> there already. I suppose the latter. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
498 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
499 |
> p.17, "for each of the arguments we calculate the free atoms as |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
500 |
> follows": this |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
501 |
> definition relies on the fact that "rhs" must be of a specific *syntactic* |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
502 |
> form (unions of expressions of the form "constant set" or "recursive call"). |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
503 |
> For instance, "rhs" cannot contain the expression "my_empty_set z_i", where |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
504 |
> "my_empty_set" is a user-defined function that always returns the empty set; |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
505 |
> otherwise the third bullet would apply and we would end up considering "z_i" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
506 |
> as neither free nor bound. You have mentioned near the top of page 15 that |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
507 |
> binding functions "can only return" certain results. You should clarify that |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
508 |
> you are not restricting just *the values* that these functions can |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
509 |
> return, but |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
510 |
> the *syntactic form* of these functions. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
511 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
512 |
> p.23, "We call these conditions as": not really grammatical. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
513 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
514 |
> p.23, "cases lemmas": I suppose this means an elimination principle? |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
515 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
516 |
> p.23, "Note that for the term constructors" -> "constructor" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
517 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
518 |
> p.26, "avoid, or being fresh for" -> "avoid, or are fresh for" |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
519 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
520 |
> p.30, "Second, it covers cases of binders depending on other binders, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
521 |
> which just do no not make sense [...]". I am curious why the designers |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
522 |
> of Ott thought that these cases make sense and you don't. Perhaps this |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
523 |
> point would deserve an example and a deeper discussion? |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
524 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
525 |
> p.30, at last, here is the discussion of "binds ... in s t" versus |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
526 |
> "binds ... in s, binds ... in t". I see that the difference in the |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
527 |
> two interpretations boils down to an abstraction whose body is a pair, |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
528 |
> versus a pair of abstractions. It is indeed interesting to note that |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
529 |
> these notions coincide for single-name abstractions, and for list |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
530 |
> abstractions, but not for set and set+ abstractions. |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
531 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
532 |
> p.32, "It remains to be seen whether properties like [...] allow us |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
533 |
> to support more interesting binding functions." Could you clarify |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
534 |
> what you mean? Do you mean (perhaps) that fa_bn(x) could be defined |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
535 |
> as fa_ty(x) \ bn(x), regardless of the definition of bn(x), instead |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
536 |
> of by induction over x? Do you mean something else? |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
537 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
538 |
> The example in Figures 1 and 2 do not seem very interesting to me. It |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
539 |
> involves single binders and flat lists of binders. Not much subtlety going on |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
540 |
> here. I think this example could be reduced in size without losing |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
541 |
> anything in |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
542 |
> terms of content. And perhaps a trickier example could be added (I have two |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
543 |
> suggestions, which I mentioned above already: ML with conjunction and |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
544 |
> disjunction patterns; and the join-calculus). |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
545 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
546 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
547 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
548 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
549 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
550 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
551 |
> |
502b5f02edaf
added notes by referees to comment about our changes
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
552 |