For special purposes and for communication with external software it is possible to use (extra-logical) arrays of various types and global variables which can be modified with destructive assignment. For instance, the implementation of a counter using a global variable is much faster and uses less space than using assert/1. The arrays map on C structures and they can be manipulated in external predicates. The global array and variable names are module sensitive.