title: Cycles in family tree software
body: <p>I am the developer of some family tree software (written in C++ and Qt). I had no problems until one of my customers mailed me a bug report. The problem is that the customer has two children with their own daughter, and, as a result, he can't use my software because of errors.</p>
  
  <p>Those errors are the result of my various assertions and invariants about the family graph being processed (for example, after walking a cycle, the program states that X can't be both father and grandfather of Y).</p>
  
  <p>How can I resolve those errors without removing all data assertions?</p>