Why acyclic holds
Imagine starting at Root and following the
contents relation. Suppose you found a cyclic
path and followed it. At some point, you will encounter a
directory which you have already visited.
- The duplicated directory cannot be the root, since the root has
no parent (and we have constrained the contents and parent
relations to be reciprocal).
- The duplicated directory cannot be a non-root directory, say
d, since that would mean that d has two parents
(but that cannot be the case since the parent relation maps to
single directory, not a set of directories).
Thus a cycle cannot exist.