  Dynamic evaluation is a paradigm in computer algebra which was introduced for
computing with algebraic numbers. In linear algebra, for instance, dynamic
evaluation can be used to apply programs which have been written for matrices
with coefficients modulo some prime number to matrices with coefficients modulo
some composite number. A way to implement dynamic evaluation in modern
computing languages is to use the exceptions mechanism provided by the
language. In this paper, we pesent a proof system for exceptions which involves
both raising and handling, by extending Moggi's approach based on monads.
Moreover, the core part of this proof system is dual to a proof system for the
state effect in imperative languages, which relies on the categorical notion of
comonad. Both proof systems are implemented in the Coq proof assistant, and
they are combined in order to deal with both effects at the same time.
