2019
DOI: 10.1007/978-3-030-30942-8_29
|View full text |Cite
|
Sign up to set email alerts
|

GOSPEL—Providing OCaml with a Formal Specification Language

Abstract: This paper introduces GOSPEL, a behavioral specification language for OCaml. It is designed to enable modular verification of data structures and algorithms. GOSPEL is a contract-based, strongly typed language, with a formal semantics defined by means of translation into Separation Logic. Compared with writing specifications directly in Separation Logic, GOSPEL provides a high-level syntax that greatly improves conciseness and makes it accessible to programmers with no familiarity with Separation Logic. Althou… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
7
0

Year Published

2021
2021
2024
2024

Publication Types

Select...
5
2

Relationship

3
4

Authors

Journals

citations
Cited by 9 publications
(7 citation statements)
references
References 30 publications
0
7
0
Order By: Relevance
“…After the success of Eiffel, new BISL were designed for mainstream programming languages [25] at the turn of the millennium: first JML [38] for Java, then Spec# [3] for C#, VCC [14], ACSL [4] and E-ACSL [16] for C, CodeContract [17] for .NET, Spark2014 [26] for Ada and, more recently, GOSPEL [11] for OCaml. Dedicated BISL such as Boogie [40] and WhyML [22] were also designed in the meantime: they do not target a mainstream specification language but, instead, propose their own general-purpose specification and programming framework.…”
Section: Behavioral Interface Specification Languagesmentioning
confidence: 99%
“…After the success of Eiffel, new BISL were designed for mainstream programming languages [25] at the turn of the millennium: first JML [38] for Java, then Spec# [3] for C#, VCC [14], ACSL [4] and E-ACSL [16] for C, CodeContract [17] for .NET, Spark2014 [26] for Ada and, more recently, GOSPEL [11] for OCaml. Dedicated BISL such as Boogie [40] and WhyML [22] were also designed in the meantime: they do not target a mainstream specification language but, instead, propose their own general-purpose specification and programming framework.…”
Section: Behavioral Interface Specification Languagesmentioning
confidence: 99%
“…The payload of a GOSPEL attribute is, hence, a string that contains the user-supplied specification 4 . The GOSPEL attributes are processed by a dedicated parser and type-checker [6], where specifications are attached to nodes of a patched version of the OCaml AST. This custom AST is the entry-point for our OCaml to WhyML translation, which we describe next.…”
Section: Using Gospel Toolchainmentioning
confidence: 99%
“…In this paper, we present Cameleer, a tool for the deductive verification of programs directly written in OCaml, with a clear focus on proof automation. Cameleer uses the recently proposed GOSPEL [6], a specification language for the OCaml language. We believe this is one of the strengths of our approach: firstly, GOSPEL makes a certain number of design choices, that turn it into a clean and digestible specification language; secondly, GOSPEL terms are written in a subset of the OCaml language.…”
Section: Introductionmentioning
confidence: 99%
“…It is an open-source project available at https://github.com/ocaml-gospel/ortac. We build upon Gospel, a behavioral specification language for OCaml [9]. Interfaces are annotated with formal specification, such as function contracts, type models and invariants, and logical definitions.…”
Section: Introductionmentioning
confidence: 99%