 An occurrence of 3R coinciding with i denotes an occurrence of  at some other interval j such that jri for some r 2 R. 3R can act as a tense operator. Expressions such as 3f<g, 3f>g, 3fmg, and 3fmig specify that  happened in the noncontiguous past, noncontiguous future, contiguous past, or contiguous future respectively. The 3R operator can also be used to derive overlapped occurrence from coincidental occurrence. An occurrence of 3f=;o;oi;s;si;f;fi;d;dig coincides with i if an occurrence of  overlaps with i. I abbreviate 3f=;o;oi;s;si;f;fi;d;dig simply as 3 without any subscript. Note that while (:)i indicates that no occurrence of  *coincided* with i, (:3)i indicates that no occurrence of  *overlapped* with i.

```
   Formally, the truth of an atomic event-occurrence formula i is defined relative to a model.
Let I be the set of all intervals and O be the set of all objects in the movie. A model M is a map
from primitive event-type symbols of arity n to subsets of I - O -    - O
                                                             | {z }
                                                                         
                                                                  n
                                                                   

```

. (M can be viewed as either a model or as a movie.) M thus maps primitive event-type symbols to relations that take an interval as their first argument, in addition to the remaining object parameters. The semantics of event logic is formally defined by specifying an entailment relation M j= i as follows:
 M j= p(t1; : : : ; tn)i if and only if hi; t1; : : : ; tni 2 M(p).

 M j= (:)i if and only if M 6j= i. M j= ( _ 	)i if and only if M j= i or M j= 	i.

 M j= ( ^R 	)i if and only if there exist two intervals j and k such that i = SPAN(j; k),
jrk for some r 2 R, M j= j, and M j= 	k.

 M j= (3R)i if and only if there exists some interval j such that jri for some r 2 R and M j= j.
Figure 9 shows the primitive event types currently used by LEONARD. The definitions in Figure 9 are formulated in terms of the predicates GROUNDED, RIGID, REVOLUTE, and SAMELAYER
that are produced by model reconstruction as described in Section 2. An object is supported if it is not grounded. Two objects contact if their polygons touch and they are on the same layer. Two polygons p and q touch, denoted TOUCHES(p; q), if they intersect and their intersection has zero area.

Two objects are attached if there is a rigid or revolute joint that joins them. Determining whether an object x supports an object y is a little more complex and requires counterfactual reasoning. Let P be the set of polygons in a scene, I = hGROUNDED; RIGID ; REVOLUTE ; SAMELAYERi be the most-preferred model of the scene as produced by model reconstruction, and STABLE(P; I ) be true if the scene P is stable under an interpretation I . Stability analysis, i.e. the STABLE predicate, is a subroutine used by the model-reconstruction component. An object x supports an object y if y is not grounded in the most-preferred model I and a variant of P with x removed is not stable under a variant of I where all objects except for y and those rigidly attached, directly or indirectly, to y are grounded. In Figure 9, P n fxg denotes the variant of P with x removed, RIGATT(x; y) denotes the fact that x is rigidly attached to y, RIGATTdenotes the reflexive transitive closure of the RIGATT
relation, fzj:RIGATT(z; y)g denotes the set of objects that are rigidly attached, directly or indirectly, to y, and hGROUNDED [ fzj:RIGATT(z; y)g; RIGID ; REVOLUTE ; SAMELAYERi denotes