Adding dependent types to class-based mutable objects

Bibliographic Details
Main Author: Campos, Joana Correia, 1978-
Publication Date: 2017
Language: eng
Source: Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
Download full: http://hdl.handle.net/10451/34562
Summary: Tese de doutoramento, Informática (Ciência da Computação), Universidade de Lisboa, Faculdade de Ciências, 2018
id RCAP_d12b37da980cf81d587adf0f455ca3f6
oai_identifier_str oai:repositorio.ulisboa.pt:10451/34562
network_acronym_str RCAP
network_name_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository_id_str https://opendoar.ac.uk/repository/7160
spelling Adding dependent types to class-based mutable objectsTeses de doutoramento - 2018Programação orientada para objectosDomínio/Área Científica::Ciências Naturais::Ciências da Computação e da InformaçãoTese de doutoramento, Informática (Ciência da Computação), Universidade de Lisboa, Faculdade de Ciências, 2018In this thesis, we present an imperative object-oriented language featuring a dependent type system designed to support class-based programming and inheritance. The system brings classes and dependent types into play so as to enable types (classes) to be refined by value parameters (indices) drawn from some constraint domain. This combination allows statically checking interesting properties of imperative programs that are impossible to check in conventional static type systems for objects. From a pragmatic point of view, this work opens the possibility to combine the scalability and modularity of object orientation with the safety provided by dependent types in the form of index refinements. These may be used to provide additional guarantees about the fields of objects, and to prevent, for example, a method call that could leave an object in a state that would violate the class invariant. One key feature is that the programmer is not required to prove equations between indices issued by types, but instead the typechecker depends on external constraint solving. From a theoretic perspective, our fundamental contribution is to formulate a system that unifies the three very different features: dependent types, mutable objects and class-based inheritance with subtyping. Our approach includes universal and existential types, as well as union types. Subtyping is induced by inheritance and quantifier instantiation. Moreover, dependent types require the system to track type varying objects, a feature missing from standard type systems in which the type is constant throughout the object’s lifetime. To ensure that an object is used correctly, aliasing is handled via a linear type discipline that enforces unique references to type varying objects. The system is decidable, provided indices are drawn from some decidable theory, and proved sound via subject reduction and progress. We also formulate a typechecking algorithm that gives a precise account of quantifier instantiation in a bidirectional style, combining type synthesis with checking. We prove that our algorithm is sound and complete. By way of example, we implement insertion and deletion for binary search trees in an imperative style, and come up with types that ensure the binary search tree invariant. To attest the relevance of the language proposed, we provide a fully functional prototype where this and other examples can be typechecked, compiled and run. The prototype can be found at http://rss.di.fc.ul.pt/tools/dol/.Vasconcelos, Vasco Thudichum, 1964-Repositório da Universidade de LisboaCampos, Joana Correia, 1978-2018-08-23T11:02:41Z201820172018-01-01T00:00:00Zdoctoral thesisinfo:eu-repo/semantics/publishedVersionapplication/pdfhttp://hdl.handle.net/10451/34562TID:101406169enginfo:eu-repo/semantics/openAccessreponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiainstacron:RCAAP2025-03-17T13:56:41Zoai:repositorio.ulisboa.pt:10451/34562Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireinfo@rcaap.ptopendoar:https://opendoar.ac.uk/repository/71602025-05-29T02:58:48.202410Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiafalse
dc.title.none.fl_str_mv Adding dependent types to class-based mutable objects
title Adding dependent types to class-based mutable objects
spellingShingle Adding dependent types to class-based mutable objects
Campos, Joana Correia, 1978-
Teses de doutoramento - 2018
Programação orientada para objectos
Domínio/Área Científica::Ciências Naturais::Ciências da Computação e da Informação
title_short Adding dependent types to class-based mutable objects
title_full Adding dependent types to class-based mutable objects
title_fullStr Adding dependent types to class-based mutable objects
title_full_unstemmed Adding dependent types to class-based mutable objects
title_sort Adding dependent types to class-based mutable objects
author Campos, Joana Correia, 1978-
author_facet Campos, Joana Correia, 1978-
author_role author
dc.contributor.none.fl_str_mv Vasconcelos, Vasco Thudichum, 1964-
Repositório da Universidade de Lisboa
dc.contributor.author.fl_str_mv Campos, Joana Correia, 1978-
dc.subject.por.fl_str_mv Teses de doutoramento - 2018
Programação orientada para objectos
Domínio/Área Científica::Ciências Naturais::Ciências da Computação e da Informação
topic Teses de doutoramento - 2018
Programação orientada para objectos
Domínio/Área Científica::Ciências Naturais::Ciências da Computação e da Informação
description Tese de doutoramento, Informática (Ciência da Computação), Universidade de Lisboa, Faculdade de Ciências, 2018
publishDate 2017
dc.date.none.fl_str_mv 2017
2018-08-23T11:02:41Z
2018
2018-01-01T00:00:00Z
dc.type.driver.fl_str_mv doctoral thesis
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10451/34562
TID:101406169
url http://hdl.handle.net/10451/34562
identifier_str_mv TID:101406169
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron:RCAAP
instname_str FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron_str RCAAP
institution RCAAP
reponame_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
collection Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository.name.fl_str_mv Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
repository.mail.fl_str_mv info@rcaap.pt
_version_ 1833601550541389824