Search engine for discovering works of Art, research articles, and books related to Art and Culture
ShareThis
Javascript must be enabled to continue!

Programming with angelic nondeterminism

View through CrossRef
Angelic nondeterminism can play an important role in program development. It simplifies specifications, for example in deriving programs with a refinement calculus; it is the formal basis of regular expressions; and Floyd relied on it to concisely express backtracking algorithms such as N-queens. We show that angelic nondeterminism is also useful during the development of deterministic programs. The semantics of our angelic operator are the same as Floyd's but we use it as a substitute for yet-to-be-written deterministic code; the final program is fully deterministic. The angelic operator divines a value that makes the program meet its specification, if possible. Because the operator is executable, it allows the programmer to test incomplete programs: if a program has no safe execution, it is already incorrect; if a program does have a safe execution, the execution may reveal an implementation strategy to the programmer. We introduce refinement-based angelic programming, describe our embedding of angelic operators into Scala, report on our implementation with bounded model checking, and describe our experience with two case studies. In one of the studies, we use angelic operators to modularize the Deutsch-Schorr-Waite (DSW) algorithm. The modularization is performed with the notion of a parasitic stack, whose incomplete specification was instantiated for DSW with angelic nondeterminism.
Title: Programming with angelic nondeterminism
Description:
Angelic nondeterminism can play an important role in program development.
It simplifies specifications, for example in deriving programs with a refinement calculus; it is the formal basis of regular expressions; and Floyd relied on it to concisely express backtracking algorithms such as N-queens.
We show that angelic nondeterminism is also useful during the development of deterministic programs.
The semantics of our angelic operator are the same as Floyd's but we use it as a substitute for yet-to-be-written deterministic code; the final program is fully deterministic.
The angelic operator divines a value that makes the program meet its specification, if possible.
Because the operator is executable, it allows the programmer to test incomplete programs: if a program has no safe execution, it is already incorrect; if a program does have a safe execution, the execution may reveal an implementation strategy to the programmer.
We introduce refinement-based angelic programming, describe our embedding of angelic operators into Scala, report on our implementation with bounded model checking, and describe our experience with two case studies.
In one of the studies, we use angelic operators to modularize the Deutsch-Schorr-Waite (DSW) algorithm.
The modularization is performed with the notion of a parasitic stack, whose incomplete specification was instantiated for DSW with angelic nondeterminism.

Related Results

Nondeterminism in Constructive Z
Nondeterminism in Constructive Z
The abstraction inherent in most specifications and the need to specify nondeterministic programs are two well-known sources of nondeterminism in formal specifications. In this pap...
Programming model abstractions for optimizing I/O intensive applications
Programming model abstractions for optimizing I/O intensive applications
This thesis contributes from the perspective of task-based programming models to the efforts of optimizing I/O intensive applications. Throughout this thesis, we propose programmin...
Incorporating programming into mathematics education : How using programming shapes upper-secondary students’ mathematical understanding
Incorporating programming into mathematics education : How using programming shapes upper-secondary students’ mathematical understanding
This thesis comprises two studies investigating upper-secondary students’ use of programming as a mathematical tool. It aims to examine both the intertwined relationship between st...
Norwegian mathematics teachers’ conceptions of programming in mathematics education
Norwegian mathematics teachers’ conceptions of programming in mathematics education
As programming is being integrated into mathematics education in Norway, it is increasingly important to understand how teachers perceive and implement programming. This study inve...
WEB PROGRAMMING
WEB PROGRAMMING
"Web Programming" is a comprehensive book that provides a detailed overview of various aspects of web programming. The book is co-authored by Dr. Chitra Ravi and Dr. Mohan Kumar S,...
Basic and Advance: Phython Programming
Basic and Advance: Phython Programming
"This book will introduce you to the python programming language. It's aimed at beginning programmers, but even if you have written programs before and just want to add python to y...
Forecasting, Programming, Planning in Public Administration
Forecasting, Programming, Planning in Public Administration
In modern conditions, problems of social and economic development in Ukraine explains the need to pay attention to forecasting, programming, planning improvement in public administ...
Active Learning in the Context of the Teaching/Learning of Computer Programming: A Systematic Review
Active Learning in the Context of the Teaching/Learning of Computer Programming: A Systematic Review
Aim/Purpose: This paper presents the results of a systematic literature review that sought to identify the studies that relate the different pedagogical techniques by which active ...

Back to Top