  Guarded Kleene Algebra with Tests (GKAT) is a variation on Kleene Algebra
with Tests (KAT) that arises by restricting the union ($+$) and iteration ($*$)
operations from KAT to predicate-guarded versions. We develop the (co)algebraic
theory of GKAT and show how it can be efficiently used to reason about
imperative programs. In contrast to KAT, whose equational theory is
PSPACE-complete, we show that the equational theory of GKAT is (almost) linear
time. We also provide a full Kleene theorem and prove completeness for an
analogue of Salomaa's axiomatization of Kleene Algebra.
