def grandfather(x, y): z = var() return conde((grandparents(x, y), Male(x)))
def grandmother(x, y): z = var() return conde((grandparents(x, y), Female(x)))
def grandmother(x, y): temp = var() return conde((mother(x, temp), parent(temp, y)))
def test_rs1_47(): x = var() eq(("olive", "oil"), run(0, x, conde((unify("olive", x),), (unify("oil", x),))))
def grandparent(x, z): y = var() return conde((parent(x, y), parent(y, z)))
def sibling(x, y): temp = var() return conde((parent(temp, x), parent(temp, y)))
def sibling(x, y): z = var() return conde((parents(z, x), parents(z, y)))
def sibling(a, b): p = var() return conde((parent(p, a), parent(p, b)))
def uncle(m, y): z = var() x = var() return conde((Father(x, z), Father(x, m), Father(z, y), Male(m)))
def grandparent(gparent, child): p = var() return conde((parent(gparent, p), parent(p, child)))
def parent(p, child): return conde([father(p, child)], [mother(p, child)])
def teacupo(x): return conde((unify("tea", x),), (unify("cup", x),))
def brother(x, y): z = var() return conde((parents(z, x), parents(z, y), Male(x)))
def sister(x, y): z = var() return conde((parents(z, x), parents(z, y), Female(x)))
def grandparent(x, z): y = var() return conde((parent(x,y), parent(y,z)))
def aunty(x, y): z = var() return conde((uncle(z, y), Couple(z, x), Female(x)))
def grandparent(x, y): temp = var() return conde((parent(x, temp), parent(temp, y)))
def parents(x, y): return conde([Father(x, y)], [Mother(x, y)])
def uncle(x, y): temp = var() return conde((father(temp, x), grandparent(temp, y)))
def grandparents(x, y): z = var() return conde((parents(x, z), parents(z, y)))
def parent(x, y): return conde([father(x, y)], [mother(x, y)])
def son(father, boy): return conde((parent(father, boy), male(boy)))