Effect-Oblivious Equivalence
summary
Defines effect-oblivious equivalence: two programs are equivalent no matter how effects are implemented, so proofs do not assume concrete IO or handler behavior. Encodes this using reified functor classes from Haskell (applicative, selective, monad) and models effects with program adverbs and free structures (free monads, free applicatives). Embedding mixes shallow pure code and deep uninterpreted effects, lets static analyses run and yields concrete laws (e.g., a commutativity law to swap independent reads) that justify optimizations.
AI-written summary · about
