:- object(joePerson). :- public(growOld/0). :- public(address/1). :- public(age/1). :- dynamic(age/1). :- public(name/1). :- public(phone/1). :- public(counter/1). :- dynamic(counter/1). :- public(incCounter/0). growOld :- retract(age(Old)), New is Old + 1, asserta(age(New)). address('8 Octave Street'). age(30). name('John'). phone(11-11-11-11). counter(0). incCounter :- (::retract(counter(Old)) -> true ; Old = 0), New is Old + 1, ::asserta(counter(New)). :- end_object.