  Modern computer systems are awash in a sea of asynchronous events. There is
an increasing need for a declarative language that can permit business users to
specify complex event-processing rules. Such rules should be able to correlate
different event streams, detect absence of events (negative information),
permit aggregations over sliding windows, specify dependent sliding windows
etc. For instance it should be possible to precisely state a rule such as
"Every seventh trading session that DowJones has risen consecutively, and IBM's
stock is off 3% over its average in this period, evaluate IBM position",
"Declare the sensor as faulty if no reading has been received for 500 ms", etc.
Further, the language should be implementable efficiently in an event-driven
fashion.
  We propose the Timed (Default) Concurrent Constraint, TCC, programming
framework as a foundation for such complex event processing. While very rich,
the TCC framework "forgets" information from one instant to the next. We make
two extensions. First, we extend the TCC model to carry the store from previous
time instants as "past" information in the current time instant. This permits
rules to to be written with rich queries over the past. Second, we show that
many of the powerful properties of the agent language can be folded into the
query language by permitting agents and queries to be defined mutually
recursively, building on the testing interpretation of intuitionistic logic
described in RCC \cite{radha-fsttcs05}. We show that this permits queries to
move "back and forth" in the past, e.g.{} "Order a review if the last time that
IBM stock price dropped by 10% in a day, there was more than 20% increase in
trading volume for Oracle the following day."
  We provide a formal semantics for TCC + Histories and establish some basic
properties.
