Claudio Ochoa | Intel Corporation (original) (raw)
Papers by Claudio Ochoa
Within the imperative programming paradigm, program slic- ing has been widely used as a basis to ... more Within the imperative programming paradigm, program slic- ing has been widely used as a basis to solve many software engineering problems, like debugging, testing, differencing, specialization, and merg- ing. In this work, we present a lightweight approach to program spe- cialization of lazy functional logic programs which is based on dynamic slicing. The kind of specialization performed by our approach
IEEE Latin America Transactions, 2005
Lecture Notes in Computer Science, 2004
Recent advances in Computerized Numeric Control (CNC) have allowed the manufacturing of products ... more Recent advances in Computerized Numeric Control (CNC) have allowed the manufacturing of products with high quality standards. Since CNC programs consist of a series of assembler-like instructions, several high-level languages (e.g., AutoLISP, APL, OMAC) have been proposed to raise the programming abstraction level. Unfortunately, the lack of a clean semantics prevents the development of formal tools for the analysis and manipulation of programs. In this work, we propose the use of Haskell for CNC programming. The declarative nature of Haskell provides an excellent basis to develop program analysis and manipulation tools and, most importantly, to formally prove their correctness.
Lecture Notes in Computer Science, 2006
Program slicing is a well-known technique that has been widely used for debugging in the context ... more Program slicing is a well-known technique that has been widely used for debugging in the context of imperative programming.
Proceedings of the 2005 ACM SIGPLAN workshop on Curry and functional logic programming - WCFLP '05, 2005
Program slicing is a well-known technique that extracts from a program those statements which are... more Program slicing is a well-known technique that extracts from a program those statements which are relevant to a particular criterion. While static slicing does not consider any input data, dynamic slices are computed from a particular program execution. Thus, dynamic slicers are usually easier to design and implement.
Higher-Order and Symbolic Computation, 2008
Tracing computations is a widely used methodology for program debugging. Lazy languages, however,... more Tracing computations is a widely used methodology for program debugging. Lazy languages, however, pose new demands on tracing techniques because following the actual trace of a computation is generally useless. Typically, tracers for lazy languages rely on the construction of a redex trail, a graph that stores the reductions performed in a computation. While tracing provides a significant help for locating bugs, the task still remains complex. A well-known debugging technique for imperative programs is based on dynamic slicing, a method for finding the program statements that influence the computation of a value for a specific program input.
Within the imperative programming paradigm, program slicing has been widely used as a basis to so... more Within the imperative programming paradigm, program slicing has been widely used as a basis to solve many software engineering problems, like program understanding, debugging, testing, differencing, specialization, and merging. In this work, we present a lightweight approach to program slicing in lazy functional logic languages and discuss its potential applications in the context of pervasive systems where resources are limited. In particular, we show how program slicing can be used to achieve a form of program specialization that cannot be achieved with other, related techniques like partial evaluation.
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation - PEPM '04, 2004
Tracing computations is a widely used methodology for program debugging. Lazy languages, in parti... more Tracing computations is a widely used methodology for program debugging. Lazy languages, in particular, pose new demands on tracing techniques since following the actual trace of a computation is generally useless. Typically, they rely on the construction of a redex trail, a graph that describes the reductions of a computation and its relationships. While tracing provides a significant help for locating bugs, the task still remains complex. A well-known debugging technique for imperative programs is based on dynamic slicing, a method to find the program statements that influence the computation of a value for a specific program input.
Within the imperative programming paradigm, program slic- ing has been widely used as a basis to ... more Within the imperative programming paradigm, program slic- ing has been widely used as a basis to solve many software engineering problems, like debugging, testing, differencing, specialization, and merg- ing. In this work, we present a lightweight approach to program spe- cialization of lazy functional logic programs which is based on dynamic slicing. The kind of specialization performed by our approach
IEEE Latin America Transactions, 2005
Lecture Notes in Computer Science, 2004
Recent advances in Computerized Numeric Control (CNC) have allowed the manufacturing of products ... more Recent advances in Computerized Numeric Control (CNC) have allowed the manufacturing of products with high quality standards. Since CNC programs consist of a series of assembler-like instructions, several high-level languages (e.g., AutoLISP, APL, OMAC) have been proposed to raise the programming abstraction level. Unfortunately, the lack of a clean semantics prevents the development of formal tools for the analysis and manipulation of programs. In this work, we propose the use of Haskell for CNC programming. The declarative nature of Haskell provides an excellent basis to develop program analysis and manipulation tools and, most importantly, to formally prove their correctness.
Lecture Notes in Computer Science, 2006
Program slicing is a well-known technique that has been widely used for debugging in the context ... more Program slicing is a well-known technique that has been widely used for debugging in the context of imperative programming.
Proceedings of the 2005 ACM SIGPLAN workshop on Curry and functional logic programming - WCFLP '05, 2005
Program slicing is a well-known technique that extracts from a program those statements which are... more Program slicing is a well-known technique that extracts from a program those statements which are relevant to a particular criterion. While static slicing does not consider any input data, dynamic slices are computed from a particular program execution. Thus, dynamic slicers are usually easier to design and implement.
Higher-Order and Symbolic Computation, 2008
Tracing computations is a widely used methodology for program debugging. Lazy languages, however,... more Tracing computations is a widely used methodology for program debugging. Lazy languages, however, pose new demands on tracing techniques because following the actual trace of a computation is generally useless. Typically, tracers for lazy languages rely on the construction of a redex trail, a graph that stores the reductions performed in a computation. While tracing provides a significant help for locating bugs, the task still remains complex. A well-known debugging technique for imperative programs is based on dynamic slicing, a method for finding the program statements that influence the computation of a value for a specific program input.
Within the imperative programming paradigm, program slicing has been widely used as a basis to so... more Within the imperative programming paradigm, program slicing has been widely used as a basis to solve many software engineering problems, like program understanding, debugging, testing, differencing, specialization, and merging. In this work, we present a lightweight approach to program slicing in lazy functional logic languages and discuss its potential applications in the context of pervasive systems where resources are limited. In particular, we show how program slicing can be used to achieve a form of program specialization that cannot be achieved with other, related techniques like partial evaluation.
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation - PEPM '04, 2004
Tracing computations is a widely used methodology for program debugging. Lazy languages, in parti... more Tracing computations is a widely used methodology for program debugging. Lazy languages, in particular, pose new demands on tracing techniques since following the actual trace of a computation is generally useless. Typically, they rely on the construction of a redex trail, a graph that describes the reductions of a computation and its relationships. While tracing provides a significant help for locating bugs, the task still remains complex. A well-known debugging technique for imperative programs is based on dynamic slicing, a method to find the program statements that influence the computation of a value for a specific program input.