Abstract
Mathematical programming is Turing complete, and can be used as a general-purpose declarative language. We present a new constructive proof of this fact, and showcase its usefulness by discussing an application to finding the hardest input of any given program running on a Minsky Register Machine. We also discuss an application of mathematical programming to software verification obtained by relaxing one of the properties of Turing complete languages.
Similar content being viewed by others
References
Apt K (2003) Principles of constraint programming. Cambridge University Press, Cambridge
Belotti P, Lee J, Liberti L, Margot F, Wächter A (2009) Branching and bounds tightening techniques for non-convex MINLP. Optim Methods Softw 24(4):597–634
Böhm C, Jacopini G (1966) Flow diagrams, turing machines and languages with only two formation rules. Commun ACM 9(5):366–371
Brook A, Kendrick D, Meeraus A (1988) GAMS, a user’s guide. ACM SIGNUM Newsl 23(3–4):10–11
Costan A, Gaubert S, Goubault E, Martel M, Putot S (2005) A policy iteration algorithm for computing fixed points in static analysis of programs. In: Etessami K, Rajamani SK (eds) Computer aided verification, volume 3576 of LNCS. Springer, Berlin, pp 462–475
Cousot P, Cousot R (1977) Abstract interpretation: a unified lattice model for static analysis of programs by construction of approximations of fixed points. Princ Program Lang 4:238–252
Cousot P, Cousot R (1979) Systematic design of program analysis frameworks. In: Conference record of the sixth annual ACM SIGPLAN-SIGACT symposium on principles of programming languages, San Antonio, TX. ACM Press, New York, NY, pp 269–282
Davis M (2009) Diophantine equations & computation: a tutorial. In: International conference on unconventional computation, Ponta Delgada. University of Azores
Davis M, Sigal R, Weyuker E (1994) Computability, complexity and languages. Academic Press, San Diego
Fortet R (1960) Applications de l’algèbre de Boole en recherche opérationelle. Revue Française de Recherche Opérationelle 4:17–26
Fourer R, Gay D (2002) The AMPL book. Duxbury Press, Pacific Grove
Gaubert S, Goubault E, Taly A, Zennou S (2007) Static analysis by policy iteration on relational domains. In: De Nicola R (ed) European symposium on programming, volume 4421 of LNCS. Springer, Berlin, pp 237–252
Gawlitza T, Seidl H (2007) Precise fixpoint computation through strategy iteration. In: De Nicola R (ed) European symposium on programming, volume 4421 of LNCS. Springer, Berlin, pp 300–315
Goubault E, Le Roux S, Leconte J, Liberti L, Marinelli F (2010) Static analysis by abstract interpretation: a mathematical programming approach. In: Miné A, Rodriguez-Carbonell E (eds) Proceeding of the second international workshop on numerical and symbolic abstract domains, volume 267(1) of electronic notes in theoretical computer science. Elsevier, Amsterdam, pp 73–87
Hansen E (1992) Global optimization using interval analysis. Marcel Dekker, New York
Harel D, Norvig P, Rood J, To T (1979) A universal flowcharter. In: 2nd Computers in aerospace conference, volume A79-54378/24-59. AAIA, New York, pp 218–224
IBM (2010) ILOG CPLEX 12.2 user’s manual. IBM
Jeroslow R (1973) There cannot be any algorithm for integer programming with quadratic constraints. Oper Res 21(1):221–224
Johnstone P (1987) Notes on logic and set theory. Cambridge University Press, Cambridge
Jones J (1982) Universal diophantine equation. J Symb Logic 47(3):549–571
Liberti L, Cafieri S, Tarissan F (2009) Reformulations in mathematical programming: a computational approach. In: Abraham A, Hassanien A-E, Siarry P, Engelbrecht A (eds) Foundations of computational intelligence, vol 3., number 203 in Studies in Computational Intelligence. Springer, Berlin, pp 153–234
Liberti L, Le Roux S, Leconte J, Marinelli F (2010) Mathematical programming based debugging. In: Mahjoub [23], pp 1311–1318
Mahjoub R (ed) (2010) Proceedings of the international symposium on combinatorial optimization, volume 36 of electronic notes in discrete mathematics. Elsevier, Amsterdam
Makhorin A (2003) GNU Linear programming kit. Free Software Foundation. http://www.gnu.org/software/glpk/
Monniaux D (2009) A minimalistic look at widening operators. Higher-Order Symb Comput 22:145–154
Shannon C (1956) A universal Turing machine with two internal states. In: Shannon C, McCarthy J (eds) Automata studies, volume 34 of annals of mathematics studies. Princeton University Press, Princeton, pp 157–165
Shapiro E (1997) The art of prolog. MIT Press, Boston, MA
Tarski A (1955) A lattice-theoretical fixpoint theorem and its applications. Pac J Math 5(2):285–309
Turing A (1937) On computable numbers, with an application to the Entscheidungsproblem. Proc Lond Math Soc 42(1):230–265
Acknowledgments
We are extremely grateful to an anonymous referee for helping to make this a better paper. We are also grateful to S. Bosio, E. Goubault, J. Leconte, A. Lodi, D. Monniaux, F. Roda, F. Raimondi, S. Le Roux for useful discussions, during the course of several years. This work was financially supported by the following Grants: ANR “ARS”, ANR “ASOPT”, Digiteo “PASO” and Digiteo “RMNCCO”.
Author information
Authors and Affiliations
Corresponding author
Additional information
Dedicated to Panos Pardalos, eclectic theoretical computer scientist and global optimizer, on the occasion of his 60th birthday.
Rights and permissions
About this article
Cite this article
Liberti, L., Marinelli, F. Mathematical programming: Turing completeness and applications to software analysis. J Comb Optim 28, 82–104 (2014). https://doi.org/10.1007/s10878-014-9715-3
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10878-014-9715-3