  Algebraic effects are computational effects that can be described with a set
of basic operations and equations between them. As many interesting effect
handlers do not respect these equations, most approaches assume a trivial
theory, sacrificing both reasoning power and safety.
  We present an alternative approach where the type system tracks equations
that are observed in subparts of the program, yielding a sound and flexible
logic, and paving a way for practical optimizations and reasoning tools.
