2026 年 43 巻 2 号 p. 2_42-2_55
Rocq's Monae library allows for the verification of computational effects in programs using monadic equational reasoning. Monae can currently handle various effects by supporting different monads, such as the state monad and the probability monad. However, it does not yet support non-structurally recursive functions. On the other hand, the Delay monad, which is defined coinductively, is known to be able to express general recursive functions. In this paper, we define an interface presenting the Delay monad as a complete Elgot monad and formally prove its soundness. This allows to verify programs containing while loops using Monae. Moreover, by combining it with other monads using monad transformers, it is also possible to verify programs that contain some additional computational effects in Monae.