Assign
assign(+Ref, +PropertyName, +Value): assigns Value to the mutable property named PropertyName (an it.unibo.tuprolog.core.Atom) on Ref -- an it.unibo.tuprolog.solve.libs.oop.ObjectRef, it.unibo.tuprolog.solve.libs.oop.TypeRef, or $Alias expression -- resolving Value itself as a $Alias expression first, if it looks like one. Succeeds deterministically if the assignment was performed.
This is what the fluent :=/2 syntax lowers to for property writes (see it.unibo.tuprolog.solve.libs.oop.rules.ColonEquals.Assignment): Obj.name := joe compiles down to assign(Obj, name, joe).
Throws
if Ref has no mutable property named PropertyName accepting a value compatible with Value.