ocaml todo
This commit is contained in:
parent
033becaf80
commit
0d7ed5e91d
27 changed files with 100592 additions and 0 deletions
17
tesi/Makefile
Normal file
17
tesi/Makefile
Normal file
|
@ -0,0 +1,17 @@
|
|||
SRC = prova.tex
|
||||
AUX = prova.aux
|
||||
DEL = prova.aux prova.bbl prova.blg prova.log prova.out
|
||||
NAME = prova
|
||||
|
||||
prova:
|
||||
@echo
|
||||
@echo "=== Removing temporary files ==="
|
||||
rm -f $(DEL)
|
||||
@echo
|
||||
@echo "=== Building from scratch ==="
|
||||
pdflatex $(SRC)
|
||||
bibtex $(AUX)
|
||||
pdflatex $(SRC)
|
||||
pdflatex $(SRC)
|
||||
@echo
|
||||
@echo "=== All done. Generated $(NAME).pdf ==="
|
17
tesi/galla/Makefile
Normal file
17
tesi/galla/Makefile
Normal file
|
@ -0,0 +1,17 @@
|
|||
SRC = tesi.tex
|
||||
AUX = tesi.aux
|
||||
DEL = tesi.aux tesi.bbl tesi.blg tesi.log tesi.out
|
||||
NAME = tesi
|
||||
|
||||
tesi:
|
||||
@echo
|
||||
@echo "=== Removing temporary files ==="
|
||||
rm -f $(DEL)
|
||||
@echo
|
||||
@echo "=== Building from scratch ==="
|
||||
pdflatex $(SRC)
|
||||
bibtex $(AUX)
|
||||
pdflatex $(SRC)
|
||||
pdflatex $(SRC)
|
||||
@echo
|
||||
@echo "=== All done. Generated $(NAME).pdf ==="
|
8
tesi/galla/preview.sh
Executable file
8
tesi/galla/preview.sh
Executable file
|
@ -0,0 +1,8 @@
|
|||
#!/bin/bash
|
||||
|
||||
pid=$(ps a | grep -i "tesi.pdf" | grep -v grep | cut -d" " -f 1)
|
||||
make
|
||||
if [[ ! -z $pid ]]; then
|
||||
kill $pid
|
||||
fi
|
||||
mupdf tesi.pdf &
|
95
tesi/galla/tesi.aux
Normal file
95
tesi/galla/tesi.aux
Normal file
|
@ -0,0 +1,95 @@
|
|||
\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\HyField@AuxAddToFields[1]{}
|
||||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}\protected@file@percent }
|
||||
\newlabel{sec:org6f2d2bd}{{1}{1}{Introduction}{section.1}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Model Checking}{1}{subsection.1.1}\protected@file@percent }
|
||||
\newlabel{sec:org4914978}{{1.1}{1}{Model Checking}{subsection.1.1}{}}
|
||||
\citation{Pnueli77}
|
||||
\citation{ClarkeE81}
|
||||
\citation{Lamport80}
|
||||
\citation{EmersonH86}
|
||||
\citation{Vardi95}
|
||||
\citation{Keller76}
|
||||
\citation{Sistlac85}
|
||||
\citation{Holzmann97}
|
||||
\citation{HolzmannPy96}
|
||||
\citation{FernandezMJJ92}
|
||||
\citation{Peled96}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}A brief history of LTL model checking}{3}{subsection.1.2}\protected@file@percent }
|
||||
\newlabel{sec:org25c390b}{{1.2}{3}{A brief history of LTL model checking}{subsection.1.2}{}}
|
||||
\citation{SymbMC}
|
||||
\citation{Clarke08}
|
||||
\citation{ClarkeES86}
|
||||
\citation{KantLMPBD15}
|
||||
\citation{DijkP17}
|
||||
\citation{CimattiCGGPRST02}
|
||||
\citation{BiereCCZ99}
|
||||
\citation{BolligW96}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3}The origin of symbolic model checking}{4}{subsection.1.3}\protected@file@percent }
|
||||
\newlabel{sec:orgce6f633}{{1.3}{4}{The origin of symbolic model checking}{subsection.1.3}{}}
|
||||
\citation{BabarM10}
|
||||
\citation{BabarBDM10}
|
||||
\citation{AmparoreDBGM17}
|
||||
\citation{ClarkeGH97}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Background}{5}{section.2}\protected@file@percent }
|
||||
\newlabel{sec:orga42ce82}{{2}{5}{Background}{section.2}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Linear Temporal Logic}{5}{subsection.2.1}\protected@file@percent }
|
||||
\newlabel{sec:orgdbca314}{{2.1}{5}{Linear Temporal Logic}{subsection.2.1}{}}
|
||||
\@writefile{toc}{\contentsline {paragraph}{LTL Semantics}{6}{section*.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}CTL*}{6}{subsection.2.2}\protected@file@percent }
|
||||
\newlabel{sec:orgfa1652d}{{2.2}{6}{CTL*}{subsection.2.2}{}}
|
||||
\citation{Bryant86}
|
||||
\citation{MDD}
|
||||
\@writefile{toc}{\contentsline {paragraph}{CTL* Semantics}{7}{section*.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {paragraph}{State formulae: semantics}{7}{section*.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {paragraph}{Path formulae: semantics}{7}{section*.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Decision Diagrams}{8}{subsection.2.3}\protected@file@percent }
|
||||
\newlabel{sec:org4ea21ea}{{2.3}{8}{Decision Diagrams}{subsection.2.3}{}}
|
||||
\@writefile{toc}{\contentsline {paragraph}{Reduced ordered MDDs}{8}{section*.5}\protected@file@percent }
|
||||
\citation{VardiW94}
|
||||
\bibstyle{/usr/share/texmf-dist/bibtex/bst/base/acm}
|
||||
\bibdata{tesi}
|
||||
\bibcite{AmparoreDBGM17}{1}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}Automata over infinite words}{9}{subsection.2.4}\protected@file@percent }
|
||||
\newlabel{sec:org350d6d0}{{2.4}{9}{Automata over infinite words}{subsection.2.4}{}}
|
||||
\bibcite{BabarBDM10}{2}
|
||||
\bibcite{BabarM10}{3}
|
||||
\bibcite{BiereCCZ99}{4}
|
||||
\bibcite{BolligW96}{5}
|
||||
\bibcite{Bryant86}{6}
|
||||
\bibcite{CimattiCGGPRST02}{7}
|
||||
\bibcite{Clarke08}{8}
|
||||
\bibcite{ClarkeE81}{9}
|
||||
\bibcite{ClarkeES86}{10}
|
||||
\bibcite{ClarkeGH97}{11}
|
||||
\bibcite{EmersonH86}{12}
|
||||
\bibcite{FernandezMJJ92}{13}
|
||||
\bibcite{Holzmann97}{14}
|
||||
\bibcite{HolzmannPy96}{15}
|
||||
\bibcite{MDD}{16}
|
||||
\bibcite{KantLMPBD15}{17}
|
||||
\bibcite{Keller76}{18}
|
||||
\bibcite{Lamport80}{19}
|
||||
\bibcite{SymbMC}{20}
|
||||
\bibcite{Peled96}{21}
|
||||
\bibcite{Pnueli77}{22}
|
||||
\bibcite{Sistlac85}{23}
|
||||
\bibcite{DijkP17}{24}
|
||||
\bibcite{Vardi95}{25}
|
||||
\bibcite{VardiW94}{26}
|
180
tesi/galla/tesi.bbl
Normal file
180
tesi/galla/tesi.bbl
Normal file
|
@ -0,0 +1,180 @@
|
|||
\begin{thebibliography}{10}
|
||||
|
||||
\bibitem{AmparoreDBGM17}
|
||||
{\sc Amparore, E.~G., Donatelli, S., Beccuti, M., Garbi, G., and Miner, A.~S.}
|
||||
\newblock Decision diagrams for petri nets: Which variable ordering?
|
||||
\newblock In {\em Proceedings of the International Workshop on Petri Nets and
|
||||
Software Engineering (PNSE'17), co-located with the38th International
|
||||
Conference on Application and Theory of Petri Nets and Concurrency Petri Nets
|
||||
2017 and the 17th International Conference on Application of Concurrency to
|
||||
System Design {ACSD} 2017, Zaragoza, Spain, June 25-30, 2017\/} (2017),
|
||||
D.~Moldt, L.~Cabac, and H.~R{\"{o}}lke, Eds., vol.~1846 of {\em {CEUR}
|
||||
Workshop Proceedings}, CEUR-WS.org, pp.~31--50.
|
||||
|
||||
\bibitem{BabarBDM10}
|
||||
{\sc Babar, J., Beccuti, M., Donatelli, S., and Miner, A.~S.}
|
||||
\newblock Greatspn enhanced with decision diagram data structures.
|
||||
\newblock In {\em Applications and Theory of Petri Nets, 31st International
|
||||
Conference, {PETRI} {NETS} 2010, Braga, Portugal, June 21-25, 2010.
|
||||
Proceedings\/} (2010), J.~Lilius and W.~Penczek, Eds., vol.~6128 of {\em
|
||||
Lecture Notes in Computer Science}, Springer, pp.~308--317.
|
||||
|
||||
\bibitem{BabarM10}
|
||||
{\sc Babar, J., and Miner, A.~S.}
|
||||
\newblock Meddly: Multi-terminal and edge-valued decision diagram library.
|
||||
\newblock In {\em {QEST} 2010, Seventh International Conference on the
|
||||
Quantitative Evaluation of Systems, Williamsburg, Virginia, USA, 15-18
|
||||
September 2010\/} (2010), {IEEE} Computer Society, pp.~195--196.
|
||||
|
||||
\bibitem{BiereCCZ99}
|
||||
{\sc Biere, A., Cimatti, A., Clarke, E.~M., and Zhu, Y.}
|
||||
\newblock Symbolic model checking without bdds.
|
||||
\newblock In {\em Tools and Algorithms for Construction and Analysis of
|
||||
Systems, 5th International Conference, {TACAS} '99, Held as Part of the
|
||||
European Joint Conferences on the Theory and Practice of Software, ETAPS'99,
|
||||
Amsterdam, The Netherlands, March 22-28, 1999, Proceedings\/} (1999),
|
||||
R.~Cleaveland, Ed., vol.~1579 of {\em Lecture Notes in Computer Science},
|
||||
Springer, pp.~193--207.
|
||||
|
||||
\bibitem{BolligW96}
|
||||
{\sc Bollig, B., and Wegener, I.}
|
||||
\newblock Improving the variable ordering of obdds is np-complete.
|
||||
\newblock {\em {IEEE} Trans. Computers 45}, 9 (1996), 993--1002.
|
||||
|
||||
\bibitem{Bryant86}
|
||||
{\sc Bryant, R.~E.}
|
||||
\newblock Graph-based algorithms for boolean function manipulation.
|
||||
\newblock {\em {IEEE} Trans. Computers 35}, 8 (1986), 677--691.
|
||||
|
||||
\bibitem{CimattiCGGPRST02}
|
||||
{\sc Cimatti, A., Clarke, E.~M., Giunchiglia, E., Giunchiglia, F., Pistore, M.,
|
||||
Roveri, M., Sebastiani, R., and Tacchella, A.}
|
||||
\newblock Nusmv 2: An opensource tool for symbolic model checking.
|
||||
\newblock In {\em Computer Aided Verification, 14th International Conference,
|
||||
{CAV} 2002,Copenhagen, Denmark, July 27-31, 2002, Proceedings\/} (2002),
|
||||
E.~Brinksma and K.~G. Larsen, Eds., vol.~2404 of {\em Lecture Notes in
|
||||
Computer Science}, Springer, pp.~359--364.
|
||||
|
||||
\bibitem{Clarke08}
|
||||
{\sc Clarke, E.~M.}
|
||||
\newblock The birth of model checking.
|
||||
\newblock In {\em 25 Years of Model Checking - History, Achievements,
|
||||
Perspectives\/} (2008), O.~Grumberg and H.~Veith, Eds., vol.~5000 of {\em
|
||||
Lecture Notes in Computer Science}, Springer, pp.~1--26.
|
||||
|
||||
\bibitem{ClarkeE81}
|
||||
{\sc Clarke, E.~M., and Emerson, E.~A.}
|
||||
\newblock Design and synthesis of synchronization skeletons using
|
||||
branching-time temporal logic.
|
||||
\newblock In {\em Logics of Programs, Workshop, Yorktown Heights, New York,
|
||||
USA, May 1981\/} (1981), D.~Kozen, Ed., vol.~131 of {\em Lecture Notes in
|
||||
Computer Science}, Springer, pp.~52--71.
|
||||
|
||||
\bibitem{ClarkeES86}
|
||||
{\sc Clarke, E.~M., Emerson, E.~A., and Sistla, A.~P.}
|
||||
\newblock Automatic verification of finite-state concurrent systems using
|
||||
temporal logic specifications.
|
||||
\newblock {\em {ACM} Trans. Program. Lang. Syst. 8}, 2 (1986), 244--263.
|
||||
|
||||
\bibitem{ClarkeGH97}
|
||||
{\sc Clarke, E.~M., Grumberg, O., and Hamaguchi, K.}
|
||||
\newblock Another look at {LTL} model checking.
|
||||
\newblock {\em Formal Methods in System Design 10}, 1 (1997), 47--71.
|
||||
|
||||
\bibitem{EmersonH86}
|
||||
{\sc Emerson, E.~A., and Halpern, J.~Y.}
|
||||
\newblock "sometimes" and "not never" revisited: on branching versus linear
|
||||
time temporal logic.
|
||||
\newblock {\em J. {ACM} 33}, 1 (1986), 151--178.
|
||||
|
||||
\bibitem{FernandezMJJ92}
|
||||
{\sc Fernandez, J., Mounier, L., Jard, C., and J{\'{e}}ron, T.}
|
||||
\newblock On-the-fly verification of finite transition systems.
|
||||
\newblock {\em Formal Methods in System Design 1}, 2/3 (1992), 251--273.
|
||||
|
||||
\bibitem{Holzmann97}
|
||||
{\sc Holzmann, G.~J.}
|
||||
\newblock The model checker {SPIN}.
|
||||
\newblock {\em {IEEE} Trans. Software Eng. 23}, 5 (1997), 279--295.
|
||||
|
||||
\bibitem{HolzmannPy96}
|
||||
{\sc Holzmann, G.~J., Peled, D.~A., and Yannakakis, M.}
|
||||
\newblock On nested depth first search.
|
||||
\newblock In {\em The Spin Verification System, Proceedings of a {DIMACS}
|
||||
Workshop, New Brunswick, New Jersey, USA, August, 1996\/} (1996),
|
||||
J.~Gr{\'{e}}goire, G.~J. Holzmann, and D.~A. Peled, Eds., vol.~32 of {\em
|
||||
{DIMACS} Series in Discrete Mathematics and Theoretical Computer Science},
|
||||
{DIMACS/AMS}, pp.~23--31.
|
||||
|
||||
\bibitem{MDD}
|
||||
{\sc Kam, T., Villa, T., and Brayton, R.}
|
||||
\newblock Multi-valued decision diagrams: Theory and applications,"
|
||||
multiple-valued logic.
|
||||
\newblock {\em Multiple-Valued Logic 4\/} (01 1998).
|
||||
|
||||
\bibitem{KantLMPBD15}
|
||||
{\sc Kant, G., Laarman, A., Meijer, J., van~de Pol, J., Blom, S., and van Dijk,
|
||||
T.}
|
||||
\newblock Ltsmin: High-performance language-independent model checking.
|
||||
\newblock In {\em Tools and Algorithms for the Construction and Analysis of
|
||||
Systems - 21st International Conference, {TACAS} 2015, Held as Part of the
|
||||
European Joint Conferences on Theory and Practice of Software, {ETAPS} 2015,
|
||||
London, UK, April 11-18, 2015. Proceedings\/} (2015), C.~Baier and
|
||||
C.~Tinelli, Eds., vol.~9035 of {\em Lecture Notes in Computer Science},
|
||||
Springer, pp.~692--707.
|
||||
|
||||
\bibitem{Keller76}
|
||||
{\sc Keller, R.~M.}
|
||||
\newblock Formal verification of parallel programs.
|
||||
\newblock {\em Commun. {ACM} 19}, 7 (1976), 371--384.
|
||||
|
||||
\bibitem{Lamport80}
|
||||
{\sc Lamport, L.}
|
||||
\newblock "sometime" is sometimes "not never" - on the temporal logic of
|
||||
programs.
|
||||
\newblock In {\em Conference Record of the Seventh Annual {ACM} Symposium on
|
||||
Principles of Programming Languages, Las Vegas, Nevada, USA, January 1980\/}
|
||||
(1980), P.~W. Abrahams, R.~J. Lipton, and S.~R. Bourne, Eds., {ACM} Press,
|
||||
pp.~174--185.
|
||||
|
||||
\bibitem{SymbMC}
|
||||
{\sc McMillan, K.~L.}
|
||||
\newblock {\em Symbolic model checking}.
|
||||
\newblock Kluwer, 1993.
|
||||
|
||||
\bibitem{Peled96}
|
||||
{\sc Peled, D.~A.}
|
||||
\newblock Combining partial order reductions with on-the-fly model-checking.
|
||||
\newblock {\em Formal Methods in System Design 8}, 1 (1996), 39--64.
|
||||
|
||||
\bibitem{Pnueli77}
|
||||
{\sc Pnueli, A.}
|
||||
\newblock The temporal logic of programs.
|
||||
\newblock In {\em 18th Annual Symposium on Foundations of Computer Science,
|
||||
Providence, Rhode Island, USA, 31 October - 1 November 1977\/} (1977), {IEEE}
|
||||
Computer Society, pp.~46--57.
|
||||
|
||||
\bibitem{Sistlac85}
|
||||
{\sc Sistla, A.~P., and Clarke, E.~M.}
|
||||
\newblock The complexity of propositional linear temporal logics.
|
||||
\newblock {\em J. {ACM} 32}, 3 (1985), 733--749.
|
||||
|
||||
\bibitem{DijkP17}
|
||||
{\sc van Dijk, T., and van~de Pol, J.}
|
||||
\newblock Sylvan: multi-core framework for decision diagrams.
|
||||
\newblock {\em {STTT} 19}, 6 (2017), 675--696.
|
||||
|
||||
\bibitem{Vardi95}
|
||||
{\sc Vardi, M.~Y.}
|
||||
\newblock An automata-theoretic approach to linear temporal logic.
|
||||
\newblock In {\em Logics for Concurrency - Structure versus Automata (8th Banff
|
||||
Higher Order Workshop, Banff, Canada, August 27 - September 3, 1995,
|
||||
Proceedings)\/} (1995), F.~Moller and G.~M. Birtwistle, Eds., vol.~1043 of
|
||||
{\em Lecture Notes in Computer Science}, Springer, pp.~238--266.
|
||||
|
||||
\bibitem{VardiW94}
|
||||
{\sc Vardi, M.~Y., and Wolper, P.}
|
||||
\newblock Reasoning about infinite computations.
|
||||
\newblock {\em Inf. Comput. 115}, 1 (1994), 1--37.
|
||||
|
||||
\end{thebibliography}
|
664
tesi/galla/tesi.bib
Normal file
664
tesi/galla/tesi.bib
Normal file
|
@ -0,0 +1,664 @@
|
|||
@inproceedings{Pnueli77,
|
||||
author = {Amir Pnueli},
|
||||
title = {The Temporal Logic of Programs},
|
||||
booktitle = {18th Annual Symposium on Foundations of Computer Science, Providence,
|
||||
Rhode Island, USA, 31 October - 1 November 1977},
|
||||
pages = {46--57},
|
||||
year = {1977},
|
||||
crossref = {DBLP:conf/focs/FOCS18},
|
||||
url = {https://doi.org/10.1109/SFCS.1977.32},
|
||||
doi = {10.1109/SFCS.1977.32},
|
||||
timestamp = {Wed, 16 Oct 2019 14:14:54 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/focs/Pnueli77},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@proceedings{DBLP:conf/focs/FOCS18,
|
||||
title = {18th Annual Symposium on Foundations of Computer Science, Providence,
|
||||
Rhode Island, USA, 31 October - 1 November 1977},
|
||||
publisher = {{IEEE} Computer Society},
|
||||
year = {1977},
|
||||
url = {https://ieeexplore.ieee.org/xpl/conhome/4567914/proceeding},
|
||||
timestamp = {Wed, 16 Oct 2019 14:14:54 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/focs/FOCS18},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@inproceedings{ClarkeE81,
|
||||
author = {Edmund M. Clarke and
|
||||
E. Allen Emerson},
|
||||
title = {Design and Synthesis of Synchronization Skeletons Using Branching-Time
|
||||
Temporal Logic},
|
||||
booktitle = {Logics of Programs, Workshop, Yorktown Heights, New York, USA, May
|
||||
1981},
|
||||
pages = {52--71},
|
||||
year = {1981},
|
||||
crossref = {DBLP:conf/lop/1981},
|
||||
url = {https://doi.org/10.1007/BFb0025774},
|
||||
doi = {10.1007/BFb0025774},
|
||||
timestamp = {Tue, 14 May 2019 10:00:52 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/lop/ClarkeE81},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@proceedings{DBLP:conf/lop/1981,
|
||||
editor = {Dexter Kozen},
|
||||
title = {Logics of Programs, Workshop, Yorktown Heights, New York, USA, May
|
||||
1981},
|
||||
series = {Lecture Notes in Computer Science},
|
||||
volume = {131},
|
||||
publisher = {Springer},
|
||||
year = {1982},
|
||||
url = {https://doi.org/10.1007/BFb0025769},
|
||||
doi = {10.1007/BFb0025769},
|
||||
isbn = {3-540-11212-X},
|
||||
timestamp = {Tue, 14 May 2019 10:00:52 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/lop/1981},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@article{EmersonH86,
|
||||
author = {E. Allen Emerson and
|
||||
Joseph Y. Halpern},
|
||||
title = {"Sometimes" and "Not Never" revisited: on branching versus linear
|
||||
time temporal logic},
|
||||
journal = {J. {ACM}},
|
||||
volume = {33},
|
||||
number = {1},
|
||||
pages = {151--178},
|
||||
year = {1986},
|
||||
url = {https://doi.org/10.1145/4904.4999},
|
||||
doi = {10.1145/4904.4999},
|
||||
timestamp = {Tue, 06 Nov 2018 12:51:44 +0100},
|
||||
biburl = {https://dblp.org/rec/bib/journals/jacm/EmersonH86},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@inproceedings{Lamport80,
|
||||
author = {Leslie Lamport},
|
||||
title = {"Sometime" is Sometimes "Not Never" - On the Temporal Logic of Programs},
|
||||
booktitle = {Conference Record of the Seventh Annual {ACM} Symposium on Principles
|
||||
of Programming Languages, Las Vegas, Nevada, USA, January 1980},
|
||||
pages = {174--185},
|
||||
year = {1980},
|
||||
crossref = {DBLP:conf/popl/1980},
|
||||
url = {https://doi.org/10.1145/567446.567463},
|
||||
doi = {10.1145/567446.567463},
|
||||
timestamp = {Tue, 06 Nov 2018 11:07:43 +0100},
|
||||
biburl = {https://dblp.org/rec/bib/conf/popl/Lamport80},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@proceedings{DBLP:conf/popl/1980,
|
||||
editor = {Paul W. Abrahams and
|
||||
Richard J. Lipton and
|
||||
Stephen R. Bourne},
|
||||
title = {Conference Record of the Seventh Annual {ACM} Symposium on Principles
|
||||
of Programming Languages, Las Vegas, Nevada, USA, January 1980},
|
||||
publisher = {{ACM} Press},
|
||||
year = {1980},
|
||||
url = {http://dl.acm.org/citation.cfm?id=567446},
|
||||
isbn = {0-89791-011-7},
|
||||
timestamp = {Mon, 21 May 2012 16:19:49 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/popl/1980},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@book{SymbMC,
|
||||
author = {Kenneth L. McMillan},
|
||||
title = {Symbolic model checking},
|
||||
publisher = {Kluwer},
|
||||
year = {1993},
|
||||
url = {https://doi.org/10.1007/978-1-4615-3190-6},
|
||||
doi = {10.1007/978-1-4615-3190-6},
|
||||
isbn = {978-0-7923-9380-1},
|
||||
timestamp = {Tue, 23 Jul 2019 12:44:35 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/books/daglib/0071856},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@article{Keller76,
|
||||
author= {Robert M. Keller},
|
||||
title = {Formal Verification of Parallel Programs},
|
||||
journal = {Commun. {ACM}},
|
||||
volume = {19},
|
||||
number = {7},
|
||||
pages = {371--384},
|
||||
year = {1976},
|
||||
url = {https://doi.org/10.1145/360248.360251},
|
||||
doi = {10.1145/360248.360251},
|
||||
timestamp = {Tue, 06 Nov 2018 12:51:40 +0100},
|
||||
biburl = {https://dblp.org/rec/bib/journals/cacm/Keller76},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@article{SistlaC85,
|
||||
author = {A. Prasad Sistla and
|
||||
Edmund M. Clarke},
|
||||
title = {The Complexity of Propositional Linear Temporal Logics},
|
||||
journal = {J. {ACM}},
|
||||
volume = {32},
|
||||
number = {3},
|
||||
pages = {733--749},
|
||||
year = {1985},
|
||||
url = {https://doi.org/10.1145/3828.3837},
|
||||
doi = {10.1145/3828.3837},
|
||||
timestamp = {Wed, 14 Nov 2018 10:35:24 +0100},
|
||||
biburl = {https://dblp.org/rec/bib/journals/jacm/SistlaC85},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@article{Holzmann97,
|
||||
author = {Gerard J. Holzmann},
|
||||
title = {The Model Checker {SPIN}},
|
||||
journal = {{IEEE} Trans. Software Eng.},
|
||||
volume = {23},
|
||||
number = {5},
|
||||
pages = {279--295},
|
||||
year = {1997},
|
||||
url = {https://doi.org/10.1109/32.588521},
|
||||
doi = {10.1109/32.588521},
|
||||
timestamp = {Wed, 17 May 2017 10:56:37 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/journals/tse/Holzmann97},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@inproceedings{SPOT2,
|
||||
author = {Alexandre Duret{-}Lutz and
|
||||
Alexandre Lewkowicz and
|
||||
Amaury Fauchille and
|
||||
Thibaud Michaud and
|
||||
Etienne Renault and
|
||||
Laurent Xu},
|
||||
title = {Spot 2.0 - {A} Framework for {LTL} and {\textbackslash}omega -Automata
|
||||
Manipulation},
|
||||
booktitle = {Automated Technology for Verification and Analysis - 14th International
|
||||
Symposium, {ATVA} 2016, Chiba, Japan, October 17-20, 2016, Proceedings},
|
||||
pages = {122--129},
|
||||
year = {2016},
|
||||
crossref = {DBLP:conf/atva/2016},
|
||||
url = {https://doi.org/10.1007/978-3-319-46520-3\_8},
|
||||
doi = {10.1007/978-3-319-46520-3\_8},
|
||||
timestamp = {Tue, 14 May 2019 10:00:49 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/atva/Duret-LutzLFMRX16},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@proceedings{DBLP:conf/atva/2016,
|
||||
editor = {Cyrille Artho and
|
||||
Axel Legay and
|
||||
Doron Peled},
|
||||
title = {Automated Technology for Verification and Analysis - 14th International
|
||||
Symposium, {ATVA} 2016, Chiba, Japan, October 17-20, 2016, Proceedings},
|
||||
series = {Lecture Notes in Computer Science},
|
||||
volume = {9938},
|
||||
year = {2016},
|
||||
url = {https://doi.org/10.1007/978-3-319-46520-3},
|
||||
doi = {10.1007/978-3-319-46520-3},
|
||||
isbn = {978-3-319-46519-7},
|
||||
timestamp = {Tue, 14 May 2019 10:00:49 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/atva/2016},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@inproceedings{HolzmannPY96,
|
||||
author = {Gerard J. Holzmann and
|
||||
Doron A. Peled and
|
||||
Mihalis Yannakakis},
|
||||
title = {On nested depth first search},
|
||||
booktitle = {The Spin Verification System, Proceedings of a {DIMACS} Workshop,
|
||||
New Brunswick, New Jersey, USA, August, 1996},
|
||||
pages = {23--31},
|
||||
year = {1996},
|
||||
crossref = {DBLP:conf/dimacs/dimacs32},
|
||||
url = {https://doi.org/10.1090/dimacs/032/03},
|
||||
doi = {10.1090/dimacs/032/03},
|
||||
timestamp = {Tue, 16 Jul 2019 16:47:56 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/dimacs/HolzmannPY96},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@proceedings{DBLP:conf/dimacs/dimacs32,
|
||||
editor = {Jean{-}Charles Gr{\'{e}}goire and
|
||||
Gerard J. Holzmann and
|
||||
Doron A. Peled},
|
||||
title = {The Spin Verification System, Proceedings of a {DIMACS} Workshop,
|
||||
New Brunswick, New Jersey, USA, August, 1996},
|
||||
series = {{DIMACS} Series in Discrete Mathematics and Theoretical Computer Science},
|
||||
volume = {32},
|
||||
publisher = {{DIMACS/AMS}},
|
||||
year = {1997},
|
||||
url = {https://doi.org/10.1090/dimacs/032},
|
||||
doi = {10.1090/dimacs/032},
|
||||
isbn = {978-0-8218-0680-7},
|
||||
timestamp = {Tue, 16 Jul 2019 16:47:56 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/dimacs/dimacs32},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@article{FernandezMJJ92,
|
||||
author = {Jean{-}Claude Fernandez and
|
||||
Laurent Mounier and
|
||||
Claude Jard and
|
||||
Thierry J{\'{e}}ron},
|
||||
title = {On-the-fly Verification of Finite Transition Systems},
|
||||
journal = {Formal Methods in System Design},
|
||||
volume = {1},
|
||||
number = {2/3},
|
||||
pages = {251--273},
|
||||
year = {1992},
|
||||
url = {https://doi.org/10.1007/BF00121127},
|
||||
doi = {10.1007/BF00121127},
|
||||
timestamp = {Mon, 16 Sep 2019 14:47:14 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/journals/fmsd/FernandezMJJ92},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@article{Peled96,
|
||||
author = {Doron A. Peled},
|
||||
title = {Combining Partial Order Reductions with On-the-Fly Model-Checking},
|
||||
journal = {Formal Methods in System Design},
|
||||
volume = {8},
|
||||
number = {1},
|
||||
pages = {39--64},
|
||||
year = {1996},
|
||||
url = {https://doi.org/10.1007/BF00121262},
|
||||
doi = {10.1007/BF00121262},
|
||||
timestamp = {Sat, 27 May 2017 14:24:05 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/journals/fmsd/Peled96},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@article{ClarkeGH97,
|
||||
author = {Edmund M. Clarke and
|
||||
Orna Grumberg and
|
||||
Kiyoharu Hamaguchi},
|
||||
title = {Another Look at {LTL} Model Checking},
|
||||
journal = {Formal Methods in System Design},
|
||||
volume = {10},
|
||||
number = {1},
|
||||
pages = {47--71},
|
||||
year = {1997},
|
||||
url = {https://doi.org/10.1023/A:1008615614281},
|
||||
doi = {10.1023/A:1008615614281},
|
||||
timestamp = {Sat, 27 May 2017 14:24:04 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/journals/fmsd/ClarkeGH97},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@inproceedings{BabarBDM10,
|
||||
author = {Junaid Babar and
|
||||
Marco Beccuti and
|
||||
Susanna Donatelli and
|
||||
Andrew S. Miner},
|
||||
title = {GreatSPN Enhanced with Decision Diagram Data Structures},
|
||||
booktitle = {Applications and Theory of Petri Nets, 31st International Conference,
|
||||
{PETRI} {NETS} 2010, Braga, Portugal, June 21-25, 2010. Proceedings},
|
||||
pages = {308--317},
|
||||
year = {2010},
|
||||
crossref = {DBLP:conf/apn/2010},
|
||||
url = {https://doi.org/10.1007/978-3-642-13675-7\_19},
|
||||
doi = {10.1007/978-3-642-13675-7\_19},
|
||||
timestamp = {Tue, 14 May 2019 10:00:45 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/apn/BabarBDM10},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@proceedings{DBLP:conf/apn/2010,
|
||||
editor = {Johan Lilius and
|
||||
Wojciech Penczek},
|
||||
title = {Applications and Theory of Petri Nets, 31st International Conference,
|
||||
{PETRI} {NETS} 2010, Braga, Portugal, June 21-25, 2010. Proceedings},
|
||||
series = {Lecture Notes in Computer Science},
|
||||
volume = {6128},
|
||||
publisher = {Springer},
|
||||
year = {2010},
|
||||
url = {https://doi.org/10.1007/978-3-642-13675-7},
|
||||
doi = {10.1007/978-3-642-13675-7},
|
||||
isbn = {978-3-642-13674-0},
|
||||
timestamp = {Tue, 14 May 2019 10:00:45 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/apn/2010},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@article{MDD,
|
||||
author = {Kam, Timothy and Villa, Tiziano and Brayton, R.K.},
|
||||
year = {1998},
|
||||
month = {01},
|
||||
pages = {},
|
||||
title = {Multi-valued decision diagrams: Theory and applications," Multiple-Valued Logic},
|
||||
volume = {4},
|
||||
journal = {Multiple-Valued Logic}
|
||||
}
|
||||
|
||||
@inproceedings{Clarke08,
|
||||
author = {Edmund M. Clarke},
|
||||
title = {The Birth of Model Checking},
|
||||
booktitle = {25 Years of Model Checking - History, Achievements, Perspectives},
|
||||
pages = {1--26},
|
||||
year = {2008},
|
||||
crossref = {DBLP:conf/spin/5000},
|
||||
url = {https://doi.org/10.1007/978-3-540-69850-0\_1},
|
||||
doi = {10.1007/978-3-540-69850-0\_1},
|
||||
timestamp = {Tue, 14 May 2019 10:00:36 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/spin/Clarke08},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@proceedings{DBLP:conf/spin/5000,
|
||||
editor = {Orna Grumberg and
|
||||
Helmut Veith},
|
||||
title = {25 Years of Model Checking - History, Achievements, Perspectives},
|
||||
series = {Lecture Notes in Computer Science},
|
||||
volume = {5000},
|
||||
publisher = {Springer},
|
||||
year = {2008},
|
||||
url = {https://doi.org/10.1007/978-3-540-69850-0},
|
||||
doi = {10.1007/978-3-540-69850-0},
|
||||
isbn = {978-3-540-69849-4},
|
||||
timestamp = {Tue, 14 May 2019 10:00:36 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/spin/5000},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@inproceedings{KantLMPBD15,
|
||||
author = {Gijs Kant and
|
||||
Alfons Laarman and
|
||||
Jeroen Meijer and
|
||||
Jaco van de Pol and
|
||||
Stefan Blom and
|
||||
Tom van Dijk},
|
||||
title = {LTSmin: High-Performance Language-Independent Model Checking},
|
||||
booktitle = {Tools and Algorithms for the Construction and Analysis of Systems
|
||||
- 21st International Conference, {TACAS} 2015, Held as Part of the
|
||||
European Joint Conferences on Theory and Practice of Software, {ETAPS}
|
||||
2015, London, UK, April 11-18, 2015. Proceedings},
|
||||
pages = {692--707},
|
||||
year = {2015},
|
||||
crossref = {DBLP:conf/tacas/2015},
|
||||
url = {https://doi.org/10.1007/978-3-662-46681-0\_61},
|
||||
doi = {10.1007/978-3-662-46681-0\_61},
|
||||
timestamp = {Tue, 20 Aug 2019 15:27:24 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/tacas/KantLMPBD15},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@proceedings{DBLP:conf/tacas/2015,
|
||||
editor = {Christel Baier and
|
||||
Cesare Tinelli},
|
||||
title = {Tools and Algorithms for the Construction and Analysis of Systems
|
||||
- 21st International Conference, {TACAS} 2015, Held as Part of the
|
||||
European Joint Conferences on Theory and Practice of Software, {ETAPS}
|
||||
2015, London, UK, April 11-18, 2015. Proceedings},
|
||||
series = {Lecture Notes in Computer Science},
|
||||
volume = {9035},
|
||||
publisher = {Springer},
|
||||
year = {2015},
|
||||
url = {https://doi.org/10.1007/978-3-662-46681-0},
|
||||
doi = {10.1007/978-3-662-46681-0},
|
||||
isbn = {978-3-662-46680-3},
|
||||
timestamp = {Tue, 14 May 2019 10:00:53 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/tacas/2015},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@article{DijkP17,
|
||||
author = {Tom van Dijk and
|
||||
Jaco van de Pol},
|
||||
title = {Sylvan: multi-core framework for decision diagrams},
|
||||
journal = {{STTT}},
|
||||
volume = {19},
|
||||
number = {6},
|
||||
pages = {675--696},
|
||||
year = {2017},
|
||||
url = {https://doi.org/10.1007/s10009-016-0433-2},
|
||||
doi = {10.1007/s10009-016-0433-2},
|
||||
timestamp = {Sun, 02 Jun 2019 21:00:20 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/journals/sttt/DijkP17},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@inproceedings{BabarM10,
|
||||
author = {Junaid Babar and
|
||||
Andrew S. Miner},
|
||||
title = {Meddly: Multi-terminal and Edge-Valued Decision Diagram LibrarY},
|
||||
booktitle = {{QEST} 2010, Seventh International Conference on the Quantitative
|
||||
Evaluation of Systems, Williamsburg, Virginia, USA, 15-18 September
|
||||
2010},
|
||||
pages = {195--196},
|
||||
year = {2010},
|
||||
crossref = {DBLP:conf/qest/2010},
|
||||
url = {https://doi.org/10.1109/QEST.2010.34},
|
||||
doi = {10.1109/QEST.2010.34},
|
||||
timestamp = {Wed, 16 Oct 2019 14:14:56 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/qest/BabarM10},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@proceedings{DBLP:conf/qest/2010,
|
||||
title = {{QEST} 2010, Seventh International Conference on the Quantitative
|
||||
Evaluation of Systems, Williamsburg, Virginia, USA, 15-18 September
|
||||
2010},
|
||||
publisher = {{IEEE} Computer Society},
|
||||
year = {2010},
|
||||
url = {https://ieeexplore.ieee.org/xpl/conhome/5599994/proceeding},
|
||||
isbn = {978-0-7695-4188-4},
|
||||
timestamp = {Wed, 16 Oct 2019 14:14:56 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/qest/2010},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@inproceedings{CimattiCGGPRST02,
|
||||
author = {Alessandro Cimatti and
|
||||
Edmund M. Clarke and
|
||||
Enrico Giunchiglia and
|
||||
Fausto Giunchiglia and
|
||||
Marco Pistore and
|
||||
Marco Roveri and
|
||||
Roberto Sebastiani and
|
||||
Armando Tacchella},
|
||||
title = {NuSMV 2: An OpenSource Tool for Symbolic Model Checking},
|
||||
booktitle = {Computer Aided Verification, 14th International Conference, {CAV}
|
||||
2002,Copenhagen, Denmark, July 27-31, 2002, Proceedings},
|
||||
pages = {359--364},
|
||||
year = {2002},
|
||||
crossref = {DBLP:conf/cav/2002},
|
||||
url = {https://doi.org/10.1007/3-540-45657-0\_29},
|
||||
doi = {10.1007/3-540-45657-0\_29},
|
||||
timestamp = {Sun, 02 Jun 2019 21:10:36 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/cav/CimattiCGGPRST02},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@proceedings{DBLP:conf/cav/2002,
|
||||
editor = {Ed Brinksma and
|
||||
Kim Guldstrand Larsen},
|
||||
title = {Computer Aided Verification, 14th International Conference, {CAV}
|
||||
2002,Copenhagen, Denmark, July 27-31, 2002, Proceedings},
|
||||
series = {Lecture Notes in Computer Science},
|
||||
volume = {2404},
|
||||
publisher = {Springer},
|
||||
year = {2002},
|
||||
url = {https://doi.org/10.1007/3-540-45657-0},
|
||||
doi = {10.1007/3-540-45657-0},
|
||||
isbn = {3-540-43997-8},
|
||||
timestamp = {Tue, 14 May 2019 10:00:43 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/cav/2002},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@inproceedings{BiereCCZ99,
|
||||
author = {Armin Biere and
|
||||
Alessandro Cimatti and
|
||||
Edmund M. Clarke and
|
||||
Yunshan Zhu},
|
||||
title = {Symbolic Model Checking without BDDs},
|
||||
booktitle = {Tools and Algorithms for Construction and Analysis of Systems, 5th
|
||||
International Conference, {TACAS} '99, Held as Part of the European
|
||||
Joint Conferences on the Theory and Practice of Software, ETAPS'99,
|
||||
Amsterdam, The Netherlands, March 22-28, 1999, Proceedings},
|
||||
pages = {193--207},
|
||||
year = {1999},
|
||||
crossref = {DBLP:conf/tacas/1999},
|
||||
url = {https://doi.org/10.1007/3-540-49059-0\_14},
|
||||
doi = {10.1007/3-540-49059-0\_14},
|
||||
timestamp = {Sun, 02 Jun 2019 21:19:27 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/tacas/BiereCCZ99},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@proceedings{DBLP:conf/tacas/1999,
|
||||
editor = {Rance Cleaveland},
|
||||
title = {Tools and Algorithms for Construction and Analysis of Systems, 5th
|
||||
International Conference, {TACAS} '99, Held as Part of the European
|
||||
Joint Conferences on the Theory and Practice of Software, ETAPS'99,
|
||||
Amsterdam, The Netherlands, March 22-28, 1999, Proceedings},
|
||||
series = {Lecture Notes in Computer Science},
|
||||
volume = {1579},
|
||||
publisher = {Springer},
|
||||
year = {1999},
|
||||
url = {https://doi.org/10.1007/3-540-49059-0},
|
||||
doi = {10.1007/3-540-49059-0},
|
||||
isbn = {3-540-65703-7},
|
||||
timestamp = {Tue, 14 May 2019 10:00:53 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/tacas/1999},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@inproceedings{AmparoreDBGM17,
|
||||
author = {Elvio Gilberto Amparore and
|
||||
Susanna Donatelli and
|
||||
Marco Beccuti and
|
||||
Giulio Garbi and
|
||||
Andrew S. Miner},
|
||||
title = {Decision Diagrams for Petri Nets: Which Variable Ordering?},
|
||||
booktitle = {Proceedings of the International Workshop on Petri Nets and Software
|
||||
Engineering (PNSE'17), co-located with the38th International Conference
|
||||
on Application and Theory of Petri Nets and Concurrency Petri Nets
|
||||
2017 and the 17th International Conference on Application of Concurrency
|
||||
to System Design {ACSD} 2017, Zaragoza, Spain, June 25-30, 2017},
|
||||
pages = {31--50},
|
||||
year = {2017},
|
||||
crossref = {DBLP:conf/apn/2017pnse},
|
||||
url = {http://ceur-ws.org/Vol-1846/paper3.pdf},
|
||||
timestamp = {Tue, 28 May 2019 16:23:32 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/apn/AmparoreDBGM17},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@proceedings{DBLP:conf/apn/2017pnse,
|
||||
editor = {Daniel Moldt and
|
||||
Lawrence Cabac and
|
||||
Heiko R{\"{o}}lke},
|
||||
title = {Proceedings of the International Workshop on Petri Nets and Software
|
||||
Engineering (PNSE'17), co-located with the38th International Conference
|
||||
on Application and Theory of Petri Nets and Concurrency Petri Nets
|
||||
2017 and the 17th International Conference on Application of Concurrency
|
||||
to System Design {ACSD} 2017, Zaragoza, Spain, June 25-30, 2017},
|
||||
series = {{CEUR} Workshop Proceedings},
|
||||
volume = {1846},
|
||||
publisher = {CEUR-WS.org},
|
||||
year = {2017},
|
||||
url = {http://ceur-ws.org/Vol-1846},
|
||||
urn = {urn:nbn:de:0074-1846-1},
|
||||
timestamp = {Tue, 28 May 2019 16:23:32 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/apn/2017pnse},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@article{BolligW96,
|
||||
author = {Beate Bollig and
|
||||
Ingo Wegener},
|
||||
title = {Improving the Variable Ordering of OBDDs Is NP-Complete},
|
||||
journal = {{IEEE} Trans. Computers},
|
||||
volume = {45},
|
||||
number = {9},
|
||||
pages = {993--1002},
|
||||
year = {1996},
|
||||
url = {https://doi.org/10.1109/12.537122},
|
||||
doi = {10.1109/12.537122},
|
||||
timestamp = {Wed, 14 Nov 2018 10:48:34 +0100},
|
||||
biburl = {https://dblp.org/rec/bib/journals/tc/BolligW96},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@article{Bryant86,
|
||||
author = {Randal E. Bryant},
|
||||
title = {Graph-Based Algorithms for Boolean Function Manipulation},
|
||||
journal = {{IEEE} Trans. Computers},
|
||||
volume = {35},
|
||||
number = {8},
|
||||
pages = {677--691},
|
||||
year = {1986},
|
||||
url = {https://doi.org/10.1109/TC.1986.1676819},
|
||||
doi = {10.1109/TC.1986.1676819},
|
||||
timestamp = {Wed, 14 Nov 2018 10:48:32 +0100},
|
||||
biburl = {https://dblp.org/rec/bib/journals/tc/Bryant86},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@inproceedings{Vardi95,
|
||||
author = {Moshe Y. Vardi},
|
||||
title = {An Automata-Theoretic Approach to Linear Temporal Logic},
|
||||
booktitle = {Logics for Concurrency - Structure versus Automata (8th Banff Higher
|
||||
Order Workshop, Banff, Canada, August 27 - September 3, 1995, Proceedings)},
|
||||
pages = {238--266},
|
||||
year = {1995},
|
||||
crossref = {DBLP:conf/banff/1995},
|
||||
url = {https://doi.org/10.1007/3-540-60915-6\_6},
|
||||
doi = {10.1007/3-540-60915-6\_6},
|
||||
timestamp = {Sun, 02 Jun 2019 21:10:52 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/banff/Vardi95},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@proceedings{DBLP:conf/banff/1995,
|
||||
editor = {Faron Moller and
|
||||
Graham M. Birtwistle},
|
||||
title = {Logics for Concurrency - Structure versus Automata (8th Banff Higher
|
||||
Order Workshop, Banff, Canada, August 27 - September 3, 1995, Proceedings)},
|
||||
series = {Lecture Notes in Computer Science},
|
||||
volume = {1043},
|
||||
publisher = {Springer},
|
||||
year = {1996},
|
||||
url = {https://doi.org/10.1007/3-540-60915-6},
|
||||
doi = {10.1007/3-540-60915-6},
|
||||
isbn = {3-540-60915-6},
|
||||
timestamp = {Sun, 02 Jun 2019 21:10:52 +0200},
|
||||
biburl = {https://dblp.org/rec/bib/conf/banff/1995},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@article{VardiW94,
|
||||
author = {Moshe Y. Vardi and
|
||||
Pierre Wolper},
|
||||
title = {Reasoning About Infinite Computations},
|
||||
journal = {Inf. Comput.},
|
||||
volume = {115},
|
||||
number = {1},
|
||||
pages = {1--37},
|
||||
year = {1994},
|
||||
url = {https://doi.org/10.1006/inco.1994.1092},
|
||||
doi = {10.1006/inco.1994.1092},
|
||||
timestamp = {Wed, 14 Nov 2018 10:35:07 +0100},
|
||||
biburl = {https://dblp.org/rec/bib/journals/iandc/VardiW94},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
||||
|
||||
@article{ClarkeES86,
|
||||
author = {Edmund M. Clarke and
|
||||
E. Allen Emerson and
|
||||
A. Prasad Sistla},
|
||||
title = {Automatic Verification of Finite-State Concurrent Systems Using Temporal
|
||||
Logic Specifications},
|
||||
journal = {{ACM} Trans. Program. Lang. Syst.},
|
||||
volume = {8},
|
||||
number = {2},
|
||||
pages = {244--263},
|
||||
year = {1986},
|
||||
url = {https://doi.org/10.1145/5397.5399},
|
||||
doi = {10.1145/5397.5399},
|
||||
timestamp = {Wed, 14 Nov 2018 10:30:40 +0100},
|
||||
biburl = {https://dblp.org/rec/bib/journals/toplas/ClarkeES86},
|
||||
bibsource = {dblp computer science bibliography, https://dblp.org}
|
||||
}
|
46
tesi/galla/tesi.blg
Normal file
46
tesi/galla/tesi.blg
Normal file
|
@ -0,0 +1,46 @@
|
|||
This is BibTeX, Version 0.99d (TeX Live 2019 Gentoo Linux)
|
||||
Capacity: max_strings=100000, hash_size=100000, hash_prime=85009
|
||||
The top-level auxiliary file: tesi.aux
|
||||
The style file: /usr/share/texmf-dist/bibtex/bst/base/acm.bst
|
||||
Database file #1: tesi.bib
|
||||
You've used 26 entries,
|
||||
2253 wiz_defined-function locations,
|
||||
761 strings with 10388 characters,
|
||||
and the built_in function-call counts, 10476 in all, are:
|
||||
= -- 1027
|
||||
> -- 463
|
||||
< -- 0
|
||||
+ -- 184
|
||||
- -- 153
|
||||
* -- 858
|
||||
:= -- 1624
|
||||
add.period$ -- 78
|
||||
call.type$ -- 26
|
||||
change.case$ -- 143
|
||||
chr.to.int$ -- 0
|
||||
cite$ -- 26
|
||||
duplicate$ -- 406
|
||||
empty$ -- 857
|
||||
format.name$ -- 153
|
||||
if$ -- 2231
|
||||
int.to.chr$ -- 0
|
||||
int.to.str$ -- 26
|
||||
missing$ -- 27
|
||||
newline$ -- 133
|
||||
num.names$ -- 72
|
||||
pop$ -- 140
|
||||
preamble$ -- 1
|
||||
purify$ -- 118
|
||||
quote$ -- 0
|
||||
skip$ -- 285
|
||||
stack$ -- 0
|
||||
substring$ -- 756
|
||||
swap$ -- 145
|
||||
text.length$ -- 0
|
||||
text.prefix$ -- 0
|
||||
top$ -- 0
|
||||
type$ -- 102
|
||||
warning$ -- 0
|
||||
while$ -- 122
|
||||
width$ -- 28
|
||||
write$ -- 292
|
692
tesi/galla/tesi.log
Normal file
692
tesi/galla/tesi.log
Normal file
|
@ -0,0 +1,692 @@
|
|||
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019 Gentoo Linux) (preloaded format=pdflatex 2020.2.13) 13 FEB 2020 15:23
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
**tesi.tex
|
||||
(./tesi.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
|
||||
)
|
||||
(/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.
|
||||
))
|
||||
(/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: pdftex.def on input line 99.
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex
|
||||
))
|
||||
\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: \pdf@primitive is available.
|
||||
Package pdftexcmds Info: \pdf@ifprimitive is available.
|
||||
Package pdftexcmds Info: \pdfdraftmode 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
|
||||
) (./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
|
||||
Now handling font encoding TS1 ...
|
||||
... processing UTF-8 mapping file for font encoding TS1
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/base/ts1enc.dfu
|
||||
File: ts1enc.dfu 2018/10/05 v1.2f UTF-8 support for inputenc
|
||||
defining Unicode char U+00A2 (decimal 162)
|
||||
defining Unicode char U+00A3 (decimal 163)
|
||||
defining Unicode char U+00A4 (decimal 164)
|
||||
defining Unicode char U+00A5 (decimal 165)
|
||||
defining Unicode char U+00A6 (decimal 166)
|
||||
defining Unicode char U+00A7 (decimal 167)
|
||||
defining Unicode char U+00A8 (decimal 168)
|
||||
defining Unicode char U+00A9 (decimal 169)
|
||||
defining Unicode char U+00AA (decimal 170)
|
||||
defining Unicode char U+00AC (decimal 172)
|
||||
defining Unicode char U+00AE (decimal 174)
|
||||
defining Unicode char U+00AF (decimal 175)
|
||||
defining Unicode char U+00B0 (decimal 176)
|
||||
defining Unicode char U+00B1 (decimal 177)
|
||||
defining Unicode char U+00B2 (decimal 178)
|
||||
defining Unicode char U+00B3 (decimal 179)
|
||||
defining Unicode char U+00B4 (decimal 180)
|
||||
defining Unicode char U+00B5 (decimal 181)
|
||||
defining Unicode char U+00B6 (decimal 182)
|
||||
defining Unicode char U+00B7 (decimal 183)
|
||||
defining Unicode char U+00B9 (decimal 185)
|
||||
defining Unicode char U+00BA (decimal 186)
|
||||
defining Unicode char U+00BC (decimal 188)
|
||||
defining Unicode char U+00BD (decimal 189)
|
||||
defining Unicode char U+00BE (decimal 190)
|
||||
defining Unicode char U+00D7 (decimal 215)
|
||||
defining Unicode char U+00F7 (decimal 247)
|
||||
defining Unicode char U+0192 (decimal 402)
|
||||
defining Unicode char U+02C7 (decimal 711)
|
||||
defining Unicode char U+02D8 (decimal 728)
|
||||
defining Unicode char U+02DD (decimal 733)
|
||||
defining Unicode char U+0E3F (decimal 3647)
|
||||
defining Unicode char U+2016 (decimal 8214)
|
||||
defining Unicode char U+2020 (decimal 8224)
|
||||
defining Unicode char U+2021 (decimal 8225)
|
||||
defining Unicode char U+2022 (decimal 8226)
|
||||
defining Unicode char U+2030 (decimal 8240)
|
||||
defining Unicode char U+2031 (decimal 8241)
|
||||
defining Unicode char U+203B (decimal 8251)
|
||||
defining Unicode char U+203D (decimal 8253)
|
||||
defining Unicode char U+2044 (decimal 8260)
|
||||
defining Unicode char U+204E (decimal 8270)
|
||||
defining Unicode char U+2052 (decimal 8274)
|
||||
defining Unicode char U+20A1 (decimal 8353)
|
||||
defining Unicode char U+20A4 (decimal 8356)
|
||||
defining Unicode char U+20A6 (decimal 8358)
|
||||
defining Unicode char U+20A9 (decimal 8361)
|
||||
defining Unicode char U+20AB (decimal 8363)
|
||||
defining Unicode char U+20AC (decimal 8364)
|
||||
defining Unicode char U+20B1 (decimal 8369)
|
||||
defining Unicode char U+2103 (decimal 8451)
|
||||
defining Unicode char U+2116 (decimal 8470)
|
||||
defining Unicode char U+2117 (decimal 8471)
|
||||
defining Unicode char U+211E (decimal 8478)
|
||||
defining Unicode char U+2120 (decimal 8480)
|
||||
defining Unicode char U+2122 (decimal 8482)
|
||||
defining Unicode char U+2126 (decimal 8486)
|
||||
defining Unicode char U+2127 (decimal 8487)
|
||||
defining Unicode char U+212E (decimal 8494)
|
||||
defining Unicode char U+2190 (decimal 8592)
|
||||
defining Unicode char U+2191 (decimal 8593)
|
||||
defining Unicode char U+2192 (decimal 8594)
|
||||
defining Unicode char U+2193 (decimal 8595)
|
||||
defining Unicode char U+2329 (decimal 9001)
|
||||
defining Unicode char U+232A (decimal 9002)
|
||||
defining Unicode char U+2422 (decimal 9250)
|
||||
defining Unicode char U+25E6 (decimal 9702)
|
||||
defining Unicode char U+25EF (decimal 9711)
|
||||
defining Unicode char U+266A (decimal 9834)
|
||||
defining Unicode char U+FEFF (decimal 65279)
|
||||
))
|
||||
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)
|
||||
Now handling font encoding PD1 ...
|
||||
... no UTF-8 mapping file for font encoding PD1
|
||||
)
|
||||
\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): hpdftex.
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
File: hpdftex.def 2018/11/30 v6.88e Hyperref driver for pdfTeX
|
||||
\Fld@listcount=\count116
|
||||
\c@bookmark@seq@number=\count117
|
||||
|
||||
(/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
|
||||
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=\count118
|
||||
\float@exts=\toks26
|
||||
\float@box=\box38
|
||||
\@float@everytoks=\toks27
|
||||
\@floatcapt=\box39
|
||||
)
|
||||
\@float@every@algorithm=\toks28
|
||||
\c@algorithm=\count119
|
||||
)
|
||||
(/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=\count120
|
||||
\c@ALG@rem=\count121
|
||||
\c@ALG@nested=\count122
|
||||
\ALG@tlm=\skip54
|
||||
\ALG@thistlm=\skip55
|
||||
\c@ALG@Lnr=\count123
|
||||
\c@ALG@blocknr=\count124
|
||||
\c@ALG@storecount=\count125
|
||||
\c@ALG@tmpcounter=\count126
|
||||
\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
|
||||
)
|
||||
\c@definition=\count127
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/listings/listings.sty
|
||||
\lst@mode=\count128
|
||||
\lst@gtempboxa=\box40
|
||||
\lst@token=\toks35
|
||||
\lst@length=\count129
|
||||
\lst@currlwidth=\dimen124
|
||||
\lst@column=\count130
|
||||
\lst@pos=\count131
|
||||
\lst@lostspace=\dimen125
|
||||
\lst@width=\dimen126
|
||||
\lst@newlines=\count132
|
||||
\lst@lineno=\count133
|
||||
\lst@maxwidth=\dimen127
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
File: lstmisc.sty 2019/02/27 1.8b (Carsten Heinz)
|
||||
\c@lstnumber=\count134
|
||||
\lst@skipnumbers=\count135
|
||||
\lst@framebox=\box41
|
||||
)
|
||||
(/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: pdftex.def on input line 147.
|
||||
) (./tesi.aux)
|
||||
\openout1 = `tesi.aux'.
|
||||
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 35.
|
||||
LaTeX Font Info: Try loading font information for TS1+cmr on input line 35.
|
||||
|
||||
(/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 35.
|
||||
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
|
||||
(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
[Loading MPS to PDF converter (version 2006.09.02).]
|
||||
\scratchcounter=\count136
|
||||
\scratchdimen=\dimen128
|
||||
\scratchbox=\box42
|
||||
\nofMPsegments=\count137
|
||||
\nofMParguments=\count138
|
||||
\everyMPshowfont=\toks36
|
||||
\MPscratchCnt=\count139
|
||||
\MPscratchDim=\dimen129
|
||||
\MPnumerator=\count140
|
||||
\makeMPintoPDFobject=\count141
|
||||
\everyMPtoPDFconversion=\toks37
|
||||
) (/usr/share/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
|
||||
Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/oberdiek/grfext.sty
|
||||
Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO)
|
||||
)
|
||||
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
|
||||
38.
|
||||
Package grfext Info: Graphics extension search list:
|
||||
(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE
|
||||
G,.JBIG2,.JB2,.eps]
|
||||
(grfext) \AppendGraphicsExtensions on input line 456.
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
|
||||
e
|
||||
))
|
||||
\AtBeginShipoutBox=\box43
|
||||
Package hyperref Info: Link coloring OFF on input line 35.
|
||||
|
||||
(/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=\count142
|
||||
)
|
||||
LaTeX Info: Redefining \ref on input line 35.
|
||||
LaTeX Info: Redefining \pageref on input line 35.
|
||||
LaTeX Info: Redefining \nameref on input line 35.
|
||||
(./tesi.out)
|
||||
(./tesi.out)
|
||||
\@outlinefile=\write3
|
||||
\openout3 = `tesi.out'.
|
||||
|
||||
\c@lstlisting=\count143
|
||||
LaTeX Font Info: Try loading font information for U+msa on input line 38.
|
||||
(/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 38.
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
|
||||
) [1
|
||||
|
||||
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 102--115
|
||||
|
||||
[]
|
||||
|
||||
[2] [3] [4] [5] [6] [7] [8] (./tesi.bbl [9] [10] [11])
|
||||
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 462.
|
||||
[12]
|
||||
Package atveryend Info: Empty hook `AfterLastShipout' on input line 462.
|
||||
(./tesi.aux)
|
||||
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 462.
|
||||
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 462.
|
||||
Package rerunfilecheck Info: File `tesi.out' has not changed.
|
||||
(rerunfilecheck) Checksum: 29320EA055B849F5FC1E6487CC46E9EB;593.
|
||||
Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 462.
|
||||
)
|
||||
Here is how much of TeX's memory you used:
|
||||
9120 strings out of 494553
|
||||
128213 string characters out of 6177841
|
||||
215243 words of memory out of 5000000
|
||||
12566 multiletter control sequences out of 15000+600000
|
||||
25828 words of font info for 67 fonts, out of 8000000 for 9000
|
||||
14 hyphenation exceptions out of 8191
|
||||
36i,6n,32p,285b,435s stack positions out of 5000i,500n,10000p,200000b,80000s
|
||||
{/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc}{/usr/share/t
|
||||
exmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.enc}</usr/share/texmf-dist/font
|
||||
s/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/texmf-dist/fonts/type1/public
|
||||
/amsfonts/cm/cmmi6.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cm
|
||||
mi8.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/s
|
||||
hare/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb></usr/share/texmf-dist/
|
||||
fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/share/texmf-dist/fonts/type1/pu
|
||||
blic/amsfonts/cm/cmsy8.pfb></usr/share/texmf-dist/fonts/type1/public/amsfonts/s
|
||||
ymbols/msam10.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfbi1095.p
|
||||
fb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1000.pfb></usr/share/
|
||||
texmf-dist/fonts/type1/public/cm-super/sfbx1095.pfb></usr/share/texmf-dist/font
|
||||
s/type1/public/cm-super/sfbx1200.pfb></usr/share/texmf-dist/fonts/type1/public/
|
||||
cm-super/sfbx1440.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfcc10
|
||||
95.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm0800.pfb></usr/sh
|
||||
are/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb></usr/share/texmf-dist/
|
||||
fonts/type1/public/cm-super/sfrm1095.pfb></usr/share/texmf-dist/fonts/type1/pub
|
||||
lic/cm-super/sfrm1200.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sf
|
||||
rm1728.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfti0800.pfb></us
|
||||
r/share/texmf-dist/fonts/type1/public/cm-super/sfti1095.pfb>
|
||||
Output written on tesi.pdf (12 pages, 349379 bytes).
|
||||
PDF statistics:
|
||||
263 PDF objects out of 1000 (max. 8388607)
|
||||
225 compressed objects within 3 object streams
|
||||
59 named destinations out of 1000 (max. 500000)
|
||||
73 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
467
tesi/galla/tesi.org
Normal file
467
tesi/galla/tesi.org
Normal file
|
@ -0,0 +1,467 @@
|
|||
#+TITLE: An automata-based implementation of a symbolic CTL* model checker
|
||||
#+AUTHOR: Francesco Galla'
|
||||
#+EMAIL: galla@di.unito.it
|
||||
#+DATE:
|
||||
|
||||
#+LANGUAGE: en
|
||||
|
||||
#+LaTeX_CLASS: article
|
||||
#+LaTeX_HEADER: \usepackage[utf8]{inputenc}
|
||||
#+LaTeX_HEADER: \usepackage{algorithm}
|
||||
#+LaTeX_HEADER: \usepackage{algpseudocode}
|
||||
#+LaTeX_HEADER: \usepackage{amsmath,amssymb,amsthm}
|
||||
#+Latex_HEADER: \newtheorem{definition}{Definition}
|
||||
#+LaTeX_HEADER: \usepackage{graphicx}
|
||||
#+LaTeX_HEADER: \usepackage{listings}
|
||||
#+LaTeX_HEADER: \usepackage{color}
|
||||
|
||||
#+EXPORT_SELECT_TAGS: export
|
||||
#+EXPORT_EXCLUDE_TAGS: noexport
|
||||
#+OPTIONS: H:2 toc:nil \n:nil @:t ::t |:t ^:{} _:{} *:t TeX:t LaTeX:t
|
||||
#+STARTUP: showall
|
||||
|
||||
\begin{abstract}
|
||||
|
||||
This dissertation presents the implementation of a symbolic CTL* model
|
||||
checking algorithm based on multi-valued decision diagrams (MDDs).
|
||||
Given a Petri Net model and a CTL* proposition, the algorithm is capable
|
||||
of identifying LTL sub-formulae, translate them to Büchi automata and
|
||||
compute the synchronized product of each LTL formula with the model.
|
||||
MDDs are used to encode the Petri Net and such composition, provably
|
||||
lowering both system memory and time required to manipulate its graph
|
||||
of reachable states with respect to explicit model checking tecniques.
|
||||
By combining the sets of satisfying states for each LTL sub-formula
|
||||
according to the temporal quantifiers preceding them, the algorithm is
|
||||
capable of producing the boolean satisfaction result of the CTL* formula
|
||||
and a counterexample or witness run describing such outcome.
|
||||
Timed test runs executed againts a large set of models and specifications of
|
||||
LTL, CTL and CTL* temporal logics show competitive performance results
|
||||
with respect to other tools which process CTL* by translating each
|
||||
formula to $\mu$-calculus. This algorithm has been implemented as one
|
||||
of the free and open source programs composing the GreatSPN framework
|
||||
for formal verification of systems.
|
||||
|
||||
\end{abstract}
|
||||
|
||||
# Model checking is a formal verification technique intended to analyze
|
||||
# properties of system designs. Model checking is based upon a formal
|
||||
# model describing a system and a specification provided using a
|
||||
# temporal logic formula such as LTL, CTL or CTL*.
|
||||
# The algorithmic analysis of the Kripke structure representing the
|
||||
# composition of the model and the specification requires the
|
||||
# manipulation of the graph of its reachable states, which can be
|
||||
# arbitrarely large in size depending on model characteristics and
|
||||
# formula provided. Frequently, explicit enumeration of reachable states
|
||||
# of a complex model requires a large amount of memory and time.
|
||||
# Tecniques based on symbolic representation of such reachability graphs
|
||||
# exploit the abstractions provided by decision diagrams, provably
|
||||
# allowing for a sensible reduction in time and memory consumption while
|
||||
# ensuring equivalent results with respect to explicit tecniques. CTL*
|
||||
# is a temporal logic defined as a superset of Linear Temporal Logic
|
||||
# (LTL) and Computational Tree Logic (CTL). CTL* is motivated by the
|
||||
# incomparable expressiveness of LTL and CTL, which historically caused
|
||||
# a proliferation of model checking tools geared towards the former or
|
||||
# the latter logic, each one presenting its own limitations. The
|
||||
# theoretical literature formalizing symbolic CTL* model checking
|
||||
# algorithms describes two different approaches. One exploits the
|
||||
# translation of CTL* formulae to $\mu$-calculus and is currently used
|
||||
# by all model checking tools we were able to find and inspect. The
|
||||
# other identifies LTL sub-formulae contained into a given CTL*
|
||||
# proposition, obtains the sets of states satisfying such formulae using
|
||||
# a LTL model checkers and combines them according to the temporal
|
||||
# quantifier preceding each sub-formula to obtain a satisfaction result
|
||||
# and a counter-example or witness run on the given model. This
|
||||
# dissertation describes the implementation of a symbolic CTL* model
|
||||
# checker which uses such LTL-based tecnique at its core. Competitive
|
||||
# performance results were obtained by testing this algorithm against
|
||||
# other research tools which use the $\mu$-calculus tecnique. This
|
||||
# algorithm has been implemented as one of the programs composing the
|
||||
# GreatSPN framework for formal verification of systems based on Petri Nets.
|
||||
|
||||
|
||||
* Introduction
|
||||
|
||||
** Model Checking
|
||||
|
||||
Model checking is a formal verification technique intended to analyze properties
|
||||
of system designs. Given a formal model and a specification, the objective of
|
||||
model checking is to decide whether the behavior of the model satisfies the
|
||||
specification or not. The model is usually represented as a Kripke structure or
|
||||
by a high-level formalism that can be transformed into a Kripke structure.
|
||||
Examples of these formalisms are Petri Nets and Process algebra.
|
||||
|
||||
The specification is provided using a temporal logic expression, that is, a
|
||||
formula that expresses a temporal and logical statement. Temporal logics are
|
||||
modal logics geared towards the description of the temporal ordering of events.
|
||||
It is important to clarify that these logics do not consider precise timing
|
||||
requirements of activities or events, but reason about their
|
||||
/abstract temporal order/. For this reason, they are particularly useful when
|
||||
applied to concurrent systems in which all components proceed in a
|
||||
lock-step fashion over a discrete time domain. The system behavior is assumed to
|
||||
be observable at integral time points and each time point identifies a snapshot
|
||||
of all variables of the system, called /state/.
|
||||
|
||||
Two brands of temporal logics have been proposed over the years for specifying
|
||||
the properties of reactive systems. Linear Temporal Logic \cite{Pnueli77} is
|
||||
based on /linear time/, therefore considering every moment in time as having a
|
||||
unique possible future. Computational Tree Logic \cite{ClarkeE81} is defined
|
||||
upon /branching time/: it pictures the structure of time as a tree,
|
||||
allowing each moment in time to split into different possible futures.
|
||||
From now on we will refer to these two logics using their well-known acronyms
|
||||
LTL and CTL respectively.
|
||||
|
||||
# IMAGE: ltl vs ctl
|
||||
|
||||
The difference between LTL and CTL is rooted in their satisfaction relations,
|
||||
which are conceptually different. LTL is said to be path-based, since a
|
||||
system /S/ satisfies a LTL formula \phi if for all initial paths of /S/,
|
||||
paths starting in an intial state $s_{\textit{0}}$ satisfy \phi.
|
||||
Conversely, CTL is said to be state-based, since a system /S/ satisfies
|
||||
a CTL formula \phi if and only if \phi holds in all initial states of /S/.
|
||||
|
||||
Furthermore, the expressiveness of LTL and CTL temporal logics is incomparable
|
||||
\cite{Lamport80}. Conversely, CTL is particularly useful to express the
|
||||
/possibility/ of existence of a specific path of execution of a model, that
|
||||
is, the occurrence of an event happening on one branch but not necessarily all
|
||||
of them. This concept cannot be expressed using a formalism based on linear time
|
||||
such as LTL, which describes executions of a system, not the way those
|
||||
executions are organized in a branching tree. On the contrary, CTL cannot
|
||||
express situations in which the same behavior may occur on distinct branches at
|
||||
distinct times, while the ability of LTL to describe individual paths is
|
||||
more convenient in this case. In practice, the LTL formula *FG*\phi is not
|
||||
expressible in CTL, while the formula *AFAG*\phi is not expressible in LTL.
|
||||
Given the shortcomings of both these temporal logics, a superset of LTL and CTL
|
||||
called CTL* \cite{EmersonH86} has been introduced. \\
|
||||
|
||||
** A brief history of LTL model checking
|
||||
|
||||
Model checking LTL properties comes down to checking language emptyness of the
|
||||
syncronized product between the Kripke structure representing the model and a
|
||||
formalism which can represent a LTL formula while being translatable to a
|
||||
Kripke structure, namely a Büchi automaton. This /automata-theoretic approach/
|
||||
\cite{Vardi95} treats the synchronized product as a transition system
|
||||
\cite{Keller76} whose state graph can be analyzed using tecniques
|
||||
classified in two main categories:
|
||||
|
||||
- /Explicit/ methods process the state graph of the synchronized product using
|
||||
graph traversal algorithms.
|
||||
- /Symbolic/ methods represent the state graph using /decision diagrams/ and
|
||||
usually apply fixed point algorithms to the set of states to find the strongly
|
||||
connected components (SCCs) of the transition system.
|
||||
|
||||
Explicit methods are based on graph traversal algorithms but are often limited
|
||||
by the complexity of the LTL model checking problem, which is constrained by the
|
||||
size of the state space of the model, the size of the underlying automaton used
|
||||
to represent the formula and the combined size of the two Kripke structures in
|
||||
a transition system. More specifically, the model checking problem for LTL is
|
||||
known to be PSPACE-complete \cite{Sistlac85}.
|
||||
Historically, the first LTL model checkers were explicit: a notable example is
|
||||
SPIN \cite{Holzmann97}, which takes advantage of an optimized version of Tarjan
|
||||
DFS algorithm for finding strongly connected components in a graph,
|
||||
called /Nested Depth First Search/ \cite{HolzmannPy96}.
|
||||
|
||||
In practice, model checkers applied to complex, real-world sistems have to
|
||||
face the /state space explosion/ problem: the exponential growth in
|
||||
the number of variables of the state graph dimension. Given that, in general,
|
||||
a system with /n/ variables over a domain of /k/ possible values requires
|
||||
at least $n^{\textit{k}}$ states in the reachability set, it is
|
||||
understandable how even a simple model might necessitate a large reachability
|
||||
graph. Furthermore, dealing with real-valued variables, which have infinite
|
||||
possible assignments, results in a reachability graph with infinitely many
|
||||
states.
|
||||
|
||||
This problem has encouraged the development of various tecniques which have
|
||||
proven to be successful in mitigating the state explosion. Explicit model
|
||||
checkers have introduced /on-the-fly/ state-space construction
|
||||
to avoid storing the whole state graph. The most basic /on-the-fly/ algorithm
|
||||
\cite{FernandezMJJ92} stores states which have already been visited in memory
|
||||
and is therefore able to check for cycles in the reachability graph while
|
||||
generating it through DFS. SPIN uses /on-the-fly/ state graph construction
|
||||
combined with /partial order reduction/ \cite{Peled96}, a tecnique which reduces
|
||||
the size of the reachability graph by exploiting commutativity of concurrently
|
||||
executed transitions which result in the same state.
|
||||
|
||||
** The origin of symbolic model checking
|
||||
|
||||
Efforts towards state space minimization have been particularly successful in
|
||||
developing clever representation of the state graph. /Symbolic/ model checking
|
||||
represent the system model and the LTL formula using set of states and set
|
||||
of transitions. These sets can be represented as solutions to
|
||||
logical equations, using decision diagrams to represent this
|
||||
state space implicitly.
|
||||
Since syntactically small equations can represent large set of states,
|
||||
this tecnique ultimately avoids building the state graph explicitly,
|
||||
thus saving space in memory. Above all, Ordered Binary Decision Diagrams (OBDDs)
|
||||
provide a canonical form for boolean formulae which can be substantially more
|
||||
compact than conjunctive or disjuntive normal form and efficient algorithms have
|
||||
been implemented for manipulating them. McMillan was the first to introduce
|
||||
the use of OBDDs to represent the state space of a model, developing a CTL
|
||||
model checking tool called SMV \cite{SymbMC}.
|
||||
Symbolic model checking is considered to be one of the biggest breakthrough in
|
||||
the history of model checking for its impact on the state explosion problem
|
||||
\cite{Clarke08}.
|
||||
|
||||
Symbolic model checking was initially applied to CTL because of the
|
||||
significantly lower complexity of the model checking problem with
|
||||
respect to LTL: CTL model checking is known to be P-Complete and its
|
||||
time complexity is bilinear in the size of the model and of the
|
||||
formula \cite{ClarkeES86}. After the introduction of SMV, further research work
|
||||
increased the capabilities of decision diagrams. By introducing
|
||||
Multi-valued decision diagrams (MDDs) , tools were able to represent
|
||||
integral and real-valued functions, thus enhancing the applications of
|
||||
symbolic strategies to formal verification. In recent years, the
|
||||
LTSmin tool \cite{KantLMPBD15} developed by the University of Twente
|
||||
employs the SYLVAN multi-core MDDs library \cite{DijkP17} to speed up
|
||||
symbolic analysis algorithms for CTL model checking. A different
|
||||
solution was adopted by an extended version of SMV, NuSMV
|
||||
\cite{CimattiCGGPRST02}, which mantained the specification language of
|
||||
McMillan's tool while improving it by introducing LTL model checking
|
||||
and
|
||||
Sat-based Bounded model checking \cite{BiereCCZ99}, which exploits propositional
|
||||
satisfiability without using BDDs to represent the state graph.
|
||||
This approach was chosen because working with decision diagrams does not
|
||||
always guarantee an improvement over explicit model checking
|
||||
tecniques due to the often time-consuming procedure of selecting a variable
|
||||
ordering for all variables in the system, which is a known NP-complete problem
|
||||
\cite{BolligW96}.
|
||||
|
||||
Until the present day, our GreatSPN framework used multi-valued, multi-terminal
|
||||
decision diagrams (MTMDDs) provided by the Meddly library \cite{BabarM10} to
|
||||
perform CTL model checking on Petri Nets \cite{BabarBDM10}. Meddly is possibly
|
||||
the only open-source library to implement MTMDDs, Edge-valued MDDs (EVMDDs)
|
||||
while providing state-of-the-art algorithms to manipulate them.
|
||||
To determine the optimal variable ordering for the MDDs used to represet the
|
||||
state graph, GreatSPN uses a set of algorithms based on different heuristics
|
||||
which are run during the state space generation procedure \cite{AmparoreDBGM17}.
|
||||
As we are going to discuss later in this dissertation, GreatSPN is now capable
|
||||
of CTL* model checking by reducing symbolic LTL model checking to CTL model
|
||||
checking with fairness constraints, as demonstrated in a notorious article
|
||||
\cite{ClarkeGH97} by Clarke et al.
|
||||
|
||||
* Background
|
||||
|
||||
** Linear Temporal Logic
|
||||
|
||||
LTL is a propositional temporal logic with linear time model, meaning that it
|
||||
considers a single realized future behavior of a system, that is, a single
|
||||
path in a Kripke structure.
|
||||
|
||||
#+ATTR_LATEX: :environment definition
|
||||
#+BEGIN_definition
|
||||
/Syntax of LTL/. The formal syntax of LTL is given by the following grammar in
|
||||
Backus-Naur form (BNF), where /a/ \in /AP/ is an atomic proposition.
|
||||
|
||||
#+BEGIN_center
|
||||
/\phi ::= true | a | \not\phi | \phi \wedge \phi | *X*\phi | \phi *U* \phi/
|
||||
#+END_center
|
||||
|
||||
#+END_definition
|
||||
|
||||
Using boolean connectors such as \not and \wedge allows LTL to be treated as
|
||||
a propositional logic. Other boolean connectives such as disjunction \vee,
|
||||
implication \rightarrow, equivalence \leftrightarrow and the exclusive or (xor)
|
||||
operator \oplus can be derived as for any other propositional logic.
|
||||
This LTL grammar is defined using two basic temporal modalities: *X* (next) and
|
||||
*U* (until). Using those, we can derive two essential temporal modalities *F*
|
||||
(eventually) and *G* (always), as follows:
|
||||
|
||||
#+BEGIN_center
|
||||
*F*\phi = /true/\textbf{U}\phi \\
|
||||
*G*\phi = \not\textbf{F}\not\phi
|
||||
#+END_CENTER
|
||||
|
||||
We now present a list of the temporal modalities which will be used at a later
|
||||
time in this dissertation.
|
||||
|
||||
- *G*\phi: "always" (now and forever in the future \phi is true)
|
||||
- *F*\phi: "eventually" (eventually in the future \phi is true)
|
||||
- *X*\phi: "next" (in the next time step \phi is true)
|
||||
- \psi\textbf{U}\phi: "until" (\psi is true until \phi is true)
|
||||
|
||||
By combining the aforementioned temporal operators we obtain other, more complex
|
||||
modalities. A typical example is the specification which requires a property to
|
||||
be true /infinitely often/, *GF*\phi.
|
||||
|
||||
|
||||
\paragraph{LTL Semantics}
|
||||
LTL semantics is defined for /infinite words/ \sigma over the alphabet
|
||||
2\textsuperscript{AP}. The satisfiability rules are shown below:
|
||||
|
||||
- \(\sigma \vDash true\)
|
||||
- \(\sigma \vDash a\) iff \(a \in A_{0}\)
|
||||
- \(\sigma \vDash \phi_{1} \wedge \phi_{2}\) iff \(\sigma \vDash \phi_{1}\) and \(\sigma \vDash \phi_{2}\)
|
||||
- \(\sigma \vDash \neg\phi\) iff \(\neg (\sigma \vDash \phi)\)
|
||||
- \(\sigma \vDash \textbf{X}\phi\) iff \(\sigma[1...] \vDash \phi\)
|
||||
- \(\sigma \vDash \phi_{1}\textbf{U}\phi_{2}\) iff \(\exists j \geq 0, \sigma[j...] \vDash \phi_{2}\) and \(\sigma[i...] \vDash \phi_{1}\) for all \(0 \leq i < j\)
|
||||
|
||||
A LTL formula \phi is said to be /valid/ with regard
|
||||
to a Kripke structure /M/ if it holds for all paths of /M/. It is /satisfiable/
|
||||
if it holds for some path in /M/.
|
||||
|
||||
** CTL*
|
||||
|
||||
We briefly introduced CTL* while dealing with the shortcomings of LTL and CTL.
|
||||
CTL* is a branching temporal logic which extends CTL following a proposal by
|
||||
Emerson and Halpern. Being based on the concept of branching time, CTL* is able
|
||||
to represent the possibility of existence of a determinate behavior in a tree of
|
||||
execution, using CTL path quantifiers *E* (for some path) and *A* (for all
|
||||
paths) to specify whether the required behavior must be verified for some
|
||||
execution of our system or all possible ones.
|
||||
|
||||
CTL* allows path quantifiers to be arbitrarely nested with linear temporal
|
||||
operators *G*, *F*, *X* and *U*. In contrast, CTL only supports linear
|
||||
temporal operators if they are immediately preceded by a path quantifier.
|
||||
In a similar fashion as CTL, the syntax of CTL* distinguishes between
|
||||
/state/ and /path/ formulae. CTL* path formulae are defined as LTL formulae,
|
||||
whith the only difference that here state formulae can be used as atoms.
|
||||
|
||||
#+BEGIN_definition
|
||||
/Syntax of CTL*/. The formal syntax of /CTL*/ is made of state formulae \Phi and
|
||||
path formulae \phi. The syntax of /CTL*/ state formulae \Phi is defined over the
|
||||
set /AP/ of atomic propositions:
|
||||
|
||||
#+BEGIN_center
|
||||
/\Phi ::= true | a | \not\phi | \phi \wedge \phi | *E*\phi/
|
||||
#+END_center
|
||||
|
||||
The syntax of CTL* path formulae \phi is given by the following grammar, where
|
||||
\Phi is a state formula:
|
||||
|
||||
#+BEGIN_center
|
||||
/\phi ::= \Phi | \not\phi | \phi \wedge \phi | *X*\phi | \phi *U* \phi/
|
||||
#+END_center
|
||||
|
||||
#+END_definition
|
||||
|
||||
As previously seen for LTL, the syntax of CTL* can be treated as any
|
||||
propositional logic, therefore all boolean connectives can be derived from
|
||||
\not and \wedge. The missing temporal modalities *F* and *G* descend from
|
||||
*X* and *U* as it was the case for LTL, while the path quantifier *A* can be
|
||||
obtained from the following equivalence:
|
||||
|
||||
#+BEGIN_center
|
||||
*A*\phi = \not\textbf{E}\not\phi
|
||||
#+END_CENTER
|
||||
|
||||
\paragraph{CTL* Semantics}
|
||||
Let a \in /AP/ be an atomic proposition, $TS = (S, Act, \rightarrow, I, AP, L)$
|
||||
be a transition system without terminal states, state /s/ \in /S/, \Phi and \Psi
|
||||
be CTL* state formulae and \phi, \phi\textsubscript{1} and \phi\textsubscript{2}
|
||||
be CTL* path formulae.
|
||||
|
||||
\paragraph{State formulae: semantics}
|
||||
|
||||
- \(s \vDash a\) iff \(a \in \textit{L(s)}\)
|
||||
- \(s \vDash \Phi \wedge \Psi\) iff \(s \vDash \Phi\) and \(s \vDash \Psi\)
|
||||
- \(s \vDash \neg\Phi\) iff \(\neg (s \vDash \Phi)\)
|
||||
- \(s \vDash \textbf{E}\phi\) iff \(\sigma \vDash \phi\) for some \(\sigma \in \textit{Paths(s)}\)
|
||||
|
||||
\paragraph{Path formulae: semantics}
|
||||
|
||||
- \(\sigma \vDash \Phi\) iff \(s_{0} \vDash \Phi\)
|
||||
- \(\sigma \vDash \phi_{1} \wedge \phi_{2}\) iff \(\sigma \vDash \phi_{1}\) and \(\sigma \vDash \phi_{2}\)
|
||||
- \(\sigma \vDash \neg\phi\) iff \(\neg (\sigma \vDash \phi)\)
|
||||
- \(\sigma \vDash \textbf{X}\phi\) iff \(\sigma[1...] \vDash \phi\)
|
||||
- \(\sigma \vDash \phi_{1}\textbf{U}\phi_{2}\) iff \(\exists j \geq 0, \sigma[j...] \vDash \phi_{2}\) and \(\sigma[i...] \vDash \phi_{1}\) for all \(0 \leq i < j\)
|
||||
|
||||
** Decision Diagrams
|
||||
|
||||
Decision diagrams are directed, acyclic graphs used to represent functions over
|
||||
variables with finitely many possible assignments. They were originally
|
||||
studied by Bryant \cite{Bryant86} as a representation of boolean functions
|
||||
in the form of Binary Decision Diagrams (BDDs).
|
||||
We focus on a generalization of BDDs called Multi-value Decision Diagrams (MDDs)
|
||||
\cite{MDD}, whose variable domain can be arbitrarely large and which can be
|
||||
used to represent functions of integral and real-valued variables.
|
||||
|
||||
#+BEGIN_definition
|
||||
/Multi-valued Decision Diagram/. A multi-valued desicion diagram, or MDD, is an
|
||||
acyclic graph in which each node represents a function over variables with
|
||||
finitely many possible assignments, of the form:
|
||||
|
||||
#+BEGIN_center
|
||||
$f : S_{K} \times ... \times S_{1} \rightarrow \{ 0, \ldots, m - 1 \}$
|
||||
#+END_center
|
||||
|
||||
Each one of the sets $S_{k}$ is considered to be finite on an
|
||||
arbitrarely large domain. We can write:
|
||||
|
||||
#+BEGIN_center
|
||||
$S_{k} = \{ 0, 1, \ldots, n_{k} - 1 \}$
|
||||
#+END_center
|
||||
|
||||
#+END_definition
|
||||
|
||||
An MDD is composed of two types of nodes: /terminal/ nodes and /non-terminal/
|
||||
nodes.
|
||||
|
||||
- Terminal nodes are labeled with values from the set $\{0,1,\ldots,m-1\}$,
|
||||
representing the constant function:
|
||||
|
||||
#+BEGIN_center
|
||||
$g (x_{K},\ldots,x_{1}) = a$
|
||||
#+END_center
|
||||
|
||||
- Non-terminal nodes are labeled with one of the function variables
|
||||
$x_{k}$ and contain $n_{k}$ arcs to other nodes.
|
||||
|
||||
A non terminal node labeled with $x\textsubscript{k}$ has an outgoing arc
|
||||
corresponding to value $v$ which goes to a node representing the function:
|
||||
|
||||
#+BEGIN_center
|
||||
$f_{x_{k}=v}(x_{K},\ldots,x_{1}) \equiv f(x_{K},\ldots,x_{k+1},v,x_{k-1},\ldots,x_{1})$
|
||||
#+END_center
|
||||
|
||||
\paragraph{Reduced ordered MDDs}
|
||||
In the contest of model checking, MDDs are useful to encode the state space
|
||||
of a model as a boolean, integral or real-valued function.
|
||||
To fit this purpose, MDDs must be in /canonical/ form, meaning that
|
||||
for any given function and variable ordering, there must be exactly /one/
|
||||
representation of that function as MDD. For this to be true, we have to impose
|
||||
two constraints on MDDs: that they are /ordered/ and /reduced/ (ROMDDs).
|
||||
|
||||
#+BEGIN_definition
|
||||
/Ordered MDDs/. An MDD is ordered if all paths through the MDD visit
|
||||
non-terminal nodes accortding to the same variable ordering.
|
||||
#+END_definition
|
||||
|
||||
#+BEGIN_definition
|
||||
/Reduced Ordered MDDs/. A reduced, ordered MDD is an ordered MDD that contains
|
||||
no duplicate nodes and no redundant nodes.
|
||||
|
||||
- Two nodes are *redundant* if all of its outgoing arcs point to the same node.
|
||||
- Two terminal nodes are *duplicates* if they have the same label, while two
|
||||
non-terminal nodes are duplicates if they have the same variable label and
|
||||
the same outgoing arcs for each value.
|
||||
#+END_definition
|
||||
|
||||
# ESEMPI MDD, GraphViz plot di RS (modello semplice, pochi stati)
|
||||
|
||||
** Automata over infinite words
|
||||
|
||||
We've described how Linear Temporal Logic provides a language to describe the
|
||||
temporal order of a series of events. When applied to formal verification,
|
||||
these sequences of events can be interpreted as computations of the program.
|
||||
A computation is a potentially infinite sequence of program states: each state
|
||||
is described by a finite set of atomic propositions, which will be referred to
|
||||
as a nonempty /alphabet/. Therefore a computation can be treated as an
|
||||
infinite word over the alphabet of truth assignments to the atomic propositions
|
||||
of a given alphabet.
|
||||
|
||||
This reasoning suggests that a LTL specification can be thought of as a
|
||||
description of a /language/ over some alphabet. This language is made of
|
||||
infinite /words/, which represent program computations. We can exploit this
|
||||
equivalence of computations and words to connect linear temporal logic to
|
||||
automata theory applied on infinite words. As we are going to show, automata
|
||||
over infinite words depict a suitable formalism to represent LTL specifications.
|
||||
More precisely, given any propositional temporal formula, one can construct a
|
||||
/finite automaton/ over infinite words that accepts precisely the computations
|
||||
satisfied by the formula \cite{VardiW94}. This chapter will present an
|
||||
introduction to automata theory and describe how LTL model checking employs a
|
||||
particular class of automata over infinite words, called /Büchi automata/.
|
||||
|
||||
# CTL* model checking
|
||||
|
||||
# * Emerson-Lei & alternatives
|
||||
\bibliographystyle{/usr/share/texmf-dist/bibtex/bst/base/acm}
|
||||
\bibliography{tesi}
|
9
tesi/galla/tesi.out
Normal file
9
tesi/galla/tesi.out
Normal file
|
@ -0,0 +1,9 @@
|
|||
\BOOKMARK [1][-]{section.1}{Introduction}{}% 1
|
||||
\BOOKMARK [2][-]{subsection.1.1}{Model Checking}{section.1}% 2
|
||||
\BOOKMARK [2][-]{subsection.1.2}{A brief history of LTL model checking}{section.1}% 3
|
||||
\BOOKMARK [2][-]{subsection.1.3}{The origin of symbolic model checking}{section.1}% 4
|
||||
\BOOKMARK [1][-]{section.2}{Background}{}% 5
|
||||
\BOOKMARK [2][-]{subsection.2.1}{Linear Temporal Logic}{section.2}% 6
|
||||
\BOOKMARK [2][-]{subsection.2.2}{CTL*}{section.2}% 7
|
||||
\BOOKMARK [2][-]{subsection.2.3}{Decision Diagrams}{section.2}% 8
|
||||
\BOOKMARK [2][-]{subsection.2.4}{Automata over infinite words}{section.2}% 9
|
BIN
tesi/galla/tesi.pdf
Normal file
BIN
tesi/galla/tesi.pdf
Normal file
Binary file not shown.
462
tesi/galla/tesi.tex
Normal file
462
tesi/galla/tesi.tex
Normal file
|
@ -0,0 +1,462 @@
|
|||
% Created 2020-02-13 Thu 18:00
|
||||
% 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}
|
||||
\newtheorem{definition}{Definition}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{listings}
|
||||
\usepackage{color}
|
||||
\author{Francesco Galla'}
|
||||
\date{}
|
||||
\title{An automata-based implementation of a symbolic CTL* model checker}
|
||||
\hypersetup{
|
||||
pdfauthor={Francesco Galla'},
|
||||
pdftitle={An automata-based implementation of a symbolic CTL* model checker},
|
||||
pdfkeywords={},
|
||||
pdfsubject={},
|
||||
pdfcreator={Emacs 26.3 (Org mode 9.1.9)},
|
||||
pdflang={English}}
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
\begin{abstract}
|
||||
|
||||
This dissertation presents the implementation of a symbolic CTL* model
|
||||
checking algorithm based on multi-valued decision diagrams (MDDs).
|
||||
Given a Petri Net model and a CTL* proposition, the algorithm is capable
|
||||
of identifying LTL sub-formulae, translate them to Büchi automata and
|
||||
compute the synchronized product of each LTL formula with the model.
|
||||
MDDs are used to encode the Petri Net and such composition, provably
|
||||
lowering both system memory and time required to manipulate its graph
|
||||
of reachable states with respect to explicit model checking tecniques.
|
||||
By combining the sets of satisfying states for each LTL sub-formula
|
||||
according to the temporal quantifiers preceding them, the algorithm is
|
||||
capable of producing the boolean satisfaction result of the CTL* formula
|
||||
and a counterexample or witness run describing such outcome.
|
||||
Timed test runs executed againts a large set of models and specifications of
|
||||
LTL, CTL and CTL* temporal logics show competitive performance results
|
||||
with respect to other tools which process CTL* by translating each
|
||||
formula to $\mu$-calculus. This algorithm has been implemented as one
|
||||
of the free and open source programs composing the GreatSPN framework
|
||||
for formal verification of systems.
|
||||
|
||||
\end{abstract}
|
||||
|
||||
|
||||
\section{Introduction}
|
||||
\label{sec:org0edf2f0}
|
||||
|
||||
\subsection{Model Checking}
|
||||
\label{sec:orge90340a}
|
||||
|
||||
Model checking is a formal verification technique intended to analyze properties
|
||||
of system designs. Given a formal model and a specification, the objective of
|
||||
model checking is to decide whether the behavior of the model satisfies the
|
||||
specification or not. The model is usually represented as a Kripke structure or
|
||||
by a high-level formalism that can be transformed into a Kripke structure.
|
||||
Examples of these formalisms are Petri Nets and Process algebra.
|
||||
|
||||
The specification is provided using a temporal logic expression, that is, a
|
||||
formula that expresses a temporal and logical statement. Temporal logics are
|
||||
modal logics geared towards the description of the temporal ordering of events.
|
||||
It is important to clarify that these logics do not consider precise timing
|
||||
requirements of activities or events, but reason about their
|
||||
\emph{abstract temporal order}. For this reason, they are particularly useful when
|
||||
applied to concurrent systems in which all components proceed in a
|
||||
lock-step fashion over a discrete time domain. The system behavior is assumed to
|
||||
be observable at integral time points and each time point identifies a snapshot
|
||||
of all variables of the system, called \emph{state}.
|
||||
|
||||
Two brands of temporal logics have been proposed over the years for specifying
|
||||
the properties of reactive systems. Linear Temporal Logic \cite{Pnueli77} is
|
||||
based on \emph{linear time}, therefore considering every moment in time as having a
|
||||
unique possible future. Computational Tree Logic \cite{ClarkeE81} is defined
|
||||
upon \emph{branching time}: it pictures the structure of time as a tree,
|
||||
allowing each moment in time to split into different possible futures.
|
||||
From now on we will refer to these two logics using their well-known acronyms
|
||||
LTL and CTL respectively.
|
||||
|
||||
The difference between LTL and CTL is rooted in their satisfaction relations,
|
||||
which are conceptually different. LTL is said to be path-based, since a
|
||||
system \emph{S} satisfies a LTL formula \(\phi\) if for all initial paths of \emph{S},
|
||||
paths starting in an intial state \(s_{\textit{0}}\) satisfy \(\phi\).
|
||||
Conversely, CTL is said to be state-based, since a system \emph{S} satisfies
|
||||
a CTL formula \(\phi\) if and only if \(\phi\) holds in all initial states of \emph{S}.
|
||||
|
||||
Furthermore, the expressiveness of LTL and CTL temporal logics is incomparable
|
||||
\cite{Lamport80}. Conversely, CTL is particularly useful to express the
|
||||
\emph{possibility} of existence of a specific path of execution of a model, that
|
||||
is, the occurrence of an event happening on one branch but not necessarily all
|
||||
of them. This concept cannot be expressed using a formalism based on linear time
|
||||
such as LTL, which describes executions of a system, not the way those
|
||||
executions are organized in a branching tree. On the contrary, CTL cannot
|
||||
express situations in which the same behavior may occur on distinct branches at
|
||||
distinct times, while the ability of LTL to describe individual paths is
|
||||
more convenient in this case. In practice, the LTL formula \textbf{FG}\(\phi\) is not
|
||||
expressible in CTL, while the formula \textbf{AFAG}\(\phi\) is not expressible in LTL.
|
||||
Given the shortcomings of both these temporal logics, a superset of LTL and CTL
|
||||
called CTL* \cite{EmersonH86} has been introduced. \\
|
||||
|
||||
\subsection{A brief history of LTL model checking}
|
||||
\label{sec:orgd1d295c}
|
||||
|
||||
Model checking LTL properties comes down to checking language emptyness of the
|
||||
syncronized product between the Kripke structure representing the model and a
|
||||
formalism which can represent a LTL formula while being translatable to a
|
||||
Kripke structure, namely a Büchi automaton. This \emph{automata-theoretic approach}
|
||||
\cite{Vardi95} treats the synchronized product as a transition system
|
||||
\cite{Keller76} whose state graph can be analyzed using tecniques
|
||||
classified in two main categories:
|
||||
|
||||
\begin{itemize}
|
||||
\item \emph{Explicit} methods process the state graph of the synchronized product using
|
||||
graph traversal algorithms.
|
||||
\item \emph{Symbolic} methods represent the state graph using \emph{decision diagrams} and
|
||||
usually apply fixed point algorithms to the set of states to find the strongly
|
||||
connected components (SCCs) of the transition system.
|
||||
\end{itemize}
|
||||
|
||||
Explicit methods are based on graph traversal algorithms but are often limited
|
||||
by the complexity of the LTL model checking problem, which is constrained by the
|
||||
size of the state space of the model, the size of the underlying automaton used
|
||||
to represent the formula and the combined size of the two Kripke structures in
|
||||
a transition system. More specifically, the model checking problem for LTL is
|
||||
known to be PSPACE-complete \cite{Sistlac85}.
|
||||
Historically, the first LTL model checkers were explicit: a notable example is
|
||||
SPIN \cite{Holzmann97}, which takes advantage of an optimized version of Tarjan
|
||||
DFS algorithm for finding strongly connected components in a graph,
|
||||
called \emph{Nested Depth First Search} \cite{HolzmannPy96}.
|
||||
|
||||
In practice, model checkers applied to complex, real-world sistems have to
|
||||
face the \emph{state space explosion} problem: the exponential growth in
|
||||
the number of variables of the state graph dimension. Given that, in general,
|
||||
a system with \emph{n} variables over a domain of \emph{k} possible values requires
|
||||
at least \(n^{\textit{k}}\) states in the reachability set, it is
|
||||
understandable how even a simple model might necessitate a large reachability
|
||||
graph. Furthermore, dealing with real-valued variables, which have infinite
|
||||
possible assignments, results in a reachability graph with infinitely many
|
||||
states.
|
||||
|
||||
This problem has encouraged the development of various tecniques which have
|
||||
proven to be successful in mitigating the state explosion. Explicit model
|
||||
checkers have introduced \emph{on-the-fly} state-space construction
|
||||
to avoid storing the whole state graph. The most basic \emph{on-the-fly} algorithm
|
||||
\cite{FernandezMJJ92} stores states which have already been visited in memory
|
||||
and is therefore able to check for cycles in the reachability graph while
|
||||
generating it through DFS. SPIN uses \emph{on-the-fly} state graph construction
|
||||
combined with \emph{partial order reduction} \cite{Peled96}, a tecnique which reduces
|
||||
the size of the reachability graph by exploiting commutativity of concurrently
|
||||
executed transitions which result in the same state.
|
||||
|
||||
\subsection{The origin of symbolic model checking}
|
||||
\label{sec:orgd26054c}
|
||||
|
||||
Efforts towards state space minimization have been particularly successful in
|
||||
developing clever representation of the state graph. \emph{Symbolic} model checking
|
||||
represent the system model and the LTL formula using set of states and set
|
||||
of transitions. These sets can be represented as solutions to
|
||||
logical equations, using decision diagrams to represent this
|
||||
state space implicitly.
|
||||
Since syntactically small equations can represent large set of states,
|
||||
this tecnique ultimately avoids building the state graph explicitly,
|
||||
thus saving space in memory. Above all, Ordered Binary Decision Diagrams (OBDDs)
|
||||
provide a canonical form for boolean formulae which can be substantially more
|
||||
compact than conjunctive or disjuntive normal form and efficient algorithms have
|
||||
been implemented for manipulating them. McMillan was the first to introduce
|
||||
the use of OBDDs to represent the state space of a model, developing a CTL
|
||||
model checking tool called SMV \cite{SymbMC}.
|
||||
Symbolic model checking is considered to be one of the biggest breakthrough in
|
||||
the history of model checking for its impact on the state explosion problem
|
||||
\cite{Clarke08}.
|
||||
|
||||
Symbolic model checking was initially applied to CTL because of the
|
||||
significantly lower complexity of the model checking problem with
|
||||
respect to LTL: CTL model checking is known to be P-Complete and its
|
||||
time complexity is bilinear in the size of the model and of the
|
||||
formula \cite{ClarkeES86}. After the introduction of SMV, further research work
|
||||
increased the capabilities of decision diagrams. By introducing
|
||||
Multi-valued decision diagrams (MDDs) , tools were able to represent
|
||||
integral and real-valued functions, thus enhancing the applications of
|
||||
symbolic strategies to formal verification. In recent years, the
|
||||
LTSmin tool \cite{KantLMPBD15} developed by the University of Twente
|
||||
employs the SYLVAN multi-core MDDs library \cite{DijkP17} to speed up
|
||||
symbolic analysis algorithms for CTL model checking. A different
|
||||
solution was adopted by an extended version of SMV, NuSMV
|
||||
\cite{CimattiCGGPRST02}, which mantained the specification language of
|
||||
McMillan's tool while improving it by introducing LTL model checking
|
||||
and
|
||||
Sat-based Bounded model checking \cite{BiereCCZ99}, which exploits propositional
|
||||
satisfiability without using BDDs to represent the state graph.
|
||||
This approach was chosen because working with decision diagrams does not
|
||||
always guarantee an improvement over explicit model checking
|
||||
tecniques due to the often time-consuming procedure of selecting a variable
|
||||
ordering for all variables in the system, which is a known NP-complete problem
|
||||
\cite{BolligW96}.
|
||||
|
||||
Until the present day, our GreatSPN framework used multi-valued, multi-terminal
|
||||
decision diagrams (MTMDDs) provided by the Meddly library \cite{BabarM10} to
|
||||
perform CTL model checking on Petri Nets \cite{BabarBDM10}. Meddly is possibly
|
||||
the only open-source library to implement MTMDDs, Edge-valued MDDs (EVMDDs)
|
||||
while providing state-of-the-art algorithms to manipulate them.
|
||||
To determine the optimal variable ordering for the MDDs used to represet the
|
||||
state graph, GreatSPN uses a set of algorithms based on different heuristics
|
||||
which are run during the state space generation procedure \cite{AmparoreDBGM17}.
|
||||
As we are going to discuss later in this dissertation, GreatSPN is now capable
|
||||
of CTL* model checking by reducing symbolic LTL model checking to CTL model
|
||||
checking with fairness constraints, as demonstrated in a notorious article
|
||||
\cite{ClarkeGH97} by Clarke et al.
|
||||
|
||||
\section{Background}
|
||||
\label{sec:org194bb81}
|
||||
|
||||
\subsection{Linear Temporal Logic}
|
||||
\label{sec:org93349b6}
|
||||
|
||||
LTL is a propositional temporal logic with linear time model, meaning that it
|
||||
considers a single realized future behavior of a system, that is, a single
|
||||
path in a Kripke structure.
|
||||
|
||||
\begin{definition}
|
||||
\emph{Syntax of LTL}. The formal syntax of LTL is given by the following grammar in
|
||||
Backus-Naur form (BNF), where \emph{a} \(\in\) \emph{AP} is an atomic proposition.
|
||||
|
||||
\begin{center}
|
||||
\emph{\(\phi\) ::= true | a | \textlnot{}\(\phi\) | \(\phi\) \(\wedge\) \(\phi\) | \textbf{X}\(\phi\) | \(\phi\) \textbf{U} \(\phi\)}
|
||||
\end{center}
|
||||
\end{definition}
|
||||
|
||||
Using boolean connectors such as \textlnot{} and \(\wedge\) allows LTL to be treated as
|
||||
a propositional logic. Other boolean connectives such as disjunction \(\vee\),
|
||||
implication \(\rightarrow\), equivalence \(\leftrightarrow\) and the exclusive or (xor)
|
||||
operator \(\oplus\) can be derived as for any other propositional logic.
|
||||
This LTL grammar is defined using two basic temporal modalities: \textbf{X} (next) and
|
||||
\textbf{U} (until). Using those, we can derive two essential temporal modalities \textbf{F}
|
||||
(eventually) and \textbf{G} (always), as follows:
|
||||
|
||||
\begin{center}
|
||||
\textbf{F}\(\phi\) = \emph{true}\textbf{U}\(\phi\) \\
|
||||
\textbf{G}\(\phi\) = \textlnot{}\textbf{F}\textlnot{}\(\phi\)
|
||||
\end{center}
|
||||
|
||||
We now present a list of the temporal modalities which will be used at a later
|
||||
time in this dissertation.
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{G}\(\phi\): "always" (now and forever in the future \(\phi\) is true)
|
||||
\item \textbf{F}\(\phi\): "eventually" (eventually in the future \(\phi\) is true)
|
||||
\item \textbf{X}\(\phi\): "next" (in the next time step \(\phi\) is true)
|
||||
\item \(\psi\)\textbf{U}\(\phi\): "until" (\(\psi\) is true until \(\phi\) is true)
|
||||
\end{itemize}
|
||||
|
||||
By combining the aforementioned temporal operators we obtain other, more complex
|
||||
modalities. A typical example is the specification which requires a property to
|
||||
be true \emph{infinitely often}, \textbf{GF}\(\phi\).
|
||||
|
||||
|
||||
\paragraph{LTL Semantics}
|
||||
LTL semantics is defined for \emph{infinite words} \(\sigma\) over the alphabet
|
||||
2\textsuperscript{AP}. The satisfiability rules are shown below:
|
||||
|
||||
\begin{itemize}
|
||||
\item \(\sigma \vDash true\)
|
||||
\item \(\sigma \vDash a\) iff \(a \in A_{0}\)
|
||||
\item \(\sigma \vDash \phi_{1} \wedge \phi_{2}\) iff \(\sigma \vDash \phi_{1}\) and \(\sigma \vDash \phi_{2}\)
|
||||
\item \(\sigma \vDash \neg\phi\) iff \(\neg (\sigma \vDash \phi)\)
|
||||
\item \(\sigma \vDash \textbf{X}\phi\) iff \(\sigma[1...] \vDash \phi\)
|
||||
\item \(\sigma \vDash \phi_{1}\textbf{U}\phi_{2}\) iff \(\exists j \geq 0, \sigma[j...] \vDash \phi_{2}\) and \(\sigma[i...] \vDash \phi_{1}\) for all \(0 \leq i < j\)
|
||||
\end{itemize}
|
||||
|
||||
A LTL formula \(\phi\) is said to be \emph{valid} with regard
|
||||
to a Kripke structure \emph{M} if it holds for all paths of \emph{M}. It is \emph{satisfiable}
|
||||
if it holds for some path in \emph{M}.
|
||||
|
||||
\subsection{CTL*}
|
||||
\label{sec:orgad39744}
|
||||
|
||||
We briefly introduced CTL* while dealing with the shortcomings of LTL and CTL.
|
||||
CTL* is a branching temporal logic which extends CTL following a proposal by
|
||||
Emerson and Halpern. Being based on the concept of branching time, CTL* is able
|
||||
to represent the possibility of existence of a determinate behavior in a tree of
|
||||
execution, using CTL path quantifiers \textbf{E} (for some path) and \textbf{A} (for all
|
||||
paths) to specify whether the required behavior must be verified for some
|
||||
execution of our system or all possible ones.
|
||||
|
||||
CTL* allows path quantifiers to be arbitrarely nested with linear temporal
|
||||
operators \textbf{G}, \textbf{F}, \textbf{X} and \textbf{U}. In contrast, CTL only supports linear
|
||||
temporal operators if they are immediately preceded by a path quantifier.
|
||||
In a similar fashion as CTL, the syntax of CTL* distinguishes between
|
||||
\emph{state} and \emph{path} formulae. CTL* path formulae are defined as LTL formulae,
|
||||
whith the only difference that here state formulae can be used as atoms.
|
||||
|
||||
\begin{definition}
|
||||
\emph{Syntax of CTL*}. The formal syntax of \emph{CTL*} is made of state formulae \(\Phi\) and
|
||||
path formulae \(\phi\). The syntax of \emph{CTL*} state formulae \(\Phi\) is defined over the
|
||||
set \emph{AP} of atomic propositions:
|
||||
|
||||
\begin{center}
|
||||
\emph{\(\Phi\) ::= true | a | \textlnot{}\(\phi\) | \(\phi\) \(\wedge\) \(\phi\) | \textbf{E}\(\phi\)}
|
||||
\end{center}
|
||||
|
||||
The syntax of CTL* path formulae \(\phi\) is given by the following grammar, where
|
||||
\(\Phi\) is a state formula:
|
||||
|
||||
\begin{center}
|
||||
\emph{\(\phi\) ::= \(\Phi\) | \textlnot{}\(\phi\) | \(\phi\) \(\wedge\) \(\phi\) | \textbf{X}\(\phi\) | \(\phi\) \textbf{U} \(\phi\)}
|
||||
\end{center}
|
||||
\end{definition}
|
||||
|
||||
As previously seen for LTL, the syntax of CTL* can be treated as any
|
||||
propositional logic, therefore all boolean connectives can be derived from
|
||||
\textlnot{} and \(\wedge\). The missing temporal modalities \textbf{F} and \textbf{G} descend from
|
||||
\textbf{X} and \textbf{U} as it was the case for LTL, while the path quantifier \textbf{A} can be
|
||||
obtained from the following equivalence:
|
||||
|
||||
\begin{center}
|
||||
\textbf{A}\(\phi\) = \textlnot{}\textbf{E}\textlnot{}\(\phi\)
|
||||
\end{center}
|
||||
|
||||
\paragraph{CTL* Semantics}
|
||||
Let a \(\in\) \emph{AP} be an atomic proposition, \(TS = (S, Act, \rightarrow, I, AP, L)\)
|
||||
be a transition system without terminal states, state \emph{s} \(\in\) \emph{S}, \(\Phi\) and \(\Psi\)
|
||||
be CTL* state formulae and \(\phi\), \(\phi\)\textsubscript{1} and \(\phi\)\textsubscript{2}
|
||||
be CTL* path formulae.
|
||||
|
||||
\paragraph{State formulae: semantics}
|
||||
|
||||
\begin{itemize}
|
||||
\item \(s \vDash a\) iff \(a \in \textit{L(s)}\)
|
||||
\item \(s \vDash \Phi \wedge \Psi\) iff \(s \vDash \Phi\) and \(s \vDash \Psi\)
|
||||
\item \(s \vDash \neg\Phi\) iff \(\neg (s \vDash \Phi)\)
|
||||
\item \(s \vDash \textbf{E}\phi\) iff \(\sigma \vDash \phi\) for some \(\sigma \in \textit{Paths(s)}\)
|
||||
\end{itemize}
|
||||
|
||||
\paragraph{Path formulae: semantics}
|
||||
|
||||
\begin{itemize}
|
||||
\item \(\sigma \vDash \Phi\) iff \(s_{0} \vDash \Phi\)
|
||||
\item \(\sigma \vDash \phi_{1} \wedge \phi_{2}\) iff \(\sigma \vDash \phi_{1}\) and \(\sigma \vDash \phi_{2}\)
|
||||
\item \(\sigma \vDash \neg\phi\) iff \(\neg (\sigma \vDash \phi)\)
|
||||
\item \(\sigma \vDash \textbf{X}\phi\) iff \(\sigma[1...] \vDash \phi\)
|
||||
\item \(\sigma \vDash \phi_{1}\textbf{U}\phi_{2}\) iff \(\exists j \geq 0, \sigma[j...] \vDash \phi_{2}\) and \(\sigma[i...] \vDash \phi_{1}\) for all \(0 \leq i < j\)
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Decision Diagrams}
|
||||
\label{sec:orgb1ebae6}
|
||||
|
||||
Decision diagrams are directed, acyclic graphs used to represent functions over
|
||||
variables with finitely many possible assignments. They were originally
|
||||
studied by Bryant \cite{Bryant86} as a representation of boolean functions
|
||||
in the form of Binary Decision Diagrams (BDDs).
|
||||
We focus on a generalization of BDDs called Multi-value Decision Diagrams (MDDs)
|
||||
\cite{MDD}, whose variable domain can be arbitrarely large and which can be
|
||||
used to represent functions of integral and real-valued variables.
|
||||
|
||||
\begin{definition}
|
||||
\emph{Multi-valued Decision Diagram}. A multi-valued desicion diagram, or MDD, is an
|
||||
acyclic graph in which each node represents a function over variables with
|
||||
finitely many possible assignments, of the form:
|
||||
|
||||
\begin{center}
|
||||
\(f : S_{K} \times ... \times S_{1} \rightarrow \{ 0, \ldots, m - 1 \}\)
|
||||
\end{center}
|
||||
|
||||
Each one of the sets \(S_{k}\) is considered to be finite on an
|
||||
arbitrarely large domain. We can write:
|
||||
|
||||
\begin{center}
|
||||
\(S_{k} = \{ 0, 1, \ldots, n_{k} - 1 \}\)
|
||||
\end{center}
|
||||
\end{definition}
|
||||
|
||||
An MDD is composed of two types of nodes: \emph{terminal} nodes and \emph{non-terminal}
|
||||
nodes.
|
||||
|
||||
\begin{itemize}
|
||||
\item Terminal nodes are labeled with values from the set \(\{0,1,\ldots,m-1\}\),
|
||||
representing the constant function:
|
||||
\end{itemize}
|
||||
|
||||
\begin{center}
|
||||
\(g (x_{K},\ldots,x_{1}) = a\)
|
||||
\end{center}
|
||||
|
||||
\begin{itemize}
|
||||
\item Non-terminal nodes are labeled with one of the function variables
|
||||
\(x_{k}\) and contain \(n_{k}\) arcs to other nodes.
|
||||
\end{itemize}
|
||||
|
||||
A non terminal node labeled with \(x\textsubscript{k}\) has an outgoing arc
|
||||
corresponding to value \(v\) which goes to a node representing the function:
|
||||
|
||||
\begin{center}
|
||||
\(f_{x_{k}=v}(x_{K},\ldots,x_{1}) \equiv f(x_{K},\ldots,x_{k+1},v,x_{k-1},\ldots,x_{1})\)
|
||||
\end{center}
|
||||
|
||||
\paragraph{Reduced ordered MDDs}
|
||||
In the contest of model checking, MDDs are useful to encode the state space
|
||||
of a model as a boolean, integral or real-valued function.
|
||||
To fit this purpose, MDDs must be in \emph{canonical} form, meaning that
|
||||
for any given function and variable ordering, there must be exactly \emph{one}
|
||||
representation of that function as MDD. For this to be true, we have to impose
|
||||
two constraints on MDDs: that they are \emph{ordered} and \emph{reduced} (ROMDDs).
|
||||
|
||||
\begin{definition}
|
||||
\emph{Ordered MDDs}. An MDD is ordered if all paths through the MDD visit
|
||||
non-terminal nodes accortding to the same variable ordering.
|
||||
\end{definition}
|
||||
|
||||
\begin{definition}
|
||||
\emph{Reduced Ordered MDDs}. A reduced, ordered MDD is an ordered MDD that contains
|
||||
no duplicate nodes and no redundant nodes.
|
||||
|
||||
\begin{itemize}
|
||||
\item Two nodes are \textbf{redundant} if all of its outgoing arcs point to the same node.
|
||||
\item Two terminal nodes are \textbf{duplicates} if they have the same label, while two
|
||||
non-terminal nodes are duplicates if they have the same variable label and
|
||||
the same outgoing arcs for each value.
|
||||
\end{itemize}
|
||||
\end{definition}
|
||||
|
||||
\subsection{Automata over infinite words}
|
||||
\label{sec:orgeaf1a4d}
|
||||
|
||||
We've described how Linear Temporal Logic provides a language to describe the
|
||||
temporal order of a series of events. When applied to formal verification,
|
||||
these sequences of events can be interpreted as computations of the program.
|
||||
A computation is a potentially infinite sequence of program states: each state
|
||||
is described by a finite set of atomic propositions, which will be referred to
|
||||
as a nonempty \emph{alphabet}. Therefore a computation can be treated as an
|
||||
infinite word over the alphabet of truth assignments to the atomic propositions
|
||||
of a given alphabet.
|
||||
|
||||
This reasoning suggests that a LTL specification can be thought of as a
|
||||
description of a \emph{language} over some alphabet. This language is made of
|
||||
infinite \emph{words}, which represent program computations. We can exploit this
|
||||
equivalence of computations and words to connect linear temporal logic to
|
||||
automata theory applied on infinite words. As we are going to show, automata
|
||||
over infinite words depict a suitable formalism to represent LTL specifications.
|
||||
More precisely, given any propositional temporal formula, one can construct a
|
||||
\emph{finite automaton} over infinite words that accepts precisely the computations
|
||||
satisfied by the formula \cite{VardiW94}. This chapter will present an
|
||||
introduction to automata theory and describe how LTL model checking employs a
|
||||
particular class of automata over infinite words, called \emph{Büchi automata}.
|
||||
|
||||
\bibliographystyle{/usr/share/texmf-dist/bibtex/bst/base/acm}
|
||||
\bibliography{tesi}
|
||||
\end{document}
|
598
tesi/galla/wrapfig.sty
Normal file
598
tesi/galla/wrapfig.sty
Normal file
|
@ -0,0 +1,598 @@
|
|||
% W R A P F I G . S T Y ver 3.6 (Jan 31, 2003)
|
||||
%
|
||||
% Copyright (C) 1991-2003 by Donald Arseneau <asnd@triumf.ca>
|
||||
% This software is released under the terms of the LaTeX Project
|
||||
% public license.
|
||||
%
|
||||
% Environments "wrapfigure" and "wraptable" place a figure or table
|
||||
% at the side of the page and wrap text around it.
|
||||
%
|
||||
% \begin{wrapfigure}[12]{r}[34pt]{5cm} <figure> \end{wrapfigure}
|
||||
% -- - ---- ---
|
||||
% [number of narrow lines] {placement} [overhang] {width of figure}
|
||||
%
|
||||
% Placement is one of r, l, i, o, R, L, I, O, for right, left,
|
||||
% inside, outside, (here / FLOAT).
|
||||
% The figure sticks into the margin by `overhang', if given, or by the
|
||||
% length \wrapoverhang, which is normally zero.
|
||||
% The number of wrapped text lines is normally calculated from the height
|
||||
% of the figure, but may be specified manually ("12" above).
|
||||
%
|
||||
% Environments similar to "wrapfigure" and "wraptable" may be easily added,
|
||||
% or invoked by "\begin{wrapfloat}{float_name}"
|
||||
%
|
||||
% More detailed instructions are given below, following the definitions.
|
||||
% Please direct any problem reports to asnd@triumf.ca
|
||||
|
||||
%%%%% ----- Begin definitions ----- %%%%%
|
||||
|
||||
\@ifundefined{c@WF@wrappedlines}{}{\endinput}
|
||||
|
||||
\newdimen\wrapoverhang \wrapoverhang\z@
|
||||
\newdimen\WF@size
|
||||
\newcount\c@WF@wrappedlines % used globally
|
||||
\newbox\WF@box
|
||||
\newtoks\WF@everypar
|
||||
\newif\ifWF@float
|
||||
\let\@@parshape\parshape
|
||||
\let\WF@@everypar\everypar
|
||||
|
||||
\def\wrapfloat#1{\def\@captype{#1}\@ifnextchar[\WF@wr{\WF@wr[]}}
|
||||
|
||||
\def\wrapfigure{\wrapfloat{figure}}
|
||||
\def\wraptable{\wrapfloat{table}}
|
||||
|
||||
\def\WF@wr[#1]#2{% first two args: #1=num lines, #2=placement
|
||||
\xdef\WF@wfname{wrap\@captype\space}%
|
||||
\ifvoid\WF@box\else \WFclear \WF@collision \fi
|
||||
\xdef\WF@place{\string`\@car#2r\@nil}%
|
||||
\ifnum\lccode\WF@place=\WF@place \global\WF@floatfalse
|
||||
\else \global\WF@floattrue \fi
|
||||
\ifx\parshape\WF@fudgeparshape \ifWF@float\else\WF@collision\fi \else
|
||||
\ifx\par\@@par \ifnum\@@parshape>\z@\WF@conflict\fi \else \WF@conflict\fi
|
||||
\fi \gdef\WF@wli{#1}%
|
||||
\@ifnextchar[\WF@rapt{\WF@rapt[\wrapoverhang]}}
|
||||
|
||||
\def\WF@rapt[#1]#2{% final two args: #1 = overhang, #2 = width,
|
||||
\gdef\WF@ovh{#1}% hold overhang for later, when \width is known
|
||||
\global\setbox\WF@box\vtop\bgroup \setlength\hsize{#2}%
|
||||
\ifdim\hsize>\z@ \@parboxrestore \else
|
||||
\setbox\z@\hbox\bgroup \let\wf@@caption\caption \let\caption\wf@caption
|
||||
\ignorespaces \fi}
|
||||
|
||||
\def\wf@caption{\relax
|
||||
\ifdim\hsize>\z@ \let\caption\wf@@caption \else
|
||||
\unskip \egroup \hsize\wd\z@ \@parboxrestore \box\z@ \fi \caption}
|
||||
|
||||
\def\endwrapfloat{%
|
||||
\ifdim\hsize>\z@ \par\hrule\@width\hsize\@height\z@ % force width
|
||||
\else \unskip \egroup \box\z@ \fi % or end hbox
|
||||
\egroup % end the \vtop; width is known so now is "later"
|
||||
\WF@floatstyhook % support float.sty
|
||||
\def\width{\wd\WF@box}\setlength\wrapoverhang{\WF@ovh}%
|
||||
\xdef\WF@ovh{\the\wrapoverhang}% save until wrapping
|
||||
\ifdim\ht\WF@box>\topskip \ht\WF@box\z@ \fi % too much height, set flag.
|
||||
\ifdim\ht\WF@box<.5\p@ % too tall (starts with \vbox) or too short
|
||||
\global\setbox\WF@box\vtop{\vskip-1.4ex\unvbox\WF@box}\fi
|
||||
\global\WF@size\dp\WF@box % box is guaranteed to have little height.
|
||||
\global\advance\WF@size1.5\baselineskip \global\advance\WF@size\tw@\intextsep
|
||||
\aftergroup\WF@startfloating % even when not really floating!
|
||||
\ifWF@float\else \ifhmode
|
||||
{\unskip \parfillskip\z@skip \par \vskip-\parskip}\aftergroup\noindent
|
||||
\fi\fi \global\@ignoretrue}
|
||||
|
||||
\let\endwrapfigure\endwrapfloat
|
||||
\let\endwraptable\endwrapfloat
|
||||
|
||||
% Subvert \everypar to float fig and do wrapping. Also for non-float.
|
||||
\def\WF@startfloating{%
|
||||
\WF@everypar\expandafter{\the\everypar}\let\everypar\WF@everypar
|
||||
\WF@@everypar{\ifvoid\WF@box\else\WF@floathand\fi \the\everypar
|
||||
\WF@wraphand
|
||||
}}
|
||||
|
||||
\def\WF@floathand{%
|
||||
\ifx\parshape\WF@fudgeparshape \WF@fltmes\else
|
||||
\ifx\par\@@par\ifnum\@@parshape=\z@\ifdim\hangindent=\z@
|
||||
\setbox\z@\lastbox \begingroup
|
||||
\@@par \WF@@everypar{}\WF@putfigmaybe
|
||||
\endgroup % start wrapping
|
||||
\ifvoid\z@\else\box\z@\fi % replace indentation
|
||||
\else\WF@fltmes\fi\else\WF@fltmes\fi\else\WF@fltmes\fi\fi}
|
||||
|
||||
% Put fig here if it fits or if it can't float
|
||||
\def\WF@putfigmaybe{%
|
||||
\ifinner
|
||||
\vskip-\parskip \global\WF@floatfalse
|
||||
\let\pagetotal\maxdimen % kludge flag for "not top of page"
|
||||
\else % outer page
|
||||
\@tempdima\pagedepth % save page depth
|
||||
{\advance\parskip\@tempdima\vskip-\parskip}% back up to baseline
|
||||
\penalty\interlinepenalty % update pg. parameters
|
||||
\@tempdimb\pagegoal \advance\@tempdimb-\pagetotal % room left on page
|
||||
\ifdim\@tempdimb<\z@ % \WF@info{Page overfull already;}%
|
||||
\global\WF@floatfalse
|
||||
\ifdim-\@tempdimb>\pageshrink \else \pagebreak \fi
|
||||
\else
|
||||
\ifdim\WF@size>\@tempdimb
|
||||
% \WF@info{Size \the\WF@size\space does not fit in \the\@tempdimb}%
|
||||
\ifWF@float \dimen@.5\baselineskip \else \dimen@ 2\baselineskip\fi
|
||||
\ifdim\pagestretch>\dimen@ \dimen@\pagestretch \fi
|
||||
\ifdim\pagefilstretch>\z@ \dimen@\@tempdimb \fi
|
||||
\ifdim\pagefillstretch>\z@ \dimen@\@tempdimb \fi
|
||||
\advance\dimen@.5\baselineskip
|
||||
\ifdim\dimen@>\@tempdimb % \WF@info{Page nearly full; can stretch}%
|
||||
\global\WF@floatfalse \pagebreak
|
||||
\fi
|
||||
\else % \WF@info{Fits in \the\@tempdimb;}%
|
||||
\global\WF@floatfalse
|
||||
\fi\fi
|
||||
\vskip\@tempdima\relax % (return erased page depth)
|
||||
\fi
|
||||
\noindent
|
||||
\ifWF@float
|
||||
\WF@fltmes
|
||||
\else % putting here;
|
||||
\WF@info{Put \WF@wfname here:}%
|
||||
{\ifodd\if@twoside\c@page\else\@ne\fi % assign l/r to i/o placement
|
||||
\lccode`i`l\lccode`o`r\else \lccode`i`r\lccode`o`l\fi
|
||||
\xdef\WF@place{\the\lccode\lccode\WF@place}}% twice to get only l or r
|
||||
\hbox to\z@{% llap or rlap depending on {l} or {r}; calc effective width
|
||||
\@tempdima\wd\WF@box \@tempdimb\WF@ovh
|
||||
\advance\@tempdima-\@tempdimb \advance\@tempdima\columnsep
|
||||
\@tempdimb\hsize \advance\@tempdimb-\@tempdima
|
||||
\xdef\WF@adjlw{\the\@tempdima}%
|
||||
\ifnum `l=\WF@place % fig on left
|
||||
\hss % figure overlaps space to the left
|
||||
\def\@tempa{\kern\columnsep}% position to left of the gap
|
||||
\else % fig on right
|
||||
\@tempdima\z@ % no left indentation
|
||||
\kern\@tempdimb \kern\columnsep
|
||||
\def\@tempa{\hss}% figure overlaps space to the right
|
||||
\fi
|
||||
\ifdim\@tempdimb<\hsize
|
||||
\xdef\WF@wrapil{\the\@tempdima \the\@tempdimb}% indentation and length
|
||||
\xdef\WF@adjtlm{\the\@tempdima}%
|
||||
\else
|
||||
\xdef\WF@wrapil{\z@ \the\hsize}%
|
||||
\xdef\WF@adjlw{\z@}\xdef\WF@adjtlm{\z@}%
|
||||
\fi
|
||||
\ifdim\pagetotal=\z@ % \WF@info{Put \WF@wfname at top of p.\thepage}%
|
||||
\global\advance\WF@size-\intextsep
|
||||
\else % \WF@info{Putting \WF@wfname in middle of page}%
|
||||
\setbox\WF@box\hbox{\lower\intextsep\box\WF@box}%
|
||||
\fi \dp\WF@box\z@ \box\WF@box \@tempa
|
||||
}% end \hbox to 0pt
|
||||
\aftergroup\WF@startwrapping % after the \endgroup which immediately follows
|
||||
\fi}
|
||||
|
||||
\def\WF@startwrapping{%
|
||||
\ifx\WF@wli\@empty
|
||||
{\advance\WF@size1.1\baselineskip
|
||||
\divide\WF@size\baselineskip \global\c@WF@wrappedlines\WF@size}%
|
||||
\else
|
||||
\setcounter{WF@wrappedlines}{\WF@wli}\global\advance\c@WF@wrappedlines\@ne
|
||||
\fi
|
||||
\ifnum\c@WF@wrappedlines>\@ne
|
||||
\let\parshape\WF@fudgeparshape \let\WF@pspars\@empty \let\WF@@par\par
|
||||
\def\@setpar##1{\def\WF@@par{##1}}\def\par{\@par}\let\@par\WF@mypar
|
||||
\xdef\WF@restoretol{\tolerance\the\tolerance}\tolerance9999
|
||||
\advance\linewidth-\WF@adjlw \advance\@totalleftmargin\WF@adjtlm
|
||||
\fi}
|
||||
|
||||
\def\WF@wraphand{%
|
||||
\ifnum\c@WF@wrappedlines<\tw@ \WF@finale
|
||||
\else \begingroup % Create \parshape command:
|
||||
\@tempcnta\@ne \let\WF@wrapil\relax \gdef\WF@ps{}%
|
||||
\@whilenum \@tempcnta<\c@WF@wrappedlines\do{% repeated indentation, length
|
||||
\xdef\WF@ps{\WF@ps\WF@wrapil}\advance\@tempcnta\@ne
|
||||
}\endgroup
|
||||
\ifx\WF@pspars\@empty
|
||||
\@@parshape\c@WF@wrappedlines \WF@ps \WF@noil
|
||||
\else % use external `parshape' values to modify my parshape
|
||||
\WF@modps
|
||||
\fi\fi}
|
||||
|
||||
\def\WF@mypar{\relax
|
||||
\WF@@par % what the rest of LaTeX expects \par to be (usually \@@par)
|
||||
\ifnum\@@parshape=\z@ \let\WF@pspars\@empty \fi % reset `parshape'
|
||||
\global\advance\c@WF@wrappedlines-\prevgraf \prevgraf\z@
|
||||
\ifnum\c@WF@wrappedlines<\tw@ \WF@finale \fi}
|
||||
|
||||
\def\WF@modps{\begingroup
|
||||
\afterassignment\@tempdimb \@tempdima\WF@pspars % a=ind, b=wid
|
||||
\advance\@tempdima-\WF@adjtlm \advance\@tempdimb\WF@adjlw
|
||||
% \afterassignment\dimen@\advance\@tempdima\WF@wrapil
|
||||
% \advance\@tempdimb\dimen@ \advance\@tempdimb-\hsize
|
||||
\let\WF@wrapil\WF@pspars%{\the\@tempdima \the\@tempdimb}%
|
||||
\edef\@tempb{\@@parshape\c@WF@wrappedlines \WF@ps \the\@tempdima \the\@tempdimb}%
|
||||
\expandafter\endgroup\@tempb}
|
||||
|
||||
\let\@@setpar\@setpar
|
||||
\def\WF@noil{\z@ \hsize}
|
||||
\let\WF@pspars\@empty
|
||||
|
||||
\def\WF@fudgeparshape{\relax \ifnum\c@WF@wrappedlines<\tw@ \WF@finale
|
||||
\else \afterassignment\WF@fudgeparshapee \fam \fi}
|
||||
\def\WF@fudgeparshapee{\ifnum\fam=\@ne \expandafter \WF@parshapeee \else
|
||||
\WF@conflict \@@parshape\fam \fi}
|
||||
\def\WF@parshapeee#1#2{\begingroup\delimitershortfall#1%
|
||||
\nulldelimiterspace#2%\advance\nulldelimiterspace\WF@adjlw
|
||||
\edef\@tempa{\def\noexpand\WF@pspars{%
|
||||
\the\delimitershortfall \the\nulldelimiterspace}}%
|
||||
\expandafter\endgroup\@tempa \WF@wraphand}
|
||||
|
||||
\def\WF@finale{\ifx\parshape\WF@fudgeparshape
|
||||
\WF@restoretol \let\@setpar\@@setpar \let\par\WF@@par
|
||||
\advance\linewidth\WF@adjlw \advance\@totalleftmargin-\WF@adjtlm
|
||||
\WF@info{Finish wrapping text}%
|
||||
\ifx\par\@@par \def\@par{\let\par\@@par\par}\else \let\@par\WF@@par \fi
|
||||
\let\parshape\@@parshape
|
||||
\parshape\ifx\WF@pspars\@empty \z@ \else \@ne \WF@pspars\fi \fi
|
||||
\ifvoid\WF@box \ifx\everypar\WF@everypar
|
||||
\let\everypar\WF@@everypar \everypar\expandafter{\the\WF@everypar}%
|
||||
\fi\fi}
|
||||
|
||||
\newcommand{\WFclear}{\par
|
||||
\ifvoid\WF@box\else \vskip\bigskipamount \box\WF@box
|
||||
\let\everypar\WF@@everypar \everypar\expandafter{\the\WF@everypar}%
|
||||
\fi \global\c@WF@wrappedlines\z@ \WF@finale}
|
||||
|
||||
\begingroup
|
||||
\toks0={\let\everypar\WF@@everypar \everypar\expandafter{\the\WF@everypar}%
|
||||
\let\parshape\@@parshape \let\@setpar\@@setpar }
|
||||
\toks1=\expandafter{\@arrayparboxrestore}
|
||||
\toks2=\expandafter{\clearpage}
|
||||
\edef\@tempa{\def\noexpand\@arrayparboxrestore{\the\toks0 \the\toks1}%
|
||||
\def\noexpand\clearpage{\noexpand\protect\noexpand\WFclear \the\toks2}}
|
||||
\expandafter
|
||||
\endgroup\@tempa
|
||||
|
||||
\@ifundefined{@capwidth}{\let\@capwidth\hsize}{}% Pamper RevTeX's Stupidity
|
||||
|
||||
\def\WF@conflict{\WF@warning
|
||||
{\WF@wfname used inside a conflicting environment}}
|
||||
\def\WF@collision{\WF@warning{Collision between wrapping environments}}
|
||||
\def\WF@fltmes{\ifWF@float \WF@info{\WF@wfname floats}%
|
||||
\else \WF@warning{Stationary \WF@wfname forced to float}\fi}
|
||||
|
||||
\let\WF@warning\@warning
|
||||
\let\WF@info\@gobble
|
||||
|
||||
% Support float.sty: float styles and \newfloat. Make \newfloat{foo}
|
||||
% define the `wrapfoo' environment. Support \newfloat from memoir.cls
|
||||
% and \newfloatlist from ccaption.sty.
|
||||
%
|
||||
\let\WF@floatstyhook\relax
|
||||
|
||||
\@ifundefined{newfloat}{}{% There is a \newfloat command
|
||||
%
|
||||
\@ifundefined{restylefloat}{
|
||||
% \newfloat comes from somewhere besides float.sty
|
||||
\@ifclassloaded{memoir}{
|
||||
\toks@=\expandafter\expandafter\expandafter
|
||||
{\csname\string\newfloat\endcsname [{#1}]{#2}{#3}{#4}%
|
||||
\newenvironment{wrap#2}{\wrapfloat{#2}}{\endwrapfloat}%
|
||||
}
|
||||
\edef\@tempa{\def\expandafter\noexpand\csname\string\newfloat\endcsname
|
||||
[##1]##2##3##4{\the\toks@}}
|
||||
\@tempa
|
||||
}% end memoir support
|
||||
{}% Other origins of \newfloat here??
|
||||
}{
|
||||
% float.sty handler. Ooops: Two versions for different versions
|
||||
% Changing \float@restyle (or \restylefloat) changes \newfloat too.
|
||||
\@ifundefined{float@restyle}{% older float.sty
|
||||
\toks@=\expandafter{\restylefloat{#1}% (env may or may not be defined)
|
||||
\@namedef{wrap#1}{\def\@captype{#1}\@nameuse{fst@#1}%
|
||||
\def\WF@floatstyhook{\let\@currbox\WF@box \columnwidth\wd\WF@box
|
||||
\global\setbox\WF@box\float@makebox}%
|
||||
\@ifnextchar[\WF@wr{\WF@wr[]}}%
|
||||
\expandafter\let\csname endwrap#1\endcsname \endwrapfigure
|
||||
}\edef\@tempa{\def\noexpand\restylefloat##1{\the\toks@}}
|
||||
}{% newer float.sty: use \float@restyle, and \float@makebox takes width arg
|
||||
\toks@=\expandafter{\float@restyle{#1}% (env may or may not be defined)
|
||||
\@namedef{wrap#1}{\def\@captype{#1}\@nameuse{fst@#1}%
|
||||
\def\WF@floatstyhook{\let\@currbox\WF@box
|
||||
\global\setbox\WF@box\float@makebox{\wd\WF@box}}%
|
||||
\@ifnextchar[\WF@wr{\WF@wr[]}}%
|
||||
\expandafter\let\csname endwrap#1\endcsname \endwrapfigure
|
||||
}\edef\@tempa{\def\noexpand\float@restyle##1{\the\toks@}}
|
||||
}
|
||||
\@tempa % perform redefinitions
|
||||
%
|
||||
}% End float.sty handler
|
||||
}% End redefinitions of \newfloat
|
||||
|
||||
% Support ccaption.sty
|
||||
\@ifundefined{\string\newfloatlist}{}{
|
||||
\toks@=\expandafter\expandafter\expandafter
|
||||
{\csname\string\newfloatlist\endcsname [{#1}]{#2}{#3}{#4}{#5}%
|
||||
\@namedef{wrap#2}{\wrapfloat{#2}}%
|
||||
\expandafter\let\csname endwrap#2\endcsname \endwrapfloat
|
||||
}
|
||||
\edef\@tempa{\def\expandafter\noexpand\csname\string\newfloatlist\endcsname
|
||||
[##1]##2##3##4##5{\the\toks@}}
|
||||
\@tempa
|
||||
}
|
||||
|
||||
% Process package options.
|
||||
|
||||
\@ifundefined{DeclareOption}{\endinput}{}
|
||||
|
||||
\def\WF@warning{\PackageWarning{wrapfig}}
|
||||
\ProvidesPackage{wrapfig}[2003/01/31 \space v 3.6]
|
||||
\DeclareOption{verbose}{\def\WF@info{\PackageInfo{wrapfig}}}
|
||||
\ProcessOptions
|
||||
\AtEndDocument{\WFclear}
|
||||
|
||||
\endinput
|
||||
|
||||
%%%%% ----- End definitions ----- %%%%%
|
||||
|
||||
%%%%% ----- Begin Instructions ----- %%%%%
|
||||
|
||||
|
||||
W R A P F I G . S T Y \ \ ver 3.6 \ \ (Jan 31, 2003)
|
||||
|
||||
Copyright (C) 1991-2003 by Donald Arseneau (asnd@triumf.ca)
|
||||
|
||||
Wrapfig.sty provides the environments "wrapfigure" and "wraptable" for
|
||||
typesetting a narrow float at the edge of the text, and making the text
|
||||
wrap around it. The "wrapfigure" and "wraptable" environments interact
|
||||
properly with the "\caption" command to produce proper numbering, but
|
||||
they are not regular floats like "figure" and "table", so (beware!) they
|
||||
may be printed out of sequence with the regular floats. There are four
|
||||
parameters for "\begin{wrapfigure}", two optional and two required, plus
|
||||
the text of the figure, with a caption perhaps:
|
||||
|
||||
\begin{wrapfigure}[12]{r}[34pt]{5cm} <figure> \end{wrapfigure}
|
||||
== = ==== ===
|
||||
[number of narrow lines] {placement} [overhang] {width}
|
||||
|
||||
Some idiosyncrasies:
|
||||
|
||||
- You must not specify a wrapfigure in any type of list environment or
|
||||
or immediately before or immediately after one. It is OK to follow
|
||||
a list if there is a blank line ("\par") in between.
|
||||
|
||||
- If you put a wrapfigure in a parbox or a minipage, or any other type
|
||||
of grouping, the text wrapping should end before the group does.
|
||||
|
||||
- It does work in two-column format, but are your figures that small?
|
||||
|
||||
- It may be out of sequence with regular floats.
|
||||
|
||||
- The hlines that may be printed above and below floats are ignored;
|
||||
you must insert them manually if desired.
|
||||
|
||||
- "\linewidth" is now adjusted within the wrapped text, but since it
|
||||
can only be set for whole paragraphs at a time, it will persist with
|
||||
the wrong value after the wrapping, until the paragraph is finished.
|
||||
|
||||
New wrapping environments may be added when new float types are defined
|
||||
(using memoir.cls, float.sty, or ccaption.sty). Any wrapping environment,
|
||||
"wrapfigure", "wraptable", or something else may be invoked using the
|
||||
"wrapfloat" environment, as in "\begin{wrapfloat}{figure}{O}{5cm}".
|
||||
|
||||
To use float.sty properly, load package "float" before "wrapfig",
|
||||
and declare any new float types after loading both. Likewise for
|
||||
ccaption.sty and "\newfloatlist" and memoir.cls and its "\newfloat".
|
||||
|
||||
\section{Placement and Floating}
|
||||
|
||||
Parameter "#2" (required) is the figure placement code, but the valid
|
||||
codes are different from regular figures. They come in pairs: an
|
||||
uppercase version which allows the figure to float, and a lowercase
|
||||
version that puts the figure ``exactly here''.
|
||||
|
||||
r R - the right side of the text
|
||||
l L - the left side of the text
|
||||
i I - the inside edge--near the binding (if "[twoside]" document)
|
||||
o O - the outside edge--far from the binding
|
||||
|
||||
You should specify one code only, not a list. The figure or table must
|
||||
be on one side or the other; it cannot be in the middle with text on
|
||||
both sides. The "i" and "o" options refer to the inside and outside of
|
||||
the whole page, not individual columns.
|
||||
|
||||
The ability to float is somewhat restricted, and you will get best results
|
||||
by giving exact manual placement, but floating is more convenient while
|
||||
revising the document. Any changes to the formatting can ruin your manual
|
||||
positioning so you should adjust the placement just before printing a
|
||||
final copy. Here are some tips for good placement:
|
||||
|
||||
- The environment should be placed so as to not run over a page break.
|
||||
|
||||
- The environment must not be placed in special places like lists.
|
||||
|
||||
- For esthetic reasons, only plain text should wrap around the figure.
|
||||
Section titles and big equations look bad; lists are bad if the figure
|
||||
is on the left. (All these function properly, they just don't look
|
||||
very good.) Small equations look fine.
|
||||
|
||||
- It is convenient to begin the environment between paragraphs, but if
|
||||
you want placement in the middle of a paragraph, you must put the
|
||||
environment between two words where there is a natural line break.
|
||||
|
||||
When floating, \LaTeX\ tries to apply these rules. More specifically,
|
||||
a floated wrapping environment will only begin...
|
||||
|
||||
- at the beginning of a paragraph,
|
||||
|
||||
- when there is enough room on the page, or it is possible to go on
|
||||
the next page,
|
||||
|
||||
- if the `paragraph' is not in a section title or a list,
|
||||
|
||||
- if the paragraph is not wrapping around another figure,
|
||||
|
||||
- in the main text (not in a minipage etc.)
|
||||
|
||||
It is possible that a non-floating wrapfigure will be forced to float
|
||||
when an earlier one is still being processed. A warning will be written
|
||||
in that case. You can have more information about the floating process
|
||||
written to the log file by specifying "\usepackage[verbose]{wrapfig}".
|
||||
|
||||
If there is a lot of flexibility on a page, a floating wrapfigure may
|
||||
be placed badly; you must turn to manual placement. A rare problem is
|
||||
that floats and footnotes specified within the wrapping text can also
|
||||
cause poor placement and bad formatting.
|
||||
|
||||
|
||||
\section {Sizing and optional overhang}
|
||||
|
||||
Parameter "#4" (the second required parameter) is the width of the figure
|
||||
or table. Given the way that \LaTeX\ puts just about everything into boxes
|
||||
with the current line-width, the width parameter will take precedence over
|
||||
whatever natural width the figure has. In particular, the caption is always
|
||||
typeset with the specified width. If the figure is wider than the space
|
||||
allotted, you will get an ``overfull box'' warning.
|
||||
|
||||
However, if you specify a width of *zero* ("0pt"), the actual width of
|
||||
the figure will determine the wrapping width. A following "\caption"
|
||||
should have the same width as the figure, but it might fail badly; it
|
||||
is safer to specify a width when you use a caption.
|
||||
|
||||
\LaTeX\ will wrap surrounding text around the figure, leaving a gap of
|
||||
"\intextsep" at the top and bottom, and "\columsep" at the side, by
|
||||
producing a series of shortened text lines beside the figure. The
|
||||
indentation (shortening) of the text is the figure width plus "\columnsep"
|
||||
minus overhang (if any; see below).
|
||||
|
||||
\LaTeX\ calculates the number of short lines needed based on the height
|
||||
of the figure and the length "\intextsep". You can override this guess
|
||||
by giving the first optional argument (parameter "#1") specifying the
|
||||
number of shortened lines (counting each displayed equation as 3 lines).
|
||||
This is particularly useful when the surrounding text contains extra
|
||||
vertical spacing that is not accounted for automatically.
|
||||
|
||||
The second optional parameter ("#3") tells how much the figure should
|
||||
hang out into the margin. The default overhang is given by the length
|
||||
"\wrapoverhang", which is "0pt" normally but can be changed using
|
||||
"\setlength". For example, to have all wrapfigures use the space
|
||||
reserved for marginal notes,
|
||||
|
||||
\setlength{\wrapoverhang}{\marginparwidth}
|
||||
\addtolength{\wrapoverhang}{\marginparsep}
|
||||
|
||||
When you do specify the overhang explicitly for a particular figure, you
|
||||
can use a special unit called "\width" meaning the width of the figure.
|
||||
For example, "[0.5\width]" makes the center of the figure sit on the
|
||||
edge of the text, and "[\width]" puts the figure entirely in the margin
|
||||
(and the adjacent text is indented by just "\columnsep"). This "\width"
|
||||
is the actual width of the wrapfigure, which may be greater than the
|
||||
declared width.
|
||||
|
||||
|
||||
\section{Some Random Implementation Notes}
|
||||
|
||||
Unfortunately, \LaTeX's system of setting "\everypar" and "\par" is
|
||||
unable to coexist peacefully with a wrapping environment, so I was
|
||||
forced to subvert the "\@setpar" mechanism and "\everypar". ("\everypar"
|
||||
is already subverted once by NFSS.)
|
||||
|
||||
When checking the room left on the page, remember that if there is less
|
||||
than "\baselineskip" the new paragraph will begin on the next page, even
|
||||
if there is no page stretch. If non-floating, I force a bad page break
|
||||
rather than have the figure hang into the bottom margin.
|
||||
|
||||
Here are notes on various variables and some macros; what info they
|
||||
store and how they are used.
|
||||
|
||||
\WF@wli - number-of-wrapped-lines parameter, saved for start of wrapping.
|
||||
Set globally by "\WF@wr" (set empty if no optional parameter given).
|
||||
The floating mechanism ignores this and uses the real size.
|
||||
|
||||
\WF@ovh - margin overhang set globally by "\WF@rapt", saved until placing
|
||||
figure (but not reset). Actually, the setting is very tricky so that
|
||||
the expected values are used when a figure floats. First, the expression
|
||||
is saved without evaluation by "\WF@rapt" ("\begin{wrapfigure}") because
|
||||
"\width" is still unknown. Soon after that, "\endwrapfigure" executes
|
||||
"\WF@ovh" to evaluate the overhang and save the result (so that changes
|
||||
to "\wrapoverhang" while this figure is floating won't affect this
|
||||
figure). Finally, it is used by "\WF@putfigmaybe" when printing the fig.
|
||||
|
||||
\WF@place - a macro that is used as a number, giving the placement code.
|
||||
It might start out as "`I" and later be converted to "114" (r).
|
||||
|
||||
\WF@box - tested for void at "\begin{wrapfigure}", to avoid collisions,
|
||||
by "\everypar" to do floating, and by "\WF@finale" before resetting
|
||||
"\everypar". Voided globally when used by "\WF@putfigmaybe" (or by
|
||||
"\WF@wr" if an old figure must be dumped prematurely).
|
||||
|
||||
\par - test if it is "\@@par" by "\begin{wrapfigure}" and "\WF@floathand"
|
||||
to float past special environments. It is set to "\@par" ("\WF@mypar")
|
||||
by "\WF@startwrapping", and restored by an end-group (bad!) or by
|
||||
"\WF@finale" (good). It is protected from change by redefining
|
||||
"\@setpar".
|
||||
|
||||
\parshape - let to "\WF@fudgeparshape" by "\WF@startwrapping", so lists
|
||||
will continue wrapping; "\@@parshape" preserves the real "\parshape"
|
||||
command, and it is restored by "\WF@finale" or "\@parboxrestore".
|
||||
"\WF@floathand" and "\WF@wr" test if old wrapping is still in progress
|
||||
with "\ifx\parshape\WF@fudgeparshape". The value of "\@@parshape" is
|
||||
also tested to float past lists and other wrapping environments.
|
||||
|
||||
\hangindent - tested to float past section titles etc.
|
||||
|
||||
\c@WF@wrappedlines - the number of shortened lines + 1; set globally by
|
||||
"\WF@startwrapping" and decremented by "\par" ("\WF@mypar"). It is > 1
|
||||
only when wrapping is incomplete. "\WF@wraphand", "\WF@fudgeparshape",
|
||||
and "\WF@mypar" test the number for calling "\WF@finale". It may get
|
||||
stuck at some high value if "\par" is restored by an end-group, (and
|
||||
wrapping is terminated prematurely) so it is unwise to use this as a
|
||||
test for wrapping-complete.
|
||||
|
||||
\pagetotal - one of many parameters used to compute floating. When
|
||||
putting a wrapfigure in a parbox, I assign "\let\pagetotal\maxdimen"
|
||||
(locally!) to signal not-top-of-page and no floating.
|
||||
|
||||
\WF@pspars - the "\parshape" parameters as LaTeX sets them for lists
|
||||
("\WF@fudgeparshape"); when wrapping I test it and use it to modify my
|
||||
own real params for the paragraph. They are also used when "\parshape"
|
||||
is restored after wrapping.
|
||||
|
||||
\WF@finale - is performed by "\par" when wrapping should end. However,
|
||||
that might happen inside a group (a list especially), so the subverted
|
||||
versions of "\par", "\parshape" etc. will be reinstated when the group
|
||||
ends. Thus, they must themselves test "\c@WF@wrappedlines" < 2 to see
|
||||
when wrapping is over, and if so, they should just do "\WF@finale" again.
|
||||
|
||||
These are the tests to see if a floating wrapfigure will fit at a particular
|
||||
spot. These tests are performed at the beginning of every paragraph after
|
||||
the figure, except in lists etc. ("\pagegoal" - "\pagetotal" is the room
|
||||
left on the page.)
|
||||
|
||||
>
|
||||
room_left := \pagegoal - \pagetotal
|
||||
if room_left < 0 then page overfull already: put figure (on next page)
|
||||
else
|
||||
if figure_size > room_left then does not fit
|
||||
if max(min_stretch, \pagestretch) + extra > room_left
|
||||
then page can stretch until full: put figure (at top of next page)
|
||||
fi
|
||||
else figure fits: put figure
|
||||
fi fi
|
||||
<
|
||||
|
||||
Even if a wrapfigure is not floating, it will go through the same logic
|
||||
to generate a "\pagebreak", and maybe an underfull page, when the current
|
||||
page can stretch until full. The "min_stretch" depends on whether it is
|
||||
floating or not: ".5\baselineskip" (floating) "2\baselineskip" (not). The
|
||||
"extra" is ".5\baselineskip" in either case. These values can be adjusted.
|
||||
|
||||
There are some other `magic numbers' for floating that aren't really so
|
||||
special, but you must change them together if you change them at all.
|
||||
To make floating wrapfigures float less and fit on pages more frequently,
|
||||
but not change the number of wrapped lines, decrease the "1.5" in
|
||||
"\global\advance\WF@size1.5\baselineskip" and increase the "1.1" in
|
||||
"\advance\WF@size1.1\baselineskip" by the same amount (and vice versa).
|
||||
To make more (or fewer) wrapped lines for the same size figure, without
|
||||
changing the floating, change "1.1" in "\advance\WF@size1.1\baselineskip"
|
||||
unilaterally.
|
||||
|
||||
%%%%% ----- End Instructions ----- %%%%%
|
||||
|
||||
Test file integrity: ASCII 32-57, 58-126: !"#$%&'()*+,-./0123456789
|
||||
:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
|
24
tesi/prova.aux
Normal file
24
tesi/prova.aux
Normal file
|
@ -0,0 +1,24 @@
|
|||
\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\HyField@AuxAddToFields[1]{}
|
||||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1}{\bfseries \sffamily TODO} Scaletta [1/2]}{1}{section.1}\protected@file@percent }
|
||||
\newlabel{sec:org5a6f376}{{1}{1}{{\bfseries \sffamily TODO} Scaletta [1/2]}{section.1}{}}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Introduction}{1}{section.2}\protected@file@percent }
|
||||
\newlabel{sec:orgef00ecd}{{2}{1}{Introduction}{section.2}{}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}{\bfseries \sffamily TODO} OCaml}{1}{subsection.2.1}\protected@file@percent }
|
||||
\newlabel{sec:org5659ec2}{{2.1}{1}{{\bfseries \sffamily TODO} OCaml}{subsection.2.1}{}}
|
0
tesi/prova.bbl
Normal file
0
tesi/prova.bbl
Normal file
48
tesi/prova.blg
Normal file
48
tesi/prova.blg
Normal file
|
@ -0,0 +1,48 @@
|
|||
This is BibTeX, Version 0.99d (TeX Live 2019 Gentoo Linux)
|
||||
Capacity: max_strings=100000, hash_size=100000, hash_prime=85009
|
||||
The top-level auxiliary file: prova.aux
|
||||
I found no \citation commands---while reading file prova.aux
|
||||
I found no \bibdata command---while reading file prova.aux
|
||||
I found no \bibstyle command---while reading file prova.aux
|
||||
You've used 0 entries,
|
||||
0 wiz_defined-function locations,
|
||||
83 strings with 484 characters,
|
||||
and the built_in function-call counts, 0 in all, are:
|
||||
= -- 0
|
||||
> -- 0
|
||||
< -- 0
|
||||
+ -- 0
|
||||
- -- 0
|
||||
* -- 0
|
||||
:= -- 0
|
||||
add.period$ -- 0
|
||||
call.type$ -- 0
|
||||
change.case$ -- 0
|
||||
chr.to.int$ -- 0
|
||||
cite$ -- 0
|
||||
duplicate$ -- 0
|
||||
empty$ -- 0
|
||||
format.name$ -- 0
|
||||
if$ -- 0
|
||||
int.to.chr$ -- 0
|
||||
int.to.str$ -- 0
|
||||
missing$ -- 0
|
||||
newline$ -- 0
|
||||
num.names$ -- 0
|
||||
pop$ -- 0
|
||||
preamble$ -- 0
|
||||
purify$ -- 0
|
||||
quote$ -- 0
|
||||
skip$ -- 0
|
||||
stack$ -- 0
|
||||
substring$ -- 0
|
||||
swap$ -- 0
|
||||
text.length$ -- 0
|
||||
text.prefix$ -- 0
|
||||
top$ -- 0
|
||||
type$ -- 0
|
||||
warning$ -- 0
|
||||
while$ -- 0
|
||||
width$ -- 0
|
||||
write$ -- 0
|
||||
(There were 3 error messages)
|
694
tesi/prova.log
Normal file
694
tesi/prova.log
Normal file
|
@ -0,0 +1,694 @@
|
|||
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 17:30
|
||||
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
|
||||
)
|
||||
(/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.
|
||||
))
|
||||
(/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: pdftex.def on input line 99.
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex
|
||||
))
|
||||
\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: \pdf@primitive is available.
|
||||
Package pdftexcmds Info: \pdf@ifprimitive is available.
|
||||
Package pdftexcmds Info: \pdfdraftmode 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
|
||||
Now handling font encoding TS1 ...
|
||||
... processing UTF-8 mapping file for font encoding TS1
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/base/ts1enc.dfu
|
||||
File: ts1enc.dfu 2018/10/05 v1.2f UTF-8 support for inputenc
|
||||
defining Unicode char U+00A2 (decimal 162)
|
||||
defining Unicode char U+00A3 (decimal 163)
|
||||
defining Unicode char U+00A4 (decimal 164)
|
||||
defining Unicode char U+00A5 (decimal 165)
|
||||
defining Unicode char U+00A6 (decimal 166)
|
||||
defining Unicode char U+00A7 (decimal 167)
|
||||
defining Unicode char U+00A8 (decimal 168)
|
||||
defining Unicode char U+00A9 (decimal 169)
|
||||
defining Unicode char U+00AA (decimal 170)
|
||||
defining Unicode char U+00AC (decimal 172)
|
||||
defining Unicode char U+00AE (decimal 174)
|
||||
defining Unicode char U+00AF (decimal 175)
|
||||
defining Unicode char U+00B0 (decimal 176)
|
||||
defining Unicode char U+00B1 (decimal 177)
|
||||
defining Unicode char U+00B2 (decimal 178)
|
||||
defining Unicode char U+00B3 (decimal 179)
|
||||
defining Unicode char U+00B4 (decimal 180)
|
||||
defining Unicode char U+00B5 (decimal 181)
|
||||
defining Unicode char U+00B6 (decimal 182)
|
||||
defining Unicode char U+00B7 (decimal 183)
|
||||
defining Unicode char U+00B9 (decimal 185)
|
||||
defining Unicode char U+00BA (decimal 186)
|
||||
defining Unicode char U+00BC (decimal 188)
|
||||
defining Unicode char U+00BD (decimal 189)
|
||||
defining Unicode char U+00BE (decimal 190)
|
||||
defining Unicode char U+00D7 (decimal 215)
|
||||
defining Unicode char U+00F7 (decimal 247)
|
||||
defining Unicode char U+0192 (decimal 402)
|
||||
defining Unicode char U+02C7 (decimal 711)
|
||||
defining Unicode char U+02D8 (decimal 728)
|
||||
defining Unicode char U+02DD (decimal 733)
|
||||
defining Unicode char U+0E3F (decimal 3647)
|
||||
defining Unicode char U+2016 (decimal 8214)
|
||||
defining Unicode char U+2020 (decimal 8224)
|
||||
defining Unicode char U+2021 (decimal 8225)
|
||||
defining Unicode char U+2022 (decimal 8226)
|
||||
defining Unicode char U+2030 (decimal 8240)
|
||||
defining Unicode char U+2031 (decimal 8241)
|
||||
defining Unicode char U+203B (decimal 8251)
|
||||
defining Unicode char U+203D (decimal 8253)
|
||||
defining Unicode char U+2044 (decimal 8260)
|
||||
defining Unicode char U+204E (decimal 8270)
|
||||
defining Unicode char U+2052 (decimal 8274)
|
||||
defining Unicode char U+20A1 (decimal 8353)
|
||||
defining Unicode char U+20A4 (decimal 8356)
|
||||
defining Unicode char U+20A6 (decimal 8358)
|
||||
defining Unicode char U+20A9 (decimal 8361)
|
||||
defining Unicode char U+20AB (decimal 8363)
|
||||
defining Unicode char U+20AC (decimal 8364)
|
||||
defining Unicode char U+20B1 (decimal 8369)
|
||||
defining Unicode char U+2103 (decimal 8451)
|
||||
defining Unicode char U+2116 (decimal 8470)
|
||||
defining Unicode char U+2117 (decimal 8471)
|
||||
defining Unicode char U+211E (decimal 8478)
|
||||
defining Unicode char U+2120 (decimal 8480)
|
||||
defining Unicode char U+2122 (decimal 8482)
|
||||
defining Unicode char U+2126 (decimal 8486)
|
||||
defining Unicode char U+2127 (decimal 8487)
|
||||
defining Unicode char U+212E (decimal 8494)
|
||||
defining Unicode char U+2190 (decimal 8592)
|
||||
defining Unicode char U+2191 (decimal 8593)
|
||||
defining Unicode char U+2192 (decimal 8594)
|
||||
defining Unicode char U+2193 (decimal 8595)
|
||||
defining Unicode char U+2329 (decimal 9001)
|
||||
defining Unicode char U+232A (decimal 9002)
|
||||
defining Unicode char U+2422 (decimal 9250)
|
||||
defining Unicode char U+25E6 (decimal 9702)
|
||||
defining Unicode char U+25EF (decimal 9711)
|
||||
defining Unicode char U+266A (decimal 9834)
|
||||
defining Unicode char U+FEFF (decimal 65279)
|
||||
))
|
||||
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)
|
||||
Now handling font encoding PD1 ...
|
||||
... no UTF-8 mapping file for font encoding PD1
|
||||
)
|
||||
\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): hpdftex.
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
File: hpdftex.def 2018/11/30 v6.88e Hyperref driver for pdfTeX
|
||||
\Fld@listcount=\count116
|
||||
\c@bookmark@seq@number=\count117
|
||||
|
||||
(/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
|
||||
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=\count118
|
||||
\float@exts=\toks26
|
||||
\float@box=\box38
|
||||
\@float@everytoks=\toks27
|
||||
\@floatcapt=\box39
|
||||
)
|
||||
\@float@every@algorithm=\toks28
|
||||
\c@algorithm=\count119
|
||||
)
|
||||
(/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=\count120
|
||||
\c@ALG@rem=\count121
|
||||
\c@ALG@nested=\count122
|
||||
\ALG@tlm=\skip54
|
||||
\ALG@thistlm=\skip55
|
||||
\c@ALG@Lnr=\count123
|
||||
\c@ALG@blocknr=\count124
|
||||
\c@ALG@storecount=\count125
|
||||
\c@ALG@tmpcounter=\count126
|
||||
\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
|
||||
)
|
||||
\c@definition=\count127
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/listings/listings.sty
|
||||
\lst@mode=\count128
|
||||
\lst@gtempboxa=\box40
|
||||
\lst@token=\toks35
|
||||
\lst@length=\count129
|
||||
\lst@currlwidth=\dimen124
|
||||
\lst@column=\count130
|
||||
\lst@pos=\count131
|
||||
\lst@lostspace=\dimen125
|
||||
\lst@width=\dimen126
|
||||
\lst@newlines=\count132
|
||||
\lst@lineno=\count133
|
||||
\lst@maxwidth=\dimen127
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
File: lstmisc.sty 2019/02/27 1.8b (Carsten Heinz)
|
||||
\c@lstnumber=\count134
|
||||
\lst@skipnumbers=\count135
|
||||
\lst@framebox=\box41
|
||||
)
|
||||
(/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: pdftex.def on input line 147.
|
||||
)
|
||||
No file prova.aux.
|
||||
\openout1 = `prova.aux'.
|
||||
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 35.
|
||||
LaTeX Font Info: Try loading font information for TS1+cmr on input line 35.
|
||||
(/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 35.
|
||||
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 35.
|
||||
LaTeX Font Info: ... okay on input line 35.
|
||||
|
||||
(/usr/share/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
[Loading MPS to PDF converter (version 2006.09.02).]
|
||||
\scratchcounter=\count136
|
||||
\scratchdimen=\dimen128
|
||||
\scratchbox=\box42
|
||||
\nofMPsegments=\count137
|
||||
\nofMParguments=\count138
|
||||
\everyMPshowfont=\toks36
|
||||
\MPscratchCnt=\count139
|
||||
\MPscratchDim=\dimen129
|
||||
\MPnumerator=\count140
|
||||
\makeMPintoPDFobject=\count141
|
||||
\everyMPtoPDFconversion=\toks37
|
||||
) (/usr/share/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
|
||||
Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/oberdiek/grfext.sty
|
||||
Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO)
|
||||
)
|
||||
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
|
||||
38.
|
||||
Package grfext Info: Graphics extension search list:
|
||||
(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE
|
||||
G,.JBIG2,.JB2,.eps]
|
||||
(grfext) \AppendGraphicsExtensions on input line 456.
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
|
||||
e
|
||||
))
|
||||
\AtBeginShipoutBox=\box43
|
||||
Package hyperref Info: Link coloring OFF on input line 35.
|
||||
|
||||
(/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=\count142
|
||||
)
|
||||
LaTeX Info: Redefining \ref on input line 35.
|
||||
LaTeX Info: Redefining \pageref on input line 35.
|
||||
LaTeX Info: Redefining \nameref on input line 35.
|
||||
\@outlinefile=\write3
|
||||
\openout3 = `prova.out'.
|
||||
|
||||
\c@lstlisting=\count143
|
||||
LaTeX Font Info: Try loading font information for U+msa on input line 38.
|
||||
|
||||
(/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 38.
|
||||
|
||||
(/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+cmss on input line 38.
|
||||
|
||||
(/usr/share/texmf-dist/tex/latex/base/t1cmss.fd
|
||||
File: t1cmss.fd 2014/09/29 v2.5h Standard LaTeX font definitions
|
||||
) [1
|
||||
|
||||
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
|
||||
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 98.
|
||||
[2]
|
||||
Package atveryend Info: Empty hook `AfterLastShipout' on input line 98.
|
||||
(./prova.aux)
|
||||
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 98.
|
||||
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 98.
|
||||
|
||||
|
||||
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: <no file>
|
||||
(rerunfilecheck) After: 7405D30B8D200DFB9FDA8AFBCA5DCCFE;160.
|
||||
|
||||
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
|
||||
|
||||
Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 98.
|
||||
)
|
||||
Here is how much of TeX's memory you used:
|
||||
9008 strings out of 494553
|
||||
127405 string characters out of 6177841
|
||||
211891 words of memory out of 5000000
|
||||
12522 multiletter control sequences out of 15000+600000
|
||||
18671 words of font info for 51 fonts, out of 8000000 for 9000
|
||||
14 hyphenation exceptions out of 8191
|
||||
36i,6n,32p,286b,345s stack positions out of 5000i,500n,10000p,200000b,80000s
|
||||
{/usr/share/texmf-dist/fonts/enc/dvips/cm-super/cm-super-t1.enc}{/usr/share/t
|
||||
exmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.enc}</usr/share/texmf-dist/font
|
||||
s/type1/public/amsfonts/symbols/msam10.pfb></usr/share/texmf-dist/fonts/type1/p
|
||||
ublic/cm-super/sfbx1000.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/
|
||||
sfbx1200.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfbx1440.pfb></
|
||||
usr/share/texmf-dist/fonts/type1/public/cm-super/sfrm1000.pfb></usr/share/texmf
|
||||
-dist/fonts/type1/public/cm-super/sfrm1095.pfb></usr/share/texmf-dist/fonts/typ
|
||||
e1/public/cm-super/sfrm1200.pfb></usr/share/texmf-dist/fonts/type1/public/cm-su
|
||||
per/sfrm1728.pfb></usr/share/texmf-dist/fonts/type1/public/cm-super/sfsx1200.pf
|
||||
b></usr/share/texmf-dist/fonts/type1/public/cm-super/sfsx1440.pfb></usr/share/t
|
||||
exmf-dist/fonts/type1/public/cm-super/sfti1095.pfb>
|
||||
Output written on prova.pdf (2 pages, 133009 bytes).
|
||||
PDF statistics:
|
||||
68 PDF objects out of 1000 (max. 8388607)
|
||||
52 compressed objects within 1 object stream
|
||||
6 named destinations out of 1000 (max. 500000)
|
||||
1 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
70
tesi/prova.org
Normal file
70
tesi/prova.org
Normal file
|
@ -0,0 +1,70 @@
|
|||
* TODO Scaletta [1/2]
|
||||
- [X] Abstract
|
||||
- [ ] Introduction [0%]
|
||||
- [ ] Ocaml
|
||||
- [ ] Pattern matching
|
||||
- [ ] Translation Verification
|
||||
- [ ] Symbolic execution
|
||||
|
||||
#+TITLE: Translation Verification of the OCaml pattern matching compiler
|
||||
#+AUTHOR: Francesco Mecca
|
||||
#+EMAIL: me@francescomecca.eu
|
||||
#+DATE:
|
||||
|
||||
#+LANGUAGE: en
|
||||
#+LaTeX_CLASS: article
|
||||
#+LaTeX_HEADER: \usepackage[utf8]{inputenc}
|
||||
#+LaTeX_HEADER: \usepackage{algorithm}
|
||||
#+LaTeX_HEADER: \usepackage{algpseudocode}
|
||||
#+LaTeX_HEADER: \usepackage{amsmath,amssymb,amsthm}
|
||||
#+Latex_HEADER: \newtheorem{definition}{Definition}
|
||||
#+LaTeX_HEADER: \usepackage{graphicx}
|
||||
#+LaTeX_HEADER: \usepackage{listings}
|
||||
#+LaTeX_HEADER: \usepackage{color}
|
||||
#+EXPORT_SELECT_TAGS: export
|
||||
#+EXPORT_EXCLUDE_TAGS: noexport
|
||||
#+OPTIONS: H:2 toc:nil \n:nil @:t ::t |:t ^:{} _:{} *:t TeX:t LaTeX:t
|
||||
#+STARTUP: showall
|
||||
\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}
|
||||
|
||||
* Introduction
|
||||
|
||||
** TODO OCaml
|
||||
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 with respect to static type systems of traditional imperative and/or object
|
||||
oriented language such as C, C++ and Java many advantages such as:
|
||||
- Parametric polymorphism: in certain scenarios a function can accept more than one
|
||||
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 /principal type/.
|
||||
For example the principal type of the List.length function is "For any /a/, function from
|
||||
list of /a/ to /int/" and /a/ is called the /type parameter/.
|
||||
- Strong typing: Languages such as C and C++ allow the programmer to operate on data
|
||||
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.
|
||||
- Type Inference: the principal type of a well formed term can be inferred without any
|
||||
annotation or declaration.
|
3
tesi/prova.out
Normal file
3
tesi/prova.out
Normal file
|
@ -0,0 +1,3 @@
|
|||
\BOOKMARK [1][-]{section.1}{TODO Scaletta [1/2]}{}% 1
|
||||
\BOOKMARK [1][-]{section.2}{Introduction}{}% 2
|
||||
\BOOKMARK [2][-]{subsection.2.1}{TODO OCaml}{section.2}% 3
|
BIN
tesi/prova.pdf
Normal file
BIN
tesi/prova.pdf
Normal file
Binary file not shown.
98
tesi/prova.tex
Normal file
98
tesi/prova.tex
Normal file
|
@ -0,0 +1,98 @@
|
|||
% Created 2020-02-17 Mon 17:30
|
||||
% 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}
|
||||
\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:org5a6f376}
|
||||
\begin{itemize}
|
||||
\item[{$\boxtimes$}] Abstract
|
||||
\item[{$\square$}] Introduction [0\%]
|
||||
\begin{itemize}
|
||||
\item[{$\square$}] Ocaml
|
||||
\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{Introduction}
|
||||
\label{sec:orgef00ecd}
|
||||
|
||||
\subsection{{\bfseries\sffamily TODO} OCaml}
|
||||
\label{sec:org5659ec2}
|
||||
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 with respect to static type systems of traditional imperative and/or object
|
||||
oriented language such as C, C++ and Java many advantages such as:
|
||||
\begin{itemize}
|
||||
\item Parametric polymorphism: in certain scenarios a function can accept more than one
|
||||
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}.
|
||||
\item Strong typing: Languages such as C and C++ allow the programmer to operate on data
|
||||
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.
|
||||
\item Type Inference: the principal type of a well formed term can be inferred without any
|
||||
annotation or declaration.
|
||||
\end{itemize}
|
||||
\end{document}
|
BIN
tesi/referenze/10.1007%2FBFb0054170.pdf
Normal file
BIN
tesi/referenze/10.1007%2FBFb0054170.pdf
Normal file
Binary file not shown.
BIN
tesi/referenze/1805.11006.pdf
Normal file
BIN
tesi/referenze/1805.11006.pdf
Normal file
Binary file not shown.
4
tesi/referenze/altre
Normal file
4
tesi/referenze/altre
Normal file
|
@ -0,0 +1,4 @@
|
|||
https://link.springer.com/chapter/10.1007/978-3-540-88194-0_15
|
||||
https://dl.acm.org/doi/abs/10.1145/1159876.1159881
|
||||
https://dl.acm.org/doi/abs/10.1145/1292535.1292548
|
||||
https://dl.acm.org/doi/abs/10.1145/3009837.3009842
|
96375
tesi/referenze/ocaml_book.pdf
Normal file
96375
tesi/referenze/ocaml_book.pdf
Normal file
File diff suppressed because it is too large
Load diff
BIN
tesi/referenze/p1371r1.pdf
Normal file
BIN
tesi/referenze/p1371r1.pdf
Normal file
Binary file not shown.
21
tesi/texput.log
Normal file
21
tesi/texput.log
Normal file
|
@ -0,0 +1,21 @@
|
|||
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!
|
Loading…
Reference in a new issue