-
Notifications
You must be signed in to change notification settings - Fork 0
/
Postscript.html
321 lines (217 loc) · 6.27 KB
/
Postscript.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link href="coqdoc.css" rel="stylesheet" type="text/css"/>
<title>Postscript</title>
<script type="text/javascript" src="jquery-1.8.3.js"></script>
<script type="text/javascript" src="main.js"></script>
</head>
<body>
<div id="page">
<div id="header">
</div>
<div id="main">
<h1 class="libtitle">Postscript</h1>
<div class="code code-tight">
</div>
<div class="doc">
<div class="paragraph"> </div>
Congratulations: You've made it to the end!
<div class="paragraph"> </div>
<a name="lab937"></a><h1 class="section">Looking Back...</h1>
<div class="paragraph"> </div>
We've covered a lot of ground. The topics might be summarized like this:
<div class="paragraph"> </div>
<ul class="doclist">
<li> <i>Functional programming</i>:
<ul class="doclist">
<li> "declarative" programming style (recursion over persistent
data structures, rather than looping over mutable arrays
or pointer structures)
</li>
<li> higher-order functions
</li>
<li> polymorphism
</li>
</ul>
</li>
</ul>
<div class="paragraph"> </div>
<div class="paragraph"> </div>
<ul class="doclist">
<li> <i>Logic</i>, the mathematical basis for software engineering:
<pre>
logic calculus
-------------------- = ----------------------------
software engineering mechanical/civil engineering
</pre>
<div class="paragraph"> </div>
<ul class="doclist">
<li> inductively defined sets and relations
</li>
<li> inductive proofs
</li>
<li> proof objects
</li>
</ul>
</li>
</ul>
<div class="paragraph"> </div>
<div class="paragraph"> </div>
<ul class="doclist">
<li> <i>Coq</i>, an industrial-strength proof assistant
<ul class="doclist">
<li> functional core language
</li>
<li> core tactics
</li>
<li> automation
</li>
</ul>
</li>
</ul>
<div class="paragraph"> </div>
<div class="paragraph"> </div>
<ul class="doclist">
<li> <i>Foundations of programming languages</i>
<ul class="doclist">
<li> notations and definitional techniques for precisely specifying
<ul class="doclist">
<li> abstract syntax
</li>
<li> operational semantics
<ul class="doclist">
<li> big-step style
</li>
<li> small-step style
</li>
</ul>
</li>
<li> type systems
<div class="paragraph"> </div>
</li>
</ul>
</li>
<li> program equivalence
<div class="paragraph"> </div>
</li>
<li> Hoare logic
<div class="paragraph"> </div>
</li>
<li> fundamental metatheory of type systems
<div class="paragraph"> </div>
<ul class="doclist">
<li> progress and preservation
<div class="paragraph"> </div>
</li>
</ul>
</li>
<li> theory of subtyping
</li>
</ul>
</li>
</ul>
</div>
<div class="code code-tight">
<br/>
</div>
<div class="doc">
<a name="lab938"></a><h1 class="section">Looking Forward...</h1>
<div class="paragraph"> </div>
Some good places to go for more...
<div class="paragraph"> </div>
<ul class="doclist">
<li> This book includes several optional chapters covering topics
that you may find useful. If you've been using it in the
context of a course, take a look at the <a href="toc.html">table of contents</a>
and the <a href="deps.html">chapter dependency diagram</a>.
<div class="paragraph"> </div>
</li>
<li> Cutting-edge conferences on programming languages and formal
verification:
<ul class="doclist">
<li> POPL
</li>
<li> PLDI
</li>
<li> OOPSLA
</li>
<li> ICFP
</li>
<li> CAV
</li>
<li> (and many others)
<div class="paragraph"> </div>
</li>
</ul>
</li>
<li> More on functional programming
<ul class="doclist">
<li> Learn You a Haskell for Great Good, by Miran
Lipovaca <a href="Bib.html#Lipovaca 2011"><span class="inlineref">[Lipovaca 2011]</span></a>.
</li>
<li> and many other texts on Haskell, OCaml, Scheme, Scala,
...
<div class="paragraph"> </div>
</li>
</ul>
</li>
<li> More on Hoare logic and program verification
<ul class="doclist">
<li> The Formal Semantics of Programming Languages: An
Introduction, by Glynn Winskel <a href="Bib.html#Winskel 1993"><span class="inlineref">[Winskel 1993]</span></a>.
</li>
<li> Many practical verification tools, e.g. Microsoft's
Boogie system, Java Extended Static Checking, etc.
<div class="paragraph"> </div>
</li>
</ul>
</li>
<li> More on the foundations of programming languages:
<ul class="doclist">
<li> Types and Programming Languages, by Benjamin
C. Pierce <a href="Bib.html#Pierce 2002"><span class="inlineref">[Pierce 2002]</span></a>.
</li>
<li> Practical Foundations for Programming Languages, by
Robert Harper <a href="Bib.html#Harper 2016"><span class="inlineref">[Harper 2016]</span></a>.
</li>
<li> Foundations for Programming Languages, by John
C. Mitchell <a href="Bib.html#Mitchell 1996"><span class="inlineref">[Mitchell 1996]</span></a>.
<div class="paragraph"> </div>
</li>
</ul>
</li>
<li> More on Coq:
<ul class="doclist">
<li> Certified Programming with Dependent Types, by Adam
Chlipala <a href="Bib.html#Chlipala 2013"><span class="inlineref">[Chlipala 2013]</span></a>.
</li>
<li> Interactive Theorem Proving and Program Development:
Coq'Art: The Calculus of Inductive Constructions, by Yves
Bertot and Pierre Casteran <a href="Bib.html#Bertot 2004"><span class="inlineref">[Bertot 2004]</span></a>.
</li>
<li> Iron Lambda (http://iron.ouroborus.net/) is a collection
of Coq formalisations for functional languages of
increasing complexity. It fills part of the gap between
the end of the Software Foundations course and what
appears in current research papers. The collection has
at least Progress and Preservation theorems for a number
of variants of STLC and the polymorphic
lambda-calculus (System F).
</li>
</ul>
</li>
</ul>
</div>
<div class="code code-tight">
<br/>
<span class="comment">(* $Date: 2016-05-26 17:51:14 -0400 (Thu, 26 May 2016) $ *)</span><br/>
</div>
</div>
<div id="footer">
<hr/><a href="coqindex.html">Index</a></div>
</div>
</body>
</html>