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