]> matita.cs.unibo.it Git - helm.git/commitdiff
Da capo (matita2.tex).
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Thu, 24 Nov 2005 13:30:01 +0000 (13:30 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Thu, 24 Nov 2005 13:30:01 +0000 (13:30 +0000)
helm/papers/matita/.cvsignore
helm/papers/matita/Makefile
helm/papers/matita/libraries.ps [new file with mode: 0644]
helm/papers/matita/matita2.tex [new file with mode: 0644]

index 0964fd233241de1f1b540e3e321b3fe8c61200f7..db408ffbbfafe800da583b82fb13c1800aa4f4c1 100644 (file)
@@ -4,3 +4,13 @@ matita.blg
 matita.dvi
 matita.log
 matita.out
+matita.ps
+matita.pdf
+matita2.aux
+matita2.bbl
+matita2.blg
+matita2.dvi
+matita2.log
+matita2.out
+matita2.ps
+matita2.pdf
index d287d115c6811646d5f066afdd2f7eda46a754d5..dc95f6691d79259b76a9fffe58e1e49044edf51a 100644 (file)
@@ -11,7 +11,7 @@
 ########################################################################
 
 # list of .tex _main_ files
-TEXS = matita.tex
+TEXS = matita2.tex
 
 # number of runs of latex (for table of contents, list of figures, ...)
 RUNS = 1
diff --git a/helm/papers/matita/libraries.ps b/helm/papers/matita/libraries.ps
new file mode 100644 (file)
index 0000000..2fe9481
--- /dev/null
@@ -0,0 +1,953 @@
+%!PS-Adobe-2.0
+%%Creator: dot version 2.2.1 (Tue Apr 12 00:03:35 UTC 2005)
+%%For: (sacerdot) Claudio Sacerdoti Coen,,,
+%%Title: G
+%%Pages: (atend)
+%%BoundingBox: 35 35 461 649
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+
+EncodingVector
+  dup 306 /AE
+  dup 301 /Aacute
+  dup 302 /Acircumflex
+  dup 304 /Adieresis
+  dup 300 /Agrave
+  dup 305 /Aring
+  dup 303 /Atilde
+  dup 307 /Ccedilla
+  dup 311 /Eacute
+  dup 312 /Ecircumflex
+  dup 313 /Edieresis
+  dup 310 /Egrave
+  dup 315 /Iacute
+  dup 316 /Icircumflex
+  dup 317 /Idieresis
+  dup 314 /Igrave
+  dup 334 /Udieresis
+  dup 335 /Yacute
+  dup 376 /thorn
+  dup 337 /germandbls
+  dup 341 /aacute
+  dup 342 /acircumflex
+  dup 344 /adieresis
+  dup 346 /ae
+  dup 340 /agrave
+  dup 345 /aring
+  dup 347 /ccedilla
+  dup 351 /eacute
+  dup 352 /ecircumflex
+  dup 353 /edieresis
+  dup 350 /egrave
+  dup 355 /iacute
+  dup 356 /icircumflex
+  dup 357 /idieresis
+  dup 354 /igrave
+  dup 360 /dcroat
+  dup 361 /ntilde
+  dup 363 /oacute
+  dup 364 /ocircumflex
+  dup 366 /odieresis
+  dup 362 /ograve
+  dup 365 /otilde
+  dup 370 /oslash
+  dup 372 /uacute
+  dup 373 /ucircumflex
+  dup 374 /udieresis
+  dup 371 /ugrave
+  dup 375 /yacute
+  dup 377 /ydieresis  
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+       dup 1 exch div /InvScaleFactor exch def
+       dup scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {   % i j npages
+       /npages exch def
+       /j exch def
+       /i exch def
+       /str 10 string def
+       npages 1 gt {
+               gsave
+                       coordfont setfont
+                       0 0 moveto
+                       (\() show i str cvs show (,) show j str cvs show (\)) show
+               grestore
+       } if
+} bind def
+
+/set_font {
+       findfont exch
+       scalefont setfont
+} def
+
+% draw aligned label in bounding box aligned to current point
+/alignedtext {                 % width adj text
+       /text exch def
+       /adj exch def
+       /width exch def
+       gsave
+               width 0 gt {
+                       text stringwidth pop adj mul 0 rmoveto
+               } if
+               [] 0 setdash
+               text show
+       grestore
+} def
+
+/boxprim {                             % xcorner ycorner xsize ysize
+               4 2 roll
+               moveto
+               2 copy
+               exch 0 rlineto
+               0 exch rlineto
+               pop neg 0 rlineto
+               closepath
+} bind def
+
+/ellipse_path {
+       /ry exch def
+       /rx exch def
+       /y exch def
+       /x exch def
+       matrix currentmatrix
+       newpath
+       x y translate
+       rx ry scale
+       0 0 1 0 360 arc
+       setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+       [       % layer color sequence - darkest to lightest
+               [0 0 0]
+               [.2 .8 .8]
+               [.4 .8 .8]
+               [.6 .8 .8]
+               [.8 .8 .8]
+       ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+       layercolorseq curlayer 1 sub layerlen mod get
+       aload pop sethsbcolor
+       /nodecolor {nopcolor} def
+       /edgecolor {nopcolor} def
+       /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+       /myupper exch def
+       /mylower exch def
+       curlayer mylower lt
+       curlayer myupper gt
+       or
+       {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+%%Page: 1 1
+%%PageBoundingBox: 36 36 461 649
+%%PageOrientation: Portrait
+gsave
+35 35 426 614 boxprim clip newpath
+36 36 translate
+0 0 1 beginpage
+0 0 translate 0 rotate
+0.000 0.000 0.000 graphcolor
+14.00 /Times-Roman set_font
+
+%      paramodulation
+gsave 10 dict begin
+164 594 57 18 ellipse_path
+stroke
+gsave 10 dict begin
+119 589 moveto
+(paramodulation)
+[6.96 6.24 4.56 6.24 10.8 6.96 6.96 6.96 3.84 6.24 3.84 3.84 6.96 6.96]
+xshow
+end grestore
+end grestore
+
+%      cic_disambiguation
+gsave 10 dict begin
+164 522 68 18 ellipse_path
+stroke
+gsave 10 dict begin
+109 517 moveto
+(cic_disambiguation)
+[6.24 3.84 6.24 6.96 6.96 3.84 5.52 6.24 10.8 6.96 3.84 6.96 6.96 6.24 3.84 3.84 6.96 6.96]
+xshow
+end grestore
+end grestore
+
+%      paramodulation -> cic_disambiguation
+newpath 164 576 moveto
+164 568 164 559 164 550 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 168 550 moveto
+164 540 lineto
+161 550 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 168 550 moveto
+164 540 lineto
+161 550 lineto
+closepath
+stroke
+end grestore
+
+%      cic_notation
+gsave 10 dict begin
+48 378 48 18 ellipse_path
+stroke
+gsave 10 dict begin
+13 373 moveto
+(cic_notation)
+[6.24 3.84 6.24 6.96 6.96 6.96 3.84 6.24 3.84 3.84 6.96 6.96]
+xshow
+end grestore
+end grestore
+
+%      cic_disambiguation -> cic_notation
+newpath 128 507 moveto
+111 498 91 485 77 468 curveto
+64 450 56 425 52 406 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 55 405 moveto
+50 396 lineto
+49 406 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 55 405 moveto
+50 396 lineto
+49 406 lineto
+closepath
+stroke
+end grestore
+
+%      tactics
+gsave 10 dict begin
+275 450 31 18 ellipse_path
+stroke
+gsave 10 dict begin
+256 445 moveto
+(tactics)
+[3.84 6.24 6.24 3.84 3.84 6.24 5.52]
+xshow
+end grestore
+end grestore
+
+%      cic_disambiguation -> tactics
+newpath 190 505 moveto
+207 494 228 480 246 469 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 248 472 moveto
+254 463 lineto
+244 466 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 248 472 moveto
+254 463 lineto
+244 466 lineto
+closepath
+stroke
+end grestore
+
+%      cic_proof_checking
+gsave 10 dict begin
+242 306 68 18 ellipse_path
+stroke
+gsave 10 dict begin
+186 301 moveto
+(cic_proof_checking)
+[6.24 3.84 6.24 6.96 6.96 4.56 6.96 6.96 4.56 6.96 6.24 6.96 6.24 6.24 6.96 3.84 6.96 6.96]
+xshow
+end grestore
+end grestore
+
+%      cic_notation -> cic_proof_checking
+newpath 82 365 moveto
+113 354 158 337 192 325 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 194 328 moveto
+202 321 lineto
+191 321 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 194 328 moveto
+202 321 lineto
+191 321 lineto
+closepath
+stroke
+end grestore
+
+%      utf8_macros
+gsave 10 dict begin
+48 306 48 18 ellipse_path
+stroke
+gsave 10 dict begin
+12 301 moveto
+(utf8_macros)
+[6.96 3.84 4.56 6.96 6.96 10.8 6.24 6.24 4.56 6.96 5.52]
+xshow
+end grestore
+end grestore
+
+%      cic_notation -> utf8_macros
+newpath 48 360 moveto
+48 352 48 343 48 334 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 52 334 moveto
+48 324 lineto
+45 334 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 52 334 moveto
+48 324 lineto
+45 334 lineto
+closepath
+stroke
+end grestore
+
+%      metadata
+gsave 10 dict begin
+386 378 38 18 ellipse_path
+stroke
+gsave 10 dict begin
+360 373 moveto
+(metadata)
+[10.8 6.24 3.84 6.24 6.96 6.24 3.84 6.24]
+xshow
+end grestore
+end grestore
+
+%      tactics -> metadata
+newpath 296 436 moveto
+312 426 336 411 355 399 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 357 402 moveto
+363 393 lineto
+353 396 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 357 402 moveto
+363 393 lineto
+353 396 lineto
+closepath
+stroke
+end grestore
+
+%      cic_unification
+gsave 10 dict begin
+275 378 55 18 ellipse_path
+stroke
+gsave 10 dict begin
+233 373 moveto
+(cic_unification)
+[6.24 3.84 6.24 6.96 6.96 6.96 3.84 4.56 3.84 6.24 6.24 3.84 3.84 6.96 6.96]
+xshow
+end grestore
+end grestore
+
+%      tactics -> cic_unification
+newpath 275 432 moveto
+275 424 275 415 275 406 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 279 406 moveto
+275 396 lineto
+272 406 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 279 406 moveto
+275 396 lineto
+272 406 lineto
+closepath
+stroke
+end grestore
+
+%      cic_transformations
+gsave 10 dict begin
+154 450 68 18 ellipse_path
+stroke
+gsave 10 dict begin
+98 445 moveto
+(cic_transformations)
+[6.24 3.84 6.24 6.96 3.84 4.56 6.24 6.96 5.52 4.56 6.96 4.56 10.8 6.24 3.84 3.84 6.96 6.96 5.52]
+xshow
+end grestore
+end grestore
+
+%      cic_transformations -> cic_notation
+newpath 129 433 moveto
+115 423 95 410 79 399 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 81 396 moveto
+71 394 lineto
+78 402 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 81 396 moveto
+71 394 lineto
+78 402 lineto
+closepath
+stroke
+end grestore
+
+%      cic_omdoc
+gsave 10 dict begin
+158 378 44 18 ellipse_path
+stroke
+gsave 10 dict begin
+127 373 moveto
+(cic_omdoc)
+[6.24 3.84 6.24 6.96 6.96 10.8 6.96 6.96 6.24]
+xshow
+end grestore
+end grestore
+
+%      cic_transformations -> cic_omdoc
+newpath 155 432 moveto
+156 424 156 415 156 406 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 159 406 moveto
+157 396 lineto
+153 406 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 159 406 moveto
+157 396 lineto
+153 406 lineto
+closepath
+stroke
+end grestore
+
+%      cic_omdoc -> cic_proof_checking
+newpath 177 362 moveto
+188 352 202 340 214 330 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 217 332 moveto
+222 323 lineto
+212 327 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 217 332 moveto
+222 323 lineto
+212 327 lineto
+closepath
+stroke
+end grestore
+
+%      getter
+gsave 10 dict begin
+292 234 29 18 ellipse_path
+stroke
+gsave 10 dict begin
+276 229 moveto
+(getter)
+[6.96 6.24 3.84 3.84 6.24 4.56]
+xshow
+end grestore
+end grestore
+
+%      cic_proof_checking -> getter
+newpath 254 288 moveto
+260 280 267 269 274 259 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 277 261 moveto
+280 251 lineto
+271 257 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 277 261 moveto
+280 251 lineto
+271 257 lineto
+closepath
+stroke
+end grestore
+
+%      cic
+gsave 10 dict begin
+208 234 27 18 ellipse_path
+stroke
+gsave 10 dict begin
+199 229 moveto
+(cic)
+[6.24 3.84 6.24]
+xshow
+end grestore
+end grestore
+
+%      cic_proof_checking -> cic
+newpath 233 288 moveto
+229 280 225 270 220 261 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 223 260 moveto
+216 252 lineto
+217 263 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 223 260 moveto
+216 252 lineto
+217 263 lineto
+closepath
+stroke
+end grestore
+
+%      metadata -> cic_proof_checking
+newpath 360 365 moveto
+339 354 308 339 283 327 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 284 324 moveto
+274 322 lineto
+281 330 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 284 324 moveto
+274 322 lineto
+281 330 lineto
+closepath
+stroke
+end grestore
+
+%      hmysql
+gsave 10 dict begin
+386 234 34 18 ellipse_path
+stroke
+gsave 10 dict begin
+364 229 moveto
+(hmysql)
+[6.96 10.8 6.96 5.52 6.96 3.84]
+xshow
+end grestore
+end grestore
+
+%      metadata -> hmysql
+newpath 386 360 moveto
+386 335 386 291 386 262 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 390 262 moveto
+386 252 lineto
+383 262 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 390 262 moveto
+386 252 lineto
+383 262 lineto
+closepath
+stroke
+end grestore
+
+%      cic_unification -> cic_proof_checking
+newpath 267 360 moveto
+263 352 259 342 254 333 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 257 332 moveto
+250 324 lineto
+251 335 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 257 332 moveto
+250 324 lineto
+251 335 lineto
+closepath
+stroke
+end grestore
+
+%      registry
+gsave 10 dict begin
+386 162 35 18 ellipse_path
+stroke
+gsave 10 dict begin
+364 157 moveto
+(registry)
+[4.56 6.24 6.96 3.84 5.52 3.84 4.56 6.96]
+xshow
+end grestore
+end grestore
+
+%      hmysql -> registry
+newpath 386 216 moveto
+386 208 386 199 386 190 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 390 190 moveto
+386 180 lineto
+383 190 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 390 190 moveto
+386 180 lineto
+383 190 lineto
+closepath
+stroke
+end grestore
+
+%      urimanager
+gsave 10 dict begin
+208 162 45 18 ellipse_path
+stroke
+gsave 10 dict begin
+175 157 moveto
+(urimanager)
+[6.96 4.56 3.84 10.8 6.24 6.96 6.24 6.96 6.24 4.56]
+xshow
+end grestore
+end grestore
+
+%      getter -> urimanager
+newpath 275 219 moveto
+263 209 248 196 235 185 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 237 182 moveto
+227 178 lineto
+232 187 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 237 182 moveto
+227 178 lineto
+232 187 lineto
+closepath
+stroke
+end grestore
+
+%      getter -> registry
+newpath 311 220 moveto
+325 210 343 195 359 183 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 361 186 moveto
+367 177 lineto
+357 180 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 361 186 moveto
+367 177 lineto
+357 180 lineto
+closepath
+stroke
+end grestore
+
+%      logger
+gsave 10 dict begin
+302 162 31 18 ellipse_path
+stroke
+gsave 10 dict begin
+284 157 moveto
+(logger)
+[3.84 6.96 6.96 6.96 6.24 4.56]
+xshow
+end grestore
+end grestore
+
+%      getter -> logger
+newpath 295 216 moveto
+296 208 297 199 298 190 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 301 190 moveto
+299 180 lineto
+295 190 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 301 190 moveto
+299 180 lineto
+295 190 lineto
+closepath
+stroke
+end grestore
+
+%      xml
+gsave 10 dict begin
+260 90 27 18 ellipse_path
+stroke
+gsave 10 dict begin
+248 85 moveto
+(xml)
+[6.96 10.8 3.84]
+xshow
+end grestore
+end grestore
+
+%      cic -> xml
+newpath 189 221 moveto
+176 212 161 197 154 180 curveto
+147 165 145 157 154 144 curveto
+169 119 199 105 224 98 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 225 101 moveto
+234 95 lineto
+223 95 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 225 101 moveto
+234 95 lineto
+223 95 lineto
+closepath
+stroke
+end grestore
+
+%      cic -> urimanager
+newpath 208 216 moveto
+208 208 208 199 208 190 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 212 190 moveto
+208 180 lineto
+205 190 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 212 190 moveto
+208 180 lineto
+205 190 lineto
+closepath
+stroke
+end grestore
+
+%      extlib
+gsave 10 dict begin
+260 18 29 18 ellipse_path
+stroke
+gsave 10 dict begin
+244 13 moveto
+(extlib)
+[6.24 6.96 3.84 3.84 3.84 6.96]
+xshow
+end grestore
+end grestore
+
+%      xml -> extlib
+newpath 260 72 moveto
+260 64 260 55 260 46 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 264 46 moveto
+260 36 lineto
+257 46 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 264 46 moveto
+260 36 lineto
+257 46 lineto
+closepath
+stroke
+end grestore
+
+%      registry -> xml
+newpath 362 148 moveto
+342 137 312 120 290 107 curveto
+stroke
+gsave 10 dict begin
+solid
+1 setlinewidth
+0.000 0.000 0.000 edgecolor
+newpath 291 104 moveto
+281 102 lineto
+288 110 lineto
+closepath
+fill
+0.000 0.000 0.000 edgecolor
+newpath 291 104 moveto
+281 102 lineto
+288 110 lineto
+closepath
+stroke
+end grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+%%Pages: 1
+end
+restore
+%%EOF
diff --git a/helm/papers/matita/matita2.tex b/helm/papers/matita/matita2.tex
new file mode 100644 (file)
index 0000000..7cfdde2
--- /dev/null
@@ -0,0 +1,324 @@
+\documentclass{kluwer}
+\usepackage{color}
+\usepackage{graphicx}
+% \usepackage{amssymb,amsmath}
+\usepackage{hyperref}
+% \usepackage{picins}
+\usepackage{color}
+\usepackage{fancyvrb}
+\usepackage[show]{ed}
+
+\definecolor{gray}{gray}{0.85}
+%\newcommand{\logo}[3]{
+%\parpic(0cm,0cm)(#2,#3)[l]{\includegraphics[width=#1]{whelp-bw}}
+%}
+
+\newcommand{\AUTO}{\textsc{Auto}}
+\newcommand{\COQ}{Coq}
+\newcommand{\ELIM}{\textsc{Elim}}
+\newcommand{\HELM}{Helm}
+\newcommand{\HINT}{\textsc{Hint}}
+\newcommand{\IN}{\ensuremath{\dN}}
+\newcommand{\INSTANCE}{\textsc{Instance}}
+\newcommand{\IR}{\ensuremath{\dR}}
+\newcommand{\IZ}{\ensuremath{\dZ}}
+\newcommand{\LIBXSLT}{LibXSLT}
+\newcommand{\LOCATE}{\textsc{Locate}}
+\newcommand{\MATCH}{\textsc{Match}}
+\newcommand{\MATITA}{Matita}
+\newcommand{\METAHEADING}{Symbol & Position \\ \hline\hline}
+\newcommand{\MOWGLI}{MoWGLI}
+\newcommand{\NAT}{\ensuremath{\mathit{nat}}}
+\newcommand{\NATIND}{\mathit{nat\_ind}}
+\newcommand{\NUPRL}{NuPRL}
+\newcommand{\OCAML}{OCaml}
+\newcommand{\PROP}{\mathit{Prop}}
+\newcommand{\REF}[3]{\ensuremath{\mathit{Ref}_{#1}(#2,#3)}}
+\newcommand{\TEXMACRO}[1]{\texttt{\char92 #1}}
+\newcommand{\UWOBO}{UWOBO}
+\newcommand{\WHELP}{Whelp}
+\newcommand{\DOT}{\ensuremath{\mbox{\textbf{.}}}}
+\newcommand{\SEMICOLON}{\ensuremath{\mbox{\textbf{;}}}}
+\newcommand{\BRANCH}{\ensuremath{\mbox{\textbf{[}}}}
+\newcommand{\SHIFT}{\ensuremath{\mbox{\textbf{\textbar}}}}
+\newcommand{\POS}[1]{\ensuremath{#1\mbox{\textbf{:}}}}
+\newcommand{\MERGE}{\ensuremath{\mbox{\textbf{]}}}}
+\newcommand{\FOCUS}[1]{\ensuremath{\mathtt{focus}~#1}}
+\newcommand{\UNFOCUS}{\ensuremath{\mathtt{unfocus}}}
+\newcommand{\SKIP}{\MATHTT{skip}}
+\newcommand{\TACTIC}[1]{\ensuremath{\mathtt{tactic}~#1}}
+
+\definecolor{gray}{gray}{0.85} % 1 -> white; 0 -> black
+\newcommand{\NT}[1]{\langle\mathit{#1}\rangle}
+\newcommand{\URI}[1]{\texttt{#1}}
+
+%{\end{SaveVerbatim}\setlength{\fboxrule}{.5mm}\setlength{\fboxsep}{2mm}%
+\newenvironment{grafite}{\VerbatimEnvironment
+ \begin{SaveVerbatim}{boxtmp}}%
+ {\end{SaveVerbatim}\setlength{\fboxsep}{3mm}%
+  \begin{center}
+   \fcolorbox{black}{gray}{\BUseVerbatim[boxwidth=0.9\linewidth]{boxtmp}}
+  \end{center}}
+
+\newcounter{example}
+\newenvironment{example}{\stepcounter{example}\vspace{0.5em}\noindent\emph{Example} \arabic{example}.}
+ {}
+\newcommand{\ASSIGNEDTO}[1]{\textbf{Assigned to:} #1}
+\newcommand{\FILE}[1]{\texttt{#1}}
+% \newcommand{\NOTE}[1]{\ifodd \arabic{page} \else \hspace{-2cm}\fi\ednote{#1}}
+\newcommand{\NOTE}[1]{\ednote{#1}{foo}}
+\newcommand{\TODO}[1]{\textbf{TODO: #1}}
+
+\newsavebox{\tmpxyz}
+\newcommand{\sequent}[2]{
+  \savebox{\tmpxyz}[0.9\linewidth]{
+    \begin{minipage}{0.9\linewidth}
+      \ensuremath{#1} \\
+      \rule{3cm}{0.03cm}\\
+      \ensuremath{#2}
+    \end{minipage}}\setlength{\fboxsep}{3mm}%
+  \begin{center}
+   \fcolorbox{black}{gray}{\usebox{\tmpxyz}}
+  \end{center}}
+
+\bibliographystyle{plain}
+
+\begin{document}
+
+\begin{opening}
+
+ \title{The \MATITA{} Proof Assistant}
+
+\author{Andrea \surname{Asperti} \email{asperti@cs.unibo.it}}
+\author{Claudio \surname{Sacerdoti Coen} \email{sacerdot@cs.unibo.it}}
+\author{Enrico \surname{Tassi} \email{tassi@cs.unibo.it}}
+\author{Stefano \surname{Zacchiroli} \email{zacchiro@cs.unibo.it}}
+\institute{Department of Computer Science, University of Bologna\\
+ Mura Anteo Zamboni, 7 --- 40127 Bologna, ITALY}
+
+\runningtitle{The Matita proof assistant}
+\runningauthor{Asperti, Sacerdoti Coen, Tassi, Zacchiroli}
+
+% \date{data}
+
+\begin{motto}
+``We are nearly bug-free'' -- \emph{CSC, Oct 2005}
+\end{motto}
+
+\begin{abstract}
+ abstract qui
+\end{abstract}
+
+\keywords{Proof Assistant, Mathematical Knowledge Management, XML, Authoring,
+Digital Libraries}
+
+\end{opening}
+
+\begin{figure}[t]
+ \begin{center}
+  \includegraphics[width=0.9\textwidth]{libraries}
+  \caption{\MATITA{} libraries}
+ \end{center}
+ \label{fig:libraries}
+\end{figure}
+
+\section{Overview of the Architecture}
+Fig.~\ref{fig:libraries} shows the architecture of the \emph{libraries} (circle nodes)
+and \emph{applications} (squared nodes) developed in the HELM project.
+
+Applications and libraries depend over other libraries forming a
+directed acyclic graph (DAG). Each library can be decomposed in
+a a set of \emph{modules} also forming a DAG.
+
+Modules and libraries provide coherent sets of functionalities
+at different scales. Applications that require only a few functionalities
+depend on a restricted set of libraries. \MATITA, our most complex
+application, depends on every library.
+
+Only the proof assistant \MATITA{} is an application meant to be used directly
+by the user. All the other applications are Web services developed in the
+HELM and MoWGLI projects and already described elsewhere. In particular:
+\begin{itemize}
+ \item The \emph{Getter} is a Web service to retrieve an (XML) document
+   from a physical location (URL) given its logical name (URI). The Getter is
+   responsible of updating a table that maps URIs to URLs. Thanks to the Getter
+   it is possible to work on a logically monolithic library that is physically
+   distributed on the network. More information on the Getter can be found
+   in~\cite{getter}.
+ \item \emph{Whelp} is a search engine to index and locate mathematical
+   notions (axioms, theorems, definitions) in the logical library managed
+   by the Getter. Typical examples of a query to Whelp are queries that search
+   for a theorem that generalize or instantiate a given formula, or that
+   can be immediately applied to prove a given goal. The output of Whelp is
+   an XML document that lists the URIs of a complete set of candidates that
+   are likely to satisfy the given query. The set is complete in the sense
+   that no notion that actually satisfies the query is thrown away. However,
+   the query is only approssimated in the sense that false matches can be
+   returned. Whelp has been described in~\cite{whelp}.
+ \item \emph{Uwobo} is a Web service that, given the URI of a mathematical
+   notion in the distributed library, renders it according to the user provided
+   two dimensional mathematical notation. Uwobo may also embed the rendering
+   of mathematical notions into arbitrary documents before returning them.
+   The Getter is used by Uwobo to retrieve the document to be rendered.
+   Uwobo has been described in~\cite{uwobo}.
+ \item The \emph{Proof Checker} is a Web service that, given the URI of
+   notion in the distributed library, checks its correctness. Since the notion
+   is likely to depend in an acyclic way over other notions, the proof checker
+   is also responsible of building in a top-down way the DAG of all
+   dependencies, checking in turn every notion for correctness.
+   The proof checker has been described in~\cite{proofchecker}.
+ \item The \emph{Dependency Analyzer} is a Web service that can produce
+   a textual or graphical representation of the dependecies of an object.
+   The dependency analyzer has been described in~\cite{dependencyanalyzer}.
+\end{itemize}
+
+The dependency of a library or application over another library can
+be satisfied by linking the library in the same executable.
+For those libraries whose functionalities are also provided by the
+aforementioned Web services, it is also possible to link stub code that
+forwards the request to a remote Web service. For instance, the Getter
+is just a wrapper to the \texttt{getter} library that allows the library
+to be used as a Web service. \MATITA{} can directly link the code of the
+\texttt{getter} library, or it can use a stub library with the same API
+that forwards every request to the Getter.
+
+To better understand the architecture of \MATITA{} and the role of each
+library, we can focus on the rappresentation of the mathematical information.
+\MATITA{} is based on (a variant of) the Calculus of (Co)Inductive
+Constructions (CIC). In CIC terms are used to represent mathematical
+expressions, types and proofs. \MATITA{} is able to handle terms at
+four different levels of refinement. On each level it is possible to provide a
+different set of functionalities. The four different levels are:
+fully specified terms; partially specified terms; terms
+at the content level; terms at the presentation level.
+
+\subsection{Fully specified terms}
+ \emph{Fully specified terms} are CIC terms where no information is
+   missing or left implicit. A fully specified term should be well-typed.
+   The mathematical notions (axioms, definitions, theorems) that are stored
+   in our mathematical library are fully specified and well-typed terms.
+   Fully specified terms are extremely verbose (to make type-checking
+   decidable). Their syntax is fixed and does not resemble the usual
+   extendible mathematical notation. They are not meant for direct user
+   consumption.
+
+   The \texttt{cic} library defines the data type that represents CIC terms
+   and provides a parser for terms stored in an XML format.
+
+   The most important library that deals with fully specified terms is
+   \texttt{cic\_proof\_checking}. It implements the procedure that verifies
+   if a fully specified term is well-typed. It also implements the
+   \emph{conversion} judgement that verifies if two given terms are
+   computationally equivalent (i.e. they share the same normal form).
+
+   Terms may reference other mathematical notions in the library.
+   One commitment of our project is that the library should be physically
+   distributed. The \texttt{getter} library manages the distribution,
+   providing a mapping from logical names (URIs) to the physical location
+   of a notion (an URL). The \texttt{urimanager} library provides the URI
+   data type and several utility functions over URIs. The
+   \texttt{cic\_proof\_checking} library calls the \texttt{getter} library
+   every time it needs to retrieve the definition of a mathematical notion
+   referenced by a term that is being type-checked. 
+
+   The Proof Checker is the Web service that provides an HTTP interface
+   to the \texttt{cic\_proof\_checking} library.
+
+   We use metadata and a sort of crawler to index the mathematical notions
+   in the distributed library. We are interested in retrieving a notion
+   by matching, instantiation or generalization of a user or system provided
+   mathematical expression. Thus we need to collect metadata over the fully
+   specified terms and to store the metadata in some kind of (relational)
+   database for later usage. The \texttt{hmysql} library provides a simplified
+   interface to a (possibly remote) MySql database system used to store the
+   metadata. The \texttt{metadata} library defines the data type of the metadata
+   we are collecting and the functions that extracts the metadata from the
+   mathematical notions (the main functionality of the crawler).
+   The \texttt{whelp} library implements a search engine that performs
+   approximated queries by matching/instantiation/generalization. The queries
+   operate only on the metadata and do not involve any actual matching
+   (that will be described later on and that is implemented in the
+    \texttt{cic\_unification} library). Not performing any actual matching
+   the query only returns a complete and hopefully small set of matching
+   candidates. The process that has issued the query is responsible of
+   actually retrieving from the distributed library the candidates to prune
+   out false matches if interested in doing so.
+
+   The Whelp search engine is the Web service that provides an interface to
+   the \texttt{whelp} library.
+
+\subsection{Partially specified terms}
+\emph{Partially specified terms} are CIC terms where subterms can be omitted.
+Omitted subterms can bear no information at all or they may be associated to
+a sequent. The formers are called \emph{implicit terms} and they occur only
+linearly. The latters may occur multiple times and are called
+\emph{metavariables}. An \emph{explicit substitution} is applied to each
+occurrence of a metavariable. A metavariable stand for a term whose type is
+given by the conclusion of the sequent. The term must be closed in the
+context that is given by the ordered list of hypotheses of the sequent.
+The explicit substitution instantiates every hypothesis with an actual
+value for the term bound by the hypothesis.
+
+Partially specified terms are not required to be well-typed. However a
+partially specified term should be \emph{refinable}. A \emph{refiner} is
+a type-inference procedure that can instantiate implicit terms and
+metavariables and that can introduce \emph{implicit coercions} to make a
+partially specified term be well-typed. The refiner of \MATITA{} is implemented
+in the \texttt{cic\_unification} library. As the type checker is based on
+the conversion check, the refiner is based on \emph{unification} that is
+a procedure that makes two partially specified term convertible by instantiating
+as few as possible metavariables that occur in them.
+
+Since terms are use in CIC to represent proofs, so far correct incomplete
+proofs are represented by refinable partially specified terms. The metavariables
+that occur in the proof correspond to the conjectures still to be proved.
+The sequent associated to the metavariable is the conjecture the user needs to
+prove.
+
+\emph{Tactics} are the procedures that the user can apply to progress in the
+proof. A tactic proves a conjecture possibly creating new (and hopefully
+simpler) conjectures. The implementation of tactics is given in the
+\texttt{tactics} library. It is heavily based on the refinement and unification
+procedures of the \texttt{cic\_unification} library.
+
+As fully specified terms, partially specified terms are not well suited
+for user consumption since their syntax is not extendible and it is not
+possible to adopt the usual mathematical notation. However they are already
+an improvement over fully specified terms since they allow to omit redundant
+information that can be inferred by the refiner.
+
+\subsection{Terms at the content level}
+
+\subsection{Terms at the presentation level}
+
+\hrule
+
+At the bottom of the DAG we have a few libraries (\texttt{extlib},
+\texttt{xml} and the \texttt{registry}) that provide a core of
+useful functions used everywhere else. In particular, the \texttt{xml} library
+to easily represent, parse and pretty-print XML files is a central component
+since in HELM every piece of information is stored in \ldots. [FINIRE]
+The other basic libraries provide often needed operations over generic
+data structures (\texttt{extlib}) and central storage for configuration options
+(the \texttt{registry}).
+
+\texttt{urimanager}
+
+\texttt{getter}
+
+\texttt{cic}
+
+\acknowledgements
+We would like to thank all the students that during the past
+five years collaborated in the \HELM{} project and contributed to 
+the development of Matita, and in particular
+A.Griggio, F.Guidi, P. Di Lena, L.Padovani, I.Schena, M.Selmi, 
+V.Tamburrelli.
+
+\theendnotes
+
+\bibliography{matita}
+
+
+\end{document}
+