Calculating a backtracking algorithm: an exercise in monadic program derivation

01/23/2021
by   Shin-Cheng Mu, et al.
0

Equational reasoning is among the most important tools that functional programming provides us. Curiously, relatively less attention has been paid to reasoning about monadic programs. In this report we derive a backtracking algorithm for problem specifications that use a monadic unfold to generate possible solutions, which are filtered using a 𝑠𝑐𝑎𝑛𝑙-like predicate. We develop theorems that convert a variation of 𝑠𝑐𝑎𝑛𝑙 to a 𝑓𝑜𝑙𝑑𝑟 that uses the state monad, as well as theorems constructing hylomorphism. The algorithm is used to solve the n-queens puzzle, our running example. The aim is to develop theorems and patterns useful for the derivation of monadic programs, focusing on the intricate interaction between state and non-determinism.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
01/27/2021

Deriving monadic quicksort (Declarative Pearl)

To demonstrate derivation of monadic programs, we present a specificatio...
research
07/16/2021

SMLtoCoq: Automated Generation of Coq Specifications and Proof Obligations from SML Programs with Contracts

Formally reasoning about functional programs is supposed to be straightf...
research
03/05/2002

Two results for proiritized logic programming

Prioritized default reasoning has illustrated its rich expressiveness an...
research
08/21/2019

Free Theorems Simply, via Dinaturality

Free theorems are a popular tool in reasoning about parametrically polym...
research
05/17/2020

A Practical Algorithm for the Computation of the Genus

We describe a practical algorithm to compute the (oriented) genus of a g...
research
08/30/2023

Functional Shell and Reusable Components for Easy GUIs

Some object-oriented GUI toolkits tangle state management with rendering...

Please sign up or login with your details

Forgot password? Click here to reset