Q:

Parent-Child Loops (infinite parent relationships)

Pseudocode:
Object A is a parent of Object B
Object B is a parent of Object C
Object C is a parent of Object A

Why is this usually not allowed in most programs (I've never seen it)?
Couldn't a program recognize when it's made a loop and stop performing a task?

For Instance:

Let's say these objects are 3d meshes and we want to translate Object A on the x axis 2 units.
Generally, a parent-child relationship would move any children of A. So it goes through the tree of children, and translates each child 2 units on the x axis with A. Then it reaches Object A in the tree, instead of moving it, why not just have it check for identity and if identity returns true, then stop moving things?
Is this just laziness on the part of software developers?

A:

I'll suggest that it is equivalent and generally considered easier to have an Object D that is a parent of Object A, Object B, and Object C. Whatever the three have in common can be defined in D. Whatever they don't have in common can be defined in each.
No cycle detection is needed. Cycle detection may seem a small matter, but it would introduce an overhead for every object all the time.

