see/1¶
see(+ S)*
If S is a currently opened input stream then it is assumed to be the current input stream. If S is an atom it is taken as a filename. If there is no input stream currently associated with it, then it is opened for input, and the new input stream thus created becomes the current input stream. If it is not possible to open the file, an error occurs. If there is a single opened input stream currently associated with the file, it becomes the current input stream; if there are more than one in that condition, then one of them is chosen.
When S is a stream not currently opened for input, an error may be reported, depending on the state of the file_errors
flag. If S is neither a stream nor an atom the predicates just fails.