>>714
ユーザ定義述語であることが条件だが、findall/3とclause/2を使うのが普通だと思う。

ユニファイ可能な節が1つ以上存在するかを判定する(Head) :- findall(_,clause(Head,Body),[_|_]).