## 91405 ORSAY Cedex (France) Towards a ML Extension with Refinement: a Semantic Issue

### BibTeX

@MISC{J_91405orsay,

author = {Signoles J and Cnrs Université and Paris Sud and Julien Signoles},

title = {91405 ORSAY Cedex (France) Towards a ML Extension with Refinement: a Semantic Issue},

year = {}

}

### OpenURL

### Abstract

Abstract. Refinement is a method to derive correct programs from specifications. A rich type language is another way to ensure program correctness. In this paper, we propose a wide-spectrum language mixing both approaches for the ML language. Mainly, base types are simply included into expressions, introducing underdeterminism and dependent types. We focus on the semantic aspects of such a language. We study three different semantics: a denotational, a deterministic operational and a nondeterministic operational semantics. We prove their equivalence. We show that this language is a conservative extension of ML. 1

### Citations

1442 |
A Discipline of Programming
- Dijkstra
- 1997
(Show Context)
Citation Context ...amming language in a widespectrum refinement-oriented language. Historically refinement calculus was introduced for imperative programs. It based on the Dijkstra’s weakest precondition calculus (wpc) =-=[11]-=-. At this day, the most famous refinement calculus is Back’s refinement calculus [3, 4, 18]. The B method [1] is a notable example of commercial success. Refinement calculus for functional programs is... |

762 |
The B-Book: Assigning Programs to Meanings
- Abrial
(Show Context)
Citation Context ...d for imperative programs. It based on the Dijkstra’s weakest precondition calculus (wpc) [11]. At this day, the most famous refinement calculus is Back’s refinement calculus [3, 4, 18]. The B method =-=[1]-=- is a notable example of commercial success. Refinement calculus for functional programs is known as “expression refinement” and was first introduced by Bird [5] and Meertens [17]. It generally uses n... |

451 |
The formulae-as-types notion of construction
- Howard
- 1980
(Show Context)
Citation Context ...consists of converting a typing constraint of our language into a first-order logical proposition. It is probably a good way to have “human-understandable” proofobligations. Curry-Howard isomorphism =-=[14]-=- gives us hope of establishing such a proposition. But this approach may probably generate big untractable proof obligations from not-so-big expressions. It is possible to combine both these approache... |

294 | Dependent types in practical programming
- Xi, Pfenning
- 1999
(Show Context)
Citation Context ...and decidability. Several approaches are possible. One can have a semi-decidable powerful type system such as this of Cayenne [2] or a decidable less-powerful type system such as this of Dependent ML =-=[23]-=-. An intermediate approach consists of generating proof obligations when type checking cannot be done automatically. So powerful specifications are possible and the type-checking algorithm always term... |

272 |
Program development by stepwise refinement
- Wirth
- 1971
(Show Context)
Citation Context ...inal abstract specification by an unbounded sequence of correctness preservation refinements. This programming paradigm, called stepwise refinement, comes from the writings of Dijkstra [10] and Wirth =-=[22]-=-. One of the main ideas of refinement is: as the refinement steps can be as small as wanted, correctness preserving is easy to establish. Another characteristic of refinement comes from the fact that ... |

261 |
Refinement Calculus: A Systematic Introduction
- Back, Wright
- 1998
(Show Context)
Citation Context ...nt calculus was introduced for imperative programs. It based on the Dijkstra’s weakest precondition calculus (wpc) [11]. At this day, the most famous refinement calculus is Back’s refinement calculus =-=[3, 4, 18]-=-. The B method [1] is a notable example of commercial success. Refinement calculus for functional programs is known as “expression refinement” and was first introduced by Bird [5] and Meertens [17]. I... |

243 |
Notes on structured programming
- Dijkstra
- 1972
(Show Context)
Citation Context ...am from an original abstract specification by an unbounded sequence of correctness preservation refinements. This programming paradigm, called stepwise refinement, comes from the writings of Dijkstra =-=[10]-=- and Wirth [22]. One of the main ideas of refinement is: as the refinement steps can be as small as wanted, correctness preserving is easy to establish. Another characteristic of refinement comes from... |

218 | Cayenne - a language with dependent types
- Augustsson
- 1998
(Show Context)
Citation Context ...re difficult the type checking is: one has to choose between powerfulness and decidability. Several approaches are possible. One can have a semi-decidable powerful type system such as this of Cayenne =-=[2]-=- or a decidable less-powerful type system such as this of Dependent ML [23]. An intermediate approach consists of generating proof obligations when type checking cannot be done automatically. So power... |

218 | An introduction to the theory of lists
- Bird
- 1987
(Show Context)
Citation Context ...ment calculus [3, 4, 18]. The B method [1] is a notable example of commercial success. Refinement calculus for functional programs is known as “expression refinement” and was first introduced by Bird =-=[5]-=- and Meertens [17]. It generally uses nondeterministic expressions to introduce specification [21, 6, 19]. Another approach consists of refining types instead of expressions [13, 12]. It is based on t... |

181 | Refinement types for ML
- Freeman, Pfenning
- 1991
(Show Context)
Citation Context ...rst introduced by Bird [5] and Meertens [17]. It generally uses nondeterministic expressions to introduce specification [21, 6, 19]. Another approach consists of refining types instead of expressions =-=[13, 12]-=-. It is based on the types-as-specifications paradigm. Types as specifications Type checking is another way of verifying the correctness of a program with respect to a specification: types are particu... |

166 | Inductive definitions in the system Coq. Rules and properties
- Paulin-Mohring
- 1993
(Show Context)
Citation Context ...s. Morever polymorphism could help removing annotations on ∅ constructs, sum types could have some connections with the theory of inductive types like those of the Calculus of Inductive Constructions =-=[20]-=-. It should be interesting to compare our language extended with imperative features with some imperative-based refinement languages. However mixing all these extensions is really challenging: to our ... |

95 |
Algorithmics –towards programming as a mathematical activity
- Meertens
- 1986
(Show Context)
Citation Context ... 4, 18]. The B method [1] is a notable example of commercial success. Refinement calculus for functional programs is known as “expression refinement” and was first introduced by Bird [5] and Meertens =-=[17]-=-. It generally uses nondeterministic expressions to introduce specification [21, 6, 19]. Another approach consists of refining types instead of expressions [13, 12]. It is based on the types-as-specif... |

80 | A modular module system
- Leroy
(Show Context)
Citation Context ...ere is no practical tool dedied to proof of programs which combines these functional and imperative features. A module system à la ML is a typed functional language built on top of any other language =-=[16]-=- and useful in order to compose pieces of program. It seems to be not so difficult to extend our language with a module system: exactly as we introduce base types in our expressions, it is possible to... |

65 | Intersection types and computational effects
- Davies, Pfenning
- 2000
(Show Context)
Citation Context ...ve the proof obligations are, the better the type system is. A good approach seems to mix a verification judgment and an inference judgment as it is done for intersection types by Davies and Pfenning =-=[7]-=-. For example, in order to verify that an angelic application (e1 e2) verifies an expression e, we have to infer that e1 is a function, then we have to verify that e2 matches the type of the parameter... |

19 |
Andrzej Tarlecki. The definition of Extended ML: A gentle introduction
- Kahrs, Sannella
- 1997
(Show Context)
Citation Context ...pes in our expressions, it is possible to introduce module types into the module expressions in order to refine modules and not only expressions. Morever we can add a notion of axiom à la Extended ML =-=[15]-=- into the module system in order to easily specify constraints between different definitions. 6 Conclusion We have presented a wide-spectrum language mixing refinement and types-asspecifications appro... |

19 |
Programming from specifications (2nd ed
- Morgan
- 1994
(Show Context)
Citation Context ...nt calculus was introduced for imperative programs. It based on the Dijkstra’s weakest precondition calculus (wpc) [11]. At this day, the most famous refinement calculus is Back’s refinement calculus =-=[3, 4, 18]-=-. The B method [1] is a notable example of commercial success. Refinement calculus for functional programs is known as “expression refinement” and was first introduced by Bird [5] and Meertens [17]. I... |

13 |
A Refinement Calculus for Nondeterministic Expressions
- Ward
- 1994
(Show Context)
Citation Context ... calculus for functional programs is known as “expression refinement” and was first introduced by Bird [5] and Meertens [17]. It generally uses nondeterministic expressions to introduce specification =-=[21, 6, 19]-=-. Another approach consists of refining types instead of expressions [13, 12]. It is based on the types-as-specifications paradigm. Types as specifications Type checking is another way of verifying th... |

10 | Non-deterministic expressions and predicate transformers
- Morris
- 1997
(Show Context)
Citation Context ... calculus for functional programs is known as “expression refinement” and was first introduced by Bird [5] and Meertens [17]. It generally uses nondeterministic expressions to introduce specification =-=[21, 6, 19]-=-. Another approach consists of refining types instead of expressions [13, 12]. It is based on the types-as-specifications paradigm. Types as specifications Type checking is another way of verifying th... |

8 |
Expression Refinement
- Bunkenburg
- 1997
(Show Context)
Citation Context ... calculus for functional programs is known as “expression refinement” and was first introduced by Bird [5] and Meertens [17]. It generally uses nondeterministic expressions to introduce specification =-=[21, 6, 19]-=-. Another approach consists of refining types instead of expressions [13, 12]. It is based on the types-as-specifications paradigm. Types as specifications Type checking is another way of verifying th... |

6 | A Theory of Program Refinement
- Denney
- 1998
(Show Context)
Citation Context ...deterministic operational and a nondeterministic operational semantics. Then we prove their equivalence and show that our language is a conservative extension of ML. Related work Denney’s λ⊑ calculus =-=[9]-=- is a close work to ours. Denney uses a notion of stubs introducing underdeterminism by this way. These stubs correspond to the base types we introduce in expressions. So, as ours, his calculus mixes ... |

3 | Simply-typed underdeterminism
- Denney
- 1997
(Show Context)
Citation Context ...this language should be mixed and not distinguished. Our extension mainly consists of including ML base types (as int or bool) into ML expressions. In this way, we introduce Denney’s underdeterminism =-=[8]-=- and dependent types. Underdeterminism is not nondeterminism: the latter is a specificational characteristic whereas the former is computational. Underdeterministic terms are only partially determined... |