Event-pattern reactive programs are small programs that process an input stream of events to detect and act upon given temporal patterns. These programs are used in distributed systems to notify components when they must react. We present the reaction algebra, a declarative language to define finitestate reactions. We prove that the reaction algebra is complete in the following sense: every event-pattern reactive system that can be described and implemented