{"159701":{"#nid":"159701","#data":{"type":"event","title":"Ph.D. Thesis Proposal: Cong Hou","body":[{"value":"\u003Cp\u003E\u003Cstrong\u003EPh.D. Thesis Proposal\u003C\/strong\u003E\u003C\/p\u003E\u003Cp\u003ETitle: \u003Cstrong\u003ESynthesis for Program Inversion\u003C\/strong\u003E\u003Cbr \/\u003E\u003Cbr \/\u003ECong Hou\u003Cbr \/\u003ESchool of Computational Science and Engineering\u003Cbr \/\u003ECollege of Computing\u003Cbr \/\u003EGeorgia Institute of Technology\u003Cbr \/\u003E\u003Cbr \/\u003EDate: October 8th (Monday), 2012\u003Cbr \/\u003ETime: 1:00PM - 3:00PM (EDT)\u003Cbr \/\u003ELocation: KACB 1315\u003Cbr \/\u003E\u003Cbr \/\u003E\u003Cstrong\u003ECommittee:\u003C\/strong\u003E\u003C\/p\u003E\u003Cul\u003E\u003Cli\u003EDr. Richard Vuduc (Advisor, School of Computational Science and Engineering, Georgia Tech)\u003C\/li\u003E\u003C\/ul\u003E\u003Cul\u003E\u003Cli\u003EDr. Richard Fujimoto (School of Computational Science and Engineering, Georgia Tech)\u003C\/li\u003E\u003C\/ul\u003E\u003Cul\u003E\u003Cli\u003EDr. Santosh Pande (School of Computer Science,Georgia Tech)\u003C\/li\u003E\u003C\/ul\u003E\u003Cul\u003E\u003Cli\u003EDr. Daniel Quinlan (Lawrence Livermore National Laboratory)\u003C\/li\u003E\u003C\/ul\u003E\u003Cul\u003E\u003Cli\u003EDr. David Jefferson (Lawrence Livermore National Laboratory)\u003C\/li\u003E\u003C\/ul\u003E\u003Cp\u003E\u003Cbr \/\u003E\u003Cstrong\u003EAbstract:\u003C\/strong\u003E\u003Cbr \/\u003EProgram inversion has been successfully applied to several areas such as optimistic parallel discrete event simulation (OPDES) and reverse debugging. Given a program P with input state I and output state O, its inverse or reverse program, P-, produces I given O. When P is not injective or reversible, we need to build an instrumented and reversible version of P that we call a forward program and is denoted by P+, so that it becomes possible to construct P- from P+. The instrumented code in P+ stores control flow information and values that cannot be recovered. However, constructing forward and reverse programs manually is a tedious, time-consuming, and error-prone task. We need an automated tool that can generate forward and reverse programs automatically. \u003Cbr \/\u003E\u003Cbr \/\u003EIn this thesis we introduce an automatic program inversion framework for imperative languages. In our method, we transform the task of program inversion into a problem of retrieving values. Specifically, we build a value search graph (VSG) that explicitly expresses equality relations between values in the program. Values in the graph are represented by single static assignment (SSA) names or constant values. Equalities are detected from assignments, comparisons, some special operations, global value numbering, etc.. Each equality is constrained by a set of control flow paths on which the equality exists. The problem of building forward and reverse programs then becomes a combinatorial search problem on the VSG. The forward and reverse programs are then generated based on the search result. \u003Cbr \/\u003E\u003Cbr \/\u003EUsing the same framework, we first describe how to retrieve scalar values, then extend it to handling arrays and other data structures (e.g. object access and linked data structure). To handle arrays, we introduce the array subregion representations into the VSG so that the equality between two arrays holds only in the subregion attached to it. Then we retrieve an array by retrieving subregions of it. We also show that object access and linked data structure can be transformed into array-like representations so that the same method will be employed to handle them.\u003C\/p\u003E","summary":null,"format":"limited_html"}],"field_subtitle":"","field_summary":"","field_summary_sentence":[{"value":"Synthesis for Program Inversion"}],"uid":"1","created_gmt":"2012-10-04 15:21:59","changed_gmt":"2016-10-08 02:00:28","author":"Jupiter","boilerplate_text":"","field_publication":"","field_article_url":"","field_event_time":{"event_time_start":"2012-10-08T14:00:00-04:00","event_time_end":"2012-10-08T16:00:00-04:00","event_time_end_last":"2012-10-08T16:00:00-04:00","gmt_time_start":"2012-10-08 18:00:00","gmt_time_end":"2012-10-08 20:00:00","gmt_time_end_last":"2012-10-08 20:00:00","rrule":null,"timezone":"America\/New_York"},"extras":[],"groups":[{"id":"47223","name":"College of Computing"},{"id":"50877","name":"School of Computational Science and Engineering"}],"categories":[],"keywords":[],"core_research_areas":[],"news_room_topics":[],"event_categories":[],"invited_audience":[],"affiliations":[],"classification":[],"areas_of_expertise":[],"news_and_recent_appearances":[],"phone":[],"contact":[{"value":"\u003Cp\u003E\u003Ca href=\u0022mailto:hou_cong@gatech.edu\u0022\u003ECong Hou\u003C\/a\u003E\u003C\/p\u003E","format":"limited_html"}],"email":[],"slides":[],"orientation":[],"userdata":""}}}