Naming primitives

The first four are simply an interface to BinProlog's unique global hashing table working as an
    <Atomic-key1,Atomic-key2>-->HeapOrBlackboardObject.
function.

We call them naming primitives as they are used to name arbitrary heap or blackboard objects for definition, update and access function. Naming objects on the heap is generally unsafe and should be hidden from the user except for constants which are actually copied in the hashing table instead of being pointed to. This frequent case has been given to end users as an efficient 2-keys, 1-value dictionary since the first release of BinProlog.

If blackboard operations are backtrackable heap objects can be safely named. This suggested the implementation of global logical variables in BinProlog 3.30.

Otherwise, in BinProlog's gc-safe transfers to and from the blackboard are doing with a very efficient copying algorithm.

Not that if the garbage collector is not used naming objects on the blackboard is safe as they are always at a lower address than the base of the heap. As a consequence they survive backtracking while keeping their behaviour as close as possible to the behaviour of usual heap objects. This usage is compatible with BinProlog 1.71 but not recommended in BinProlog 3.30.