Patterns for computational effects arising from a monad or a comonad
type: Dataset
description: This paper presents equational-based logics for proving first order properties of programming languages involving effects. We propose two dual inference system patterns that can be instanciated with monads or comonads in order to be used for proving properties of different effects. The first pattern provides inference rules which can be interpreted in the Kleisli category of a monad and the coKleisli category of the associated comonad. In a dual way, the second pattern provides inference rules which can be interpreted in the coKleisli category of a comonad and the Kleisli category of the associated monad. The logics combine a 3-tier effect system for terms consisting of pure terms and two other kinds of effects called 'constructors/observers' and 'modifiers', and a 2-tier system for 'up-to-effects' and 'strong' equations. Each pattern provides generic rules for dealing with any monad (respectively comonad), and it can be extended with specific rules for each effect. The paper presents two use cases: a language with exceptions (using the standard monadic semantics), and a language with state (using the less standard comonadic semantics). Finally, we prove that the obtained inference system for states is Hilbert-Post complete.
issued: 2026-05-09T09:21:53.690578
language: en
modified: 2026-05-09T09:21:53.690583
contact point: Organization
  fn: CCSD
keyword: cartesian-effect-categories
keyword: computational-effects
keyword: decorated-logic
keyword: decorated-logics
keyword: denotational-semantics
keyword: infoeu-reposemanticsreport
keyword: infoinfo-locomputer-science-cslogic-in-computer-science-cslo
keyword: monads-and-comonads
keyword: reports
landing page: https://hal.science/hal-00868831

Patterns for computational effects arising from a monad or a comonad
type: Distribution
format: HTML
issued: 2026-05-09T09:21:53.693820
modified: 2026-05-09T09:21:53.678737
access URL: https://hal.science/hal-00868831

test_moissonnage_selune
type: Agent