Документация SWI-Prolog: значение ?, +, - и : в отношении подписей?

Вопрос о документации SWI-Prolog здесь: я пытаюсь понять, что означают ?, + - и : в отношении подписей. Вот некоторые из руководства по SWI-prolog (https://www.swi-prolog.org/pldoc/doc_for?object=manual):

append(?List1, ?List2, ?List1AndList2)
trace(+Pred, +Ports)
notrace(:Goal)
-Number is +Expr % which in infix would be is(-Number, +Expr).

Я предполагаю, что + означает, что сначала нужно создать экземпляр var, например, +Expr выше, и ? означает, что его можно оставить пустым для ответов в стиле генерации и тестирования, но я не уверен. Для : и - понятия не имею. Заранее спасибо, любая помощь приветствуется.
Хэнк


person Hank Igoe    schedule 09.08.2020    source источник