As we have seen, the goals in the body of a sentence are linked by the operator `,', which can be interpreted as conjunction (and). The Prolog language provides a number of other operators, known as control structures, for building complex goals. Apart from being built-in predicates, these control structures play a special role in certain language features, namely Grammar Rules (see ref-gru), and when code is loaded or asserted in the context of modules (see ref-mod). The set of control structures is described in this section, and consists of:
,:Q ISO;:Q ISO::P ISO->:Q;:R ISO->:Q ISO! ISO\+ :P ISO ^ :Psetof/3 and bagof/3)
if(:P,:Q,:R)once(:P) ISO