7 results
Transformation-Enabled Precondition Inference
- BISHOKSAN KAFLE, GRAEME GANGE, PETER J. STUCKEY, PETER SCHACHTE, HARALD SØNDERGAARD
-
- Journal:
- Theory and Practice of Logic Programming / Volume 21 / Issue 6 / November 2021
- Published online by Cambridge University Press:
- 23 September 2021, pp. 700-716
-
- Article
- Export citation
-
Precondition inference is a non-trivial problem with important applications in program analysis and verification. We present a novel iterative method for automatically deriving preconditions for the safety and unsafety of programs. Each iteration maintains over-approximations of the set of safe and unsafe initial states, which are used to partition the program’s initial states into those known to be safe, known to be unsafe and unknown. We then construct revised programs with those unknown initial states and iterate the procedure until the approximations are disjoint or some termination criteria are met. An experimental evaluation of the method on a set of software verification benchmarks shows that it can infer precise preconditions (sometimes optimal) that are not possible using previous methods.
An iterative approach to precondition inference using constrained Horn clauses
- BISHOKSAN KAFLE, JOHN P. GALLAGHER, GRAEME GANGE, PETER SCHACHTE, HARALD SØNDERGAARD, PETER J. STUCKEY
-
- Journal:
- Theory and Practice of Logic Programming / Volume 18 / Issue 3-4 / July 2018
- Published online by Cambridge University Press:
- 10 August 2018, pp. 553-570
-
- Article
-
- You have access Access
- Export citation
-
We present a method for automatic inference of conditions on the initial states of a program that guarantee that the safety assertions in the program are not violated. Constrained Horn clauses (CHCs) are used to model the program and assertions in a uniform way, and we use standard abstract interpretations to derive an over-approximation of the set of unsafe initial states. The precondition then is the constraint corresponding to the complement of that set, under-approximating the set of safe initial states. This idea of complementation is not new, but previous attempts to exploit it have suffered from the loss of precision. Here we develop an iterative specialisation algorithm to give more precise, and in some cases optimal safety conditions. The algorithm combines existing transformations, namely constraint specialisation, partial evaluation and a trace elimination transformation. The last two of these transformations perform polyvariant specialisation, leading to disjunctive constraints which improve precision. The algorithm is implemented and tested on a benchmark suite of programs from the literature in precondition inference and software verification competitions.
Simulating Redistricting in the Classroom: A Binding Arbitration Decision Game Using Louisiana Census Data
- Peter Miller, Steven Kimbrough, Johanna Schacht
-
- Journal:
- PS: Political Science & Politics / Volume 51 / Issue 3 / July 2018
- Published online by Cambridge University Press:
- 04 April 2018, pp. 664-668
- Print publication:
- July 2018
-
- Article
-
- You have access Access
- HTML
- Export citation
-
This article describes the design and implementation of a redistricting simulation in two classes at a large university. Simulations often include a high degree of abstraction and, as a result, may not inform and develop an understanding of how the world operates. We developed a binding-arbitration game, based on the New Jersey model of a bipartisan commission, in which groups of students used US Census data and a set of mandatory and discretionary criteria to design congressional districts in Louisiana as well as advocate for their plan at an open hearing. In so doing, they learned about the complexities of redistricting and were introduced to geographical information systems (GIS). The student-drawn maps, on average, were more compact and preserved a larger proportion of places and parishes in a single district than the legislature-drawn map. The article discusses other features of the students’ maps and concludes with comments on the general decision-game design.
Horn clauses as an intermediate representation for program analysis and transformation*
- GRAEME GANGE, JORGE A. NAVAS, PETER SCHACHTE, HARALD SØNDERGAARD, PETER J. STUCKEY
-
- Journal:
- Theory and Practice of Logic Programming / Volume 15 / Issue 4-5 / July 2015
- Published online by Cambridge University Press:
- 03 September 2015, pp. 526-542
-
- Article
-
- You have access Access
- Export citation
-
Many recent analyses for conventional imperative programs begin by transforming programs into logic programs, capitalising on existing LP analyses and simple LP semantics. We propose using logic programs as an intermediate program representation throughout the compilation process. With restrictions ensuring determinism and single-modedness, a logic program can easily be transformed to machine language or other low-level language, while maintaining the simple semantics that makes it suitable as a language for program analysis and transformation. We present a simple LP language that enforces determinism and single-modedness, and show that it makes a convenient program representation for analysis and transformation.
Contributors
-
- By Mitchell Aboulafia, Frederick Adams, Marilyn McCord Adams, Robert M. Adams, Laird Addis, James W. Allard, David Allison, William P. Alston, Karl Ameriks, C. Anthony Anderson, David Leech Anderson, Lanier Anderson, Roger Ariew, David Armstrong, Denis G. Arnold, E. J. Ashworth, Margaret Atherton, Robin Attfield, Bruce Aune, Edward Wilson Averill, Jody Azzouni, Kent Bach, Andrew Bailey, Lynne Rudder Baker, Thomas R. Baldwin, Jon Barwise, George Bealer, William Bechtel, Lawrence C. Becker, Mark A. Bedau, Ernst Behler, José A. Benardete, Ermanno Bencivenga, Jan Berg, Michael Bergmann, Robert L. Bernasconi, Sven Bernecker, Bernard Berofsky, Rod Bertolet, Charles J. Beyer, Christian Beyer, Joseph Bien, Joseph Bien, Peg Birmingham, Ivan Boh, James Bohman, Daniel Bonevac, Laurence BonJour, William J. Bouwsma, Raymond D. Bradley, Myles Brand, Richard B. Brandt, Michael E. Bratman, Stephen E. Braude, Daniel Breazeale, Angela Breitenbach, Jason Bridges, David O. Brink, Gordon G. Brittan, Justin Broackes, Dan W. Brock, Aaron Bronfman, Jeffrey E. Brower, Bartosz Brozek, Anthony Brueckner, Jeffrey Bub, Lara Buchak, Otavio Bueno, Ann E. Bumpus, Robert W. Burch, John Burgess, Arthur W. Burks, Panayot Butchvarov, Robert E. Butts, Marina Bykova, Patrick Byrne, David Carr, Noël Carroll, Edward S. Casey, Victor Caston, Victor Caston, Albert Casullo, Robert L. Causey, Alan K. L. Chan, Ruth Chang, Deen K. Chatterjee, Andrew Chignell, Roderick M. Chisholm, Kelly J. Clark, E. J. Coffman, Robin Collins, Brian P. Copenhaver, John Corcoran, John Cottingham, Roger Crisp, Frederick J. Crosson, Antonio S. Cua, Phillip D. Cummins, Martin Curd, Adam Cureton, Andrew Cutrofello, Stephen Darwall, Paul Sheldon Davies, Wayne A. Davis, Timothy Joseph Day, Claudio de Almeida, Mario De Caro, Mario De Caro, John Deigh, C. F. Delaney, Daniel C. Dennett, Michael R. DePaul, Michael Detlefsen, Daniel Trent Devereux, Philip E. Devine, John M. Dillon, Martin C. Dillon, Robert DiSalle, Mary Domski, Alan Donagan, Paul Draper, Fred Dretske, Mircea Dumitru, Wilhelm Dupré, Gerald Dworkin, John Earman, Ellery Eells, Catherine Z. Elgin, Berent Enç, Ronald P. Endicott, Edward Erwin, John Etchemendy, C. Stephen Evans, Susan L. Feagin, Solomon Feferman, Richard Feldman, Arthur Fine, Maurice A. Finocchiaro, William FitzPatrick, Richard E. Flathman, Gvozden Flego, Richard Foley, Graeme Forbes, Rainer Forst, Malcolm R. Forster, Daniel Fouke, Patrick Francken, Samuel Freeman, Elizabeth Fricker, Miranda Fricker, Michael Friedman, Michael Fuerstein, Richard A. Fumerton, Alan Gabbey, Pieranna Garavaso, Daniel Garber, Jorge L. A. Garcia, Robert K. Garcia, Don Garrett, Philip Gasper, Gerald Gaus, Berys Gaut, Bernard Gert, Roger F. Gibson, Cody Gilmore, Carl Ginet, Alan H. Goldman, Alvin I. Goldman, Alfonso Gömez-Lobo, Lenn E. Goodman, Robert M. Gordon, Stefan Gosepath, Jorge J. E. Gracia, Daniel W. Graham, George A. Graham, Peter J. Graham, Richard E. Grandy, I. Grattan-Guinness, John Greco, Philip T. Grier, Nicholas Griffin, Nicholas Griffin, David A. Griffiths, Paul J. Griffiths, Stephen R. Grimm, Charles L. Griswold, Charles B. Guignon, Pete A. Y. Gunter, Dimitri Gutas, Gary Gutting, Paul Guyer, Kwame Gyekye, Oscar A. Haac, Raul Hakli, Raul Hakli, Michael Hallett, Edward C. Halper, Jean Hampton, R. James Hankinson, K. R. Hanley, Russell Hardin, Robert M. Harnish, William Harper, David Harrah, Kevin Hart, Ali Hasan, William Hasker, John Haugeland, Roger Hausheer, William Heald, Peter Heath, Richard Heck, John F. Heil, Vincent F. Hendricks, Stephen Hetherington, Francis Heylighen, Kathleen Marie Higgins, Risto Hilpinen, Harold T. Hodes, Joshua Hoffman, Alan Holland, Robert L. Holmes, Richard Holton, Brad W. Hooker, Terence E. Horgan, Tamara Horowitz, Paul Horwich, Vittorio Hösle, Paul Hoβfeld, Daniel Howard-Snyder, Frances Howard-Snyder, Anne Hudson, Deal W. Hudson, Carl A. Huffman, David L. Hull, Patricia Huntington, Thomas Hurka, Paul Hurley, Rosalind Hursthouse, Guillermo Hurtado, Ronald E. Hustwit, Sarah Hutton, Jonathan Jenkins Ichikawa, Harry A. Ide, David Ingram, Philip J. Ivanhoe, Alfred L. Ivry, Frank Jackson, Dale Jacquette, Joseph Jedwab, Richard Jeffrey, David Alan Johnson, Edward Johnson, Mark D. Jordan, Richard Joyce, Hwa Yol Jung, Robert Hillary Kane, Tomis Kapitan, Jacquelyn Ann K. Kegley, James A. Keller, Ralph Kennedy, Sergei Khoruzhii, Jaegwon Kim, Yersu Kim, Nathan L. King, Patricia Kitcher, Peter D. Klein, E. D. Klemke, Virginia Klenk, George L. Kline, Christian Klotz, Simo Knuuttila, Joseph J. Kockelmans, Konstantin Kolenda, Sebastian Tomasz Kołodziejczyk, Isaac Kramnick, Richard Kraut, Fred Kroon, Manfred Kuehn, Steven T. Kuhn, Henry E. Kyburg, John Lachs, Jennifer Lackey, Stephen E. Lahey, Andrea Lavazza, Thomas H. Leahey, Joo Heung Lee, Keith Lehrer, Dorothy Leland, Noah M. Lemos, Ernest LePore, Sarah-Jane Leslie, Isaac Levi, Andrew Levine, Alan E. Lewis, Daniel E. Little, Shu-hsien Liu, Shu-hsien Liu, Alan K. L. Chan, Brian Loar, Lawrence B. Lombard, John Longeway, Dominic McIver Lopes, Michael J. Loux, E. J. Lowe, Steven Luper, Eugene C. Luschei, William G. Lycan, David Lyons, David Macarthur, Danielle Macbeth, Scott MacDonald, Jacob L. Mackey, Louis H. Mackey, Penelope Mackie, Edward H. Madden, Penelope Maddy, G. B. Madison, Bernd Magnus, Pekka Mäkelä, Rudolf A. Makkreel, David Manley, William E. Mann (W.E.M.), Vladimir Marchenkov, Peter Markie, Jean-Pierre Marquis, Ausonio Marras, Mike W. Martin, A. P. Martinich, William L. McBride, David McCabe, Storrs McCall, Hugh J. McCann, Robert N. McCauley, John J. McDermott, Sarah McGrath, Ralph McInerny, Daniel J. McKaughan, Thomas McKay, Michael McKinsey, Brian P. McLaughlin, Ernan McMullin, Anthonie Meijers, Jack W. Meiland, William Jason Melanson, Alfred R. Mele, Joseph R. Mendola, Christopher Menzel, Michael J. Meyer, Christian B. Miller, David W. Miller, Peter Millican, Robert N. Minor, Phillip Mitsis, James A. Montmarquet, Michael S. Moore, Tim Moore, Benjamin Morison, Donald R. Morrison, Stephen J. Morse, Paul K. Moser, Alexander P. D. Mourelatos, Ian Mueller, James Bernard Murphy, Mark C. Murphy, Steven Nadler, Jan Narveson, Alan Nelson, Jerome Neu, Samuel Newlands, Kai Nielsen, Ilkka Niiniluoto, Carlos G. Noreña, Calvin G. Normore, David Fate Norton, Nikolaj Nottelmann, Donald Nute, David S. Oderberg, Steve Odin, Michael O’Rourke, Willard G. Oxtoby, Heinz Paetzold, George S. Pappas, Anthony J. Parel, Lydia Patton, R. P. Peerenboom, Francis Jeffry Pelletier, Adriaan T. Peperzak, Derk Pereboom, Jaroslav Peregrin, Glen Pettigrove, Philip Pettit, Edmund L. Pincoffs, Andrew Pinsent, Robert B. Pippin, Alvin Plantinga, Louis P. Pojman, Richard H. Popkin, John F. Post, Carl J. Posy, William J. Prior, Richard Purtill, Michael Quante, Philip L. Quinn, Philip L. Quinn, Elizabeth S. Radcliffe, Diana Raffman, Gerard Raulet, Stephen L. Read, Andrews Reath, Andrew Reisner, Nicholas Rescher, Henry S. Richardson, Robert C. Richardson, Thomas Ricketts, Wayne D. Riggs, Mark Roberts, Robert C. Roberts, Luke Robinson, Alexander Rosenberg, Gary Rosenkranz, Bernice Glatzer Rosenthal, Adina L. Roskies, William L. Rowe, T. M. Rudavsky, Michael Ruse, Bruce Russell, Lilly-Marlene Russow, Dan Ryder, R. M. Sainsbury, Joseph Salerno, Nathan Salmon, Wesley C. Salmon, Constantine Sandis, David H. Sanford, Marco Santambrogio, David Sapire, Ruth A. Saunders, Geoffrey Sayre-McCord, Charles Sayward, James P. Scanlan, Richard Schacht, Tamar Schapiro, Frederick F. Schmitt, Jerome B. Schneewind, Calvin O. Schrag, Alan D. Schrift, George F. Schumm, Jean-Loup Seban, David N. Sedley, Kenneth Seeskin, Krister Segerberg, Charlene Haddock Seigfried, Dennis M. Senchuk, James F. Sennett, William Lad Sessions, Stewart Shapiro, Tommie Shelby, Donald W. Sherburne, Christopher Shields, Roger A. Shiner, Sydney Shoemaker, Robert K. Shope, Kwong-loi Shun, Wilfried Sieg, A. John Simmons, Robert L. Simon, Marcus G. Singer, Georgette Sinkler, Walter Sinnott-Armstrong, Matti T. Sintonen, Lawrence Sklar, Brian Skyrms, Robert C. Sleigh, Michael Anthony Slote, Hans Sluga, Barry Smith, Michael Smith, Robin Smith, Robert Sokolowski, Robert C. Solomon, Marta Soniewicka, Philip Soper, Ernest Sosa, Nicholas Southwood, Paul Vincent Spade, T. L. S. Sprigge, Eric O. Springsted, George J. Stack, Rebecca Stangl, Jason Stanley, Florian Steinberger, Sören Stenlund, Christopher Stephens, James P. Sterba, Josef Stern, Matthias Steup, M. A. Stewart, Leopold Stubenberg, Edith Dudley Sulla, Frederick Suppe, Jere Paul Surber, David George Sussman, Sigrún Svavarsdóttir, Zeno G. Swijtink, Richard Swinburne, Charles C. Taliaferro, Robert B. Talisse, John Tasioulas, Paul Teller, Larry S. Temkin, Mark Textor, H. S. Thayer, Peter Thielke, Alan Thomas, Amie L. Thomasson, Katherine Thomson-Jones, Joshua C. Thurow, Vzalerie Tiberius, Terrence N. Tice, Paul Tidman, Mark C. Timmons, William Tolhurst, James E. Tomberlin, Rosemarie Tong, Lawrence Torcello, Kelly Trogdon, J. D. Trout, Robert E. Tully, Raimo Tuomela, John Turri, Martin M. Tweedale, Thomas Uebel, Jennifer Uleman, James Van Cleve, Harry van der Linden, Peter van Inwagen, Bryan W. Van Norden, René van Woudenberg, Donald Phillip Verene, Samantha Vice, Thomas Vinci, Donald Wayne Viney, Barbara Von Eckardt, Peter B. M. Vranas, Steven J. Wagner, William J. Wainwright, Paul E. Walker, Robert E. Wall, Craig Walton, Douglas Walton, Eric Watkins, Richard A. Watson, Michael V. Wedin, Rudolph H. Weingartner, Paul Weirich, Paul J. Weithman, Carl Wellman, Howard Wettstein, Samuel C. Wheeler, Stephen A. White, Jennifer Whiting, Edward R. Wierenga, Michael Williams, Fred Wilson, W. Kent Wilson, Kenneth P. Winkler, John F. Wippel, Jan Woleński, Allan B. Wolter, Nicholas P. Wolterstorff, Rega Wood, W. Jay Wood, Paul Woodruff, Alison Wylie, Gideon Yaffe, Takashi Yagisawa, Yutaka Yamamoto, Keith E. Yandell, Xiaomei Yang, Dean Zimmerman, Günter Zoller, Catherine Zuckert, Michael Zuckert, Jack A. Zupko (J.A.Z.)
- Edited by Robert Audi, University of Notre Dame, Indiana
-
- Book:
- The Cambridge Dictionary of Philosophy
- Published online:
- 05 August 2015
- Print publication:
- 27 April 2015, pp ix-xxx
-
- Chapter
- Export citation
Failure tabled constraint logic programming by interpolation*
- GRAEME GANGE, JORGE A. NAVAS, PETER SCHACHTE, HARALD SØNDERGAARD, PETER J. STUCKEY
-
- Journal:
- Theory and Practice of Logic Programming / Volume 13 / Issue 4-5 / July 2013
- Published online by Cambridge University Press:
- 25 September 2013, pp. 593-607
-
- Article
- Export citation
-
We present a new execution strategy for constraint logic programs called Failure Tabled CLP. Similarly to Tabled CLP our strategy records certain derivations in order to prune further derivations. However, our method only learns from failed derivations. This allows us to compute interpolants rather than constraint projection for generation of reuse conditions. As a result, our technique can be used where projection is too expensive or does not exist. Our experiments indicate that Failure Tabling can speed up the execution of programs with many redundant failed derivations as well as achieve termination in the presence of infinite executions.
Estimating the overlap between dependent computations for automatic parallelization
- PAUL BONE, ZOLTAN SOMOGYI, PETER SCHACHTE
-
- Journal:
- Theory and Practice of Logic Programming / Volume 11 / Issue 4-5 / July 2011
- Published online by Cambridge University Press:
- 06 July 2011, pp. 575-591
-
- Article
- Export citation
-
Researchers working on the automatic parallelization of programs have long known that too much parallelism can be even worse for performance than too little, because spawning a task to be run on another CPU incurs overheads. Autoparallelizing compilers have therefore long tried to use granularity analysis to ensure that they only spawn off computations whose cost will probably exceed the spawn-off cost by a comfortable margin. However, this is not enough to yield good results, because data dependencies may also limit the usefulness of running computations in parallel. If one computation blocks almost immediately and can resume only after another has completed its work, then the cost of parallelization again exceeds the benefit. We present a set of algorithms for recognizing places in a program where it is worthwhile to execute two or more computations in parallel that pay attention to the second of these issues as well as the first. Our system uses profiling information to compute the times at which a procedure call consumes the values of its input arguments and the times at which it produces the values of its output arguments. Given two calls that may be executed in parallel, our system uses the times of production and consumption of the variables they share to determine how much their executions would overlap if they were run in parallel, and therefore whether executing them in parallel is a good idea or not. We have implemented this technique for Mercury in the form of a tool that uses profiling data to generate recommendations about what to parallelize, for the Mercury compiler to apply on the next compilation of the program. We present preliminary results that show that this technique can yield useful parallelization speedups, while requiring nothing more from the programmer than representative input data for the profiling run.