% File: gv.pro %Line: Implantation of a global variable ADT %%Essential Functionality declear(Variable,Value) :- assert(binding(Variable,Value)). diplay_bindings :- binding(Variable,Value), write(Variable),write(' -> '),write(Value),nl,fail. display_bindings. value_of(Variable,Value) :- binding(Variable,Value). bind(Variable,NewValue) :- retract(binding(Variable,_)), assert(binding(Variable,NewValue)). undeclear(Variable) :- retract(binding(Variable,_)). %% Arithmetic operator functionality inc(Variable) :- value_of(Variable,X), XP1 is X+1, bind(Variable,XP1). dec(Variable) :- value_of(Variable,X), XP1 is X-1, bind(Variable,XP1). add(Variable,Number) :- value_of(Variable,OldValue), NewValue is OldValue + Number, bind(Variable,NewValue). sub(Variable,Number) :- value_of(Variable,OldValue), NewValue is OldValue - Number, bind(Variable,NewValue).