We assume that liable_for_fine/1 holds when its argument is (a person) liable for a fine, that owns_car/2 holds when the first argument possesses the object named in the second argument (and this object is a car), and that untaxed/1 holds for all those objects that are required by law to be taxed and are not!
The same_house/2 relation holds between two arguments (people) if the address/2 relation holds between one of these arguments and a third object and between the other and the same third object.
Note that this makes same_house(fred,fred) true.
The siblings/2 relation holds between the two arguments when each is related via the mother/2 relation to a common object and via the father/2 relation to a (different) common object.
This is not correct if the intended meaning is to prevent one person being their own sibling. We would revise this by adding a subgoal such as not_same(X,Y).
Note that we could have designed a parents/3 predicate (relation) such that, for example, the second argument is the mother and the third is the father of the first argument. This would result in siblings(X,Y):- parents(X,M,P), parents(Y,M,P).