### Abstract

Clean is based on a simple, abstract execution model for an imperative target language. “Abstract” is understood in contrast to “Concrete Semantics”; alternatively, the term “shallow-style embedding” could be used. It strives for a type-safe notion of program-variables, an incremental construction of the typed state-space, support of incremental verification, and open-world extensibility of new type definitions being intertwined with the program definitions. Clean is based on a “no-frills” state-exception monad with the usual definitions of bind and unit for the compositional glue of state-based computations. Clean offers conditionals and loops supporting C-like control-flow operators such as break and return. The state-space construction is based on the extensible record package. Direct recursion of procedures is supported. Clean’s design strives for extreme simplicity. It is geared towards symbolic execution and proven correct verification tools. The underlying libraries of this package, however, deliberately restrict themselves to the most elementary infrastructure for these tasks. The package is intended to serve as demonstrator semantic backend for Isabelle/C, or for the test-generation techniques.

### License

BSD License

### Topics

- Computer science/Programming languages
- Computer science/Semantics and reasoning

### Session Clean

- Lens_Laws
- Optics
- MonadSE
- Seq_MonadSE
- Symbex_MonadSE
- Clean
- Hoare_MonadSE
- Hoare_Clean
- Clean_Symbex
- Test_Clean
- Clean_Main
- IsPrime
- LinearSearch
- Quicksort
- Quicksort_concept
- SquareRoot_concept

## Cite

×

Clean-AFP

    @article{Clean-AFP,
      author  = {Frédéric Tuong and Burkhart Wolff},
      title   = {Clean - An Abstract Imperative Programming Language and its Theory},
      journal = {Archive of Formal Proofs},
      month   = {October},
      year    = {2019},
      note    = {\url{https://isa-afp.org/entries/Clean.html},
                 Formal proof development},
      ISSN    = {2150-914x},
    }

Download

## Download

× Download latest

Older releases:

- Sep 13, 2023 : Isabelle2023
- Oct 27, 2022 : Isabelle2022
- Dec 14, 2021 : Isabelle2021-1
- Feb 23, 2021 : Isabelle2021
- Apr 18, 2020 : Isabelle2020
- Oct 16, 2019 : Isabelle2019