q(a1). q(a3). q(a5). a1[b->c1[d->e]]. a1[f-> {fff1[ddd->eee], hhh1[ttt->p,q}]}]. a2[b->c2[d->e]]. a2[f-> {fff2[ddd->eee], hhh2[ttt->p,q}]}]. a3[b->c3[d->e]]. a3[f-> {fff3[ddd->eee], hhh3[ttt->p,q}]}]. a4[b->c4[d->e]]. a4[f-> {fff4[ddd->eee], hhh4[ttt->p,q}]}]. a5[b->c5[d->e]]. a5[f-> {fff5[ddd->eee], hhh5[ttt->p,q}]}]. // Queries: // erase{?A[b->?, f->?] | q(?A)}, !. // cut to prevent backtracking // ?A[f->?V]. // ?H[ttt->?V]. // Then: // eraseall{?A[b->?, f->?] | q(?A)}, !. // ?A[f->?V]. // ?H[ttt->?V].