:- use_module(library(tidylog), [ codes_term/2 , variable_name/2 ]). term_expansion(Codes -> Term, Test) :- format(atom(Head), "~s", [Codes]), Test = ( Head :- codes_term(Codes,T), T == Term ), tap:register_test(Head). :- use_module(library(tap)). % variables 'named variable' :- codes_term(`X.`, Var), var(Var), variable_name(Var, Name), Name == 'X'. 'anonymous variable' :- codes_term(`_.`, Var), var(Var), variable_name(Var, Name), Name == '_'. 'named singleton variable' :- codes_term(`_Ignore.`, Var), var(Var), variable_name(Var, Name), Name == '_Ignore'. :- ['t/samples'].