Verified Reversible Programming for Verified Lossless Compression

11/02/2022
by   James Townsend, et al.
0

Lossless compression implementations typically contain two programs, an encoder and a decoder, which are required to be inverse to one another. We observe that a significant class of compression methods, based on asymmetric numeral systems (ANS), have shared structure between the encoder and decoder – the decoder program is the 'reverse' of the encoder program – allowing both to be simultaneously specified by a single, reversible function. To exploit this, we have implemented a small reversible language, embedded in Agda, which we call 'Flipper' (available at https://github.com/j-towns/flipper). Agda supports formal verification of program properties, and the compiler for our reversible language (which is implemented as an Agda macro), produces not just an encoder/decoder pair of functions but also a proof that they are inverse to one another. Thus users of the language get formal verification 'for free'. We give a small example use-case of Flipper in this paper, and plan to publish a full compression implementation soon.

READ FULL TEXT
research
01/14/2020

Deep Image Compression using Decoder Side Information

We present a Deep Image Compression neural network that relies on side i...
research
06/19/2018

A Theory of Reversibility for Erlang

In a reversible language, any forward computation can be undone by a fin...
research
09/08/2018

Exploiting Invertible Decoders for Unsupervised Sentence Representation Learning

The encoder-decoder models for unsupervised sentence representation lear...
research
03/13/2018

Narcissus: Deriving Correct-By-Construction Decoders and Encoders from Binary Formats

Every injective function has an inverse, although constructing the inver...
research
09/08/2023

A Two-Stage Training Framework for Joint Speech Compression and Enhancement

This paper considers the joint compression and enhancement problem for s...
research
08/30/2021

Structural Properties of Optimal Test Channels for Gaussian Multivariate Partially Observable Distributed Sources

In this paper, we analyze the operational information rate distortion fu...
research
05/24/2022

Properties of the Hebrew Calendar

We describe an ACL2 program that implements the Hebrew calendar and the ...

Please sign up or login with your details

Forgot password? Click here to reset