Example Problem Web Editor

class Family {
    contains Person[] members
}

class Person {
    refers Person[] children opposite parent
    refers Person parent opposite children
}

error loop(Person p) :- children+(p, p).

error multipleRoots(Person p, Person q) :-
    !equals(p, q), !parent(p, _), !parent(q, _).

Family('family').
members('family', anne).
members('family', bob).
members('family', ciri).
children(anne, ciri).
?children(bob, ciri).

scope Family = 1, Person += 5..10.