Environment Analysis of Higher-Order Languages
Any analysis of higher-order languages must grapple with the tri-facetted nature of lambda. In one construct, the fundamental control, environment and data structures of a language meet and intertwine. With the control facet tamed nearly two decades ago, this work brings the environment facet to hee...
Main Author: | |
---|---|
Published: |
Georgia Institute of Technology
2007
|
Subjects: | |
Online Access: | http://hdl.handle.net/1853/16289 |
id |
ndltd-GATECH-oai-smartech.gatech.edu-1853-16289 |
---|---|
record_format |
oai_dc |
spelling |
ndltd-GATECH-oai-smartech.gatech.edu-1853-162892013-01-07T20:20:47ZEnvironment Analysis of Higher-Order LanguagesMight, Matthew BrendonStatic analysisLambda calculusProgramming languagesCompilersData structures (Computer science)Abstract data types (Computer science)Computer programs VerificationAny analysis of higher-order languages must grapple with the tri-facetted nature of lambda. In one construct, the fundamental control, environment and data structures of a language meet and intertwine. With the control facet tamed nearly two decades ago, this work brings the environment facet to heel, defining the environment problem and developing its solution: environment analysis. Environment analysis allows a compiler to reason about the equivalence of environments, i.e., name-to-value mappings, that arise during a program's execution. In this dissertation, two different techniques-abstract counting and abstract frame strings-make this possible. A third technique, abstract garbage collection, makes both of these techniques more precise and, counter to intuition, often faster as well. An array of optimizations and even deeper analyses which depend upon environment analysis provide motivation for this work. In an abstract interpretation, a single abstract entity represents a set of concrete entities. When the entities under scrutiny are bindings-single name-to-value mappings, the atoms of environment-then determining when the equality of two abstract bindings infers the equality of their concrete counterparts is the crux of environment analysis. Abstract counting does this by tracking the size of represented sets, looking for singletons, in order to apply the following principle: If {x} = {y}, then x = y. Abstract frame strings enable environmental reasoning by statically tracking the possible stack change between the births of two environments; when this change is effectively empty, the environments are equivalent. Abstract garbage collection improves precision by intermittently removing unreachable environment structure during abstract interpretation.Georgia Institute of Technology2007-08-16T17:58:14Z2007-08-16T17:58:14Z2007-06-29Dissertationhttp://hdl.handle.net/1853/16289 |
collection |
NDLTD |
sources |
NDLTD |
topic |
Static analysis Lambda calculus Programming languages Compilers Data structures (Computer science) Abstract data types (Computer science) Computer programs Verification |
spellingShingle |
Static analysis Lambda calculus Programming languages Compilers Data structures (Computer science) Abstract data types (Computer science) Computer programs Verification Might, Matthew Brendon Environment Analysis of Higher-Order Languages |
description |
Any analysis of higher-order languages must grapple with the
tri-facetted nature of lambda. In one construct, the fundamental
control, environment and data structures of a language meet and
intertwine. With the control facet tamed nearly two decades ago, this
work brings the environment facet to heel, defining the environment
problem and developing its solution: environment analysis. Environment
analysis allows a compiler to reason about the equivalence of
environments, i.e., name-to-value mappings, that arise during a
program's execution. In this dissertation, two different
techniques-abstract counting and abstract frame strings-make this
possible. A third technique, abstract garbage collection, makes both
of these techniques more precise and, counter to intuition, often
faster as well. An array of optimizations and even deeper analyses
which depend upon environment analysis provide motivation for this
work.
In an abstract interpretation, a single abstract entity represents a
set of concrete entities. When the entities under scrutiny are
bindings-single name-to-value mappings, the atoms of environment-then
determining when the equality of two abstract bindings infers the
equality of their concrete counterparts is the crux of environment
analysis. Abstract counting does this by tracking the size of
represented sets, looking for singletons, in order to apply the
following principle:
If {x} = {y}, then x = y.
Abstract frame strings enable environmental reasoning by statically
tracking the possible stack change between the births of two
environments; when this change is effectively empty, the environments
are equivalent. Abstract garbage collection improves precision by
intermittently removing unreachable environment structure during
abstract interpretation. |
author |
Might, Matthew Brendon |
author_facet |
Might, Matthew Brendon |
author_sort |
Might, Matthew Brendon |
title |
Environment Analysis of Higher-Order Languages |
title_short |
Environment Analysis of Higher-Order Languages |
title_full |
Environment Analysis of Higher-Order Languages |
title_fullStr |
Environment Analysis of Higher-Order Languages |
title_full_unstemmed |
Environment Analysis of Higher-Order Languages |
title_sort |
environment analysis of higher-order languages |
publisher |
Georgia Institute of Technology |
publishDate |
2007 |
url |
http://hdl.handle.net/1853/16289 |
work_keys_str_mv |
AT mightmatthewbrendon environmentanalysisofhigherorderlanguages |
_version_ |
1716474720168181760 |