This module provides DCG compatible rules for managing a state
variable which consistists of an environment, which contains
a set of key-value mappings. The predicates do a number of checks
to ensure safe and consistant use.
-  init_env// is det
- Set state to empty environment.
-  key_val(?Key, ?Val)// is nondet
- Enumerate all keys and associated values.
-  get_key(+Key, +Default, ?Val)// is det
- Unify Val with value associated with Key or Default if not present.
-  get_key(+Key, ?Val)// is det
- Unify Val with value associated with Key.
-  set_key(+Key, ?Val)// is det
- Set value associated with Key to Val.
-  upd_key(+Key, ?Val1, ?Val2)// is det
- Unify Val1 with value associated with Key and set new value to Val2.
-  del_key(+Key)// is det
- Remove Key from environment.
-  sel_key(+Key, ?Val)// is det
- Remove Key from environment and unify Val with its value.
-  ins_key(+Key, ?Val)// is det
-  ins_key(+Key)// is det
- Add Key to environment with given value or unbound if no value given.
-  with_key(+Key, :Phrase)// is nondet
- Use Phrase to compute new value of key from old.
-  with_env(:Phrase) is nondet
- Run phrase with initial state equal to an empty environment.
Undocumented predicates
The following predicates are exported, but not or incorrectly documented.
-  key(Arg1, Arg2, Arg3)
-  ins_key(Arg1, Arg2, Arg3)
-  ins_keys(Arg1, Arg2, Arg3)
-  sel_keys(Arg1, Arg2, Arg3)