Implement a check on Wikidata for [[ https://www.wikidata.org/wiki/Template:Constraint:Contemporary | Contemporary constraint ]].
Proposed assertions (if true, there isn't a constraint violation; if false, there is a constraint violation):
* **Text**: if [item A] has this property (Pn) linked to [item B], then [item A] and [item B] have to coincide or coexist at some point of history according to properties `P569` (date of birth), `P570` (date of death), `P571` (inception), `P576` (dissolved or abolished), `P580` (start time) and `P582` (end time).
* **Formally**:
```
(
(
A.P580 ≤ B.P582 OR
A.P580 ≤ B.P570 OR
A.P580 ≤ B.P576 OR
A.P569 ≤ B.P582 OR
A.P569 ≤ B.P570 OR
A.P569 ≤ B.P576 OR
A.P571 ≤ B.P582 OR
A.P571 ≤ B.P570 OR
A.P571 ≤ B.P576
) OR (
NOT EXISTS A.P580 AND
NOT EXISTS A.P569 AND
NOT EXISTS A.P571
) OR (
NOT EXISTS B.P582 AND
NOT EXISTS B.P570 AND
NOT EXISTS B.P576
)
) AND (
(
B.P580 ≤ A.P582 OR
B.P580 ≤ A.P570 OR
B.P580 ≤ A.P576 OR
B.P569 ≤ A.P582 OR
B.P569 ≤ A.P570 OR
B.P569 ≤ A.P576 OR
B.P571 ≤ A.P582 OR
B.P571 ≤ A.P570 OR
B.P571 ≤ A.P576
) OR (
NOT EXISTS B.P580 AND
NOT EXISTS B.P569 AND
NOT EXISTS B.P571
) OR (
NOT EXISTS A.P582 AND
NOT EXISTS A.P570 AND
NOT EXISTS A.P576
)
)
```
It would be great that the set of "properties of start" and the set of "properties of end" could be modified somehow over time.