2004
Authors
Barthe, G; Frade, MJ; Gimenez, E; Pinto, L; Uustalu, T;
Publication
MATHEMATICAL STRUCTURES IN COMPUTER SCIENCE
Abstract
This paper introduces lambda<^>, 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 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.
1999
Authors
Barthe, G; Frade, MJ;
Publication
PROGRAMMING LANGUAGES AND SYSTEMS
Abstract
Constructor subtyping is a form of subtyping in which an inductive type sigma is viewed as a subtype of another inductive type tau if tau has more constructors than sigma. As suggested in [5, 12], its (potential) uses include proof assistants and functional programming languages. In this paper, we introduce and study the properties of a simply typed lambda-calculus with record types and datatypes, and which supports record subtyping and constructor subtyping. In the first part of the paper, we show that the calculus is confluent and strongly normalizing. In the second part of the paper, we show that the calculus admits a well-behaved theory of canonical inhabitants, provided one adopts expansive extensionality rules, including eta-expansion, surjective pairing, and a suitable expansion rule for datatypes. Finally, in the third part of the paper, we extend our calculus with unbounded recursion and show that confluence is preserved.
2011
Authors
Almeida, JB; Frade, MJ; Pinto, JS; Sousa, SMd;
Publication
Undergraduate Topics in Computer Science
Abstract
2012
Authors
Da Cruz, D; Frade, MJ; Pinto, JS;
Publication
Proceedings of the ACM Symposium on Applied Computing
Abstract
A mechanism for generating verification conditions (VCs) for the iteration-free fragment of an imperative language is fundamental in any deductive program verification system. In this paper we revisit symbolic execution, weakest preconditions, and bounded model checking as VC-generation mechanisms, and propose a uniform presentation of the corresponding sets of VCs, in terms of (logical encodings of) paths in the control-flow graph of a single-assignment form of the program under analysis. This allows us to compare the mechanisms, in particular with respect to the size of the generated formulas. © 2012 ACM.
2011
Authors
Frade, MJ; Pinto, JS;
Publication
Computer Science Review
Abstract
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. © 2011 Elsevier Inc.
2016
Authors
Lourenço, CB; Frade, MJ; Pinto, JS;
Publication
CoRR
Abstract
The access to the final selection minute is only available to applicants.
Please check the confirmation e-mail of your application to obtain the access code.