unicode latex

This commit is contained in:
Francesco Mecca 2020-02-21 19:13:13 +01:00
parent 8bd79b8e39
commit 6febde620a
10 changed files with 2545 additions and 1165 deletions

View file

@ -1,9 +1,9 @@
SRC = prova.tex SRC = tesi.tex
AUX = prova.aux AUX = tesi.aux
DEL = prova.aux prova.bbl prova.blg prova.log prova.out DEL = tesi.aux tesi.bbl tesi.blg tesi.log tesi.out
NAME = prova NAME = tesi
prova: tesi:
@echo @echo
@echo "=== Removing temporary files ===" @echo "=== Removing temporary files ==="
rm -f $(DEL) rm -f $(DEL)

21
tesi/conv.py Normal file
View file

@ -0,0 +1,21 @@
import json
from sys import argv
allsymbols = json.load(open('./unicode-latex.json'))
symbols = ['', '', '', '', '', '', '', '', '', '', '', '', '' ]
symbols = {s: allsymbols[s] for s in symbols}
print(symbols)
def read_by_char(fname):
with open(fname, 'r') as fp:
for line in fp.readlines():
for ch in line:
yield ch
def convert(ch):
return symbols[ch] if ch in symbols else ch
newfile = [convert(ch) for ch in read_by_char(argv[1])]
with open(argv[2], 'w') as f:
f.writelines(newfile)

View file

@ -1,28 +0,0 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand*\HyPL@Entry[1]{}
\HyPL@Entry{0<</S/D>>}
\@writefile{toc}{\contentsline {section}{\numberline {1}{\bfseries \sffamily TODO} Scaletta [1/2]}{1}{section.1}\protected@file@percent }
\newlabel{sec:org6c3943f}{{1}{1}{{\bfseries \sffamily TODO} Scaletta [1/2]}{section.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2}1. Background}{2}{section.2}\protected@file@percent }
\newlabel{sec:orgad08c62}{{2}{2}{1. Background}{section.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}1.1 OCaml}{2}{subsection.2.1}\protected@file@percent }
\newlabel{sec:orgca8d200}{{2.1}{2}{1.1 OCaml}{subsection.2.1}{}}
\newlabel{sec:org83a2e95}{{1}{3}{1.1 OCaml}{Item.1}{}}
\newlabel{sec:org2127ffb}{{2}{5}{1.1 OCaml}{Item.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}1.2.1.1 Initial state of the compilation}{6}{subsection.2.2}\protected@file@percent }
\newlabel{sec:org0b0c254}{{2.2}{6}{1.2.1.1 Initial state of the compilation}{subsection.2.2}{}}

View file

@ -1,771 +0,0 @@
This is XeTeX, Version 3.14159265-2.6-0.999991 (TeX Live 2019 Gentoo Linux) (preloaded format=xelatex 2020.2.19) 19 FEB 2020 16:42
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**prova.tex
(./prova.tex
LaTeX2e <2018-12-01>
(/usr/share/texmf-dist/tex/latex/base/article.cls
Document Class: article 2018/09/03 v1.4i Standard LaTeX document class
(/usr/share/texmf-dist/tex/latex/base/size11.clo
File: size11.clo 2018/09/03 v1.4i Standard LaTeX file (size option)
)
\c@part=\count80
\c@section=\count81
\c@subsection=\count82
\c@subsubsection=\count83
\c@paragraph=\count84
\c@subparagraph=\count85
\c@figure=\count86
\c@table=\count87
\abovecaptionskip=\skip41
\belowcaptionskip=\skip42
\bibindent=\dimen102
)
(/usr/share/texmf-dist/tex/latex/base/inputenc.sty
Package: inputenc 2018/08/11 v1.3c Input encoding file
\inpenc@prehook=\toks14
\inpenc@posthook=\toks15
Package inputenc Warning: inputenc package ignored with utf8 based engines.
) (/usr/share/texmf-dist/tex/latex/base/fontenc.sty
Package: fontenc 2018/08/11 v2.0j Standard LaTeX package
(/usr/share/texmf-dist/tex/latex/base/t1enc.def
File: t1enc.def 2018/08/11 v2.0j Standard LaTeX file
LaTeX Font Info: Redeclaring font encoding T1 on input line 48.
)
LaTeX Font Info: Try loading font information for T1+lmr on input line 105.
(/usr/share/texmf-dist/tex/latex/lm/t1lmr.fd
File: t1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern
))
(/usr/share/texmf-dist/tex/latex/graphics/graphicx.sty
Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR)
(/usr/share/texmf-dist/tex/latex/graphics/keyval.sty
Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
\KV@toks@=\toks16
)
(/usr/share/texmf-dist/tex/latex/graphics/graphics.sty
Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR)
(/usr/share/texmf-dist/tex/latex/graphics/trig.sty
Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
)
(/usr/share/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
)
Package graphics Info: Driver file: xetex.def on input line 99.
(/usr/share/texmf-dist/tex/latex/graphics-def/xetex.def
File: xetex.def 2017/06/24 v5.0h Graphics/color driver for xetex
))
\Gin@req@height=\dimen103
\Gin@req@width=\dimen104
)
(/usr/share/texmf-dist/tex/latex/oberdiek/grffile.sty
Package: grffile 2017/06/30 v1.18 Extended file name support for graphics (HO)
(/usr/share/texmf-dist/tex/generic/oberdiek/ifpdf.sty
Package: ifpdf 2018/09/07 v3.3 Provides the ifpdf switch
)
(/usr/share/texmf-dist/tex/generic/ifxetex/ifxetex.sty
Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
)
(/usr/share/texmf-dist/tex/latex/oberdiek/kvoptions.sty
Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO)
(/usr/share/texmf-dist/tex/generic/oberdiek/ltxcmds.sty
Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
)
(/usr/share/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty
Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO)
(/usr/share/texmf-dist/tex/generic/oberdiek/infwarerr.sty
Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO)
)
(/usr/share/texmf-dist/tex/generic/oberdiek/etexcmds.sty
Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO)
(/usr/share/texmf-dist/tex/generic/oberdiek/ifluatex.sty
Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO)
Package ifluatex Info: LuaTeX not detected.
))))
(/usr/share/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
Package: pdftexcmds 2018/09/10 v0.29 Utility functions of pdfTeX for LuaTeX (HO
)
Package pdftexcmds Info: LuaTeX not detected.
Package pdftexcmds Info: pdfTeX >= 1.30 not detected.
Package pdftexcmds Info: \pdf@primitive is available.
Package pdftexcmds Info: \pdf@ifprimitive is available.
Package pdftexcmds Info: \pdfdraftmode not found.
)
Package grffile Info: Option `multidot' is set to `true'.
Package grffile Info: Option `extendedchars' is set to `false'.
Package grffile Info: Option `space' is set to `true'.
Package grffile Info: \Gin@ii of package `graphicx' fixed on input line 494.
)
(/usr/share/texmf-dist/tex/latex/tools/longtable.sty
Package: longtable 2014/10/28 v4.11 Multi-page Table package (DPC)+ FMi change
\LTleft=\skip43
\LTright=\skip44
\LTpre=\skip45
\LTpost=\skip46
\LTchunksize=\count88
\LTcapwidth=\dimen105
\LT@head=\box27
\LT@firsthead=\box28
\LT@foot=\box29
\LT@lastfoot=\box30
\LT@cols=\count89
\LT@rows=\count90
\c@LT@tables=\count91
\c@LT@chunks=\count92
\LT@p@ftn=\toks17
)
(/usr/share/texmf-dist/tex/latex/wrapfig/wrapfig.sty
\wrapoverhang=\dimen106
\WF@size=\dimen107
\c@WF@wrappedlines=\count93
\WF@box=\box31
\WF@everypar=\toks18
Package: wrapfig 2003/01/31 v 3.6
)
(/usr/share/texmf-dist/tex/latex/graphics/rotating.sty
Package: rotating 2016/08/11 v2.16d rotated objects in LaTeX
(/usr/share/texmf-dist/tex/latex/base/ifthen.sty
Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)
)
\c@r@tfl@t=\count94
\rotFPtop=\skip47
\rotFPbot=\skip48
\rot@float@box=\box32
\rot@mess@toks=\toks19
)
(/usr/share/texmf-dist/tex/generic/ulem/ulem.sty
\UL@box=\box33
\UL@hyphenbox=\box34
\UL@skip=\skip49
\UL@hook=\toks20
\UL@height=\dimen108
\UL@pe=\count95
\UL@pixel=\dimen109
\ULC@box=\box35
Package: ulem 2012/05/18
\ULdepth=\dimen110
)
(/usr/share/texmf-dist/tex/latex/amsmath/amsmath.sty
Package: amsmath 2018/12/01 v2.17b AMS math features
\@mathmargin=\skip50
For additional information on amsmath, use the `?' option.
(/usr/share/texmf-dist/tex/latex/amsmath/amstext.sty
Package: amstext 2000/06/29 v2.01 AMS text
(/usr/share/texmf-dist/tex/latex/amsmath/amsgen.sty
File: amsgen.sty 1999/11/30 v2.0 generic functions
\@emptytoks=\toks21
\ex@=\dimen111
))
(/usr/share/texmf-dist/tex/latex/amsmath/amsbsy.sty
Package: amsbsy 1999/11/29 v1.2d Bold Symbols
\pmbraise@=\dimen112
)
(/usr/share/texmf-dist/tex/latex/amsmath/amsopn.sty
Package: amsopn 2016/03/08 v2.02 operator names
)
\inf@bad=\count96
LaTeX Info: Redefining \frac on input line 223.
\uproot@=\count97
\leftroot@=\count98
LaTeX Info: Redefining \overline on input line 385.
\classnum@=\count99
\DOTSCASE@=\count100
LaTeX Info: Redefining \ldots on input line 482.
LaTeX Info: Redefining \dots on input line 485.
LaTeX Info: Redefining \cdots on input line 606.
\Mathstrutbox@=\box36
\strutbox@=\box37
\big@size=\dimen113
LaTeX Font Info: Redeclaring font encoding OML on input line 729.
LaTeX Font Info: Redeclaring font encoding OMS on input line 730.
\macc@depth=\count101
\c@MaxMatrixCols=\count102
\dotsspace@=\muskip10
\c@parentequation=\count103
\dspbrk@lvl=\count104
\tag@help=\toks22
\row@=\count105
\column@=\count106
\maxfields@=\count107
\andhelp@=\toks23
\eqnshift@=\dimen114
\alignsep@=\dimen115
\tagshift@=\dimen116
\tagwidth@=\dimen117
\totwidth@=\dimen118
\lineht@=\dimen119
\@envbody=\toks24
\multlinegap=\skip51
\multlinetaggap=\skip52
\mathdisplay@stack=\toks25
LaTeX Info: Redefining \[ on input line 2844.
LaTeX Info: Redefining \] on input line 2845.
)
(/usr/share/texmf-dist/tex/latex/base/textcomp.sty
Package: textcomp 2018/08/11 v2.0j Standard LaTeX package
Package textcomp Info: Sub-encoding information:
(textcomp) 5 = only ISO-Adobe without \textcurrency
(textcomp) 4 = 5 + \texteuro
(textcomp) 3 = 4 + \textohm
(textcomp) 2 = 3 + \textestimated + \textcurrency
(textcomp) 1 = TS1 - \textcircled - \t
(textcomp) 0 = TS1 (full)
(textcomp) Font families with sub-encoding setting implement
(textcomp) only a restricted character set as indicated.
(textcomp) Family '?' is the default used for unknown fonts.
(textcomp) See the documentation for details.
Package textcomp Info: Setting ? sub-encoding to TS1/1 on input line 79.
(/usr/share/texmf-dist/tex/latex/base/ts1enc.def
File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file
)
LaTeX Info: Redefining \oldstylenums on input line 334.
Package textcomp Info: Setting cmr sub-encoding to TS1/0 on input line 349.
Package textcomp Info: Setting cmss sub-encoding to TS1/0 on input line 350.
Package textcomp Info: Setting cmtt sub-encoding to TS1/0 on input line 351.
Package textcomp Info: Setting cmvtt sub-encoding to TS1/0 on input line 352.
Package textcomp Info: Setting cmbr sub-encoding to TS1/0 on input line 353.
Package textcomp Info: Setting cmtl sub-encoding to TS1/0 on input line 354.
Package textcomp Info: Setting ccr sub-encoding to TS1/0 on input line 355.
Package textcomp Info: Setting ptm sub-encoding to TS1/4 on input line 356.
Package textcomp Info: Setting pcr sub-encoding to TS1/4 on input line 357.
Package textcomp Info: Setting phv sub-encoding to TS1/4 on input line 358.
Package textcomp Info: Setting ppl sub-encoding to TS1/3 on input line 359.
Package textcomp Info: Setting pag sub-encoding to TS1/4 on input line 360.
Package textcomp Info: Setting pbk sub-encoding to TS1/4 on input line 361.
Package textcomp Info: Setting pnc sub-encoding to TS1/4 on input line 362.
Package textcomp Info: Setting pzc sub-encoding to TS1/4 on input line 363.
Package textcomp Info: Setting bch sub-encoding to TS1/4 on input line 364.
Package textcomp Info: Setting put sub-encoding to TS1/5 on input line 365.
Package textcomp Info: Setting uag sub-encoding to TS1/5 on input line 366.
Package textcomp Info: Setting ugq sub-encoding to TS1/5 on input line 367.
Package textcomp Info: Setting ul8 sub-encoding to TS1/4 on input line 368.
Package textcomp Info: Setting ul9 sub-encoding to TS1/4 on input line 369.
Package textcomp Info: Setting augie sub-encoding to TS1/5 on input line 370.
Package textcomp Info: Setting dayrom sub-encoding to TS1/3 on input line 371.
Package textcomp Info: Setting dayroms sub-encoding to TS1/3 on input line 372.
Package textcomp Info: Setting pxr sub-encoding to TS1/0 on input line 373.
Package textcomp Info: Setting pxss sub-encoding to TS1/0 on input line 374.
Package textcomp Info: Setting pxtt sub-encoding to TS1/0 on input line 375.
Package textcomp Info: Setting txr sub-encoding to TS1/0 on input line 376.
Package textcomp Info: Setting txss sub-encoding to TS1/0 on input line 377.
Package textcomp Info: Setting txtt sub-encoding to TS1/0 on input line 378.
Package textcomp Info: Setting lmr sub-encoding to TS1/0 on input line 379.
Package textcomp Info: Setting lmdh sub-encoding to TS1/0 on input line 380.
Package textcomp Info: Setting lmss sub-encoding to TS1/0 on input line 381.
Package textcomp Info: Setting lmssq sub-encoding to TS1/0 on input line 382.
Package textcomp Info: Setting lmvtt sub-encoding to TS1/0 on input line 383.
Package textcomp Info: Setting lmtt sub-encoding to TS1/0 on input line 384.
Package textcomp Info: Setting qhv sub-encoding to TS1/0 on input line 385.
Package textcomp Info: Setting qag sub-encoding to TS1/0 on input line 386.
Package textcomp Info: Setting qbk sub-encoding to TS1/0 on input line 387.
Package textcomp Info: Setting qcr sub-encoding to TS1/0 on input line 388.
Package textcomp Info: Setting qcs sub-encoding to TS1/0 on input line 389.
Package textcomp Info: Setting qpl sub-encoding to TS1/0 on input line 390.
Package textcomp Info: Setting qtm sub-encoding to TS1/0 on input line 391.
Package textcomp Info: Setting qzc sub-encoding to TS1/0 on input line 392.
Package textcomp Info: Setting qhvc sub-encoding to TS1/0 on input line 393.
Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 394.
Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 395.
Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 396.
Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 397.
Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 398.
Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 399.
Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 400.
Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 401.
Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 402.
Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 403.
Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 404.
Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 405.
Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 406.
Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 407.
Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 408.
Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 409.
)
(/usr/share/texmf-dist/tex/latex/amsfonts/amssymb.sty
Package: amssymb 2013/01/14 v3.01 AMS font symbols
(/usr/share/texmf-dist/tex/latex/amsfonts/amsfonts.sty
Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
\symAMSa=\mathgroup4
\symAMSb=\mathgroup5
LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
(Font) U/euf/m/n --> U/euf/b/n on input line 106.
))
(/usr/share/texmf-dist/tex/latex/capt-of/capt-of.sty
Package: capt-of 2009/12/29 v0.2 standard captions outside of floats
)
(/usr/share/texmf-dist/tex/latex/hyperref/hyperref.sty
Package: hyperref 2018/11/30 v6.88e Hypertext links for LaTeX
(/usr/share/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty
Package: hobsub-hyperref 2016/05/16 v1.14 Bundle oberdiek, subset hyperref (HO)
(/usr/share/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty
Package: hobsub-generic 2016/05/16 v1.14 Bundle oberdiek, subset generic (HO)
Package: hobsub 2016/05/16 v1.14 Construct package bundles (HO)
Package hobsub Info: Skipping package `infwarerr' (already loaded).
Package hobsub Info: Skipping package `ltxcmds' (already loaded).
Package hobsub Info: Skipping package `ifluatex' (already loaded).
Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO)
Package ifvtex Info: VTeX not detected.
Package: intcalc 2016/05/16 v1.2 Expandable calculations with integers (HO)
Package hobsub Info: Skipping package `ifpdf' (already loaded).
Package hobsub Info: Skipping package `etexcmds' (already loaded).
Package hobsub Info: Skipping package `kvsetkeys' (already loaded).
Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO)
Package hobsub Info: Skipping package `pdftexcmds' (already loaded).
Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO)
Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO
)
Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO)
Package: uniquecounter 2016/05/16 v1.3 Provide unlimited unique counter (HO)
)
Package hobsub Info: Skipping package `hobsub' (already loaded).
Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO)
Package: hopatch 2016/05/16 v1.3 Wrapper for package hooks (HO)
Package: xcolor-patch 2016/05/16 xcolor patch
Package: atveryend 2016/05/16 v1.9 Hooks at the very end of document (HO)
Package atveryend Info: \enddocument detected (standard20110627).
Package: atbegshi 2016/06/09 v1.18 At begin shipout hook (HO)
Package: refcount 2016/05/16 v3.5 Data extraction from label references (HO)
Package: hycolor 2016/05/16 v1.8 Color options for hyperref/bookmark (HO)
)
(/usr/share/texmf-dist/tex/latex/oberdiek/auxhook.sty
Package: auxhook 2016/05/16 v1.4 Hooks for auxiliary files (HO)
)
\@linkdim=\dimen120
\Hy@linkcounter=\count108
\Hy@pagecounter=\count109
(/usr/share/texmf-dist/tex/latex/hyperref/pd1enc.def
File: pd1enc.def 2018/11/30 v6.88e Hyperref: PDFDocEncoding definition (HO)
)
\Hy@SavedSpaceFactor=\count110
(/usr/share/texmf-dist/tex/latex/latexconfig/hyperref.cfg
File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
)
Package hyperref Info: Hyper figures OFF on input line 4519.
Package hyperref Info: Link nesting OFF on input line 4524.
Package hyperref Info: Hyper index ON on input line 4527.
Package hyperref Info: Plain pages OFF on input line 4534.
Package hyperref Info: Backreferencing OFF on input line 4539.
Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
Package hyperref Info: Bookmarks ON on input line 4772.
\c@Hy@tempcnt=\count111
(/usr/share/texmf-dist/tex/latex/url/url.sty
\Urlmuskip=\muskip11
Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
)
LaTeX Info: Redefining \url on input line 5125.
\XeTeXLinkMargin=\dimen121
\Fld@menulength=\count112
\Field@Width=\dimen122
\Fld@charsize=\dimen123
Package hyperref Info: Hyper figures OFF on input line 6380.
Package hyperref Info: Link nesting OFF on input line 6385.
Package hyperref Info: Hyper index ON on input line 6388.
Package hyperref Info: backreferencing OFF on input line 6395.
Package hyperref Info: Link coloring OFF on input line 6400.
Package hyperref Info: Link coloring with OCG OFF on input line 6405.
Package hyperref Info: PDF/A mode OFF on input line 6410.
LaTeX Info: Redefining \ref on input line 6450.
LaTeX Info: Redefining \pageref on input line 6454.
\Hy@abspage=\count113
\c@Item=\count114
\c@Hfootnote=\count115
)
Package hyperref Info: Driver (autodetected): hxetex.
(/usr/share/texmf-dist/tex/latex/hyperref/hxetex.def
File: hxetex.def 2018/11/30 v6.88e Hyperref driver for XeTeX
(/usr/share/texmf-dist/tex/latex/hyperref/puenc.def
File: puenc.def 2018/11/30 v6.88e Hyperref: PDF Unicode definition (HO)
)
(/usr/share/texmf-dist/tex/generic/oberdiek/stringenc.sty
Package: stringenc 2016/05/16 v1.11 Convert strings between diff. encodings (HO
)
)
\pdfm@box=\box38
\c@Hy@AnnotLevel=\count116
\HyField@AnnotCount=\count117
\Fld@listcount=\count118
\c@bookmark@seq@number=\count119
(/usr/share/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty
Package: rerunfilecheck 2016/05/16 v1.8 Rerun checks for auxiliary files (HO)
Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
82.
)
\Hy@SectionHShift=\skip53
)
(/usr/share/texmf-dist/tex/latex/algorithms/algorithm.sty
Invalid UTF-8 byte or sequence at line 11 replaced by U+FFFD.
Package: algorithm 2009/08/24 v0.1 Document Style `algorithm' - floating enviro
nment
(/usr/share/texmf-dist/tex/latex/float/float.sty
Package: float 2001/11/08 v1.3d Float enhancements (AL)
\c@float@type=\count120
\float@exts=\toks26
\float@box=\box39
\@float@everytoks=\toks27
\@floatcapt=\box40
)
\@float@every@algorithm=\toks28
\c@algorithm=\count121
)
(/usr/share/texmf-dist/tex/latex/algorithmicx/algpseudocode.sty
Package: algpseudocode
(/usr/share/texmf-dist/tex/latex/algorithmicx/algorithmicx.sty
Package: algorithmicx 2005/04/27 v1.2 Algorithmicx
Document Style algorithmicx 1.2 - a greatly improved `algorithmic' style
\c@ALG@line=\count122
\c@ALG@rem=\count123
\c@ALG@nested=\count124
\ALG@tlm=\skip54
\ALG@thistlm=\skip55
\c@ALG@Lnr=\count125
\c@ALG@blocknr=\count126
\c@ALG@storecount=\count127
\c@ALG@tmpcounter=\count128
\ALG@tmplength=\skip56
)
Document Style - pseudocode environments for use with the `algorithmicx' style
) (/usr/share/texmf-dist/tex/latex/amscls/amsthm.sty
Package: amsthm 2017/10/31 v2.20.4
\thm@style=\toks29
\thm@bodyfont=\toks30
\thm@headfont=\toks31
\thm@notefont=\toks32
\thm@headpunct=\toks33
\thm@preskip=\skip57
\thm@postskip=\skip58
\thm@headsep=\skip59
\dth@everypar=\toks34
)
(/usr/share/texmf-dist/tex/latex/base/fontenc.sty
Package: fontenc 2018/08/11 v2.0j Standard LaTeX package
(/usr/share/texmf-dist/tex/latex/base/t1enc.def
File: t1enc.def 2018/08/11 v2.0j Standard LaTeX file
LaTeX Font Info: Redeclaring font encoding T1 on input line 48.
))
\c@definition=\count129
(/usr/share/texmf-dist/tex/latex/listings/listings.sty
\lst@mode=\count130
\lst@gtempboxa=\box41
\lst@token=\toks35
\lst@length=\count131
\lst@currlwidth=\dimen124
\lst@column=\count132
\lst@pos=\count133
\lst@lostspace=\dimen125
\lst@width=\dimen126
\lst@newlines=\count134
\lst@lineno=\count135
\lst@maxwidth=\dimen127
(/usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
File: lstmisc.sty 2019/02/27 1.8b (Carsten Heinz)
\c@lstnumber=\count136
\lst@skipnumbers=\count137
\lst@framebox=\box42
)
(/usr/share/texmf-dist/tex/latex/listings/listings.cfg
File: listings.cfg 2019/02/27 1.8b listings configuration
))
Package: listings 2019/02/27 1.8b (Carsten Heinz)
(/usr/share/texmf-dist/tex/latex/graphics/color.sty
Package: color 2016/07/10 v1.1e Standard LaTeX Color (DPC)
(/usr/share/texmf-dist/tex/latex/graphics-cfg/color.cfg
File: color.cfg 2016/01/02 v1.6 sample color configuration
)
Package color Info: Driver file: xetex.def on input line 147.
)
(/usr/share/texmf-dist/tex/generic/oberdiek/se-ascii-print.def
File: se-ascii-print.def 2016/05/16 v1.11 stringenc: Printable ASCII characters
) (./prova.aux)
\openout1 = `prova.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 37.
LaTeX Font Info: ... okay on input line 37.
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 37.
LaTeX Font Info: ... okay on input line 37.
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 37.
LaTeX Font Info: ... okay on input line 37.
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 37.
LaTeX Font Info: ... okay on input line 37.
LaTeX Font Info: Checking defaults for TU/lmr/m/n on input line 37.
LaTeX Font Info: ... okay on input line 37.
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 37.
LaTeX Font Info: ... okay on input line 37.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 37.
LaTeX Font Info: ... okay on input line 37.
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 37.
LaTeX Font Info: Try loading font information for TS1+cmr on input line 37.
(/usr/share/texmf-dist/tex/latex/base/ts1cmr.fd
File: ts1cmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions
)
LaTeX Font Info: ... okay on input line 37.
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 37.
LaTeX Font Info: ... okay on input line 37.
LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 37.
LaTeX Font Info: ... okay on input line 37.
\AtBeginShipoutBox=\box43
Package hyperref Info: Link coloring OFF on input line 37.
(/usr/share/texmf-dist/tex/latex/hyperref/nameref.sty
Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section
(/usr/share/texmf-dist/tex/generic/oberdiek/gettitlestring.sty
Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO)
)
\c@section@level=\count138
)
LaTeX Info: Redefining \ref on input line 37.
LaTeX Info: Redefining \pageref on input line 37.
LaTeX Info: Redefining \nameref on input line 37.
(./prova.out)
(./prova.out)
\@outlinefile=\write3
\openout3 = `prova.out'.
\c@lstlisting=\count139
LaTeX Font Info: Try loading font information for U+msa on input line 40.
(/usr/share/texmf-dist/tex/latex/amsfonts/umsa.fd
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
)
LaTeX Font Info: Try loading font information for U+msb on input line 40.
(/usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
)
LaTeX Font Info: Try loading font information for T1+lmss on input line 40.
(/usr/share/texmf-dist/tex/latex/lm/t1lmss.fd
File: t1lmss.fd 2009/10/30 v1.6 Font defs for Latin Modern
) [1
]
LaTeX Font Info: Try loading font information for TS1+lmr on input line 82.
(/usr/share/texmf-dist/tex/latex/lm/ts1lmr.fd
File: ts1lmr.fd 2009/10/30 v1.6 Font defs for Latin Modern
) [2]
LaTeX Font Info: Try loading font information for T1+lmtt on input line 145.
(/usr/share/texmf-dist/tex/latex/lm/t1lmtt.fd
File: t1lmtt.fd 2009/10/30 v1.6 Font defs for Latin Modern
) [3]
Overfull \hbox (18.04773pt too wide) in paragraph at lines 180--180
[]\T1/lmtt/m/n/10.95 | (Some _, None) -> print "Pair of optional types, last n
ull"[]
[]
Overfull \hbox (23.79646pt too wide) in paragraph at lines 180--180
[]\T1/lmtt/m/n/10.95 | (None, Some _) -> print "Pair of optional types, first
null"[]
[]
Overfull \hbox (6.55026pt too wide) in paragraph at lines 180--180
[]\T1/lmtt/m/n/10.95 | (None, None) -> print "Pair of optional types, both nul
l"[]
[]
[4]
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ₙ in font ec-lmr10!
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ₙ in font ec-lmr10!
Missing character: There is no ⁱ in font ec-lmr10!
Missing character: There is no → in font cmr10!
Missing character: There is no ₁ in font cmr10!
Missing character: There is no → in font cmr10!
Missing character: There is no ₂ in font cmr10!
Missing character: There is no → in font cmr10!
Missing character: There is no → in font cmr10!
Missing character: There is no ₘ in font cmmi10!
Missing character: There is no → in font cmr10!
Overfull \hbox (2.96298pt too wide) in paragraph at lines 259--261
[]\T1/lmr/m/n/10.95 Most na-tive data types in OCaml, such as in-te-gers, tu-pl
es, lists, records,
[]
Missing character: There is no ≼ in font ec-lmr10!
Missing character: There is no ≼ in font ec-lmr10!
Missing character: There is no ≼ in font ec-lmr10!
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ≼ in font ec-lmr10!
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ≼ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ≼ in font ec-lmr10!
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ₐ in font ec-lmr10!
Missing character: There is no ≼ in font ec-lmr10!
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ₐ in font ec-lmr10!
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ₐ in font ec-lmr10!
Missing character: There is no ≼ in font ec-lmr10!
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ₐ in font ec-lmr10!
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ₐ in font ec-lmr10!
Missing character: There is no ≼ in font ec-lmr10!
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ₐ in font ec-lmr10!
Missing character: There is no ᵢ in font ec-lmr10!
Missing character: There is no ≼ in font ec-lmr10!
Missing character: There is no ᵢ in font ec-lmr10!
Missing character: There is no ∀ in font ec-lmr10!
Missing character: There is no ∈ in font ec-lmr10!
! Undefined control sequence.
l.285 \vv
{v} = (v₁, v₂, \ldots{}, vᵢ) matches the line number i in P if and...
?
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ᵢ in font ec-lmr10!
[5]
! Misplaced alignment tab character &.
l.288 \item \[ p_{i,1} &
p_{i,2} & \cdots & p_{i,n} \] ≼ (v₁, v₂, \ldots{}, vᵢ)
?
! Misplaced alignment tab character &.
l.288 \item \[ p_{i,1} & p_{i,2} &
\cdots & p_{i,n} \] ≼ (v₁, v₂, \ldots{}, vᵢ)
?
! Misplaced alignment tab character &.
<recently read> &
l.288 \item \[ p_{i,1} & p_{i,2} & \cdots &
p_{i,n} \] ≼ (v₁, v₂, \ldots{}, vᵢ)
?
Missing character: There is no ≼ in font ec-lmr10!
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ᵢ in font ec-lmr10!
! Misplaced alignment tab character &.
l.289 \item \[ ∀j < i p_{j,1} &
p_{j,2} & \cdots & p_{j,n} \] ⋠ (v₁, v₂, \ld...
?
! Misplaced alignment tab character &.
l.289 \item \[ ∀j < i p_{j,1} & p_{j,2} &
\cdots & p_{j,n} \] ⋠ (v₁, v₂, \ld...
?
! Misplaced alignment tab character &.
<recently read> &
l.289 \item \[ ∀j < i p_{j,1} & p_{j,2} & \cdots &
p_{j,n} \] ⋠ (v₁, v₂, \ld...
?
Missing character: There is no ∀ in font cmr10!
Missing character: There is no ⋠ in font ec-lmr10!
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ᵢ in font ec-lmr10!
Missing character: There is no ≼ in font ec-lmr10!
Missing character: There is no ≡ in font ec-lmr10!
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ₘ in font ec-lmr10!
Missing character: There is no ₘ in font ec-lmr10!
! Undefined control sequence.
l.324 \vv
{x} = (x₁, x₂, \ldots{}, xₙ) of size n
?
Missing character: There is no ₁ in font ec-lmr10!
Missing character: There is no ₂ in font ec-lmr10!
Missing character: There is no ₙ in font ec-lmr10!
Missing character: There is no → in font ec-lmr10!
Missing character: There is no → in font cmr10!
Missing character: There is no ₁ in font cmr10!
Missing character: There is no → in font cmr10!
Missing character: There is no ₂ in font cmr10!
Missing character: There is no → in font cmr10!
Missing character: There is no → in font cmr10!
Missing character: There is no ₘ in font cmmi10!
Missing character: There is no → in font cmr10!
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 336.
[6]
Package atveryend Info: Empty hook `AfterLastShipout' on input line 336.
(./prova.aux)
Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 336.
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 336.
Package rerunfilecheck Warning: File `prova.out' has changed.
(rerunfilecheck) Rerun to get outlines right
(rerunfilecheck) or use package `bookmark'.
Package rerunfilecheck Info: Checksums for `prova.out':
(rerunfilecheck) Before: 25CD49CE93FE2EBDE0A77084F183FACA
(rerunfilecheck) After: 4C10F3A28DB5B56905D83B509FE58CA0.
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 336.
)
Here is how much of TeX's memory you used:
11724 strings out of 494894
164120 string characters out of 6177622
238134 words of memory out of 5000000
15485 multiletter control sequences out of 15000+600000
53749 words of font info for 57 fonts, out of 8000000 for 9000
14 hyphenation exceptions out of 8191
36i,9n,45p,286b,536s stack positions out of 5000i,500n,10000p,200000b,80000s
Output written on prova.pdf (6 pages).

View file

@ -1,4 +0,0 @@
\BOOKMARK [1][-]{section.1}{TODO\040Scaletta\040[1/2]}{}% 1
\BOOKMARK [1][-]{section.2}{1.\040Background}{}% 2
\BOOKMARK [2][-]{subsection.2.1}{1.1\040OCaml}{section.2}% 3
\BOOKMARK [2][-]{subsection.2.2}{1.2.1.1\040Initial\040state\040of\040the\040compilation}{section.2}% 4

Binary file not shown.

View file

@ -1,336 +0,0 @@
% Created 2020-02-19 Wed 16:42
% Intended LaTeX compiler: pdflatex
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{grffile}
\usepackage{longtable}
\usepackage{wrapfig}
\usepackage{rotating}
\usepackage[normalem]{ulem}
\usepackage{amsmath}
\usepackage{textcomp}
\usepackage{amssymb}
\usepackage{capt-of}
\usepackage{hyperref}
\usepackage[utf8]{inputenc}
\usepackage{algorithm}
\usepackage{algpseudocode}
\usepackage{amsmath,amssymb,amsthm}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\newtheorem{definition}{Definition}
\usepackage{graphicx}
\usepackage{listings}
\usepackage{color}
\author{Francesco Mecca}
\date{}
\title{Translation Verification of the OCaml pattern matching compiler}
\hypersetup{
pdfauthor={Francesco Mecca},
pdftitle={Translation Verification of the OCaml pattern matching compiler},
pdfkeywords={},
pdfsubject={},
pdfcreator={Emacs 26.3 (Org mode 9.1.9)},
pdflang={English}}
\begin{document}
\maketitle
\section{{\bfseries\sffamily TODO} Scaletta [1/2]}
\label{sec:org6c3943f}
\begin{itemize}
\item[{$\boxtimes$}] Abstract
\item[{$\boxminus$}] Background [25\%]
\begin{itemize}
\item[{$\boxtimes$}] Ocaml
\item[{$\square$}] Lambda code
\item[{$\square$}] Pattern matching
\item[{$\square$}] Translation Verification
\item[{$\square$}] Symbolic execution
\end{itemize}
\end{itemize}
\begin{abstract}
This dissertation presents an algorithm for the translation validation of the OCaml
pattern matching compiler. Given the source representation of the target program and the
target program compiled in untyped lambda form, the algoritmhm is capable of modelling
the source program in terms of symbolic constraints on it's branches and apply symbolic
execution on the untyped lambda representation in order to validate wheter the compilation
produced a valid result.
In this context a valid result means that for every input in the domain of the source
program the untyped lambda translation produces the same output as the source program.
The input of the program is modelled in terms of symbolic constraints closely related to
the runtime representation of OCaml objects and the output consists of OCaml code
blackboxes that are not evaluated in the context of the verification.
\end{abstract}
\section{1. Background}
\label{sec:orgad08c62}
\subsection{1.1 OCaml}
\label{sec:orgca8d200}
Objective Caml (OCaml) is a dialect of the ML (Meta-Language) family of programming
languages.
OCaml shares many features with other dialects of ML, such as SML and Caml Light,
The main features of ML languages are the use of the Hindley-Milner type system that
provides many advantages with respect to static type systems of traditional imperative and object
oriented language such as C, C++ and Java, such as:
\begin{itemize}
\item Parametric polymorphism: in certain scenarios a function can accept more than one
\end{itemize}
type for the input parameters. For example a function that computes the lenght of a
list doesn't need to inspect the type of the elements of the list and for this reason
a List.length function can accept list of integers, list of strings and in general
list of any type. Such languages offer polymorphic functions through subtyping at
runtime only, while other languages such as C++ offer polymorphism through compile
time templates and function overloading.
With the Hindley-Milner type system each well typed function can have more than one
type but always has a unique best type, called the \emph{principal type}.
For example the principal type of the List.length function is "For any \emph{a}, function from
list of \emph{a} to \emph{int}" and \emph{a} is called the \emph{type parameter}.
\begin{itemize}
\item Strong typing: Languages such as C and C++ allow the programmer to operate on data
\end{itemize}
without considering its type, mainly through pointers. Other languages such as C\#
and Go allow type erasure so at runtime the type of the data can't be queried.
In the case of programming languages using an Hindley-Milner type system the
programmer is not allowed to operate on data by ignoring or promoting its type.
\begin{itemize}
\item Type Inference: the principal type of a well formed term can be inferred without any
\end{itemize}
annotation or declaration.
\begin{itemize}
\item Algebraic data types: types that are modelled by the use of two
\end{itemize}
algebraic operations, sum and product.
A sum type is a type that can hold of many different types of
objects, but only one at a time. For example the sum type defined
as \emph{A + B} can hold at any moment a value of type A or a value of
type B. Sum types are also called tagged union or variants.
A product type is a type constructed as a direct product
of multiple types and contains at any moment one instance for
every type of its operands. Product types are also called tuples
or records. Algebraic data types can be recursive
in their definition and can be combined.
Moreover ML languages are functional, meaning that functions are
treated as first class citizens and variables are immutable,
although mutable statements and imperative constructs are permitted.
In addition to that OCaml features an object system, that provides
inheritance, subtyping and dynamic binding, and modules, that
provide a way to encapsulate definitions. Modules are checked
statically and can be reificated through functors.
\begin{enumerate}
\item {\bfseries\sffamily TODO} 1.2 Pattern matching [37\%]
\label{sec:org83a2e95}
\begin{itemize}
\item[{$\square$}] capisci come mettere gli esempi uno accanto all'altro
\end{itemize}
Pattern matching is a widely adopted mechanism to interact with ADT.
C family languages provide branching on predicates through the use of
if statements and switch statements.
Pattern matching is a mechanism for destructuring and analyzing data
structures for the presence of values simbolically represented as
tokens. One common example of pattern matching is the use of regular
expressions on strings. OCaml provides pattern matching on ADT,
primitive data types.
\begin{itemize}
\item[{$\boxtimes$}] Esempio enum, C e Ocaml
\end{itemize}
\begin{verbatim}
type color = | Red | Blue | Green
begin match color with
| Red -> print "red"
| Blue -> print "red"
| Green -> print "red"
\end{verbatim}
OCaml provides tokens to express data destructoring
\begin{itemize}
\item[{$\boxtimes$}] Esempio destructor list
\end{itemize}
\begin{verbatim}
begin match list with
| [ ] -> print "empty list"
| element1 :: [ ] -> print "one element"
| element1 :: element2 :: [ ] -> print "two elements"
| head :: tail-> print "head followed by many elements"
\end{verbatim}
\begin{itemize}
\item[{$\boxtimes$}] Esempio destructor tuples
\end{itemize}
\begin{verbatim}
begin match tuple with
| (Some _, Some _) -> print "Pair of optional types"
| (Some _, None) -> print "Pair of optional types, last null"
| (None, Some _) -> print "Pair of optional types, first null"
| (None, None) -> print "Pair of optional types, both null"
\end{verbatim}
Pattern clauses can make the use of \emph{guards} to test predicates and
variables can be binded in scope.
\begin{itemize}
\item[{$\square$}] Esempio binding e guards
\end{itemize}
\begin{verbatim}
begin match token_list with
| "switch"::var::"{"::rest ->
| "case"::":"::var::rest when is_int var ->
| "case"::":"::var::rest when is_string var ->
| "}"::[ ] -> stop ()
| "}"::rest -> error "syntax error: " rest
\end{verbatim}
\begin{itemize}
\item[{$\square$}] Un altro esempio con destructors e tutto i lresto
\end{itemize}
In general pattern matching on primitive and algebraic data types takes the
following form.
\begin{itemize}
\item[{$\square$}] Esempio informale
\end{itemize}
It can be described more formally through a BNF grammar.
\begin{itemize}
\item[{$\square$}] BNF
\item[{$\square$}] Come funziona il pattern matching?
\end{itemize}
\item {\bfseries\sffamily TODO} 1.2.1 Pattern matching compilation to lambda code
\label{sec:org2127ffb}
\begin{itemize}
\item[{$\square$}] Da tabella a matrice
\end{itemize}
Formally, pattern are defined as follows:
\begin{center}
\begin{tabular}{ll}
pattern ::= & Patterns\\
\hline
\_ & wildcard\\
x & variable\\
c(p₁,p₂,\ldots{},pₙ & constructor pattern\\
(p₁\(\vert{}\) p₂) & or-pattern\\
\end{tabular}
\end{center}
Values are defined as follows:
\begin{center}
\begin{tabular}{ll}
values ::= & Values\\
\hline
c(v₁, v₂, \ldots{}, vₙ) & constructor value\\
\end{tabular}
\end{center}
The entire pattern matching code can be represented as a clause matrix
that associates rows of patterns (p\(_{\text{i,1}}\), p\(_{\text{i,2}}\), \ldots{}, p\(_{\text{i,n}}\)) to
lambda code action lⁱ
\begin{equation*}
(P → L) =
\begin{pmatrix}
p_{1,1} & p_{1,2} & \cdots & p_{1,n} → l₁ \\
p_{2,1} & p_{2,2} & \cdots & p_{2,n} → l₂ \\
\vdots & \vdots & \ddots \vdots\vdots \\
p_{m,1} & p_{m,2} & \cdots & p_{m,n} → lₘ
\end{pmatrix}
\end{equation*}
Most native data types in OCaml, such as integers, tuples, lists,
records, can be seen as instances of the following definition
\begin{verbatim}
type t = Nil | One of int | Cons of int * t
\end{verbatim}
that is a type \emph{t} with three constructors that define its complete
signature.
Every constructor has an arity. Nil, a constructor of arity 0, is
called a constant constructor.
The pattern \emph{p} matches a value \emph{v}, written as p ≼ v, when
one of the following rules apply
\begin{center}
\begin{tabular}{llll}
\_ && v & \\
x && v & \\
(p₁ \(\vert{}\)$\backslash$ p₂) && v & iff p₁ ≼ v or p₂ ≼ v\\
c(p₁, p₂, \ldots{}, pₐ) && c(v₁, v₂, \ldots{}, vₐ) & iff (p₁, p₂, \ldots{}, pₐ) ≼ (v₁, v₂, \ldots{}, vₐ)\\
(p₁, p₂, \ldots{}, pₐ) && (v₁, v₂, \ldots{}, vₐ) & iff pᵢ ≼ vᵢ ∀i ∈ [1..a]\\
\end{tabular}
\end{center}
We can also say that \emph{v} is an \emph{instance} of \emph{p}.
When we consider the pattern matrix P we say that the value vector
\vv{v} = (v₁, v₂, \ldots{}, vᵢ) matches the line number i in P if and only if the following two
conditions are satisfied:
\begin{itemize}
\item \[ p_{i,1} & p_{i,2} & \cdots & p_{i,n} \] ≼ (v₁, v₂, \ldots{}, vᵢ)
\item \[ ∀j < i p_{j,1} & p_{j,2} & \cdots & p_{j,n} \] ⋠ (v₁, v₂, \ldots{}, vᵢ)
\end{itemize}
We can define the following three relations with respect to patterns:
\begin{itemize}
\item Patter p is less precise than pattern q, writtens p ≼ q when all
instances of q are instances of p
\item Pattern p and q are equivalent, written p ≡ q, when their instances
are the same
\item Patterns p and q are compatible when they share a common instance
\end{itemize}
\end{enumerate}
\subsection{1.2.1.1 Initial state of the compilation}
\label{sec:org0b0c254}
Given a source of the following form:
\#+BEGIN\_SRC ocaml
match x with
\begin{center}
\begin{tabular}{l}
p₁ -> e₁\\
p₂ -> e₂\\
\end{tabular}
\end{center}
\ldots{}
\begin{center}
\begin{tabular}{l}
pₘ -> eₘ\\
\end{tabular}
\end{center}
\#+END\_SRC ocaml
the initial input of the algorithm consists of a vector of variables
\vv{x} = (x₁, x₂, \ldots{}, xₙ) of size n
and a clause matrix P → L of width n and height m.
\begin{equation*}
(P → L) =
\begin{pmatrix}
p_{1,1} & p_{1,2} & \cdots & p_{1,n} → l₁ \\
p_{2,1} & p_{2,2} & \cdots & p_{2,n} → l₂ \\
\vdots & \vdots & \ddots \vdots\vdots \\
p_{m,1} & p_{m,2} & \cdots & p_{m,n} → lₘ
\end{pmatrix}
\end{equation*}
\end{document}

View file

@ -1,21 +0,0 @@
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019 Gentoo Linux) (preloaded format=pdflatex 2020.2.15) 17 FEB 2020 16:31
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
**tesi.tex
! Emergency stop.
<*> tesi.tex
End of file on the terminal!
Here is how much of TeX's memory you used:
3 strings out of 494553
112 string characters out of 6177841
52201 words of memory out of 5000000
3775 multiletter control sequences out of 15000+600000
3640 words of font info for 14 fonts, out of 8000000 for 9000
14 hyphenation exceptions out of 8191
0i,0n,0p,11b,6s stack positions out of 5000i,500n,10000p,200000b,80000s
! ==> Fatal error occurred, no output PDF file produced!

2519
tesi/unicode-latex.json Normal file

File diff suppressed because it is too large Load diff