A categorical foundation for structured reversible flowchart languages: Soundness and adequacy

Robert Glück, Robin Kaarsgaard

Research output: Contribution to journalJournal articleResearchpeer-review


Structured reversible flowchart languages is a class of imperative reversible programming languages allowing for a simple diagrammatic representation of control flow built from a limited set of control flow structures. This class includes the reversible programming language Janus (without recursion), as well as more recently developed reversible programming languages such as R-CORE and R-WHILE. In the present paper, we develop a categorical foundation for this class of languages based on inverse categories with joins. We generalize the notion of extensivity of restriction categories to one that may be accommodated by inverse categories, and use the resulting decisions to give a reversible representation of predicates and assertions. This leads to a categorical semantics for structured reversible flowcharts, which we show to be computationally sound and adequate, as well as equationally fully abstract with respect to the operational semantics under certain conditions.

Original languageEnglish
Article number16
JournalLogical Methods in Computer Science
Issue number3
Publication statusPublished - 2018

Bibliographical note

DBLP's bibliographic metadata records provided through http://dblp.org/search/publ/api are distributed under a Creative Commons CC0 1.0 Universal Public Domain Dedication. Although the bibliographic metadata records are provided consistent with CC0 1.0 Dedication, the content described by the metadata records is not. Content may be subject to copyright, rights of privacy, rights of publicity and other restrictions.


  • Categorical semantics
  • Category theory
  • Flowchart languages
  • Reversible computing
  • Structured programming


Dive into the research topics of 'A categorical foundation for structured reversible flowchart languages: Soundness and adequacy'. Together they form a unique fingerprint.

Cite this