on master help sign in
update elabOverview image
dd2c427Martin Baker
docs/image/elabOverview.png

Binary file not shown.

docs/image/elabOverview.svgnew file+585
@@ -0,0 +1,585 @@
1+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2+<!-- Created with Inkscape (http://www.inkscape.org/) -->
3+
4+<svg
5+ xmlns:dc="http://purl.org/dc/elements/1.1/"
6+ xmlns:cc="http://creativecommons.org/ns#"
7+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8+ xmlns:svg="http://www.w3.org/2000/svg"
9+ xmlns="http://www.w3.org/2000/svg"
10+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
12+ width="210mm"
13+ height="297mm"
14+ viewBox="0 0 744.09448819 1052.3622047"
15+ id="svg2"
16+ version="1.1"
17+ inkscape:version="0.91 r13725"
18+ sodipodi:docname="elabOverview.svg"
19+ inkscape:export-filename="/home/master/euclid/prog/idris/elaborator/data.png"
20+ inkscape:export-xdpi="61.120499"
21+ inkscape:export-ydpi="61.120499">
22+ <defs
23+ id="defs4">
24+ <marker
25+ inkscape:stockid="Arrow1Mend"
26+ orient="auto"
27+ refY="0.0"
28+ refX="0.0"
29+ id="marker4738"
30+ style="overflow:visible;"
31+ inkscape:isstock="true">
32+ <path
33+ id="path4491"
34+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
35+ style="fill-rule:evenodd;stroke:#0000ff;stroke-width:1pt;stroke-opacity:1;fill:#0000ff;fill-opacity:1"
36+ transform="scale(0.4) rotate(180) translate(10,0)" />
37+ </marker>
38+ <marker
39+ inkscape:stockid="Arrow1Mend"
40+ orient="auto"
41+ refY="0.0"
42+ refX="0.0"
43+ id="marker4672"
44+ style="overflow:visible;"
45+ inkscape:isstock="true">
46+ <path
47+ id="path4425"
48+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
49+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
50+ transform="scale(0.4) rotate(180) translate(10,0)" />
51+ </marker>
52+ <marker
53+ inkscape:stockid="Arrow1Mend"
54+ orient="auto"
55+ refY="0.0"
56+ refX="0.0"
57+ id="Arrow1Mend"
58+ style="overflow:visible;"
59+ inkscape:isstock="true">
60+ <path
61+ id="path4418"
62+ d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
63+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
64+ transform="scale(0.4) rotate(180) translate(10,0)" />
65+ </marker>
66+ <marker
67+ inkscape:stockid="Arrow1Mend"
68+ orient="auto"
69+ refY="0"
70+ refX="0"
71+ id="marker5018"
72+ style="overflow:visible"
73+ inkscape:isstock="true">
74+ <path
75+ inkscape:connector-curvature="0"
76+ id="path5020"
77+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
78+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
79+ transform="matrix(-0.4,0,0,-0.4,-4,0)" />
80+ </marker>
81+ </defs>
82+ <sodipodi:namedview
83+ id="base"
84+ pagecolor="#ffffff"
85+ bordercolor="#666666"
86+ borderopacity="1.0"
87+ inkscape:pageopacity="0.0"
88+ inkscape:pageshadow="2"
89+ inkscape:zoom="1"
90+ inkscape:cx="258.17464"
91+ inkscape:cy="544.34419"
92+ inkscape:document-units="px"
93+ inkscape:current-layer="layer1"
94+ showgrid="false"
95+ inkscape:window-width="1920"
96+ inkscape:window-height="1015"
97+ inkscape:window-x="0"
98+ inkscape:window-y="0"
99+ inkscape:window-maximized="1" />
100+ <metadata
101+ id="metadata7">
102+ <rdf:RDF>
103+ <cc:Work
104+ rdf:about="">
105+ <dc:format>image/svg+xml</dc:format>
106+ <dc:type
107+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
108+ <dc:title />
109+ </cc:Work>
110+ </rdf:RDF>
111+ </metadata>
112+ <g
113+ inkscape:label="Layer 1"
114+ inkscape:groupmode="layer"
115+ id="layer1">
116+ <text
117+ xml:space="preserve"
118+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
119+ x="268"
120+ y="495.36218"
121+ id="text4136"
122+ sodipodi:linespacing="125%"
123+ inkscape:export-xdpi="61.120499"
124+ inkscape:export-ydpi="61.120499"><tspan
125+ sodipodi:role="line"
126+ id="tspan4138"
127+ x="268"
128+ y="495.36218"
129+ style="font-size:12.5px">data TT : Type where</tspan><tspan
130+ sodipodi:role="line"
131+ x="268"
132+ y="510.98718"
133+ id="tspan4140"
134+ style="font-size:12.5px"> P : NameType -&gt; TTName -&gt; TT -&gt; TT</tspan><tspan
135+ sodipodi:role="line"
136+ x="268"
137+ y="526.61218"
138+ style="font-size:12.5px"
139+ id="tspan4142"> V : Int -&gt; TT</tspan><tspan
140+ sodipodi:role="line"
141+ x="268"
142+ y="542.23718"
143+ style="font-size:12.5px"
144+ id="tspan4144"> Bind : TTName -&gt; Binder TT -&gt; TT -&gt; TT</tspan><tspan
145+ sodipodi:role="line"
146+ x="268"
147+ y="557.86218"
148+ style="font-size:12.5px"
149+ id="tspan4146"> App : TT -&gt; TT -&gt; TT</tspan><tspan
150+ sodipodi:role="line"
151+ x="268"
152+ y="573.48718"
153+ style="font-size:12.5px"
154+ id="tspan4148"> TConst : Const -&gt; TT</tspan><tspan
155+ sodipodi:role="line"
156+ x="268"
157+ y="589.11218"
158+ style="font-size:12.5px"
159+ id="tspan4150"> Erased : TT</tspan><tspan
160+ sodipodi:role="line"
161+ x="268"
162+ y="604.73718"
163+ style="font-size:12.5px"
164+ id="tspan4152"> TType : TTUExp -&gt; TT</tspan><tspan
165+ sodipodi:role="line"
166+ x="268"
167+ y="620.36218"
168+ style="font-size:12.5px"
169+ id="tspan4154"> UType : Universe -&gt; TT</tspan></text>
170+ <text
171+ sodipodi:linespacing="125%"
172+ id="text4156"
173+ y="485.36218"
174+ x="509"
175+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
176+ xml:space="preserve"
177+ inkscape:export-xdpi="61.120499"
178+ inkscape:export-ydpi="61.120499"><tspan
179+ id="tspan4174"
180+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ff0000"
181+ y="485.36218"
182+ x="509"
183+ sodipodi:role="line">globally defined variable</tspan><tspan
184+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ff0000"
185+ y="500.98718"
186+ x="509"
187+ sodipodi:role="line"
188+ id="tspan4197"> from name</tspan></text>
189+ <path
190+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
191+ d="m 486,500.3622 19,-14"
192+ id="path4220"
193+ inkscape:connector-curvature="0"
194+ inkscape:export-xdpi="61.120499"
195+ inkscape:export-ydpi="61.120499"
196+ sodipodi:nodetypes="cc" />
197+ <text
198+ xml:space="preserve"
199+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
200+ x="392"
201+ y="526.36218"
202+ id="text4222"
203+ sodipodi:linespacing="125%"
204+ inkscape:export-xdpi="61.120499"
205+ inkscape:export-ydpi="61.120499"><tspan
206+ sodipodi:role="line"
207+ x="392"
208+ y="526.36218"
209+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ff0000"
210+ id="tspan4224">local (de Bruijn) variable</tspan></text>
211+ <path
212+ inkscape:connector-curvature="0"
213+ id="path4226"
214+ d="m 351,524.3622 34,-4"
215+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
216+ sodipodi:nodetypes="cc"
217+ inkscape:export-xdpi="61.120499"
218+ inkscape:export-ydpi="61.120499" />
219+ <text
220+ xml:space="preserve"
221+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
222+ x="537"
223+ y="533.36218"
224+ id="text4228"
225+ sodipodi:linespacing="125%"
226+ inkscape:export-xdpi="61.120499"
227+ inkscape:export-ydpi="61.120499"><tspan
228+ sodipodi:role="line"
229+ x="537"
230+ y="533.36218"
231+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ff0000"
232+ id="tspan4230">any kind of binder</tspan><tspan
233+ sodipodi:role="line"
234+ x="537"
235+ y="548.98718"
236+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ff0000"
237+ id="tspan4234">lambda, let etc.</tspan></text>
238+ <path
239+ inkscape:connector-curvature="0"
240+ id="path4232"
241+ d="m 494,538.3622 39,-8"
242+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
243+ inkscape:export-xdpi="61.120499"
244+ inkscape:export-ydpi="61.120499"
245+ sodipodi:nodetypes="cc" />
246+ <text
247+ xml:space="preserve"
248+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
249+ x="417"
250+ y="555.36218"
251+ id="text4236"
252+ sodipodi:linespacing="125%"
253+ inkscape:export-xdpi="61.120499"
254+ inkscape:export-ydpi="61.120499"><tspan
255+ sodipodi:role="line"
256+ x="417"
257+ y="555.36218"
258+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ff0000"
259+ id="tspan4238">function application</tspan></text>
260+ <path
261+ inkscape:connector-curvature="0"
262+ id="path4240"
263+ d="m 392,554.3622 22,-2"
264+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
265+ sodipodi:nodetypes="cc"
266+ inkscape:export-xdpi="61.120499"
267+ inkscape:export-ydpi="61.120499" />
268+ <text
269+ sodipodi:linespacing="125%"
270+ id="text4253"
271+ y="569.36218"
272+ x="421"
273+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
274+ xml:space="preserve"
275+ inkscape:export-xdpi="61.120499"
276+ inkscape:export-ydpi="61.120499"><tspan
277+ id="tspan4255"
278+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ff0000"
279+ y="569.36218"
280+ x="421"
281+ sodipodi:role="line">intager, char, string, etc.</tspan></text>
282+ <path
283+ sodipodi:nodetypes="cc"
284+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
285+ d="m 396,568.3622 22,-2"
286+ id="path4257"
287+ inkscape:connector-curvature="0"
288+ inkscape:export-xdpi="61.120499"
289+ inkscape:export-ydpi="61.120499" />
290+ <text
291+ xml:space="preserve"
292+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
293+ x="374"
294+ y="586.36218"
295+ id="text4270"
296+ sodipodi:linespacing="125%"
297+ inkscape:export-xdpi="61.120499"
298+ inkscape:export-ydpi="61.120499"><tspan
299+ sodipodi:role="line"
300+ x="374"
301+ y="586.36218"
302+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ff0000"
303+ id="tspan4272">unknown term for erasing types</tspan></text>
304+ <path
305+ inkscape:connector-curvature="0"
306+ id="path4274"
307+ d="m 349,585.3622 22,-2"
308+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
309+ sodipodi:nodetypes="cc"
310+ inkscape:export-xdpi="61.120499"
311+ inkscape:export-ydpi="61.120499" />
312+ <text
313+ sodipodi:linespacing="125%"
314+ id="text4276"
315+ y="603.36218"
316+ x="429"
317+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
318+ xml:space="preserve"
319+ inkscape:export-xdpi="61.120499"
320+ inkscape:export-ydpi="61.120499"><tspan
321+ id="tspan4278"
322+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ff0000"
323+ y="603.36218"
324+ x="429"
325+ sodipodi:role="line">type of types</tspan></text>
326+ <path
327+ sodipodi:nodetypes="cc"
328+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
329+ d="m 404,602.3622 22,-2"
330+ id="path4280"
331+ inkscape:connector-curvature="0"
332+ inkscape:export-xdpi="61.120499"
333+ inkscape:export-ydpi="61.120499" />
334+ <text
335+ xml:space="preserve"
336+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
337+ x="433"
338+ y="619.36218"
339+ id="text4293"
340+ sodipodi:linespacing="125%"
341+ inkscape:export-xdpi="61.120499"
342+ inkscape:export-ydpi="61.120499"><tspan
343+ sodipodi:role="line"
344+ x="433"
345+ y="619.36218"
346+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ff0000"
347+ id="tspan4295">unique universe</tspan></text>
348+ <path
349+ inkscape:connector-curvature="0"
350+ id="path4297"
351+ d="m 408,618.3622 22,-2"
352+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
353+ sodipodi:nodetypes="cc"
354+ inkscape:export-xdpi="61.120499"
355+ inkscape:export-ydpi="61.120499" />
356+ <text
357+ sodipodi:linespacing="125%"
358+ id="text4397"
359+ y="463.36218"
360+ x="375"
361+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
362+ xml:space="preserve"
363+ inkscape:export-xdpi="61.120499"
364+ inkscape:export-ydpi="61.120499"><tspan
365+ id="tspan4399"
366+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#0000ff"
367+ y="463.36218"
368+ x="375"
369+ sodipodi:role="line">elements of core language</tspan></text>
370+ <rect
371+ style="opacity:1;fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
372+ id="rect4400"
373+ width="392"
374+ height="185"
375+ x="262"
376+ y="447.36218"
377+ inkscape:export-xdpi="61.120499"
378+ inkscape:export-ydpi="61.120499" />
379+ <text
380+ xml:space="preserve"
381+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
382+ x="264"
383+ y="466.36218"
384+ id="text4402"
385+ sodipodi:linespacing="125%"
386+ inkscape:export-xdpi="61.120499"
387+ inkscape:export-ydpi="61.120499"><tspan
388+ sodipodi:role="line"
389+ id="tspan4404"
390+ x="264"
391+ y="466.36218"
392+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">TT</tspan></text>
393+ <text
394+ inkscape:export-ydpi="61.120499"
395+ inkscape:export-xdpi="61.120499"
396+ sodipodi:linespacing="125%"
397+ id="text4328"
398+ y="262.36218"
399+ x="96"
400+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
401+ xml:space="preserve"><tspan
402+ id="tspan4346"
403+ style="font-size:12.5px"
404+ y="262.36218"
405+ x="96"
406+ sodipodi:role="line">env</tspan><tspan
407+ style="font-size:12.5px"
408+ y="277.98718"
409+ x="96"
410+ sodipodi:role="line"
411+ id="tspan4454">goal</tspan><tspan
412+ style="font-size:12.5px"
413+ y="293.61218"
414+ x="96"
415+ sodipodi:role="line"
416+ id="tspan4456">holes</tspan><tspan
417+ style="font-size:12.5px"
418+ y="309.23718"
419+ x="96"
420+ sodipodi:role="line"
421+ id="tspan4458">guess</tspan></text>
422+ <text
423+ inkscape:export-ydpi="61.120499"
424+ inkscape:export-xdpi="61.120499"
425+ xml:space="preserve"
426+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
427+ x="163"
428+ y="262.36218"
429+ id="text4348"
430+ sodipodi:linespacing="125%"><tspan
431+ id="tspan4352"
432+ sodipodi:role="line"
433+ x="163"
434+ y="262.36218"
435+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ff0000">Elab (List (TTName, Binder TT)</tspan><tspan
436+ sodipodi:role="line"
437+ x="163"
438+ y="277.98718"
439+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ff0000"
440+ id="tspan4462">Elab (TTName,TT)</tspan><tspan
441+ sodipodi:role="line"
442+ x="163"
443+ y="293.61218"
444+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ff0000"
445+ id="tspan4464">Elab (List TTName)</tspan><tspan
446+ sodipodi:role="line"
447+ x="163"
448+ y="309.23718"
449+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#ff0000"
450+ id="tspan4466">Elab (TT)</tspan></text>
451+ <path
452+ inkscape:export-ydpi="61.120499"
453+ inkscape:export-xdpi="61.120499"
454+ sodipodi:nodetypes="cc"
455+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
456+ d="M 124.13676,260.36509 158,260.3622"
457+ id="path4360"
458+ inkscape:connector-curvature="0" />
459+ <text
460+ inkscape:export-ydpi="61.120499"
461+ inkscape:export-xdpi="61.120499"
462+ xml:space="preserve"
463+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
464+ x="64"
465+ y="286.36218"
466+ id="text4400"
467+ sodipodi:linespacing="125%"><tspan
468+ sodipodi:role="line"
469+ x="64"
470+ y="286.36218"
471+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#0000ff"
472+ id="tspan4402">state</tspan></text>
473+ <rect
474+ inkscape:export-ydpi="61.120499"
475+ inkscape:export-xdpi="61.120499"
476+ y="219.36218"
477+ x="53"
478+ height="224"
479+ width="289"
480+ id="rect4404"
481+ style="opacity:1;fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
482+ <text
483+ inkscape:export-ydpi="61.120499"
484+ inkscape:export-xdpi="61.120499"
485+ sodipodi:linespacing="125%"
486+ id="text4406"
487+ y="238.36218"
488+ x="55"
489+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
490+ xml:space="preserve"><tspan
491+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:20px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'"
492+ y="238.36218"
493+ x="55"
494+ id="tspan4408"
495+ sodipodi:role="line">Elab Monad</tspan></text>
496+ <path
497+ inkscape:connector-curvature="0"
498+ id="path4468"
499+ d="M 124.13676,274.36509 158,274.3622"
500+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
501+ sodipodi:nodetypes="cc"
502+ inkscape:export-xdpi="61.120499"
503+ inkscape:export-ydpi="61.120499" />
504+ <path
505+ inkscape:export-ydpi="61.120499"
506+ inkscape:export-xdpi="61.120499"
507+ sodipodi:nodetypes="cc"
508+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
509+ d="M 128.13676,288.36509 158,288.3622"
510+ id="path4470"
511+ inkscape:connector-curvature="0" />
512+ <path
513+ inkscape:connector-curvature="0"
514+ id="path4472"
515+ d="M 132.13676,304.36509 158,304.3622"
516+ style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
517+ sodipodi:nodetypes="cc"
518+ inkscape:export-xdpi="61.120499"
519+ inkscape:export-ydpi="61.120499" />
520+ <path
521+ style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4738)"
522+ d="m 275,272.3622 c 75.17677,4.63671 121.00356,120.13548 126,174"
523+ id="path4476"
524+ inkscape:connector-curvature="0"
525+ sodipodi:nodetypes="cc"
526+ inkscape:export-xdpi="61.120499"
527+ inkscape:export-ydpi="61.120499" />
528+ <path
529+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
530+ d="m 189,320.3622 c 50.81716,51.06633 -107.1143,53.76268 -56,0"
531+ id="path12613"
532+ inkscape:connector-curvature="0"
533+ sodipodi:nodetypes="cc"
534+ inkscape:export-xdpi="61.120499"
535+ inkscape:export-ydpi="61.120499" />
536+ <text
537+ xml:space="preserve"
538+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
539+ x="147"
540+ y="373.36218"
541+ id="text15201"
542+ sodipodi:linespacing="125%"
543+ inkscape:export-xdpi="61.120499"
544+ inkscape:export-ydpi="61.120499"><tspan
545+ id="tspan15209"
546+ sodipodi:role="line"
547+ x="147"
548+ y="373.36218"
549+ style="font-size:12.5px">solve</tspan><tspan
550+ sodipodi:role="line"
551+ x="147"
552+ y="388.98718"
553+ style="font-size:12.5px"
554+ id="tspan15220">fill</tspan><tspan
555+ sodipodi:role="line"
556+ x="147"
557+ y="404.61218"
558+ style="font-size:12.5px"
559+ id="tspan15222">apply</tspan><tspan
560+ sodipodi:role="line"
561+ x="147"
562+ y="420.23718"
563+ style="font-size:12.5px"
564+ id="tspan15224">focus</tspan><tspan
565+ sodipodi:role="line"
566+ x="147"
567+ y="435.86218"
568+ style="font-size:12.5px"
569+ id="tspan15226">...</tspan></text>
570+ <text
571+ sodipodi:linespacing="125%"
572+ id="text18672"
573+ y="396.36218"
574+ x="94"
575+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
576+ xml:space="preserve"
577+ inkscape:export-xdpi="61.120499"
578+ inkscape:export-ydpi="61.120499"><tspan
579+ id="tspan18674"
580+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:12.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#0000ff"
581+ y="396.36218"
582+ x="94"
583+ sodipodi:role="line">tactics</tspan></text>
584+ </g>
585+</svg>
docs/proofs/elabReflection.rst+8−8
@@ -14,7 +14,7 @@ Compilation of Idris proceeds through a number of stages.
14.. image:: ../image/idrisTopLevel.png
14.. image:: ../image/idrisTopLevel.png
15 :width: 484px
15 :width: 484px
16 :height: 147px
16 :height: 147px
17− :alt: diagram showing these stages of Idris compilation
17+ :alt: diagram illustrating these stages of Idris compilation
18
18
19TT is a core language which is syntactically very simple. This makes it easy for computers to process but very verbose and hard for humans to read. The Idris elaborator is written in Haskell using an elaboration library that was inspired by the tactics in interactive proof assistants such as Coq.
19TT is a core language which is syntactically very simple. This makes it easy for computers to process but very verbose and hard for humans to read. The Idris elaborator is written in Haskell using an elaboration library that was inspired by the tactics in interactive proof assistants such as Coq.
20
20
@@ -22,8 +22,8 @@ TT is a core language which is syntactically very simple. This makes it easy for
22
22
23 * - There are some similarities with a proof assistant but in Idris the elaborator is an interpreter of Idris source in the elaboration monad, where each syntactic construct of Idris is interpreted as a sequence of tactics.
23 * - There are some similarities with a proof assistant but in Idris the elaborator is an interpreter of Idris source in the elaboration monad, where each syntactic construct of Idris is interpreted as a sequence of tactics.
24 - .. image:: ../image/compareToProofAssist.png
24 - .. image:: ../image/compareToProofAssist.png
25− :width: 229px
25+ :width: 206px
26− :height: 114px
26+ :height: 112px
27 :alt: diagram comparing elaboration with proof assistant
27 :alt: diagram comparing elaboration with proof assistant
28
28
29The primitives in the elaboration library are not just useful for the implementors of Idris itself. They can also be used by authors of extensions to the compiler, using a mechanism known as elaborator reflection.
29The primitives in the elaboration library are not just useful for the implementors of Idris itself. They can also be used by authors of extensions to the compiler, using a mechanism known as elaborator reflection.
@@ -40,16 +40,16 @@ Type checker:
40- distinguish between global and local bound names.
40- distinguish between global and local bound names.
41
41
42.. image:: ../image/elabOverview.png
42.. image:: ../image/elabOverview.png
43− :width: 268px
43+ :width: 410px
44− :height: 219px
44+ :height: 282px
45− :alt: alternate text
45+ :alt: diagram illustrating TT language represented in a monad
46
46
47As already mentioned the TT core language is kept syntactically very simple. Part of the reason for this is that its correctness is already well proven using logic. For instance, here are the binders in TT with corresponding code and logic type introduction rules:
47As already mentioned the TT core language is kept syntactically very simple. Part of the reason for this is that its correctness is already well proven using logic. For instance, here are the binders in TT with corresponding code and logic type introduction rules:
48
48
49.. image:: ../image/binders.png
49.. image:: ../image/binders.png
50 :width: 310px
50 :width: 310px
51 :height: 203px
51 :height: 203px
52− :alt: alternate text
52+ :alt: diagram illustrating basis of code in logic
53
53
54.. list-table::
54.. list-table::
55
55
@@ -57,7 +57,7 @@ As already mentioned the TT core language is kept syntactically very simple. Par
57 - .. image:: ../image/elab.png
57 - .. image:: ../image/elab.png
58 :width: 141px
58 :width: 141px
59 :height: 145px
59 :height: 145px
60− :alt: alternate text
60+ :alt: diagram illustrating distinction between definition and term elaborator.
61
61
62.. target-notes::
62.. target-notes::
63.. _`Edwin Brady's 2013 paper`: https://eb.host.cs.st-andrews.ac.uk/drafts/impldtp.pdf
63.. _`Edwin Brady's 2013 paper`: https://eb.host.cs.st-andrews.ac.uk/drafts/impldtp.pdf