Warning 1: There is a /* in a symbol atom.
For example, +/* will give this warning. If you want to start a comment but /* is glued to the plus put a space before /*. If you want to use +/* as a term put it in apostrophes.
Warning 2: Possibly a full stop is glued to an atom.
For example, the expression X =.. Y will give this warning because the full stop which is on the end of =.. is possibly not a part of the atom =.. . To avoid this warning do not put a space between =.. and Y or put the expression in brackets. So, if you write X=..Y or (X =.. Y) you will not have this warning.
Warning 3: The symbol 'X' cannot be in an atom.
In this version of Strawberry Prolog some of the symbols like '(' cannot be in the atoms. So, if you write 'f(a)' you will receive this warning twice and the atom 'f(a)' will be accepted as 'fa'.
Warning 4: The string XXX is not an operator.
If you want to use a symbol string as atom put it in apostrophes or define it as an operator of a type term.
Warning 5: The global variable G_XXX is used only once.
If you use one global variable only once maybe you do not need it. To avoid this warning you can declare this global variable in this way: define_sys_variables(G_XXX).
Warning 6: The predicate XXX(...) is defined in the ADD file.
You try to redefine a built-in predicate whose definition is in the ADD file. Use another name for your predicate in order to avoid the conflict with the name of the built-in predicate which already exists.
Warning 7: The predicate XXX(...) has an interrupted definition.
This warning will occur if the definition of your predicate consists of more than one clause and if you placed another clause inside the definition. For example: a(x). b(y). a(z). will give this warning. This variant is a bad programming style. In order to do it better and avoid the warning put the definition of b after the definition of a. For example: a(x). a(z). b(y).
Warning 8: The predicate XXX(...) has an interrupted definition in the ADD file.
The same as the warning 7 but here the problem is in the ADD file. Maybe the ADD file is corrupt.
Warning 9: Strange predicate XXX(...) as a head in clause YYY.
Possible error! For example, if the head is A(x) you will receive this warning. Often this warning occurs when a full stop is put instead of a comma inside a clause. For example, the clause: p(X), p(Y). will give this warning.
Warning 10: You have a clause with a variable for head.
Possible error! Such clause should be applied every time on every unification. Anyway, it will not work in this way because it will be ignored (i.e. it will not affect the execution of the program).