Nein, gerade das ist ja der Fehler in den Funktionen.
Beispiel: Nimm ein Rechteck, teile es senkrecht in der Mitte, nenne den linken Teil B, den rechten A. Dann haben A und B eine Seite gemeinsam und damit einen nicht-leeren Durchschnitt. Es ist B.Right=A.Left, also
gerade nicht B.Right < A.Left und damit der gesamte Ausdruck mit
and falsch und Deine Funktion liefert ein falsches Ergebnis.