Skip to content

Commit

Permalink
Abstract updated
Browse files Browse the repository at this point in the history
  • Loading branch information
mbuszka committed Jul 16, 2020
1 parent 36b1327 commit 791d602
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 12 deletions.
11 changes: 6 additions & 5 deletions front/abstract-en.tex
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
\englishabstract{%
I transform a manual derivation technique known as the functional correspondence between evaluators and abstract machines into a robust algorithm.
This thesis presents a robust algorithm for automatically deriving an abstract machine corresponding to a given interpreter.

I begin by describing the classic formulation of the methodology consisting of two source-to-source human-aided transformations and characterize control-flow analysis as a basis for their algorithmization.
I then define the meta-language \IDL{} and present the three main steps of the automatic procedure: transformation to administrative normal form, selective transformation to continuation-passing style and selective defunctionalization.
I also derive a procedure for computing control-flow analysis of programs in \IDL{} using the abstracting abstract machines methodology.
The transformation is based on a manual derivation technique known as the functional correspondence between evaluators and abstract machines which consists of two source code transformations: translation to continuation-passing style which uncovers the control flow of the interpreter and defunctionalization which produces a first-order program.

The algorithm begins with the translation to administrative normal form which eases program analysis and the subsequent steps of the transformation: selective translation to continuation-passing style and selective defunctionalization.
Both transformations extend their classical formulations with the ability to transform only the desired parts of the program by utilizing the control-flow analysis which is computed by an abstract interpreter obtained using the abstracting abstract machines methodology.

The thesis is accompanied by an implementation of the algorithm in the form of a command-line tool.
It allows for automatic transformation of an interpreter embedded in a \textit{Racket} source file and gives fine-grained control over the resulting machine.
I present a selection of case-studies which showcase the performance of the tool and the algorithm by deriving both known and novel abstract machines.
A selection of case-studies is presented to showcase the performance of the tool and the algorithm by deriving both known and novel abstract machines.
}
11 changes: 6 additions & 5 deletions front/abstract-pl.tex
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
\polishabstract{%
W pracy pokazuję jak przekształcić ręczną metodę derywacji, znaną jako odpowiedniość funkcyjna pomiędzy ewaluatorami i maszynami abstrakcyjnymi, w uniwersalny algorytm.
W pracy przedstawiony jest algorytm pozwalający na automatyczną derywację maszyny abstrakcyjnej odpowiadającej źródłowemu interpreterowi.

Zaczynając od klasycznego sformułowania metodologii, składającego się z dwóch transformacji kodu źródłowego wymagających pracy człowieka, wskazuję na analizę przepływu sterowania jako podstawę do ich algorytmizacji.
Następnie definiuję meta-język \IDL{} i przedstawiam trzy główne etapy automatycznej procedury: transformację do adminstracyjnej postaci normalnej, wybiórczą transformację do stylu przekazywania kontynuacji oraz wybiórczą defunkcjonalizację.
Pokazuję także procedurę pozwalającą na obliczenie analizy przepływu sterowania dla programów w \IDL{}, którą otrzymałem stosując metodologię abstrahowania maszyn abstrakcyjnych.
Transformacja oparta jest na ręcznej metodzie derywacji znanej jako odpowiedniość funkcyjna pomiędzy ewaluatorami i maszynami abstrakcyjnymi, która składa się z dwóch transformacji kodu źródłowego: przekształcenia do stylu przekazywania kontynuacji ujawniającego przepływ sterowania w interpreterze oraz defunkcjonalizacji, która pozwala na uzyskanie pierwszorzędowego programu.

Algorytm rozpoczyna się translacją do administracyjnej postaci normalnej która ułatwia analizę programu oraz dalsze przekształcenia: wybiórczą transformację do stylu przekazywania kontynuacji oraz wybiórczą defunkcjonalizację.
Obie transformacje są rozszerzeniem klasycznych sformułowań i umożliwiają przekształcanie wybranych części programu dzięki zastosowaniu analizy przepływu sterowania, która jest obliczana za pomocą abstrakcyjnego interpretera otrzymanego z wykorzystaniem metodologii abstrahowania maszyn abstrakcyjnych.

Do pracy dołączona jest implementacja algorytmu w postaci programu używanego z wiersza poleceń.
Pozwala ona na automatyczną transformację interpretera zanużonego w pliku źródłowym w języku \textit{Racket}, jednocześnie zapewniając precyzyjną kontrolę nad kształtem wynikowej maszyny.
W pracy przedstawiam zbiór przykładowych interpreterów na których obrazuję działanie narzędzia i algorytmu poprzez derywację zarówno znanych jak i nowych maszyn abstrakcyjnych.
W pracy przedstawiono zbiór przykładowych interpreterów na których zobrazowano działanie narzędzia i algorytmu poprzez derywację zarówno znanych jak i nowych maszyn abstrakcyjnych.
}
Binary file modified thesis.pdf
Binary file not shown.
4 changes: 2 additions & 2 deletions thesis.tex
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
\documentclass[english, mgr, shortabstract]{iithesis}
\documentclass[english, mgr, longabstract]{iithesis}

\usepackage[backend=biber,sorting=none,language=english]{biblatex}
\AtEveryBibitem{%
Expand Down Expand Up @@ -87,7 +87,7 @@

\englishtitle{The Functional Correspondence Applied:\fmlinebreak An Implementation of a Semantics Transformer}

\polishtitle{Zastosowanie odpowiednio\'{s}ci funkcyjnej \fmlinebreak do implementacji transformatora semantyk}
\polishtitle{Zastosowanie odpowiednio\'{s}ci funkcyjnej \fmlinebreak do implementacji transformatora semantyki}

\advisor{dr hab. Dariusz Biernacki}

Expand Down

0 comments on commit 791d602

Please sign in to comment.