:- source. :- [library(ytest)]. :- [library(hacks)]. :- [meta_tests]. meta_expand( Clause, Canon) :- source_module(M), indicator( M:Clause, I, _J), dynamic( I ), assert(Clause, R), clause(J, B, R), fully_strip_module(J, MH, H), ( MH == M -> HF = H ; HF = MH:H ), ( B == true -> Canon = HF ; Canon = ( HF :- B ) ), erase(R). indicator(MC, HM:N/A, HM:G0) :- fully_strip_module(MC, M, C), ( C = ( H:- _) -> true ; C = H), fully_strip_module(M:H, HM, HF), functor(HF, N, A), functor(G0, N, A). :- initialization run_tests.