Resource Bound Guarantees Via Programming Languages

Resource Bound Guarantees Via Programming Languages

Western University Scholarship@Western Electronic Thesis and Dissertation Repository 6-22-2017 12:00 AM Resource Bound Guarantees via Programming Languages Michael J. Burrell The University of Western Ontario Supervisor Mark Daley The University of Western Ontario Joint Supervisor James Andrews The University of Western Ontario Graduate Program in Computer Science A thesis submitted in partial fulfillment of the equirr ements for the degree in Doctor of Philosophy © Michael J. Burrell 2017 Follow this and additional works at: https://ir.lib.uwo.ca/etd Part of the Programming Languages and Compilers Commons, and the Theory and Algorithms Commons Recommended Citation Burrell, Michael J., "Resource Bound Guarantees via Programming Languages" (2017). Electronic Thesis and Dissertation Repository. 4740. https://ir.lib.uwo.ca/etd/4740 This Dissertation/Thesis is brought to you for free and open access by Scholarship@Western. It has been accepted for inclusion in Electronic Thesis and Dissertation Repository by an authorized administrator of Scholarship@Western. For more information, please contact [email protected]. Abstract We present a programming language in which every well-typed program halts in time polynomial with respect to its input and, more importantly, in which upper bounds on resource requirements can be inferred with certainty. Ensuring that software meets its resource constraints is important in a number of domains, most prominently in hard real-time systems and safety critical systems where failing to meet its time constraints can result in catastrophic failure. The use of test- ing in ensuring resource constraints is of limited use since the testing of every input or environment is impossible in general. Static analysis, whether via the compiler or com- plementary programming tool, can generate proofs of correctness with certainty at the cost that not all programs can be analysed. We describe a programming language, Pola, which provides upper bounds on resource usage for well-typed programs. Further, we describe novel features of Pola that make it more expressive than existing resource-constrained programming languages. Keywords: programming language, static analysis, resource bounds, type inference, polynomial time, time complexity, category theory. i Acknowlegements I would like to acknowledge everyone who has helped push this thesis towards completion. It is with a great sense of achievement that I can finally present a unique and worthwhile contribution. I would like to first thank my supervisors, Mark Daley and Jamie Andrews. Jamie was invaluable in checking every example and every logical sequent. Without him, the meat of the thesis, the middle chapters, would be a mess of abbreviated, inconsistent and unreadable syntax. Mark provided initial motivations, an eye for proofs and what needs to be more formalized and more thoroughly explained, and last-minute proofreading and logistical support. I would also like to give sincere thanks to my examiners Amy Felty, Lucian Ilie, Marc Moreno Maza, and David Jeffrey, all four of whom provided insightful and provoking questions during the defence that will guide the future development of Pola. Much of the work developed out of late-night sessions with Robin Cockett and Brian Redmond. They were the main drivers in breaking things, pointing out strange prop- erties, and the last line of defence in ensuring the whole thing worked. Brian did more than his fair share of proofreading papers, as well. I am highly grateful to them both. I am also grateful to Franziska Biegler, who started off as an office-mate, turned into a fantastic friend and personal supporter, and who did remkarkable amounts of proofreading in great detail. I cannot help but thank those who gently|and sometimes less than gently|pushed me to \just finish it already". I can say without any hint of glibness that the thesis could never have been finished without well-wishers prodding me into the last machinations of the thesis. These range from my Associate Dean at Sheridan, Philip Stubbs, to my close friend, Dan Santoni, to my immediate family, to my wife, Sinea, who was successful in giving the most welcomed deadline. ii Contents Abstract ii List of Figures vi List of Tables ix 1 Introduction 1 1.1 Functional languages . 1 1.2 Implementation . 3 1.3 Summary . 3 2 Literature survey 5 2.1 Abstract interpretation . 5 2.2 Restricted models of computation . 6 2.2.1 Primitive recursion . 6 Limited recursion and the Grzegorczyk hierarchy . 7 Predicting time complexity of recursive functions . 9 Limitations to primitive recursion . 9 2.2.2 Hofmann survey . 9 Loop programs . 10 2.2.3 The Hume languages . 11 Hardware level . 11 Finite state machine . 11 Templates . 12 Primitive recursion . 13 2.2.4 Categorical approaches . 13 Paramorphisms . 13 Charity . 15 2.3 Type theoretic approaches to determining resource consumption . 16 2.3.1 Stack language . 16 2.3.2 Memory bounds . 17 2.4 Static memory management . 19 2.5 Conclusion . 20 3 Compositional Pola 21 3.1 Introductory examples . 21 iii 3.1.1 Recursion-free examples . 21 3.1.2 Inductive data types and folds . 22 Typing restrictions on folds . 24 3.1.3 Coinductive data types . 26 3.1.4 Unfolds . 27 3.1.5 Cases and peeks . 28 3.2 Types . 29 3.2.1 Syntax of type expressions . 29 3.2.2 Syntax of type definitions . 30 3.2.3 Constructor and destructor typing . 32 3.3 Terms . 32 3.3.1 Syntactic sugar . 34 3.4 Typing and well-typedness . 35 3.4.1 Contexts and sequents . 35 3.4.2 Simple terms . 36 3.4.3 Recursive inductive terms . 36 3.4.4 Coinductive terms . 42 3.4.5 Summary . 47 3.5 Operational semantics . 47 3.6 Type inference . 51 3.6.1 Sequents . 51 3.6.2 Inductive terms . 52 3.6.3 Coinductive terms . 62 3.6.4 Unification . 65 Substitution and matching . 66 3.6.5 Correctness of type inference . 71 4 Pola implementation 73 5 Bounds inference 74 5.1 Sizes . 74 5.1.1 Operations on sizes . 75 Addition . 76 Subtraction . 77 Multiplication . 77 Maximum . 77 Dot product . 78 Application . 78 Destructor application . 78 5.1.2 Inferring size bounds . 80 Folds . 80 Non-recursive coinductive sizes . 87 Recursive coinductive sizes . 90 5.1.3 Correctness of inference . 94 Defining the potentially recursive size of a term, ./ . 94 iv ? Definitions of inferred size bounds, ./ . 96 Relationship between potential recursive size and inferred size bound 97 5.2 Times . 100 5.2.1 Times . 101 Operations on times . 101 5.2.2 Environments . 102 5.2.3 Sequents . 102 5.2.4 Inductive terms . 103 5.2.5 Coinductive terms . 108 5.2.6 Correctness of inference . 108 5.3 Polynomial time constraint . 113 6 Expressiveness 116 6.1 Expressing simple functions . 116 6.2 Limits . 122 6.3 Variations of Pola . 122 6.3.1 An elementary-recursive language . 122 6.3.2 A PSPACE language . 125 6.3.3 A more expressive P-complete language . 128 7 Conclusion 131 Bibliography 131 Curriculum Vitae 134 v List of Figures 1.1 A Java method which sums the elements of an array of integers and returns that sum. 2 1.2 A Haskell function which sums the elements of a list of integers and returns that sum. 2 1.3 A Pola function which sums the elements of a list of integers and returns that sum. 2 2.1 A finite state machine to decide if a binary number is divisible by 3. 12 3.1 A demonstration of the distinction between opponent and player variables. The function f is legal in Pola, but the function g is illegal. 21 3.2 An example of inductive data types and folds in Pola. 22 3.3 Addition and multiplication functions defined in Pola. 24 3.4 A failed attempt at writing an exponential function in Pola. This example will lead to a typing error. 25 3.5 An exponential function which would yield a typing error in Pola. 25 3.6 An example of a coinductive data type in Pola, representing the product of two values. 26 3.7 An example of a coinductive data type in Pola. 27 3.8 Infinite lists in Pola. ..

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    146 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us