Abstract Satisfiability-Based Program Reasoning And

Total Page:16

File Type:pdf, Size:1020Kb

Abstract Satisfiability-Based Program Reasoning And ABSTRACT Title of dissertation: SATISFIABILITY-BASED PROGRAM REASONING AND PROGRAM SYNTHESIS Saurabh Srivastava, Doctor of Philosophy, 2010 Dissertation directed by: Professor Jeffrey S. Foster Department of Computer Science Program reasoning consists of the tasks of automatically and statically ver- ifying correctness and inferring properties of programs. Program synthesis is the task of automatically generating programs. Both program reasoning and synthesis are theoretically undecidable, but the results in this dissertation show that they are practically tractable. We show that there is enough structure in programs written by human developers to make program reasoning feasible, and additionally we can leverage program reasoning technology for automatic program synthesis. This dissertation describes expressive and efficient techniques for program rea- soning and program synthesis. Our techniques work by encoding the underlying inference tasks as solutions to satisfiability instances. A core ingredient in the re- duction of these problems to finite satisfiability instances is the assumption of tem- plates. Templates are user-provided hints about the structural form of the desired artifact, e.g., invariant, pre- and postcondition templates for reasoning; or program templates for synthesis. We propose novel algorithms, parameterized by suitable templates, that reduce the inference of these artifacts to satisfiability. We show that fixed-point computation—the key technical challenge in program reasoning—is encodable as SAT instances. We also show that program synthesis can be viewed as generalized verification, facilitating the use of program reasoning tools as synthesizers. Lastly, we show that program reasoning tools augmented with symbolic testing can be used to build powerful synthesizers with approximate guarantees. We implemented the techniques developed in this dissertation in the form of the VS3—Verification and Synthesis using SMT Solvers—suite of tools. Using the VS3 tools, we were able to verify and infer expressive properties of programs, and synthesize difficult benchmarks from specifications. These prototype tools demon- strate that we can exploit the engineering advances in current SAT/SMT solvers to do automatic program reasoning and synthesis. We propose building future auto- matic program reasoning and synthesis tools based on the ideas presented in this dissertation. SATISFIABILITY-BASED PROGRAM REASONING AND PROGRAM SYNTHESIS by Saurabh Srivastava Dissertation submitted to the Faculty of the Graduate School of the University of Maryland, College Park in partial fulfillment of the requirements for the degree of Doctor of Philosophy 2010 Advisory Committee: Professor Jeffrey S. Foster, Chair/Advisor Professor Michael W. Hicks Dr. Sumit Gulwani Professor Jonathan Katz Professor Mike Boyle c Copyright by Saurabh Srivastava 2010 To my parents, Preeti and Prakash, and my grandparents. Acknowledgments I am greatly indebted to my advisor, Jeff Foster, whose willingness to accept, encourage, and fund, every experimental and contentious research thought I decided to pursue, amazes me in hindsight. It would be fair to say that he introduced me to research in programming languages. My interest in the foundations of programming languages started with a course he taught. To say that the knowledge I got from him was just technical would be a gross understatement. Research is half about knowing what problems to solve. Jeff has given me the perspective to pursue the right research ideas, and also the right attitude to overcome the hurdles a research project invariably presents. Not only that, his constant advising on matter not just technical, has helped hone my skills in writing, presentation, articulation, and maybe even helped me become a more capable social being. Talking of the research and mentoring “process,” there is probably no better person to refer to than Mike Hicks, my second advisor. Mike has the uncanny ability to recognize a student’s aptitude, interests, and potential, and then to encourage them in exactly the right way. I started working in programming languages as his student and he introduced me to the rigor in the foundations of programming languages—which he knew would attract me to the field. His own research diversity and time management skills have been a constant source of inspiration and I hope I can one day be as efficient a researcher as he is. His advising and presence ensured that my graduate career was a breeze and enjoyable every step of the way. “This appears to be an impossible problem. Let us see if we can solve it.” If this was ever a research philosophy, Sumit Gulwani’s would be this. From Sumit, my third advisor, I have learned that a research agenda is not useful if it is not adventurous, ambitious, and borderline crazy. In my internship under his guidance, Sumit introduced me to program verification, and we decided to ignore traditional approaches in favor of an experimental satisfiability-based approach to program reasoning. Our experimental program reasoning approach served as a segue into automatic program synthesis, a problem typically considered intractable. Also, un- der his mentorship, I have learnt that research is a social, collaborative, activity. Only through constant conversation do guesses and intuition develop into concrete solutions. Lastly, from his work ethic I have learned that a task worth pursuing is a task worth doing well; even if that means spending 16 to 18 hours a day on it. I have gained immensely from my interactions with all three of my advisors. I persevere to constantly change myself to imbibe the qualities they each possess, and I admire. I am grateful to them for having invested as much time as they did, and for showing me the way forward. My graduate research career has been meandering, and I would not have been in my current position, if it had not been for the efforts of my advisors “on the way”. A special thanks goes out to Bobby Bhattacharjee, whose prodding is partly the reason why I stuck around in graduate school. He has mentored me in all things non-technical, and indoctrinated in me the perspective that the only livable place is academia! His motivation and encouragement has helped me immensely. iii Also, a thanks to my undergraduate research advisors, Dheeraj Sanghi and Ajit K. Chaturvedi, at IIT Kanpur, who got me started on research early. I would also like to thank other professors in the department and on my committee. I am grateful to Samir Khuller, Aravind Srinivasan, Jonathan Katz, and Mike Boyle for having taken the time out to give me very useful feedback on my research. A shout-out is in order to the graduate students, present and past, that make up the Programming Languages group at the University of Maryland (PLUM). Nik, Polyvios, Iulian, Chris, Yit, Elnatan, Mark, David An, Mike Furr, Martin, Evan, Avik, Stephen, Ted, and David Greenfieldboyce were all a constant source of enlightening conversations (research or otherwise). Also, to all my other friends in the department, Srinivas Kashyap, Shiv, Bhargav, Aswin, Gaurav, Narayanan, Akhil, and Abheek; who made my graduate school days worth every moment. Only half jokingly, a nod to all the local coffee shops, without their presence there would be no caffeine induced writing rampages and this dissertation would have taken twice as long. A special thanks to my family, immediate and extended. I am humbled by the constant support and encouragement that my parents have provided throughout this period. My father, a professor and researcher in Inorganic Chemistry, has been a constant role model for my professional life; while my mother, with her open- mindedness and enthusiasm for absorbing ideas has been a constant role model for my personal life. I am also thankful to them for providing the most intellectually nurturing environment that a child could ask for, and for setting the right expecta- tions for me as an adult. Also, a big thanks to my younger brothers, Abhishek and Prashast. They have been a source of constant pride and perspective. They are my connection to the non-academic world. Lastly, to the person whose constant presence made the last four years incredibly enjoyable, and who I cannot thank enough, Lauren. iv Table of Contents List of Tables ix List of Figures x List of Abbreviations xii 1 Introduction 1 1.1 Satisfiability- and Template-based Program Reasoning and Synthesis 3 1.1.1 Satisfiability for Reasoning . 4 1.1.2 Satisfiability for Synthesis . 10 1.1.3 Templates . 11 1.1.4 Maximally Best Solutions using Satisfiability . 14 1.2 Program reasoning with linear arithmetic . 16 1.3 Program reasoning with predicate abstraction . 18 1.4 Verification-inspired synthesis . 20 1.5 Testing-inspired synthesis . 23 1.6 Engineering Verifiers and Synthesizers . 27 1.7 Key Contributions and Organization . 28 2 Program Reasoning over Linear Arithmetic 30 2.1 Using SAT Solvers for Invariant Inference . 31 2.2 Program Verification . 34 2.2.1 Verification Conditions . 35 2.2.2 Template specification T ..................... 39 2.2.3 Constraint solving . 40 2.2.4 Choice of cut-set . 47 2.2.5 Examples . 50 2.3 Interprocedural Analysis . 52 2.4 Maximally weak Precondition . 59 2.4.1 Locally pointwise-weakest strategy . 62 2.5 Maximally strong Postcondition . 68 2.6 Specification Inference . 70 2.7 Applications . 77 2.7.1 Termination and Bounds Analysis . 77 2.7.2 Counterexamples for Safety Properties . 80 2.7.3 Counterexamples for Termination Properties . 83 2.8 Experiments . 84 2.9 Summary . 89 2.10 Further Reading . 89 v 3 Program Reasoning over Predicate Abstraction 92 3.1 Using SMT Solvers for Program Reasoning . 93 3.2 Motivating Examples . 96 3.3 Notation . 103 3.3.1 Templates for Predicate Abstraction . 103 3.3.2 Program Model . 105 3.3.3 Invariant Solution . 107 3.4 Optimal Solutions . 109 3.5 Iterative Propagation Based Algorithms . 117 3.5.1 Least Fixed-point .
Recommended publications
  • Techniques for Improving the Performance of Software Transactional Memory
    Techniques for Improving the Performance of Software Transactional Memory Srdan Stipi´c Department of Computer Architecture Universitat Polit`ecnicade Catalunya A thesis submitted for the degree of Doctor of Philosophy in Computer Architecture July, 2014 Advisor: Adri´anCristal Co-Advisor: Osman S. Unsal Tutor: Mateo Valero Curso académico: Acta de calificación de tesis doctoral Nombre y apellidos Programa de doctorado Unidad estructural responsable del programa Resolución del Tribunal Reunido el Tribunal designado a tal efecto, el doctorando / la doctoranda expone el tema de la su tesis doctoral titulada ____________________________________________________________________________________ __________________________________________________________________________________________. Acabada la lectura y después de dar respuesta a las cuestiones formuladas por los miembros titulares del tribunal, éste otorga la calificación: NO APTO APROBADO NOTABLE SOBRESALIENTE (Nombre, apellidos y firma) (Nombre, apellidos y firma) Presidente/a Secretario/a (Nombre, apellidos y firma) (Nombre, apellidos y firma) (Nombre, apellidos y firma) Vocal Vocal Vocal ______________________, _______ de __________________ de _______________ El resultado del escrutinio de los votos emitidos por los miembros titulares del tribunal, efectuado por la Escuela de Doctorado, a instancia de la Comisión de Doctorado de la UPC, otorga la MENCIÓN CUM LAUDE: SÍ NO (Nombre, apellidos y firma) (Nombre, apellidos y firma) Presidente de la Comisión Permanente de la Escuela de Secretaria de la Comisión Permanente de la Escuela de Doctorado Doctorado Barcelona a _______ de ____________________ de __________ To my parents. Acknowledgements I am thankful to a lot of people without whom I would not have been able to complete my PhD studies. While it is not possible to make an exhaustive list of names, I would like to mention a few.
    [Show full text]
  • Proceedings of the Linux Symposium
    Proceedings of the Linux Symposium Volume One June 27th–30th, 2007 Ottawa, Ontario Canada Contents The Price of Safety: Evaluating IOMMU Performance 9 Ben-Yehuda, Xenidis, Mostrows, Rister, Bruemmer, Van Doorn Linux on Cell Broadband Engine status update 21 Arnd Bergmann Linux Kernel Debugging on Google-sized clusters 29 M. Bligh, M. Desnoyers, & R. Schultz Ltrace Internals 41 Rodrigo Rubira Branco Evaluating effects of cache memory compression on embedded systems 53 Anderson Briglia, Allan Bezerra, Leonid Moiseichuk, & Nitin Gupta ACPI in Linux – Myths vs. Reality 65 Len Brown Cool Hand Linux – Handheld Thermal Extensions 75 Len Brown Asynchronous System Calls 81 Zach Brown Frysk 1, Kernel 0? 87 Andrew Cagney Keeping Kernel Performance from Regressions 93 T. Chen, L. Ananiev, and A. Tikhonov Breaking the Chains—Using LinuxBIOS to Liberate Embedded x86 Processors 103 J. Crouse, M. Jones, & R. Minnich GANESHA, a multi-usage with large cache NFSv4 server 113 P. Deniel, T. Leibovici, & J.-C. Lafoucrière Why Virtualization Fragmentation Sucks 125 Justin M. Forbes A New Network File System is Born: Comparison of SMB2, CIFS, and NFS 131 Steven French Supporting the Allocation of Large Contiguous Regions of Memory 141 Mel Gorman Kernel Scalability—Expanding the Horizon Beyond Fine Grain Locks 153 Corey Gough, Suresh Siddha, & Ken Chen Kdump: Smarter, Easier, Trustier 167 Vivek Goyal Using KVM to run Xen guests without Xen 179 R.A. Harper, A.N. Aliguori & M.D. Day Djprobe—Kernel probing with the smallest overhead 189 M. Hiramatsu and S. Oshima Desktop integration of Bluetooth 201 Marcel Holtmann How virtualization makes power management different 205 Yu Ke Ptrace, Utrace, Uprobes: Lightweight, Dynamic Tracing of User Apps 215 J.
    [Show full text]
  • Approaches and Applications of Inductive Programming
    Report from Dagstuhl Seminar 17382 Approaches and Applications of Inductive Programming Edited by Ute Schmid1, Stephen H. Muggleton2, and Rishabh Singh3 1 Universität Bamberg, DE, [email protected] 2 Imperial College London, GB, [email protected] 3 Microsoft Research – Redmond, US, [email protected] Abstract This report documents the program and the outcomes of Dagstuhl Seminar 17382 “Approaches and Applications of Inductive Programming”. After a short introduction to the state of the art to inductive programming research, an overview of the introductory tutorials, the talks, program demonstrations, and the outcomes of discussion groups is given. Seminar September 17–20, 2017 – http://www.dagstuhl.de/17382 1998 ACM Subject Classification I.2.2 Automatic Programming, Program Synthesis Keywords and phrases inductive program synthesis, inductive logic programming, probabilistic programming, end-user programming, human-like computing Digital Object Identifier 10.4230/DagRep.7.9.86 Edited in cooperation with Sebastian Seufert 1 Executive summary Ute Schmid License Creative Commons BY 3.0 Unported license © Ute Schmid Inductive programming (IP) addresses the automated or semi-automated generation of computer programs from incomplete information such as input-output examples, constraints, computation traces, demonstrations, or problem-solving experience [5]. The generated – typically declarative – program has the status of a hypothesis which has been generalized by induction. That is, inductive programming can be seen as a special approach to machine learning. In contrast to standard machine learning, only a small number of training examples is necessary. Furthermore, learned hypotheses are represented as logic or functional programs, that is, they are represented on symbol level and therefore are inspectable and comprehensible [17, 8, 18].
    [Show full text]
  • Well-Founded Functions and Extreme Predicates in Dafny: a Tutorial
    EPiC Series in Computing Volume 40, 2016, Pages 52–66 IWIL-2015. 11th International Work- shop on the Implementation of Logics Well-founded Functions and Extreme Predicates in Dafny: A Tutorial K. Rustan M. Leino Microsoft Research [email protected] Abstract A recursive function is well defined if its every recursive call corresponds a decrease in some well-founded order. Such well-founded functions are useful for example in computer programs when computing a value from some input. A boolean function can also be defined as an extreme solution to a recurrence relation, that is, as a least or greatest fixpoint of some functor. Such extreme predicates are useful for example in logic when encoding a set of inductive or coinductive inference rules. The verification-aware programming language Dafny supports both well-founded functions and extreme predicates. This tutorial describes the difference in general terms, and then describes novel syntactic support in Dafny for defining and proving lemmas with extreme predicates. Various examples and considerations are given. Although Dafny’s verifier has at its core a first-order SMT solver, Dafny’s logical encoding makes it possible to reason about fixpoints in an automated way. 0. Introduction Recursive functions are a core part of computer science and mathematics. Roughly speaking, when the definition of such a function spells out a terminating computation from given arguments, we may refer to it as a well-founded function. For example, the common factorial and Fibonacci functions are well-founded functions. There are also other ways to define functions. An important case regards the definition of a boolean function as an extreme solution (that is, a least or greatest solution) to some equation.
    [Show full text]
  • There Are No Limits to Learning! Academic and High School
    Brick and Click Libraries An Academic Library Symposium Northwest Missouri State University Friday, November 5, 2010 Managing Editors: Frank Baudino Connie Jo Ury Sarah G. Park Co-Editor: Carolyn Johnson Vicki Wainscott Pat Wyatt Technical Editor: Kathy Ferguson Cover Design: Sean Callahan Northwest Missouri State University Maryville, Missouri Brick & Click Libraries Team Director of Libraries: Leslie Galbreath Co-Coordinators: Carolyn Johnson and Kathy Ferguson Executive Secretary & Check-in Assistant: Beverly Ruckman Proposal Reviewers: Frank Baudino, Sara Duff, Kathy Ferguson, Hong Gyu Han, Lisa Jennings, Carolyn Johnson, Sarah G. Park, Connie Jo Ury, Vicki Wainscott and Pat Wyatt Technology Coordinators: Sarah G. Park and Hong Gyu Han Union & Food Coordinator: Pat Wyatt Web Page Editors: Lori Mardis, Sarah G. Park and Vicki Wainscott Graphic Designer: Sean Callahan Table of Contents Quick & Dirty Library Promotions That Really Work! 1 Eric Jennings, Reference & Instruction Librarian Kathryn Tvaruzka, Education Reference Librarian University of Wisconsin Leveraging Technology, Improving Service: Streamlining Student Billing Procedures 2 Colleen S. Harris, Head of Access Services University of Tennessee – Chattanooga Powerful Partnerships & Great Opportunities: Promoting Archival Resources and Optimizing Outreach to Public and K12 Community 8 Lea Worcester, Public Services Librarian Evelyn Barker, Instruction & Information Literacy Librarian University of Texas at Arlington Mobile Patrons: Better Services on the Go 12 Vincci Kwong,
    [Show full text]
  • Programming Language Features for Refinement
    Programming Language Features for Refinement Jason Koenig K. Rustan M. Leino Stanford University Microsoft Research [email protected] [email protected] Algorithmic and data refinement are well studied topics that provide a mathematically rigorous ap- proach to gradually introducing details in the implementation of software. Program refinements are performed in the context of some programming language, but mainstream languages lack features for recording the sequence of refinement steps in the program text. To experiment with the combination of refinement, automated verification, and language design, refinement features have been added to the verification-aware programming language Dafny. This paper describes those features and reflects on some initial usage thereof. 0. Introduction Two major problems faced by software engineers are the development of software and the maintenance of software. In addition to fixing bugs, maintenance involves adapting the software to new or previously underappreciated scenarios, for example, using new APIs, supporting new hardware, or improving the performance. Software version control systems track the history of software changes, but older versions typically do not play any significant role in understanding or evolving the software further. For exam- ple, when a simple but inefficient data structure is replaced by a more efficient one, the program edits are destructive. Consequently, understanding the new code may be significantly more difficult than un- derstanding the initial version, because the source code will only show how the more complicated data structure is used. The initial development of the software may proceed in a similar way, whereby a software engi- neer first implements the basic functionality and then extends it with additional functionality or more advanced behaviors.
    [Show full text]
  • Developing Verified Sequential Programs with Event-B
    UNIVERSITY OF SOUTHAMPTON Developing Verified Sequential Programs with Event-B by Mohammadsadegh Dalvandi A thesis submitted in partial fulfillment for the degree of Doctor of Philosophy in the Faculty of Physical Sciences and Engineering Electronics and Computer Science April 2018 UNIVERSITY OF SOUTHAMPTON ABSTRACT FACULTY OF PHYSICAL SCIENCES AND ENGINEERING ELECTRONICS AND COMPUTER SCIENCE Doctor of Philosophy by Mohammadsadegh Dalvandi The constructive approach to software correctness aims at formal modelling of the in- tended behaviour and structure of a system in different levels of abstraction and verifying properties of models. The target of analytical approach is to verify properties of the final program code. A high level look at these two approaches suggests that the con- structive and analytical approaches should complement each other well. The aim of this thesis is to build a link between Event-B (constructive approach) and Dafny (analytical approach) for developing sequential verified programs. The first contribution of this the- sis is a tool supported method for transforming Event-B models to simple Dafny code contracts (in the form of method pre- and post-conditions). Transformation of Event-B formal models to Dafny method declarations and code contracts is enabled by a set of transformation rules. Using this set of transformation rules, one can generate code contracts from Event-B models but not implementations. The generated code contracts must be seen as an interface that can be implemented. If there is an implementation that satisfies the generated contracts then it is considered to be a correct implementation of the abstract Event-B model. A tool for automatic transformation of Event-B models to simple Dafny code contracts is presented.
    [Show full text]
  • Master's Thesis
    FACULTY OF SCIENCE AND TECHNOLOGY MASTER'S THESIS Study programme/specialisation: Computer Science Spring / Autumn semester, 20......19 Open/Confidential Author: ………………………………………… Nicolas Fløysvik (signature of author) Programme coordinator: Hein Meling Supervisor(s): Hein Meling Title of master's thesis: Using domain restricted types to improve code correctness Credits: 30 Keywords: Domain restrictions, Formal specifications, Number of pages: …………………75 symbolic execution, Rolsyn analyzer, + supplemental material/other: …………0 Stavanger,……………………….15/06/2019 date/year Title page for Master's Thesis Faculty of Science and Technology Domain Restricted Types for Improved Code Correctness Nicolas Fløysvik University of Stavanger Supervised by: Professor Hein Meling University of Stavanger June 2019 Abstract ReDi is a new static analysis tool for improving code correctness. It targets the C# language and is a .NET Roslyn live analyzer providing live analysis feedback to the developers using it. ReDi uses principles from formal specification and symbolic execution to implement methods for performing domain restriction on variables, parameters, and return values. A domain restriction is an invariant implemented as a check function, that can be applied to variables utilizing an annotation referring to the check method. ReDi can also help to prevent runtime exceptions caused by null pointers. ReDi can prevent null exceptions by integrating nullability into the domain of the variables, making it feasible for ReDi to statically keep track of null, and de- tecting variables that may be null when used. ReDi shows promising results with finding inconsistencies and faults in some programming projects, the open source CoreWiki project by Jeff Fritz and several web service API projects for services offered by Innovation Norway.
    [Show full text]
  • Download and Use25
    Journal of Artificial Intelligence Research 1 (1993) 1-15 Submitted 6/91; published 9/91 Inductive logic programming at 30: a new introduction Andrew Cropper [email protected] University of Oxford Sebastijan Dumanˇci´c [email protected] KU Leuven Abstract Inductive logic programming (ILP) is a form of machine learning. The goal of ILP is to in- duce a hypothesis (a set of logical rules) that generalises given training examples. In contrast to most forms of machine learning, ILP can learn human-readable hypotheses from small amounts of data. As ILP approaches 30, we provide a new introduction to the field. We introduce the necessary logical notation and the main ILP learning settings. We describe the main building blocks of an ILP system. We compare several ILP systems on several dimensions. We describe in detail four systems (Aleph, TILDE, ASPAL, and Metagol). We document some of the main application areas of ILP. Finally, we summarise the current limitations and outline promising directions for future research. 1. Introduction A remarkable feat of human intelligence is the ability to learn new knowledge. A key type of learning is induction: the process of forming general rules (hypotheses) from specific obser- vations (examples). For instance, suppose you draw 10 red balls out of a bag, then you might induce a hypothesis (a rule) that all the balls in the bag are red. Having induced this hypothesis, you can predict the colour of the next ball out of the bag. The goal of machine learning (ML) (Mitchell, 1997) is to automate induction.
    [Show full text]
  • Bias Reformulation for One-Shot Function Induction
    Bias reformulation for one-shot function induction Dianhuan Lin1 and Eyal Dechter1 and Kevin Ellis1 and Joshua B. Tenenbaum1 and Stephen H. Muggleton2 Abstract. In recent years predicate invention has been under- Input Output explored as a bias reformulation mechanism within Inductive Logic Task1 miKe dwIGHT Mike Dwight Programming due to difficulties in formulating efficient search mech- Task2 European Conference on ECAI anisms. However, recent papers on a new approach called Meta- Artificial Intelligence Interpretive Learning have demonstrated that both predicate inven- Task3 My name is John. John tion and learning recursive predicates can be efficiently implemented for various fragments of definite clause logic using a form of abduc- tion within a meta-interpreter. This paper explores the effect of bias reformulation produced by Meta-Interpretive Learning on a series Figure 1. Input-output pairs typifying string transformations in this paper of Program Induction tasks involving string transformations. These tasks have real-world applications in the use of spreadsheet tech- nology. The existing implementation of program induction in Mi- crosoft’s FlashFill (part of Excel 2013) already has strong perfor- problems are easy for us, but often difficult for automated systems, mance on this problem, and performs one-shot learning, in which a is that we bring to bear a wealth of knowledge about which kinds of simple transformation program is generated from a single example programs are more or less likely to reflect the intentions of the person instance and applied to the remainder of the column in a spreadsheet. who wrote the program or provided the example. However, no existing technique has been demonstrated to improve There are a number of difficulties associated with successfully learning performance over a series of tasks in the way humans do.
    [Show full text]
  • Essays on Emotional Well-Being, Health Insurance Disparities and Health Insurance Markets
    University of New Mexico UNM Digital Repository Economics ETDs Electronic Theses and Dissertations Summer 7-15-2020 Essays on Emotional Well-being, Health Insurance Disparities and Health Insurance Markets Disha Shende Follow this and additional works at: https://digitalrepository.unm.edu/econ_etds Part of the Behavioral Economics Commons, Health Economics Commons, and the Public Economics Commons Recommended Citation Shende, Disha. "Essays on Emotional Well-being, Health Insurance Disparities and Health Insurance Markets." (2020). https://digitalrepository.unm.edu/econ_etds/115 This Dissertation is brought to you for free and open access by the Electronic Theses and Dissertations at UNM Digital Repository. It has been accepted for inclusion in Economics ETDs by an authorized administrator of UNM Digital Repository. For more information, please contact [email protected], [email protected], [email protected]. Disha Shende Candidate Economics Department This dissertation is approved, and it is acceptable in quality and form for publication: Approved by the Dissertation Committee: Alok Bohara, Chairperson Richard Santos Sarah Stith Smita Pakhale i Essays on Emotional Well-being, Health Insurance Disparities and Health Insurance Markets DISHA SHENDE B.Tech., Shri Guru Govind Singh Inst. of Engr. and Tech., India, 2010 M.A., Applied Economics, University of Cincinnati, 2015 M.A., Economics, University of New Mexico, 2017 DISSERTATION Submitted in Partial Fulfillment of the Requirements for the Degree of Doctor of Philosophy Economics At the The University of New Mexico Albuquerque, New Mexico July 2020 ii DEDICATION To all the revolutionary figures who fought for my right to education iii ACKNOWLEDGEMENT This has been one of the most important bodies of work in my academic career so far.
    [Show full text]
  • On the Di Iculty of Benchmarking Inductive Program Synthesis Methods
    On the Diiculty of Benchmarking Inductive Program Synthesis Methods Edward Pantridge omas Helmuth MassMutual Financial Group Washington and Lee University Amherst, Massachuses, USA Lexington, Virginia [email protected] [email protected] Nicholas Freitag McPhee Lee Spector University of Minnesota, Morris Hampshire College Morris, Minnesota 56267 Amherst, Massachuses, USA [email protected] [email protected] ABSTRACT ACM Reference format: A variety of inductive program synthesis (IPS) techniques have Edward Pantridge, omas Helmuth, Nicholas Freitag McPhee, and Lee Spector. 2017. On the Diculty of Benchmarking Inductive Program Syn- recently been developed, emerging from dierent areas of com- thesis Methods. In Proceedings of GECCO ’17 Companion, Berlin, Germany, puter science. However, these techniques have not been adequately July 15-19, 2017, 8 pages. compared on general program synthesis problems. In this paper we DOI: hp://dx.doi.org/10.1145/3067695.3082533 compare several methods on problems requiring solution programs to handle various data types, control structures, and numbers of outputs. e problem set also spans levels of abstraction; some 1 INTRODUCTION would ordinarily be approached using machine code or assembly Since the creation of Inductive Program Synthesis (IPS) in the language, while others would ordinarily be approached using high- 1970s [15], researchers have been striving to create systems capa- level languages. e presented comparisons are focused on the ble of generating programs competitively with human intelligence. possibility of success; that is, on whether the system can produce Modern IPS methods oen trace their roots to the elds of machine a program that passes all tests, for all training and unseen test- learning, logic programming, evolutionary computation and others.
    [Show full text]