Availability:built-in
 snapshot(:Goal)Similar to transaction/1, 
but always discards the local modifications. In other words, snapshot/1 
allows a thread to examine a frozen state of the dynamic predicates 
and/or make isolated modifications without affecting other threads and 
without making permanent changes to the database. Where transactions 
allow the global state to be updated atomically from one consistent 
state to the next, a snapshot allows reasoning about a consistent state.
snapshot(:Goal)Similar to transaction/1, 
but always discards the local modifications. In other words, snapshot/1 
allows a thread to examine a frozen state of the dynamic predicates 
and/or make isolated modifications without affecting other threads and 
without making permanent changes to the database. Where transactions 
allow the global state to be updated atomically from one consistent 
state to the next, a snapshot allows reasoning about a consistent state.