-  assertion(:Goal) is det
- Acts similar to C assert()macro. It has no effect if Goal
succeeds. If Goal fails or throws an exception, the following
steps are taken:
- call prolog:assertion_failed/2. If prolog:assertion_failed/2
fails, then:
- If this is an interactive toplevel thread, print a
message, the stack-trace, and finally trap the debugger.
- Otherwise, throw error(assertion_error(Reason, G),_)where
Reason is one offailor the exception raised.