  Starting with Hoare Logic over 50 years ago, numerous sound and relatively
complete program logics have been devised to reason about the diverse programs
encountered in the real world. This includes reasoning about computational
effects, particularly those effects that cause the program execution to branch
into multiple paths due to, e.g., nondeterministic or probabilistic choice.
  The recently introduced Outcome Logic reimagines Hoare Logic with effects at
its core, using an algebraic representation of choice to capture a variety of
effects. In this paper, we give the first relatively complete proof system for
Outcome Logic, handling general purpose looping for the first time. We also
show that this proof system applies to programs with various effects and that
it facilitates the reuse of proof fragments across different kinds of
specifications.
