%File: arithmetic.pro %Line: a nondestructive arithmetic program :- consult('gv.pro'). add(V1,V2,Result) :- binding(V1,R1), binding(V2,R2), Value is R1 + R2, assert(binding(Result,Value)). sub(V1,V2,Result) :- binding(V1,R1), binding(V2,R2), Value is R1 - R2, assert(binding(Result,Value)). mul(V1,V2,Result) :- binding(V1,R1), binding(V2,R2), Value is R1 * R2, assert(binding(Result,Value)). div(V1,V2,Result) :- binding(V1,R1), binding(V2,R2), Value is R1 / R2, assert(binding(Result,Value)). exp(V1,V2,Result) :- binding(V1,R1), binding(V2,R2), Value is R1 ^ R2, assert(binding(Result,Value)).