In any case, I wrote "doesn't need", though perhaps you consider that hair splitting.
"predicateA is true" if "clauseB is true" and "clauseC is true".
or in prolog
predicateA :- clauseB, clauseC.
if (clauseB && clauseC) predicateA = true; else predicateA = false;
predicateA = claseB && clauseC;
The prolog version seems to me to be more in the spirit of the second C version.
%foo(+A,-B) foo(A,42) :- A < 10. foo(A,24) :- A >= 10. foo(_,100).
bool foo(int *A, int *B){ if (*A < 10){ *B = 42; }elseif (*A >= 10){ *B = 24; }else{ *B = 100; } return true; } /* my pointer knowledge is rusty though, so grain of salt */