Chucky Ellison - Profile on Academia.edu (original) (raw)

Papers by Chucky Ellison

Research paper thumbnail of A Rewriting Logic Approach to Type Inference: Technical Report

Meseguer and Rosu [MR04,MR07] proposed rewriting logic semantics (RLS) as a programing language d... more Meseguer and Rosu [MR04,MR07] proposed rewriting logic semantics (RLS) as a programing language definitional framework that unifies operational and algebraic denotational semantics. Once a language is defined as an RLS theory, many generic tools are immediately available for use with no additional cost to the designer. These include a formal inductive theorem proving environment, an efficient interpreter, a state space explorer, and even a model checker. RLS has already been used to define a series of didactic and real languages [MR04, MR07], but its benefits in connection with defining and reasoning about type systems have not been fully investigated yet. This paper shows how the same RLS style employed for giving formal definitions of languages can be used to define type systems. The same term-rewriting mechanism used to execute RLS language definitions can now be used to execute type systems, giving type checkers or type inferencers. Since both the language and its type system ar...

Research paper thumbnail of The k primer (version 3.3)

The k primer (version 3.3)

Research paper thumbnail of The K primer (version 2.5)

The K primer (version 2.5)

Research paper thumbnail of Executing Formal Semantics with the <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi mathvariant="double-struck">K</mi></mrow><annotation encoding="application/x-tex">\mathbb K</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6889em;"></span><span class="mord mathbb">K</span></span></span></span> Tool

Executing Formal Semantics with the mathbbK\mathbb KmathbbK Tool

Lecture Notes in Computer Science, 2012

Research paper thumbnail of The Primer (version 3.3)

Electronic Notes in Theoretical Computer Science, 2014

This paper serves as a brief introduction to the K tool, a system for formally defining programmi... more This paper serves as a brief introduction to the K tool, a system for formally defining programming languages. It is shown how sequential or concurrent languages can be defined in K simply and modularly. These formal definitions automatically yield an interpreter for the language, as well as program analysis tools such as a state-space explorer.

Research paper thumbnail of Making Maude Definitions More Interactive

Lecture Notes in Computer Science, 2012

This paper presents an interface for achieving interactive executions of Maude terms by allowing ... more This paper presents an interface for achieving interactive executions of Maude terms by allowing console and file input/output (I/O) operations. This interface consists of a Maude API for I/O operations, a Java-based server offering I/O capabilities, and a communication protocol between the two implemented using the external objects concept and Maude's TCP sockets. This interface was evaluated as part of the K framework, providing interactive interpreter capabilities for executing and testing programs for multiple language definitions. Java I/O Server SOCKET Maude + I/O Java Maude wrapper Fig. 1. The architecture of the Maude I/O interface

Research paper thumbnail of A Rewriting Logic Approach to Type Inference

Lecture Notes in Computer Science, 2009

Rewriting logic semantics (RLS) was proposed as a programing language definitional framework that... more Rewriting logic semantics (RLS) was proposed as a programing language definitional framework that unifies operational and algebraic denotational semantics; see and the references there. Once a language is defined as an RLS theory, many generic tools are immediately available for use with no additional cost to the designer. These include a formal inductive theorem proving environment, an efficient interpreter, a state space explorer, and even a model checker. RLS has already been used to define a series of didactic and real languages .

Research paper thumbnail of Matching Logic: An Alternative to Hoare/Floyd Logic

Lecture Notes in Computer Science, 2011

This paper introduces matching logic, a novel framework for defining axiomatic semantics for prog... more This paper introduces matching logic, a novel framework for defining axiomatic semantics for programming languages, inspired from operational semantics. Matching logic specifications are particular first-order formulae with constrained algebraic structure, called patterns. Program configurations satisfy patterns iff they match their algebraic structure and satisfy their constraints. Using a simple imperative language (IMP), it is shown that a restricted use of the matching logic proof system is equivalent to IMP's Hoare logic proof system, in that any proof derived using either can be turned into a proof using the other. Extensions to IMP including a heap with dynamic memory allocation and pointer arithmetic are given, requiring no extension of the underlying first-order logic; moreover, heap patterns such as lists, trees, queues, graphs, etc., are given algebraically using fist-order constraints over patterns.

Research paper thumbnail of An executable formal semantics of C with applications

ACM SIGPLAN Notices, 2012

This paper describes an executable formal semantics of C expressed using a formalism based on ter... more This paper describes an executable formal semantics of C expressed using a formalism based on term rewriting. Being executable, the semantics has been thoroughly tested against the GCC torture test suite and successfully passes over 96% of 715 test programs. It is the most complete and thoroughly tested formal definition of C to date.

Research paper thumbnail of A rewriting logic approach to defining type systems

We show how programming language semantics and definitions of their corresponding type systems ca... more We show how programming language semantics and definitions of their corresponding type systems can both be written in a single framework amenable to proofs of soundness. The framework is based on full rewriting logic (not to be confused with context reduction or term rewriting), where rules can match anywhere in a term (or configuration).

Research paper thumbnail of A Formal Semantics of C with Applications: Technical Report

This paper describes an executable formal semantics of C expressed using a formalism based on ter... more This paper describes an executable formal semantics of C expressed using a formalism based on term rewriting. Being executable, the semantics has been thoroughly tested against the GCC torture test suite and successfully passes over 96% of 715 test programs. It is the most complete and thoroughly tested formal definition of C to date.

Research paper thumbnail of On compiling rewriting logic language definitions into competitive interpreters

This paper describes a completely automated method for generating efficient and competitive inter... more This paper describes a completely automated method for generating efficient and competitive interpreters from formal semantics expressed in Rewriting Logic. The semantics are compiled into OCaml code, which then acts as the interpreter for the language being defined. This automatic translation is tested on the semantics of an imperative as well as a functional language, and these generated interpreters are then benchmarked across a number of programs. In all cases the compiled interpreter is faster than directly executing the definition in a Rewriting system with improvements of several orders of magnitude.

Research paper thumbnail of Defining the undefinedness of C

Defining the undefinedness of C

Research paper thumbnail of From rewriting logic executable semantics to matching logic program verification

Rewriting logic semantics (RLS) is a definitional framework in which a programming language is de... more Rewriting logic semantics (RLS) is a definitional framework in which a programming language is defined as a rewrite theory: the algebraic signature defines the program configurations, the equations define structural identities on configurations, and the rewrite rules define the irreversible computational steps. RLS language definitions are efficiently executable using conventional rewrite engines, yielding interpreters for the defined languages for free.

Research paper thumbnail of Executing Formal Semantics with the K Tool

Executing Formal Semantics with the K Tool

Research paper thumbnail of Test-case reduction for C compiler bugs

Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation - PLDI '12, 2012

To report a compiler bug, one must often find a small test case that triggers the bug. The existi... more To report a compiler bug, one must often find a small test case that triggers the bug. The existing approach to automated test-case reduction, delta debugging, works by removing substrings of the original input; the result is a concatenation of substrings that delta cannot remove. We have found this approach less than ideal for reducing C programs because it typically yields test cases that are too large or even invalid (relying on undefined behavior). To obtain small and valid test cases consistently, we designed and implemented three new, domain-specific test-case reducers. The best of these is based on a novel framework in which a generic fixpoint computation invokes modular transformations that perform reduction operations. This reducer produces outputs that are, on average, more than 25 times smaller than those produced by our other reducers or by the existing reducer that is most commonly used by compiler developers. We conclude that effective program reduction requires more than straightforward delta debugging.

Research paper thumbnail of A Rewriting Logic Approach to Type Inference: Technical Report

Meseguer and Rosu [MR04,MR07] proposed rewriting logic semantics (RLS) as a programing language d... more Meseguer and Rosu [MR04,MR07] proposed rewriting logic semantics (RLS) as a programing language definitional framework that unifies operational and algebraic denotational semantics. Once a language is defined as an RLS theory, many generic tools are immediately available for use with no additional cost to the designer. These include a formal inductive theorem proving environment, an efficient interpreter, a state space explorer, and even a model checker. RLS has already been used to define a series of didactic and real languages [MR04, MR07], but its benefits in connection with defining and reasoning about type systems have not been fully investigated yet. This paper shows how the same RLS style employed for giving formal definitions of languages can be used to define type systems. The same term-rewriting mechanism used to execute RLS language definitions can now be used to execute type systems, giving type checkers or type inferencers. Since both the language and its type system ar...

Research paper thumbnail of The k primer (version 3.3)

The k primer (version 3.3)

Research paper thumbnail of The K primer (version 2.5)

The K primer (version 2.5)

Research paper thumbnail of Executing Formal Semantics with the <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi mathvariant="double-struck">K</mi></mrow><annotation encoding="application/x-tex">\mathbb K</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6889em;"></span><span class="mord mathbb">K</span></span></span></span> Tool

Executing Formal Semantics with the mathbbK\mathbb KmathbbK Tool

Lecture Notes in Computer Science, 2012

Research paper thumbnail of The Primer (version 3.3)

Electronic Notes in Theoretical Computer Science, 2014

This paper serves as a brief introduction to the K tool, a system for formally defining programmi... more This paper serves as a brief introduction to the K tool, a system for formally defining programming languages. It is shown how sequential or concurrent languages can be defined in K simply and modularly. These formal definitions automatically yield an interpreter for the language, as well as program analysis tools such as a state-space explorer.

Research paper thumbnail of Making Maude Definitions More Interactive

Lecture Notes in Computer Science, 2012

This paper presents an interface for achieving interactive executions of Maude terms by allowing ... more This paper presents an interface for achieving interactive executions of Maude terms by allowing console and file input/output (I/O) operations. This interface consists of a Maude API for I/O operations, a Java-based server offering I/O capabilities, and a communication protocol between the two implemented using the external objects concept and Maude's TCP sockets. This interface was evaluated as part of the K framework, providing interactive interpreter capabilities for executing and testing programs for multiple language definitions. Java I/O Server SOCKET Maude + I/O Java Maude wrapper Fig. 1. The architecture of the Maude I/O interface

Research paper thumbnail of A Rewriting Logic Approach to Type Inference

Lecture Notes in Computer Science, 2009

Rewriting logic semantics (RLS) was proposed as a programing language definitional framework that... more Rewriting logic semantics (RLS) was proposed as a programing language definitional framework that unifies operational and algebraic denotational semantics; see and the references there. Once a language is defined as an RLS theory, many generic tools are immediately available for use with no additional cost to the designer. These include a formal inductive theorem proving environment, an efficient interpreter, a state space explorer, and even a model checker. RLS has already been used to define a series of didactic and real languages .

Research paper thumbnail of Matching Logic: An Alternative to Hoare/Floyd Logic

Lecture Notes in Computer Science, 2011

This paper introduces matching logic, a novel framework for defining axiomatic semantics for prog... more This paper introduces matching logic, a novel framework for defining axiomatic semantics for programming languages, inspired from operational semantics. Matching logic specifications are particular first-order formulae with constrained algebraic structure, called patterns. Program configurations satisfy patterns iff they match their algebraic structure and satisfy their constraints. Using a simple imperative language (IMP), it is shown that a restricted use of the matching logic proof system is equivalent to IMP's Hoare logic proof system, in that any proof derived using either can be turned into a proof using the other. Extensions to IMP including a heap with dynamic memory allocation and pointer arithmetic are given, requiring no extension of the underlying first-order logic; moreover, heap patterns such as lists, trees, queues, graphs, etc., are given algebraically using fist-order constraints over patterns.

Research paper thumbnail of An executable formal semantics of C with applications

ACM SIGPLAN Notices, 2012

This paper describes an executable formal semantics of C expressed using a formalism based on ter... more This paper describes an executable formal semantics of C expressed using a formalism based on term rewriting. Being executable, the semantics has been thoroughly tested against the GCC torture test suite and successfully passes over 96% of 715 test programs. It is the most complete and thoroughly tested formal definition of C to date.

Research paper thumbnail of A rewriting logic approach to defining type systems

We show how programming language semantics and definitions of their corresponding type systems ca... more We show how programming language semantics and definitions of their corresponding type systems can both be written in a single framework amenable to proofs of soundness. The framework is based on full rewriting logic (not to be confused with context reduction or term rewriting), where rules can match anywhere in a term (or configuration).

Research paper thumbnail of A Formal Semantics of C with Applications: Technical Report

This paper describes an executable formal semantics of C expressed using a formalism based on ter... more This paper describes an executable formal semantics of C expressed using a formalism based on term rewriting. Being executable, the semantics has been thoroughly tested against the GCC torture test suite and successfully passes over 96% of 715 test programs. It is the most complete and thoroughly tested formal definition of C to date.

Research paper thumbnail of On compiling rewriting logic language definitions into competitive interpreters

This paper describes a completely automated method for generating efficient and competitive inter... more This paper describes a completely automated method for generating efficient and competitive interpreters from formal semantics expressed in Rewriting Logic. The semantics are compiled into OCaml code, which then acts as the interpreter for the language being defined. This automatic translation is tested on the semantics of an imperative as well as a functional language, and these generated interpreters are then benchmarked across a number of programs. In all cases the compiled interpreter is faster than directly executing the definition in a Rewriting system with improvements of several orders of magnitude.

Research paper thumbnail of Defining the undefinedness of C

Defining the undefinedness of C

Research paper thumbnail of From rewriting logic executable semantics to matching logic program verification

Rewriting logic semantics (RLS) is a definitional framework in which a programming language is de... more Rewriting logic semantics (RLS) is a definitional framework in which a programming language is defined as a rewrite theory: the algebraic signature defines the program configurations, the equations define structural identities on configurations, and the rewrite rules define the irreversible computational steps. RLS language definitions are efficiently executable using conventional rewrite engines, yielding interpreters for the defined languages for free.

Research paper thumbnail of Executing Formal Semantics with the K Tool

Executing Formal Semantics with the K Tool

Research paper thumbnail of Test-case reduction for C compiler bugs

Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation - PLDI '12, 2012

To report a compiler bug, one must often find a small test case that triggers the bug. The existi... more To report a compiler bug, one must often find a small test case that triggers the bug. The existing approach to automated test-case reduction, delta debugging, works by removing substrings of the original input; the result is a concatenation of substrings that delta cannot remove. We have found this approach less than ideal for reducing C programs because it typically yields test cases that are too large or even invalid (relying on undefined behavior). To obtain small and valid test cases consistently, we designed and implemented three new, domain-specific test-case reducers. The best of these is based on a novel framework in which a generic fixpoint computation invokes modular transformations that perform reduction operations. This reducer produces outputs that are, on average, more than 25 times smaller than those produced by our other reducers or by the existing reducer that is most commonly used by compiler developers. We conclude that effective program reduction requires more than straightforward delta debugging.