When a program in a file is compiled, calls of the predicates that are defined in the same file are translated into jump instructions for the sake of efficiency. Therefore, even if new definitions are loaded, the predicates in the first file will continue to use the old definitions, unless the predicates themselves are also overwritten.
Neng-Fa Zhou
2013-01-25