The modern world is characterized by an immense amount of distributed sources of information. Events are transmitted in the form of a stream to complex event processing (CEP) systems in order to perform reasoning tasks. Reasoning involves the identification of complex events, that is, a collection of events, simple or complex, that satisfy a given pattern. The sub-events are subject to temporal and atemporal constraints and may be combined with static background knowledge. The complex events produced may be of particular interest and can serve real time decision making. The information available in streams is fundamentally incremental in nature. The goal of this work is to take advantage of the incremental information in order to develop incremental reasoning techniques. First, the common case in streaming environments is for the input events to arrive with variable delays to the CEP system. Thus, the information needs to be processed in an efficient way that will prevent redundant computations. The technique developed will identify only the complex events that need revisions and as a consequence will improve the performance of the CEP system in terms of processing time. Second, the presence of noise in streams and the fact that complex event definitions are usually imperfect necessitate probabilistic reasoning. Our technique will address the uncertainty in the data by incrementally accumulating knowledge and producing complex events with some confidence. The last technique will attempt to deal with the increasing need for complex event forecasting. By discovering statistical regularities in the stream, the system will be able to provide predictions of patterns, before their actual detection, along with a probability score. Finally, all the techniques will be analyzed theoretically and evaluated against synthetic datasets and against real-world datasets in order to demonstrate their applicability.