Reasoning about imperative and higher-order programs

Contextual equivalence, namely the property that two expressions are indistinguishable inside any program context, is a fundamental property of program expressions. Discovering methods that enable formal reasoning about contextual equivalence is hard and highly dependent on the features of the progr...

Full description

Bibliographic Details
Published:
Online Access:http://hdl.handle.net/2047/d10016545
id ndltd-NEU--neu-925
record_format oai_dc
spelling ndltd-NEU--neu-9252021-05-26T05:10:56ZReasoning about imperative and higher-order programsContextual equivalence, namely the property that two expressions are indistinguishable inside any program context, is a fundamental property of program expressions. Discovering methods that enable formal reasoning about contextual equivalence is hard and highly dependent on the features of the programming language. In this dissertation we present a technique for systematically deriving reasoning methods for contextual equivalence, which are sound and complete in a variety of languages, but also useful for proving many equivalences. The advantages of the derived reasoning methods are that they successfully deal with imperative as well as higher-order features. We demonstrate our technique by deriving sound and complete methods for proving contextual equivalence in the call-by-value lambda calculus, a lambda calculus with higher-order store, the nu-calculus, an imperative object calculus, and an imperative core of Java.http://hdl.handle.net/2047/d10016545
collection NDLTD
sources NDLTD
description Contextual equivalence, namely the property that two expressions are indistinguishable inside any program context, is a fundamental property of program expressions. Discovering methods that enable formal reasoning about contextual equivalence is hard and highly dependent on the features of the programming language. In this dissertation we present a technique for systematically deriving reasoning methods for contextual equivalence, which are sound and complete in a variety of languages, but also useful for proving many equivalences. The advantages of the derived reasoning methods are that they successfully deal with imperative as well as higher-order features. We demonstrate our technique by deriving sound and complete methods for proving contextual equivalence in the call-by-value lambda calculus, a lambda calculus with higher-order store, the nu-calculus, an imperative object calculus, and an imperative core of Java.
title Reasoning about imperative and higher-order programs
spellingShingle Reasoning about imperative and higher-order programs
title_short Reasoning about imperative and higher-order programs
title_full Reasoning about imperative and higher-order programs
title_fullStr Reasoning about imperative and higher-order programs
title_full_unstemmed Reasoning about imperative and higher-order programs
title_sort reasoning about imperative and higher-order programs
publishDate
url http://hdl.handle.net/2047/d10016545
_version_ 1719406471028932608