The University of Arizona
banner image

Saumya Debray's Research Publications (by Topic)

[Click here for Publications sorted by date]

Software Security, Code Obfuscation, Software Protection

  1. Probabilistic Obfuscation through Covert Channels, with Jon Stephens, Babak Yadegari, Christian Collberg, and Carlos Scheidegger.
    Proc. Third IEEE European Symposium on Security and Privacy (EuroS&P), April 2018.
    Abstract
    Paper: PDF
  2. Analysis of Exception-Based Control Transfers, with Babak Yadegari and Jon Stephens.
    Proc. 7th ACM Conference on Data and Application Security and Privacy (CODASPY), March 2017.
    Abstract
    Paper: PDF
  3. Symbolic Execution of Obfuscated Code, with Babak Yadegari.
    Proc. 22nd ACM Conference on Computer and Communications Security (CCS), Oct. 2015.
    Abstract
    Paper: PDF
  4. A Generic Approach to Automatic Deobfuscation of Executable Code, with Babak Yadegari, Brian Johannesmeyer, and Benjamin Whitely.
    Proc. 36th IEEE Symposium on Security and Privacy, May 2015.
    Abstract
    Paper: PDF
    Source code (tar.gz, 2.3 MB)   |   Input programs   |   Traces (tar.gz, 6.0 GB)
  5. Identifying and Understanding Self-Checksumming Defenses in Software, with Jing Qiu, Babak Yadegari, Brian Johannesmeyer, and Xiaohong Su.
    Proc. Fifth ACM Conference on Data and Application Security and Privacy (CODASPY), March 2015.
    Abstract
    Paper: PDF
  6. Bit-Level Taint Analysis, with Babak Yadegari.
    Proc. 14th IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM), Sept. 2014.
    Abstract
    Paper: PDF

  7. Weaknesses in Defenses Against Web-Borne Malware (Extended Abstract), with Gen Lu.
    10th Conference on Detection of Intrusions and Malware & Vulnerability Assessment (DIMVA), July 2013.
    Abstract
    Paper: PDF

  8. Automatic Simplification of Obfuscated JavaScript Code: A Semantics-Based Approach, with Gen Lu.
    Proc. Sixth IEEE International Conference on Software Security and Reliability (SERE), pages 31–40. June 2012.
    Abstract
    Paper: PDF

  9. Automatic Simplification of Obfuscated JavaScript Code (Extended Abstract), with Gen Lu and Kevin Coogan.
    Proc. ICISTM-12 Workshop on Program Protection and Reverse Engineering (PPREW). March 2012.
    Abstract
    Paper: PDF

  10. Deobfuscating Virtualization-Obfuscated Software: A Semantics-Based Approach, with Kevin Coogan and Gen Lu.
    Proc. ACM Conference on Computer and Communications Security (CCS) Oct. 2011, pages 275-284.
    Abstract
    Paper: PDF

  11. Equational Reasoning on x86 Assembly Code, with Kevin Coogan.
    Proc. Eleventh IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM), Sept. 2011.
    Abstract
    Paper: PDF

  12. Reverse Engineering Self-Modifying Code: Unpacker Extraction, with Jay Patel.
    Proc. 17th. IEEE Working Conference on Reverse Engineering, October 2010, pages 131–140.
    Abstract
    Paper: Postscript   |   PDF

  13. Modelling Metamorphism by Abstract Interpretation, with Mila Dalla Preda, Roberto Giacobazzi, Kevin Coogan, and Gregg Townsend.
    Proc. 17th. International Static Analysis Symposium (SAS), Sept. 2010, pages 218–235.
    Abstract
    Paper: Postscript   |   PDF

  14. Automatic Static Unpacking of Malware Binaries, with Kevin Coogan, Tasneem Kaochar, and Gregg Townsend.
    Proc. 16th. IEEE Working Conference on Reverse Engineering, October 2009, pp. 167-176.
    Abstract
    Paper: Postscript   |   PDF

  15. Static Detection of Disassembly Errors, with Nithya Krishnamoorthy and Keith Fligg.
    Proc. 16th. IEEE Working Conference on Reverse Engineering, October 2009, pp. 259-268.
    Abstract
    Paper: Postscript   |   PDF

  16. On the Semantics of Self-Unpacking Malware Code, with Kevin Coogan and Gregg Townsend.
    Draft, July 2008.
    Abstract
    Paper: Postscript  |  PDF

  17. Binary Obfuscation Using Signals, with Igor Popov and Gregory Andrews.
    Proc. Usenix Security 2007, August 2007, pp. 275-290.
    Abstract
    Paper: Postscript  |  PDF

  18. A Semantics-Based Approach to Malware Detection, with Mila Dalla Preda, Mihai Christodorescu, and Somesh Jha.
    Proc. 34th. ACM Symposium on Principles of Programming Languages (POPL), Jan. 2007, pp. 377-388.
    (Revised version appeared in ACM Transactions on Programming Languages and Systems volume 30 issue 5, Aug. 2008, pages 1-55.)
    Abstract
    Paper: Postscript  |  PDF

  19. Deobfuscation: Reverse Engineering Obfuscated Code, with Sharath Udupa and Matias Madou.
    Proc. 12th. IEEE Working Conference on Reverse Egineering, Nov. 2005.
    Abstract
    Paper: Postscript  |  PDF

  20. Software Protection through Dynamic Code Mutation, with Matias Madou, Bertrand Anckaert, Patrick Moseley, Bjorn De Sutter, and Koen De Bosschere.
    Proc. 6th International Workshop on Information Security Applications, Aug. 2005. pages 194-206.
    Abstract
    Paper: Postscript  |  PDF

  21. Protecting Against Unexpected System Calls, with C. M. Linn, M. Rajagopalan, S. Baker, C. Collberg, and J. H. Hartman.
    Proc. Usenix Security '05, August 2005, pp. 239-254.
    Abstract
    Paper: Postscript  |  PDF

  22. Dynamic Path-Based Software Watermarking, with C. Collberg, E. Carter, A. Huntwork, J. Kececioglu, C. Linn, and M. Stepp.
    Proc. SIGPLAN '04 Conference on Programming Language Design and Implementation (PLDI '04), June 2004, pp. 107–118.
    Abstract
    Paper: PDF

  23. Obfuscation of Executable Code to Improve Resistance to Static Disassembly, with Cullen Linn.
    Proc. 10th. ACM Conference on Computer and Communications Security (CCS 2003), Oct. 2003, pp. 290--299.
    Abstract
    Paper: Postscript  |  PDF

Code Compaction

  1. Compressing Dynamic Data Structures in Operating System Kernels, with Haifeng He and Gregory Andrews.
    Proc. Workshop on Optimizations for DSP and Embedded Systems (ODES-7), March 2009.
    Abstract
    Paper: Postscript  |  PDF

  2. The Revenge of the Overlay: Automatic Compaction of OS Kernel Code via On-Demand Code Loading, with Haifeng He and Gregory Andrews.
    Proc. ACM Conference on Embedded Systems Software (EMSOFT), Oct. 2007, pp. 75-83.
    Abstract
    Paper: Postscript  |  PDF

  3. Code Compaction of an Operating System Kernel, with Haifeng He, John Trimble, Somu Perinayagam, and Gregory Andrews.
    Proc. Fifth International Symposium on Code Generation and Optimization (CGO), March 2007, pp. 293--295.
    Abstract
    Paper: Postscript  |  PDF

  4. Profile-Guided Code Compression, with William Evans.
    Proc. SIGPLAN '02 Conference on Programming Language Design and Implementation (PLDI), June 2002, pp. 95-105.
    Abstract
    Paper: Postscript  |  PDF

  5. Combining Global Code and Data Compaction, with Bjorn De Sutter, Bruno De Bus, and Koen De Bosschere.
    Proc. ACM SIGPLAN Workshop on Languages, Compilers, and Tools for Embedded Systems (LCTES'2001), June 2001.
    Abstract
    Paper: Postscript  |  PDF

  6. Compiler Techniques for Code Compaction. with William Evans Robert Muth, and Bjorn De Sutter.
    ACM Transactions on Programming Languages and Systems vol. 22 no. 2, March 2000, pp. 378-415.
    (Preliminary version appeared in Proc. 2nd. Workshop on Compiler Support for Systems Software (WCSSS-99), May 1999.)
    Abstract
    Paper: Postscript  |  PDF  |  Technical report (contains raw data from experiments)

Binary Rewriting, Code Transformation, Code Optimization

  1. Micro-Specialization: A Self-Managed Approach to Improving Query Performance., with Rui Zhang and Richard Snodgrass.
    Proc. 7th International Workshop on Self Managing Database Systems (SMDB2012), April 2012.
    Paper: PDF

  2. Micro-Specialization in DBMSes, with Rui Zhang and Richard Snodgrass.
    Proc. 28th. IEEE International Conference on Data Engineering (ICDE), April 2012.
    Paper: PDF

  3. Micro-Specialization: Dynamic Code Specialization of Database Management Systems, with Rui Zhang and Richard Snodgrass.
    Proc. 2012 International Conference on Code Generation and Optimization (CGO), March 2012.
    Paper: PDF

  4. Binary Rewriting of an Operating System Kernel, with Mohan Rajagopalan, Somu Perinayagam, Haifeng He, and Gregory Andrews.
    Proc. Workshop on Binary Instrumentation and Applications, Oct. 2006.
    Abstract
    Paper: Postscript  |  PDF

  5. Profile-Guided Specialization of an Operating System Kernel, with Somu Perinayagam, Haifeng He, Mohan Rajagopalan, and Gregory Andrews.
    Proc. Workshop on Binary Instrumentation and Applications, Oct. 2006.
    Abstract
    Paper: Postscript  |  PDF

  6. Unpredication, Unscheduling, Unspeculation: Reverse Engineering Itanium Executables , with Noah Snavely and Greg Andrews.
    IEEE Transactions on Software Engineering, vol. 31 no. 2, Feb. 2005, pages 99--115
    Abstract
    Paper: Postscript  |  PDF

  7. Unspeculation, with Noah Snavely and Greg Andrews.
    Proc. 18th. IEEE International Conference on Automated Software Engineering (ASE 2003), Oct. 2003, pp. 205-214.
    Abstract
    Paper: Postscript  |  PDF

  8. Cassyopia: Compiler Assisted System Optimization , with Mohan Rajagopalan, Matti Hiltunen, and Richard Schlichting.
    Proc. 9th Usenix Workshop on Hot Topics in Operating Systems (HotOS IX), May 2003.
    Abstract
    Paper: Postscript  |  PDF

  9. Predicate Analysis and If-Conversion in an Itanium Link-Time Optimizer, with Noah Snavely and Gregory Andrews.
    Proc. Workshop on Explicitly Parallel Instruction Computing (EPIC) Architectures and Compiler Techniques (EPIC-2), Nov. 2002.
    Abstract
    Paper: Postscript  |  PDF

  10. System Call Clustering: A Profile-Directed Optimization Technique, with Mohan Rajagopalan, Matti Hiltunen, and Richard Schlichting.
    Manuscript, May 2002.
    Abstract
    Paper: Postscript  |  PDF

  11. Profile-Directed Optimization of Event-Based Programs, with Mohan Rajagopalan, Matti Hiltunen, and Richard Schlichting.
    Proc. SIGPLAN '02 Conference on Programming Language Design and Implementation (PLDI), June 2002, pp. 106-116.
    Abstract
    Paper: Postscript  |  PDF

  12. Disassembly of Executable Code Revisited , with Benjamin Schwarz and Gregory Andrews.
    Proc. IEEE Working Conference on Reverse Engineering, Oct. 2002, pp. 45-54.
    Abstract
    Paper: Postscript  |  PDF

  13. PLTO: A Link-Time Optimizer for the Intel IA-32 Architecture, with Benjamin Schwarz, Gregory Andrews, and Matthew Legendre.
    Proc. 2001 Workshop on Binary Rewriting (WBT-2001), Sept. 2001.
    Abstract
    Paper: Postscript  |  PDF

  14. Software Power Optimization via Post-Link-Time Binary Rewriting, with Robert Muth and Scott Watterson.
    Draft, Feb. 2001.
    Abstract
    Paper: Postscript  |  PDF

  15. Load Redundancy Elimination on Executable Code, with Manel Fernández and Roger Espasa.
    Concurrency and Computation: Practice and Experience, vol. 15 no. 10, Aug. 2003, pp. 979--997.
    (Preliminary version appeared in Proc. European Conference on Parallel Computing (Euro-Par 2001), Aug. 2001.)
    Abstract
    Paper: Postscript  |  PDF

  16. Goal-Directed Value Profiling, with Scott Watterson.
    Proc. Compiler Construction 2001 (CC 2001), April 2001.
    (A preliminary version appeared in Proc. 3rd ACM Workshop on Feedback-Directed and Dynamic Optimization (FDDO-3), December 2000.)
    Abstract
    Paper: Postscript  |  PDF

  17. alto: A Link-Time Optimizer for the Compaq Alpha, with Robert Muth, Scott Watterson, and Koen De Bosschere.
    Software - Practice and Experience 31:67-101, Jan. 2001.
    (Also available as Technical Report 98-14, Dec. 1998.)
    Abstract
    Paper: Postscript  |  PDF

  18. Code Specialization based on Value Profiles. with Robert Muth and Scott Watterson.
    Proc. 7th. International Static Analysis Symposium (SAS 2000), June 2000. Springer LNCS vol. 1824, pp. 340-359.
    Abstract
    Paper: Postscript  |  PDF

  19. Link-time Improvement of Scheme Programs. with Robert Muth and Scott Watterson.
    Proc. 8th International Conference on Compiler Construction (CC'99), March 1999, pp. 76-90.
    Abstract
    Paper: Postscript  |  PDF

  20. Return Value Placement and Tail Call Optimization in High Level Languages, with Peter Bigot.
    Journal of Logic Programming, vol. 38 no. 1, Jan. 1999, pp. 1-29.
    (Preliminary version appeared in Proc. 11th International Conference on Logic Programming, June 1994.)
    Abstract
    Paper: Postscript  |  PDF

  21. Call Forwarding: A Simple Interprocedural Optimization Technique for Dynamically Typed Languages, with K. De Bosschere, D. Gudeman, and S. Kannan.
    Proc. 1994 ACM Symposium on Principles of Programming Languages, pp. 409-420.
    Abstract
    Paper: Postscript  |  PDF

Program Analysis

  1. Control Dependencies in Interpretive Systems, with Babak Yadegari.
    Proc. 17th International Conference on Runtime Verification (RV 2017), Sept. 2017.
    Abstract
    Paper: PDF
  2. Unveiling metamorphism by abstract interpretation of code properties. with Mila Dalla Preda and Roberto Giacobazzi.
    Theoretical Computer Science, vol. 577, 27 April 2015, pp. 74–97.
    Abstract
    Paper: PDF

  3. Stack Analysis of x86 Executables, with C. Linn, G. R. Andrews, and B. Schwarz.
    Manuscript, April 2004.
    Abstract
    Paper: Postscript  |  PDF

  4. Predicate Analysis and If-Conversion in an Itanium Link-Time Optimizer, with Noah Snavely and Gregory Andrews.
    Proc. Workshop on Explicitly Parallel Instruction Computing (EPIC) Architectures and Compiler Techniques (EPIC-2), Nov. 2002.
    Abstract
    Paper: Postscript  |  PDF

  5. On the Complexity of Flow-Sensitive Dataflow Analyses. with Robert Muth.
    Proc. 27th ACM Symposium on Principles of Programming Languages (POPL '00), January 2000, pp. 67-80.
    Abstract
    Paper: Postscript  |  PDF

  6. Profile-Guided Context-Sensitive Program Analysis.
    Draft, Oct. 1998.
    Abstract
    Paper: Postscript  |  PDF

  7. Alias Analysis of Executable Code, with Robert Muth and Matthew Weippert.
    Proc. 1998 ACM Symposium on Principles of Programming Languages (POPL-98), Jan. 1998, pp. 12-24.
    Abstract
    Paper: Postscript  |  PDF

  8. Inter-procedural Control Flow Analysis of First Order Programs with Tail Call Optimization, with Todd Proebsting.
    ACM Transactions on Programming Languages and Systems, vol. 19 no. 4, July 1997.
    Abstract
    Paper: Postscript  |  PDF

  9. On the Complexity of Function Pointer May-Alias Analysis, with Robert Muth.
    Proc. Seventh International Joint Conference on Theory and Practice of Sofware Development (TAPSOFT), April 1997, pp. 381-392. Springer LNCS vol. 1214.
    Abstract
    Paper: Postscript  |  PDF

  10. Abstract Interpretation and Low Level Code Optimization
    Invited paper, Proc. 1995 ACM Symposium on Partial Evaluation and Semantics-Based Program Manipulation.
    Abstract
    Paper: Postscript  |  PDF

  11. On the Complexity of Dataflow Analysis of Logic Programs.
    ACM Transactions on Programming Languages and Systems vol. 17 no. 2, March 1995, pp. 331-365.
    Abstract
    Paper: Postscript  |  PDF

Computer Science Education

  1. Increasing Undergraduate Involvement in Computer Science Research, with C. Collberg, S. Kobourov, and S. Westbrook.
    Proc. Eighth IFIP World Conference on Computers in Education (WCCE 2005), July 2005.
    Abstract

  2. Writing Efficient Programs: Performance Issues in an Undergraduate CS Curriculum .
    Proc. 35th. ACM Technical Symposium on Computer Science Education (SIGCSE-2004), March 2004, pp. 275--279.
    Abstract
    Paper: Postscript  |  PDF

  3. Making Compiler Design Relevant for Students who will (Most Likely) Never Design a Compiler .
    Proc. 33rd ACM Technical Symposium on Computer Science Education (SIGCSE-2002), Feb. 2002, pp. 341-345.
    Abstract
    Paper: Postscript  |  PDF

Logic Programming

  1. Constraint-Based Termination Analysis for Cyclic Active Database Rules. with Timothy Hickey.
    Proc. DOOD'2000: 6th. International Conference on Rules and Objects in Databases, July 2000, pp. 1121-1136. Springer LNAI vol. 1861.
    Abstract
    Paper: Postscript  |  PDF

  2. Return Value Placement and Tail Call Optimization in High Level Languages, with Peter Bigot.
    Journal of Logic Programming, vol. 38 no. 1, Jan. 1999, pp. 1-29.
    (Preliminary version appeared in Proc. 11th International Conference on Logic Programming, June 1994.)
    Abstract
    Paper: Postscript  |  PDF

  3. Lower Bound Cost Estimation for Logic Programs, with Pedro López-García, Manuel Hermenegildo, and Nai-Wei Lin.
    Proc. 1997 International Symposium on Logic Programming, October 1997.
    Abstract
    Paper: Postscript  |  PDF

  4. Non-Failure Analysis for Logic Programs, with Pedro López-García and Manuel Hermenegildo.
    Proc. 1997 International Conference on Logic Programming, July 1997, pp. 48-62.
    Abstract
    Paper: Postscript  |  PDF

  5. A Practical Approach to Structure Reuse of Arrays in Single Assignment Languages, with Andreas Kågedal.
    Proc. 1997 International Conference on Logic Programming, July 1997, pp. 18-32.
    Abstract
    Paper: Postscript  |  PDF

  6. A Simple Approach to Supporting Untagged Objects in Dynamically Typed Languages, with Peter Bigot.
    Journal of Logic Programming, vol. 32 no. 1, July 1997, pp. 25-47.
    (Preliminary version appeared in Proc. 1995 International Symposium on Logic Programming.)
    Abstract
    Paper: Postscript  |  PDF

  7. Detection and Optimization of Suspension-Free Logic Programs, with David Gudeman and Peter Bigot.
    Journal of Logic Programming (Special Issue on High Performance Implementations), vol. 29 nos. 1-3, Nov. 1996, pp. 171-194.
    Abstract
    Paper: Postscript  |  PDF

  8. A Methodology for Granularity Based Control of Parallelism in Logic Programs, with Pedro López-García and Manuel Hermenegildo.
    Journal of Symbolic Computation 22, 715-734, 1996.
    (Preliminary version appeared in Proc. International Symposium on Parallel Symbolic Computation (PASCO), Sept. 1994.)
    Abstract
    Paper: Postscript  |  PDF

  9. Generalized Semantics and Abstract Interpretation for Constraint Logic Programs, with Roberto Giacobazzi and Giorgio Levi.
    Journal of Logic Programming vol. 25 no. 3, Dec. 1995, pp. 191-247.
    (Preliminary version appeared in Proc. International Conference on Fifth Generation Computer Systems (FGCS), Tokyo, June 1992.)
    Abstract
    Paper: Postscript  |  PDF

  10. On the Complexity of Dataflow Analysis of Logic Programs.
    ACM Transactions on Programming Languages and Systems vol. 17 no. 2, March 1995, pp. 331-365.
    Abstract
    Paper: Postscript  |  PDF

  11. A Simple Program Transformation for Parallelism, with Mudita Jain.
    Proc. 1994 International Symposium on Logic Programming, Nov. 1994, pp. 305-319.
    Abstract
    Paper: Postscript  |  PDF

  12. Estimating the Computational Cost of Logic Programs , with Pedro López-García, Manuel Hermenegildo, and Nai-Wei Lin.
    Invited paper, Proc. International Static Analysis Symposium, Sept. 1994. Springer-Verlag LNCS vol. 864, pp. 255-265.
    Abstract
    Paper: Postscript  |  PDF

  13. Generalized Horn Clause Programs, with Raghu Ramakrishnan.
    Draft, Nov. 1994.
    (Preliminary version appeared as an invited paper at the Sixth Italian Logic Programming Conference, 1991.)
    Abstract
    Paper: Postscript  |  PDF

  14. Abstract Interpretation of Logic Programs Using Magic Transformations, with Raghu Ramakrishnan.
    Journal of Logic Programming vol. 18 no. 2, Feb. 1994, pp. 149-176.
    Abstract
    Paper: Postscript  |  PDF

  15. QD-Janus: A Sequential Implementation of Janus in Prolog.
    Software Practice and Experience vol. 23 no. 12, Dec. 1993, pp. 1337-1360.
    Abstract
    Paper: Postscript  |  PDF

  16. Cost Analysis of Logic Programs, with Nai-Wei Lin.
    ACM Transactions on Programming Languages and Systems vol. 15 no. 5, Nov. 1993, pp. 826-875.
    Abstract
    Paper: Postscript  |  PDF

  17. On Copy Avoidance in Single Assignment Languages .
    Proc. Tenth International Conference on Logic Programming , June 1993, pp. 393-407.
    Abstract
    aper: Postscript  |  PDF

  18. Joining Abstract and Concrete Computations in Constraint Logic Programming, with Roberto Giacobazzi and Giorgio Levi.
    Invited Paper, Proc. Third International Conference on Algebraic Methodology and Software Technology, June 1993, pp. 111--130. Springer-Verlag.

  19. Compositional Analysis of Modular Logic Programs , with Michael Codish and Roberto Giacobazzi.
    Proc. 1993 ACM Symposium on Principles of Programming Languages (POPL '93), Jan. 1993, pp. 451-464.
    Abstract
    Paper: Postscript  |  PDF

  20. Understanding Finiteness Analysis using Abstract Interpretation, with Peter Bigot and Kim Marriott.
    Proc. Joint International Conference and Symposium on Logic Programming, Nov. 1992, pp. 735-749.
    Abstract
    Paper: Postscript  |  PDF

  21. Weighted Decision Trees , with Sampath Kannan and Mukul Paithane.
    Proc. Joint International Conference and Symposium on Logic Programming, Nov. 1992, pp. 654-668.
    Abstract
    Paper: Postscript  |  PDF

  22. jc: An Efficient and Portable Sequential Implementation of Janus , with David Gudeman and Koen De Bosschere.
    Proc. Joint International Conference and Symposium on Logic Programming, Nov. 1992, pp. 399-413.
    Abstract
    Paper: Postscript  |  PDF

  23. Efficient Dataflow Analysis of Logic Programs.
    Journal of the ACM vol. 39 no. 4, Oct. 1992, pp. 949-984.
    Abstract
    Paper: Postscript  |  PDF

  24. Global Flow Analysis as a Practical Compilation Tool, with Manuel Hermenegildo and Richard Warren.
    Journal of Logic Programming vol. 13 no. 4, Aug. 1992, pp. 349-366.
    (Preliminary version appeared in Proc. Fifth International Conference on Logic Programming, Seattle, Aug. 1988.)
    Abstract
    Paper: Postscript  |  PDF

  25. Compiler Optimizations for Low-level Redundancy Elimination: An Application of Meta-level Prolog Primitives.
    Proc. Third Workshop on Meta-Programming in Logic (META-92), June 1992.
    Abstract
    aper: Postscript  |  PDF

  26. A Simple Code Improvement Scheme for Prolog.
    Journal of Logic Programming vol. 13 no. 1, May 1992, pp. 57-88.
    (Preliminary version appeared in Proc. Sixth International Conference on Logic Programming, Lisbon, Portugal, June 1989.)
    Abstract
    aper: Postscript  |  PDF

  27. Task Granularity Analysis for Logic Programs , with Nai-Wei Lin and Manuel Hermenegildo.
    Proc. SIGPLAN '90 Conference on Programming Language Design and Implementation (PLDI), June 1990, pp. 174-188.

  28. Towards Banishing the Cut from Prolog, with David S. Warren.
    IEEE Transactions on Software Engineering, vol. 16 no. 3, March 1990, pp. 335-349.
    (Preliminary version appeared in Proc. 1986 International Conference on Computer Languages, Miami Beach, Florida, Oct. 1986.)
    Abstract |
    Paper: Postscript  bsp; PDF

  29. Flow Analysis of Dynamic Logic Programs.
    Journal of Logic Programming, vol. 7 no. 2, Sept. 1989, pp. 149-176.
    (Preliminary version appeared in Proc. Fourth IEEE Symposium on Logic Programming, San Francisco, CA, Sept. 1987.)
    Abstract
    Paper: Postscript    PDF

  30. Static Inference of Modes and Data Dependencies in Logic Programs.
    ACM Transactions on Programming Languages and Systems, vol. 11 no. 3, July 1989, pp. 419-450.
    Abstract
    Paper: Postscript  |  PDF

  31. Functional Computations in Logic Programs, with David S. Warren.
    ACM Transactions on Programming Languages and Systems, vol. 11 no. 3, July 1989, pp. 451-481.
    (Preliminary version appeared in Proc. Third International Conference on Logic Programming, London, July 1986.)
    Abstract
    Paper: Postscript  |  PDF

  32. Profiling Prolog Programs.
    Software Practice and Experience vol. 18 no. 9, Sept. 1988, pp. 821-839.
    Abstract
    Paper: Postscript  |  PDF

  33. Automatic Mode Inference for Logic Programs, with David S. Warren.
    Journal of Logic Programming, vol. 5 no. 3, Sept. 1988, pp. 207-229.
    (Preliminary version appeared in Proc. Third IEEE Symposium on Logic Programming, Salt Lake City, Utah, Sept. 1986.)
    Abstract
    Paper: Postscript  |  PDF

  34. Unfold/Fold Transformations and Loop Optimization of Logic Programs.
    Proc. SIGPLAN '88 Conference on Programming Language Design and Implementation (PLDI), June 1988, pp. 297-307.
    Abstract
    Paper: Postscript  |  PDF

  35. Register Allocation in a Prolog Machine.
    Proc. Third IEEE Symposium on Logic Programming, Salt Lake City, Utah, Sept. 1986.
    Abstract
    Paper: Postscript  |  PDF

  36. Denotational and Operational Semantics for Prolog, with Prateek Mishra.
    Journal of Logic Programming vol. 5, no. 1, March 1988, pp. 61-91.
    (Preliminary version appeared in Proc. IFIP Conference on Formal Description of Programming Concepts, Denmark, Aug. 1986.)
    Abstract
    Paper: Postscript  |  PDF

  37. Optimizing Almost-Tail-Recursive Prolog Programs.
    Proceedings of the IFIP International Conference on Functional Programming Languages and Computer Architecture, Nancy, France, Sept. 1985. Springer-Verlag LNCS v. 201.

  38. Executing Distributed Prolog Programs on a Broadcast Network, with David S. Warren, Mustaque Ahamad and L. V. Kale.
    Proc. 1984 International Symposium on Logic Programming, Atlantic City, Feb. 1984.

  39. Lecture notes from a course on Analysis and Optimization of Logic Programs

Miscellaneous

  1. Visualizing the Behavior of Dynamically Modifiable Code, with B. Dux, A. Iyer, D. Forrester, and S. Kobourov.
    Proc. 13th. IEEE International Workshop on Program Comprehension, May 2005.
    Abstract
    Paper: Postscript  |  PDF

  2. Checking Program Profiles , with Patrick Moseley and Gregory Andrews.
    Proc. Third IEEE International Workshop on Source Code Analysis and Manipulation (SCAM 2003), Sept. 2003, pp. 193-202.
    Abstract
    Paper: Postscript  |  PDF

  3. Resource-Bounded Partial Evaluation. Draft, January 1998.
    (Preliminary version appeared in Proc. 1997 ACM Symposium on Partial Evaluation and Semantics-Based Program Manipulation (PEPM '97), July 1997, pp. 179-192.)
    Abstract
    Paper: Postscript  |  PDF

  4. APF: A Modular Language for Fast Packet Classification, with H. D. Lambright.
    Draft, Aug. 1996.
    Abstract
    Paper: Postscript  |  PDF

  5. Abstract Interpretation and Low Level Code Optimization
    Invited paper, Proc. 1995 ACM Symposium on Partial Evaluation and Semantics-Based Program Manipulation.
    Abstract
    Paper: Postscript  |  PDF

  6. Reasoning about Naming Systems, with C. Mic Bowman and Larry Peterson.
    ACM Transactions on Programming Languages and Systems vol. 15 no. 5, Nov. 1993, pp. 795-825.
    Abstract
    Paper: Postscript  |  PDF

  7. Proving Protocol Robustness the CCS Way, with Scott Smolka and Ariel J. Frank.
    in Protocol Specification, Testing and Verification IV, eds. Y. Yemini, R. Strom and S. Yemini, Elsevier-North Holland, 1985. pp. 93-108

  8. On the Existence and Construction of Robust Protocols for Unreliable Communication Channels, with Ariel J. Frank and Scott Smolka.
    Proc. Fourth Conference on Foundations of Software Technology and Theoretical Computer Science, Bangalore, India, Dec. 1984. Springer-Verlag LNCS, v. 181.