107 research outputs found
Formal Semantics for Java-like Languages and Research Opportunities
The objective of this paper is twofold: first, we discuss the state of art on Java-like semantics, focusing on those that provide formal specification using operational semantics (big-step or small-step), studying in detail the most cited projects and presenting some derivative works that extend the originals aggregating useful features. Also, we filter our research for those that provide some insights in type-safety proofs. Furthermore, we provide a comparison between the most used projects in order to show which functionalities are covered in such projects. Second, our effort is focused towards the research opportunities in this area, showing some important works that can be applied to the previously presented projects to study features of object-oriented languages, and pointing for some possibilities to explore in future researches
Doctor of Philosophy in Computer Science
dissertationControl-flow analysis of higher-order languages is a difficult problem, yet an important one. It aids in enabling optimizations, improved reliability, and improved security of programs written in these languages. This dissertation explores three techniques to improve the precision and speed of a small-step abstract interpreter: using a priority work list, environment unrolling, and strong function call. In an abstract interpreter, the interpreter is no longer deterministic and choices can be made in how the abstract state space is explored and trade-offs exist. A priority queue is one option. There are also many ways to abstract the concrete interpreter. Environment unrolling gives a slightly different approach than is usually taken, by holding off abstraction in order to gain precision, which can lead to a faster analysis. Strong function call is an approach to clean up some of the imprecision when making a function call that is introduced when abstractly interpreting a program. An alternative approach to building an abstract interpreter to perform static analysis is through the use of constraint solving. Existing techniques to do this have been developed over the last several decades. This dissertation maps these constraints to three different problems, allowing control-flow analysis of higher-order languages to be solved with tools that are already mature and well developed. The control-flow problem is mapped to pointer analysis of first-order languages, SAT, and linear-algebra operations. These mappings allow for fast and parallel implementations of control-flow analysis of higher-order languages. A recent development in the field of static analysis has been pushdown control-flow analysis, which is able to precisely match calls and returns, a weakness in the existing techniques. This dissertation also provides an encoding of pushdown control-flow analysis to linear-algebra operations. In the process, it demonstrates that under certain conditions (monovariance and flow insensitivity) that in terms of precision, a pushdown control-flow analysis is in fact equivalent to a direct style constraint-based formulation
Formal semantics for java-like languages and research opportunities.
Currently, Java is one of the most used programming languages, being adopted in many large
projects, where applications reach a level of complexity for which manual testing and human inspection are
not enough to guarantee quality in software development. Because of that, there is a growing research field
that concerns the formalization of small subsets of Java-like languages aimed to conduct studies that were
impossible to achieve through informal approaches. In this context, the objective of this paper is twofold: the
discussion of the state-of-the-art on Java-like semantics and the presentation of research opportunities in this
area. For the first goal, we present a research about Java-like formal semantics, filtering those that provide some
insights in type-safety proofs, choosing the four most cited projects to be presented in details. We also briefly
present some related studies that extended the originals aggregating useful features. Additionally, we provide a
comparison between the most cited projects in order to show which functionalities are covered by each one of
them. As for the second goal, we discuss possible future studies that can be performed by using the presented
formal semantics.Atualmente Java ?e uma das linguagens de programac? ?ao mais utilizadas, sendo adotada em muitos
projetos de grande escala, onde aplicac? ?oes alcanc?am um n??vel de complexidade no qual testes e inspec? ?oes
manuais n?ao s?ao suficientes para garantir qualidade no desenvolvimento de software. Por conta disso, existe um
crescente campo de pesquisa que diz respeito a formalizac? ?ao de pequenos fragmentos de linguagens similares
ao Java, almejando a conduc? ?ao de estudos os quais eram imposs??veis de realizar atrav?es de abordagens
informais. Neste contexto, este artigo tem dois objetivos: a discuss?ao do estado da arte sobre sem?anticas
similares ao Java e a apresentac? ?ao de oportunidades de pequisa nesta ?area. Para o primeiro objetivo, ?e
proposta uma pequisa sobre sem?anticas formais da linguagem Java, filtrando aquelas que prov?eem provas
de seguranc?a de tipos, escolhendo os quatro projetos mais citados para serem apresentados em detalhes.
Tamb?em s?ao apresentados brevemente alguns estudos derivados que estendem os originais agregando
funcionalidades. Adicionalmente, ?e apresentada uma comparac? ?ao entre os projetos mais citados como forma
de demonstrar quais funcionalidades s?ao cobertas por cada um deles. Como segundo objetivo s?ao discutidos
poss??veis trabalhos futuros que podem ser realizados atrav?es do uso das sem? anticas formais apresentadas
Applying Formal Methods to Networking: Theory, Techniques and Applications
Despite its great importance, modern network infrastructure is remarkable for
the lack of rigor in its engineering. The Internet which began as a research
experiment was never designed to handle the users and applications it hosts
today. The lack of formalization of the Internet architecture meant limited
abstractions and modularity, especially for the control and management planes,
thus requiring for every new need a new protocol built from scratch. This led
to an unwieldy ossified Internet architecture resistant to any attempts at
formal verification, and an Internet culture where expediency and pragmatism
are favored over formal correctness. Fortunately, recent work in the space of
clean slate Internet design---especially, the software defined networking (SDN)
paradigm---offers the Internet community another chance to develop the right
kind of architecture and abstractions. This has also led to a great resurgence
in interest of applying formal methods to specification, verification, and
synthesis of networking protocols and applications. In this paper, we present a
self-contained tutorial of the formidable amount of work that has been done in
formal methods, and present a survey of its applications to networking.Comment: 30 pages, submitted to IEEE Communications Surveys and Tutorial
Multi-graded Featherweight Java
Resource-aware type systems statically approximate not only the expected
result type of a program, but also the way external resources are used, e.g.,
how many times the value of a variable is needed. We extend the type system of
Featherweight Java to be resource-aware, parametrically on an arbitrary grade
algebra modeling a specific usage of resources. We prove that this type system
is sound with respect to a resource-aware version of reduction, that is, a
well-typed program has a reduction sequence which does not get stuck due to
resource consumption. Moreover, we show that the available grades can be
heterogeneous, that is, obtained by combining grades of different kinds, via a
minimal collection of homomorphisms from one kind to another. Finally, we show
how grade algebras and homomorphisms can be specified as Java classes, so that
grade annotations in types can be written in the language itself
A Theory of Tagged Objects
Foundational models of object-oriented constructs typically model objects as records with a structural type. However, many object-oriented languages are class-based; statically-typed formal models of these languages tend to sacrifice the foundational nature of the record-based models, and in addition cannot express dynamic class loading or creation. In this paper, we explore how to model statically-typed object-oriented languages that support dynamic class creation using foundational constructs of type theory. We start with an extensible tag construct motivated by type theory, and adapt it to support static reasoning about class hierarchy and the tags supported by each object. The result is a model that better explains the relationship between object-oriented and functional programming paradigms, suggests a useful enhancement to functional programming languages, and paves the way for more expressive statically typed object-oriented languages. In that vein, we describe the design and implementation of the Wyvern language, which leverages our theory
- …