atLeast(1 :r :C2)(X) :- :B1(X)
atLeast(1 :r :B1)(X) :- :C1(X)
def:1(Y) :- :r(X,Y), def:0(X)
:r(X,X) :- def:1(X)
atLeast(1 :r :B2)(X) :- :C2(X)
atLeast(1 :r :C1)(X) :- :B2(X)
def:0(:a)
:C1(:a)