Я пытаюсь автоматически доказать/опровергнуть некоторые теоремы геометрии, связанные с квадратами, такие как «Для каждых 3 наборов из 7 непересекающихся квадратов можно выбрать 1 квадрат из каждого набора, так что 3 представителя являются внутренними непересекающимися?».
Я попытался использовать OpenGeoProver и получил следующее описание квадрата:
<!-- define a 'free' point - the south-western corner of the square: -->
<pfree label="square1southwest"/>
<!-- define a line that is parallel to the x axis and goes throught that point - the southern boundary: -->
<lparallel label="square1south" point="square1southwest" baseline="xaxis" />
<!-- define a random point on the southern line, which will be the south-eastern corner: -->
<prandline label="square1southeast" line="square1south" />
<!-- rotate the south-eastern corner 90 degrees around the south-western corner, to create the north-western corner: -->
<protated label="square1northwest" origpt="square1southeast" center="square1southwest" angmeasure="-90"/>
<!-- translate the north-western corner by the vector between the two southern corners, to create the north-eastern corner of the square: -->
<ptranslated label="square1northeast" origpt="square1northwest" point1="square1southwest" point2="square1southeast"/>
Вот где я застрял: как определить простое утверждение «квадрат A и квадрат B пересекаются»?
Как можно решить эту проблему в Z3?