As I understand it from the documentation, If a predicate is undefined, a library file which has the predicate is automatically loaded and the predicate is called again. So will all the other predicates in that file also be loaded?
Loaded, yes. It loads the entire module in which the predicate resides. It imports only the missing predicate though. In other words, it basically runs