To meta-interpret a program in file File load the interpreter under prolog [meta]. The query is of the form go(File,Goal,Domain) where Goal is represented as a list of atoms and Domain is the name of the domain.
Consider the program in the file ackermann which specifies the ackermann function.
under sicstus prolog: | ?- [meta]. | ?- go(ackermann,[ackermann(s(s(0)),N,s(M))],concrete). M = s(s(0)), N = 0 ? ; M = s(s(s(s(0)))), N = s(0) ? ; M = s(s(s(s(s(s(0)))))), N = s(s(0)) ? ; etc. | ?- go(ackermann,[ackermann(even,one,R)],parity1). R = odd ? ; R = odd ? ; R = odd ? ; etc