cs0612037/main.tex
1: %%\documentclass[doublespacing]{elsart}
2: \documentclass[envcountsame,envcountchap]{svmono}
3: \usepackage{amsmath}
4: \usepackage{amssymb}
5: \usepackage{euscript}
6: \usepackage[latin1]{inputenc}
7: %%\usepackage{showkeys}
8: %%\usepackage{multirow}
9: %\usepackage[all]{xy}
10: %%\usepackage{stmaryrd}
11: %%\usepackage{tabularx}
12: %%\usepackage{verbatim}
13: %%\usepackage{ifthen}
14: \usepackage{pstricks,pst-plot}%,pstcol}
15: \usepackage{gastex}
16: \usepackage{url}
17: \usepackage{xspace}
18: %%\usepackage{multicol}
19: %%\usepackage[bottom]{footmisc} 
20: \usepackage{makeidx} 
21: %%\usepackage{showidx}
22: \usepackage{multind}
23: 
24: \makeindex{Gen}
25: \makeindex{Not}
26: 
27: 
28: 
29: 
30: 
31: 
32: \newcommand{\monoid}{\EuScript{M}}
33: \newcommand{\Nat}{\mathbb{N}}
34: \newcommand{\Real}{\mathbb{R}}
35: \newcommand{\Natomega}{\mathbb{N}_\omega}
36: \newcommand{\Q}{\mathbb{Q}}
37: \newcommand{\Z}{\mathbb{Z}}
38: \renewcommand{\D}{\EuScript{L}}
39: \newcommand{\M}{\EuScript{M}}
40: \newcommand{\N}{\EuScript{N}}
41: \renewcommand{\E}{\EuScript{E}}
42: \newcommand{\V}{\EuScript{V}}
43: \newcommand{\F}{\EuScript{F}}
44: \newcommand{\Y}{\EuScript{Y}}
45: \newcommand{\U}{\EuScript{U}}
46: \newcommand{\G}{\textbf{G}}
47: \renewcommand{\I}{\EuScript{I}}
48: \newcommand{\X}{\EuScript{X}}
49: \newcommand{\Gra}{\textbf{G}}
50: \newcommand{\C}{\EuScript{C}}
51: \newcommand{\RF}{\EuScript{RF}}
52: \newcommand{\Lan}{\EuScript{L}}
53: \newcommand{\Pa}{\EuScript{P}}
54: \newcommand{\LS}{\textbf{\textit{L}}}
55: \newcommand{\base}{b}
56: \newcommand{\Base}{B}
57: \newcommand{\cycle}{\textbf{CYCLE }}
58: \newcommand{\flatl}{\textbf{FLAT }}
59: \newcommand{\rat}{\textbf{RAT }}
60: \newcommand{\system}{\EuScript{S}}
61: \newcommand{\Hrond}{\EuScript{H}}
62: \renewcommand{\H}{\Hrond}
63: \newcommand{\partiefinie}{\EuScript{P}_f}
64: \newcommand{\x}{{\bf x}}
65: 
66: \newcommand{\classe}{\EuScript{C}}
67: \newcommand{\A}{\EuScript{A}}
68: 
69: \newcommand{\class}{\classe}
70: 
71: \renewcommand{\S}{\mathcal{S}}
72: 
73: \newcommand{\automaton}{\EuScript{A}}
74: \newcommand{\counterautomaton}{\EuScript{C}}
75: 
76: \newcommand{\T}{\EuScript{T}}
77: 
78: \newcommand{\setpath}{\EuScript{P}}
79: \newcommand{\basis}{\EuScript{B}}
80: \newcommand{\matriceset}{\EuScript{M}}
81: \newcommand{\generator}{\EuScript{G}}
82: \newcommand{\element}{\textbf{e}}
83: \newcommand{\unit}{\textbf{e}}
84: \newcommand{\closure}{\mathrm{closure}}
85: \newcommand{\binary}{\mathrm{binary}}
86: \newcommand{\used}{\mathrm{used}}
87: \newcommand{\supp}{\mathrm{supp}}
88: \newcommand{\size}{\mathrm{size}}
89: \newcommand{\length}{\mathrm{length}}
90: \newcommand{\nstates}{\mathrm{nstates}}
91: \newcommand{\gran}{\mathrm{gran}}
92: \newcommand{\aff}{\mathrm{aff}}
93: \newcommand{\vecspace}{\mathrm{vec}}
94: 
95: \newcommand{\bound}[2]{\textrm{bound}_{#1}(#2)}
96: 
97: \renewcommand{\vec}[1]{\overrightarrow{#1}}
98: \newcommand{\saff}{\mathrm{saff}}
99: \newcommand{\vecsaff}{\vec{\mathrm{saff}}}
100: \newcommand{\comp}{\mathrm{comp}}
101: \newcommand{\veccomp}{\vec{\mathrm{comp}}}
102: 
103: 
104: \newcommand{\Max}{\mathit{Max}}
105: \renewcommand{\min}{\mathrm{min}}
106: \newcommand{\crochet}[1]{\left\llbracket#1\right\rrbracket}
107: \newcommand{\abst}{\mathrm{abst}}
108: 
109: \newcommand{\bool}{\mathrm{Bool}}
110: 
111: \newcommand{\finiteset}[2]{\{#1,\ldots,#2\}}
112: \newcommand{\cardinal}[1]{|#1|}
113: \newcommand{\relation}{\mathcal{R}}
114: \newcommand{\pre}{\mathrm{Pre}}
115: \newcommand{\post}{\mathrm{Post}}
116: \newcommand{\partie}{\mathcal{P}}
117: \newcommand{\moins}{\backslash}
118: \newcommand{\difference}[2]{#1\moins#2}
119: \newcommand{\scalar}[2]{\left<#1,#2\right>}
120: 
121: 
122: 
123: \newcommand{\trex}{\textsc{TreX}\xspace}
124: \newcommand{\fast}{\textsc{Fast}\xspace}
125: \newcommand{\lash}{\textsc{Lash}\xspace}
126: \newcommand{\babylon}{\textsc{Babylon}\xspace}
127: \newcommand{\brain}{\textsc{Brain}\xspace}
128: \newcommand{\cslalv}{\textsc{CSL-ALV}\xspace}
129: \newcommand{\mona}{\textsc{Mona}\xspace}
130: \newcommand{\fmona}{\textsc{FMona}\xspace}
131: \newcommand{\omegatool}{\textsc{Omega}\xspace}
132: \newcommand{\lcs}{\textsc{Lcs}\xspace}
133: 
134: 
135: \newcommand{\norm}[2]{\left|\left|#2\right|\right|_{#1}}
136: 
137: 
138: \newcommand{\fo}[1]{\textrm{FO}\left(#1\right)}
139: 
140: 
141: \renewcommand{\gcd}[2]{\textrm{gcd}(#1,#2)}
142: 
143: 
144: \newcommand{\ind}{\rule{0.6cm}{0cm}}
145: 
146: \renewcommand{\P}{\EuScript{P}}
147: 
148: \newcommand{\group}{\textrm{group}}
149: \newcommand{\inv}{\textrm{inv}}
150: \newcommand{\serial}{\textrm{serialized}}
151: \newcommand{\sautomaton}{\textbf{A}}
152: \newcommand{\sgraph}{\textbf{G}}
153: 
154: 
155: \begin{document}
156: 
157: \author{Jérôme Leroux}
158: \title{Least Significant Digit First\\ Presburger Automata}
159: %%\subtitle{DRAFT. Please do not distribute, but contact the author for a version}  
160: \maketitle
161: 
162: \frontmatter%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
163: 
164: \include{dedic}
165: \include{pref}
166: 
167: \tableofcontents
168: \mainmatter
169: %%\index{test}
170: 
171: %%\include{chapter}
172: 
173: 
174: 
175: 
176: 
177: 
178: %% \ead{leroux@labri.fr}
179: %%  \begin{abstract}
180: %%    Since 1969 \cite{C-MST69,S-SMJ77}, we know that any Presburger-definable set \cite{P-PCM29} (a set of integer vectors satisfying a formula in the first-order additive theory of the integers) can be represented by a state-based symmbolic representation, called in this paper Finite Digit Vector Automata (FDVA). Efficient algorithms for manipulating these sets have been recently developed \cite{WB-ICALP00,BC-CAAP96}. However, the problem of deciding if a FDVA represents such a set, is a well-known hard problem first solved by Muchnik in 1991 \cite{M-PREPRINT91,M-TCS03, BHMV-BMS94} with a \emph{quadruply-exponential time} algorithm. In this paper, we show how to determine in \emph{polynomial time} whether a FDVA represents a Presburger-definable set, and we provide in this positive case a \emph{polynomial time} algorithm that constructs a Presburger-formula that defines the same set.
181: %%  \end{abstract}
182: %%  \begin{keyword}
183: %%    Presburger \sep Semi-linear \sep Arithmetic \sep Logic \sep Automaton
184: %%  \end{keyword}
185: 
186: %%\end{frontmatter}
187: 
188: 
189: \input{chapter.introduction}
190: \input{chapter.notations}
191: 
192: %%\index{notation}{test}
193: 
194: \part{Logic and Automata}
195: \input{chapter.DVA}
196: \input{chapter.modifyingDVA}
197: \input{chapter.expressiveness}
198: \input{chapter.examplesFDVA}
199: \input{chapter.reduction}
200: 
201: \part{Geometry}
202: \input{chapter.linearsets}
203: \input{chapter.semilinearsets}
204: \input{chapter.degenerate}
205: \input{chapter.polyhedrons}
206: \input{chapter.presburgerdecomposition}
207: 
208: \part{From Automata to Presburger Formulas}
209: \input{chapter.stronglyconnected}
210: \input{chapter.geometricalextraction}
211: \input{chapter.finalalgorithm}
212: 
213: 
214: %%\cleardoublepage
215: %%\input{section.untransient}
216: %%\cleardoublepage
217: %%\input{section.detectablepatterns}
218: %%\cleardoublepage
219: %%\input{section.terminal}
220: %%\cleardoublepage
221: 
222: %%\input{section.semiaffinehull}
223: %%\cleardoublepage
224: %%\input{section.invariantcomputation}
225: %%\cleardoublepage
226: %%\input{section.boundary}
227: %%\cleardoublepage
228: 
229: %%\input{section.algorithmfinal}
230: %%\cleardoublepage
231: 
232: 
233: \backmatter%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
234: %%\chapter{L'histoire}
235: %%
236: \begin{thebibliography}{BHMV94}
237: 
238: \bibitem[BC96]{BC-CAAP96}
239: Alexandre Boudet and Hubert Comon.
240: \newblock Diophantine equations, {Presburger} arithmetic and finite automata.
241: \newblock In {\em Proc.\ 21st Int.\ Coll.\ on Trees in Algebra and Programming
242:   (CAAP'96), Link{\"o}ping, Sweden, Apr.\ 1996}, volume 1059 of {\em Lecture
243:   Notes in Computer Science}, pages 30--43. Springer, 1996.
244: 
245: \bibitem[Ber77]{B-FOCS77}
246: Leonard Berman.
247: \newblock Precise bounds for {Presburger} arithmetic and the reals with
248:   addition: Preliminary report.
249: \newblock In {\em Proc.\ 18th IEEE Symp.\ Foundations of Computer Science
250:   (FOCS'77), Providence, RI, USA, Oct.-Nov.\ 1977}, pages 95--99, Providence,
251:   Rhode Island, 31 October--2 November 1977. IEEE.
252: 
253: \bibitem[BFL04]{BFL-TACAS04}
254: Sébastien Bardin, Alain Finkel, and J\'er\^ome Leroux.
255: \newblock Faster acceleration of counter automata.
256: \newblock In {\em Proc.\ 10th Int.\ Conf.\ Tools and Algorithms for the
257:   Construction and Analysis of Systems (TACAS'2004) Barcelona, Spain, Mar.\
258:   2004}, volume 2988 of {\em Lecture Notes in Computer Science}, pages
259:   576--590. Springer, 2004.
260: 
261: \bibitem[BFLP03]{BFLP-CAV03}
262: S\'ebastien Bardin, Alain Finkel, J\'er\^ome Leroux, and Laure Petrucci.
263: \newblock {FAST}: {F}ast {A}cceleration of {S}ymbolic {T}ransition systems.
264: \newblock In {\em Proc.\ 15th Int.\ Conf.\ Computer Aided Verification
265:   (CAV'2003), Boulder, CO, USA, July 2003}, volume 2725 of {\em Lecture Notes
266:   in Computer Science}, pages 118--121. Springer, 2003.
267: 
268: \bibitem[BGP99]{BGP-TOPLAS99}
269: Tevfik Bultan, Richard Gerber, and William Pugh.
270: \newblock Model-checking concurrent systems with unbounded integer variables:
271:   symbolic representations, approximations, and experimental results.
272: \newblock {\em ACM Transactions on Programming Languages and Systems},
273:   21(4):747--789, 1999.
274: 
275: \bibitem[BHMV94]{BHMV-BMS94}
276: Véronique Bruy{\`e}re, Georges Hansel, Christian Michaux, and Roger Villemaire.
277: \newblock Logic and $p$-recognizable sets of integers.
278: \newblock {\em Bull.\ Belg.\ Math.\ Soc.}, 1(2):191--238, March 1994.
279: 
280: \bibitem[Fas]{FAST}
281: \textsc{Fast} homepage.
282: \newblock \url{http://www.lsv.ens-cachan.fr/fast/}.
283: 
284: \bibitem[FO97]{FO-CONCUR97}
285: Laurent Fribourg and Hans Ols\'en.
286: \newblock Proving safety properties of infinite state systems by compilation
287:   into {Presburger} arithmetic.
288: \newblock In {\em Proc.\ 8th Int.\ Conf.\ Concurrency Theory (CONCUR'97),
289:   Warsaw, Poland, Jul.\ 1997}, volume 1243 of {\em Lecture Notes in Computer
290:   Science}, pages 213--227. Springer, 1997.
291: 
292: \bibitem[Fri00]{F-WFLP00}
293: Laurent Fribourg.
294: \newblock {Petri} nets, flat languages and linear arithmetic. {Invited
295:   lecture}.
296: \newblock In M.~Alpuente, editor, {\em Proc.\ 9th Int.\ Workshop.\ on
297:   Functional and Logic Programming (WFLP'2000), Benicassim, Spain, Sept.\
298:   2000}, pages 344--365, 2000.
299: \newblock Proceedings published as Ref.\ 2000.2039, Universidad Polit\'{e}cnica
300:   de Valencia, Spain.
301: 
302: \bibitem[GBD02]{GBD-FMCAD02}
303: Vijay Ganesh, Sergey Berezin, and David~L. Dill.
304: \newblock Deciding presburger arithmetic by model checking and comparisons with
305:   other methods.
306: \newblock In {\em Proc.\ 4th Int.\ Conf.\ Formal Methods in Computer Aided
307:   Design (FMCAD'02), Portland, OR, USA, nov.\ 2002}, volume 2517 of {\em
308:   Lecture Notes in Computer Science}, pages 171--186. Springer, 2002.
309: 
310: \bibitem[GS66]{GS-PACIF66}
311: Seymour Ginsburg and Edwin~H. Spanier.
312: \newblock Semigroups, {P}resburger formulas and languages.
313: \newblock {\em Pacific J.\ Math.}, 16(2):285--296, 1966.
314: 
315: \bibitem[Kla04]{K-LICS04}
316: Felix Klaedtke.
317: \newblock On the automata size for presburger arithmetic.
318: \newblock In {\em Proc. 19th Annual IEEE Symposium on Logic in Computer Science
319:   (LICS'04), Turku, Finland July 2004}, pages 110--119. IEEE Comp.\ Soc.\
320:   Press, 2004.
321: 
322: \bibitem[KMS02]{KMS-IJFCS02}
323: Nils Klarlund, A.~Møller, and M.~I. Schwartzbach.
324: \newblock {MONA} implementation secrets.
325: \newblock {\em Int.\ J.\ of Foundations Computer Science}, 13(4):571--586,
326:   2002.
327: 
328: \bibitem[Las]{LASH}
329: \textsc{Lash} homepage.
330: \newblock \url{http://www.montefiore.ulg.ac.be/~boigelot/research/lash/}.
331: 
332: \bibitem[Lat04]{L-LICS04}
333: Louis Latour.
334: \newblock From automata to formulas: Convex integer polyhedra.
335: \newblock In {\em Proc. 19th Annual IEEE Symposium on Logic in Computer Science
336:   (LICS'04), Turku, Finland July 2004}, pages 120--129. IEEE Comp.\ Soc.\
337:   Press, 2004.
338: 
339: \bibitem[Ler03]{L-THESE03}
340: J\'er\^ome Leroux.
341: \newblock {\em Algorithmique de la vérification des systèmes à compteurs.
342:   Approximation et accélération. Implémentation de l'outil Fast}.
343: \newblock PhD thesis, Ecole Normale Supérieure de Cachan, Laboratoire
344:   Sp\'ecification et V\'erification. CNRS UMR 8643, décembre 2003.
345: 
346: \bibitem[Ler04]{L-INFINITY03}
347: J\'er\^ome Leroux.
348: \newblock The affine hull of a binary automaton is computable in polynomial
349:   time.
350: \newblock In {\em Proc. 5th Int. Workshop on Verification of Infinite State
351:   Systems (INFINITY 2003), Marseille, France, Sep. 2003}, volume~98 of {\em
352:   Electronic Notes in Theor.\ Comp.\ Sci.}, pages 89--104. Elsevier Science,
353:   2004.
354: 
355: \bibitem[Lug04]{L-CIAA04}
356: Denis Lugiez.
357: \newblock From automata to semilinear sets: a solution for polyhedra and even
358:   more general sets.
359: \newblock In {\em Proc.\ 9th. Int. Conf. on Implementation and Application of
360:   Automata (CIAA'04), Queen's University, Kingston, Ontario, Canada, Jul.\
361:   2004}, volume 3317 of {\em Lecture Notes in Computer Science}, pages
362:   321--322. Springer, 2004.
363: 
364: \bibitem[Muc91]{M-PREPRINT91}
365: A.~Muchnik.
366: \newblock Definable criterion for definability in presburger arithmetic and its
367:   applications.
368: \newblock (in russian), preprint, Institute of new technologies, 1991.
369: 
370: \bibitem[Ome]{OMEGA}
371: \textsc{Omega} homepage.
372: \newblock \url{http://www.cs.umd.edu/projects/omega/}.
373: 
374: \bibitem[Pre29]{P-PCM29}
375: M.~Presburger.
376: \newblock Uber die volstandigkeit eines gewissen systems der arithmetik ganzer
377:   zahlen, in welchem die addition als einzige operation hervortritt.
378: \newblock In {\em C. R. 1er congres des Mathematiciens des pays slaves,
379:   Varsovie}, pages 92--101, 1929.
380: 
381: \bibitem[RV02]{RV-AMAST02}
382: Tatiana Rybina and Andrei Voronkov.
383: \newblock Brain: Backward reachability analysis with integers.
384: \newblock In {\em Proc.\ 9th Int.\ Conf.\ Algebraic Methodology and Software
385:   Technology (AMAST'2002), Saint-Gilles-les-Bains, Reunion Island, France,
386:   Sep.\ 2002}, volume 2422 of {\em Lecture Notes in Computer Science}, pages
387:   489--494. Springer, 2002.
388: 
389: \bibitem[Sch87]{S-87}
390: Alexander Schrijver.
391: \newblock {\em Theory of Linear and Integer Programming}.
392: \newblock John Wiley and Sons, New York, 1987.
393: 
394: \bibitem[Tau92]{T-92-maths}
395: Patrice Tauvel.
396: \newblock {\em Math\'ematiques g\'en\'erales pour l'agr\'egation}.
397: \newblock MASSON, Paris Milan Barcelone Bonn, 1992.
398: 
399: \bibitem[WB95]{WB-SAS95}
400: Pierre Wolper and Bernard Boigelot.
401: \newblock An automata-theoretic approach to {Presburger} arithmetic
402:   constraints.
403: \newblock In {\em Proc.\ 2nd Int.\ Symp.\ Static Analysis (SAS'95), Glasgow,
404:   UK, Sep.\ 1995}, volume 983 of {\em Lecture Notes in Computer Science}, pages
405:   21--32. Springer, 1995.
406: 
407: \bibitem[WB00]{WB-ICALP00}
408: Pierre Wolper and Bernard Boigelot.
409: \newblock On the construction of automata from linear arithmetic constraints.
410: \newblock In {\em Proc.\ 6th Int.\ Conf.\ Tools and Algorithms for the
411:   Construction and Analysis of Systems (TACAS'2000), Berlin, Germany,
412:   Mar.-Apr.\ 2000}, volume 1785 of {\em Lecture Notes in Computer Science},
413:   pages 1--19. Springer, 2000.
414: 
415: \end{thebibliography}
416: 
417: %%\bibliography{biblio-these}
418: %%\bibliographystyle{alpha}
419: \printindex{Gen}{Index}
420: \printindex{Not}{Notations}
421: 
422: 
423: %%\cleardoublepage
424: %%\printindex
425: \end{document}
426: %%%%%%%%%%%\input{section.modularspace}
427: %%%%%%%%%%%\cleardoublepage
428: