Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Maria João Frade is active.

Publication


Featured researches published by Maria João Frade.


Mathematical Structures in Computer Science | 2004

Type-based termination of recursive definitions

Gilles Barthe; Maria João Frade; E. Giménez; Luís F. Pinto; Tarmo Uustalu

This paper introduces


Computer Science Review | 2011

Verification conditions for source-level imperative programs

Maria João Frade; Jorge Sousa Pinto

\lambda^\widehat


Archive | 2011

An Overview of Formal Methods Tools and Techniques

Jose B. Almeida; Maria João Frade; Jorge Sousa Pinto; Simão Melo de Sousa

, a simply typed lambda calculus supporting inductive types and recursive function definitions with termination ensured by types. The system is shown to enjoy subject reduction, strong normalisation of typable terms and to be stronger than a related system


Archive | 2011

Rigorous Software Development

Jose B. Almeida; Maria João Frade; Jorge Sousa Pinto; Simão Melo de Sousa

\lambda_{\mathcal{G}}


automated technology for verification and analysis | 2014

A Bounded Model Checker for SPARK Programs

Cláudio Belo Lourenço; Maria João Frade; Jorge Sousa Pinto

in which termination is ensured by a syntactic guard condition. The system can, at will, be extended to support coinductive types and corecursive function definitions also.


partial evaluation and semantic-based program manipulation | 2009

Bidirectional data-flow analyses, type-systematically

Maria João Frade; Ando Saabas; Tarmo Uustalu

This paper is a systematic study of verification conditions and their use in the context of program verification. We take Hoare logic as a starting point and study in detail how a verification conditions generator can be obtained from it. The notion of program annotation is essential in this process. Weakest preconditions and the use of updates are also studied as alternative approaches to verification conditions. Our study is carried on in the context of a While language. Important extensions to this language are considered toward the end of the paper. We also briefly survey modern program verification tools and their approaches to the generation of verification conditions.


european symposium on programming | 2016

Formalizing Single-Assignment Program Verification: An Adaptation-Complete Approach

Cláudio Belo Lourenço; Maria João Frade; Jorge Sousa Pinto

The goal of this chapter is to give an overview of the different approaches and tools pertaining to formal methods. We do not attempt to be exhaustive, but focus instead on the main approaches (formal specification, formal verification and proofs, transformation, and formal development). A consise introduction to basic logic concepts and methods is also provided. After reading the chapter the reader will be familiar with the terminology of the area, as well as with the most important concepts and techniques.


acm symposium on applied computing | 2012

Verification conditions for single-assignment programs

Daniela Carneiro da Cruz; Maria João Frade; Jorge Sousa Pinto

The use of mathematical methods in the development of software is essential when reliable systems are sought; in particular they are now strongly recommended by the official norms adopted in the production of critical software. Program Verification is the area of computer science that studies mathematical methods for checking that a program conforms to its specification. This text is a self-contained introduction to program verification using logic-based methods, presented in the broader context of formal methods for software engineering.The idea of specifying the behaviour of individual software components by attaching contracts to them is now a widely followed approach in program development, which has given rise notably to the development of a number of behavioural interface specification languages and program verification tools. A foundation for the static verification of programs based on contract-annotated routines is laid out in the book. These can be independently verified, which provides a modular approach to the verification of software.The text assumes only basic knowledge of standard mathematical concepts that should be familiar to any computer science student. It includes a self-contained introduction to propositional logic and first-order reasoning with theories, followed by a study of program verification that combines theoretical and practical aspects - from a program logic (a variant of Hoare logic for programs containing user-provided annotations) to the use of a realistic tool for the verification of C programs (annotated using the ACSL specification language), through the generation of verification conditions and the static verification of runtime errors.


Archive | 2011

Verifying C Programs

Jose B. Almeida; Maria João Frade; Jorge Sousa Pinto; Simão Melo de Sousa

This paper discusses the design and implementation of a bounded model checker for SPARK code, and provides a proof of concept of the utility and practicality of bounded verification for SPARK.


Archive | 2011

Procedures and Contracts

Jose B. Almeida; Maria João Frade; Jorge Sousa Pinto; Simão Melo de Sousa

We show that a wide class of bidirectional data-flow analyses and program optimizations based on them admit declarative descriptions in the form of type systems. The salient feature is a clear separation between what constitutes a valid analysis and how the strongest one can be computed (via the type checking versus principal type inference distinction). The approach also facilitates elegant relational semantic soundness definitions and proofs for analyses and optimizations, with an application to mechanical transformation of program proofs, useful in proof-carrying code. Unidirectional forward and backward analyses are covered as special cases; the technicalities in the general bidirectional case arise from more subtle notions of valid and principal types. To demonstrate the viability of the approach we consider two examples that are inherently bidirectional: type inference (seen as a data-flow problem) for a structured language where the type of a variable may change over a programs run and the analysis underlying a stack usage optimization for a stack-based low-level language.

Collaboration


Dive into the Maria João Frade's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Simão Melo de Sousa

University of Beira Interior

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Tarmo Uustalu

Tallinn University of Technology

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Ando Saabas

Tallinn University of Technology

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Gilles Barthe

French Institute for Research in Computer Science and Automation

View shared research outputs
Top Co-Authors

Avatar

Shin Nakajima

National Institute of Informatics

View shared research outputs
Researchain Logo
Decentralizing Knowledge