We often say that some piece of evidence establishes the minimum age, or the maximum age, of a geologic event. Then we try to find another event that provides the other constraint. For example, let's say we want to know when a specific meteor hit the earth. The rock that are impacted by the meteor are 100 million years, so we know that the meteor impact was younger than 100 million years. Then if we were able to find a rock unit deposited on top of the impact crater and impacted rocks, that is not itself damaged, we can infer that the undamaged rock unit is younger than the impact. If we date it at 80 million years old, we know that the meteor impact occurred between 100 and 80 million years. (We refer to these relationships as 'cross-cutting relationships' because visually, a younger feature may 'cut across' an older feature and we find and describe these relationships to develop the geologic histories.)
In fact, the entire geologic time scale as it's commonly known (using time categories like the Paleozoic, Jurassic, Cretaceous, etc.) was basically set in complete relative terms without knowing the absolute dates. Then, when absolute dating based on radioactive decay of elements in earth materials became common in the 20th century we started to pin down the whole framework.
I think that there is a really interesting logical structure to the whole enterprise that is begging to be modeled using tools that are more familiar to software engineers. For example I think that a lot of the relationships could be represented abstractly and analyzed using graph theory. But I have not had time to make much progress with this as geology has so many little exceptions that formalizing it is a long and tedious process.