var/1 could be defined as
var(X) :- free(X). var(X) :- meta(X).
Success: var(X). var(_abc). var(_). var(X{a}). coroutine, X>0, var(X). Fail: var(atom). var('Abc').