DEFINITIONS
 FILES(x) == files(x);
 EXTERNAL_FUNCTION_FILES == (STRING --> POW(STRING));
 FULL_FILES(x) == full_files(x);
 EXTERNAL_FUNCTION_FULL_FILES == (STRING --> POW(STRING));
 DIRECTORIES(x) == directories(x);
 EXTERNAL_FUNCTION_DIRECTORIES == (STRING --> POW(STRING));
 FULL_DIRECTORIES(x) == full_directories(x);
 EXTERNAL_FUNCTION_FULL_DIRECTORIES == (STRING --> POW(STRING));

 EXTERNAL_PREDICATE_DIRECTORY_EXISTS == (STRING);
 DIRECTORY_EXISTS(A) == (directory_exists(A)=TRUE);
 EXTERNAL_PREDICATE_FILE_EXISTS == (STRING);
 FILE_EXISTS(A) == (file_exists(A)=TRUE);
 EXTERNAL_PREDICATE_FILE_PROPERTY == (STRING*STRING);
 FILE_PROPERTY(A,B) == (file_property(A,B)=TRUE);
 EXTERNAL_FUNCTION_FILE_PROPERTY_VALUE == ((STRING*STRING)-->INTEGER);
 FILE_PROPERTY_VALUE(A,B) == (file_property_value(A,B));
 EXTERNAL_FUNCTION_DIRECTORY_PROPERTY_VALUE == ((STRING*STRING)-->INTEGER);
 DIRECTORY_PROPERTY_VALUE(A,B) == (directory_property_value(A,B));
 EXTERNAL_PREDICATE_DIRECTORY_PROPERTY == (STRING*STRING);
 DIRECTORY_PROPERTY(A,B) == (directory_property(A,B)=TRUE);

 // external function synonyms for external predicates
 EXTERNAL_FUNCTION_GET_DIRECTORY_EXISTS == (STRING --> BOOL);
 GET_DIRECTORY_EXISTS(A) == directory_exists(A);
 EXTERNAL_FUNCTION_GET_FILE_EXISTS == (STRING --> BOOL);
 GET_FILE_EXISTS(A) == file_exists(A);
 EXTERNAL_FUNCTION_GET_DIRECTORY_PROPERTY == (STRING*STRING --> BOOL);
 GET_DIRECTORY_PROPERTY(A,B) == directory_property(A,B);
 EXTERNAL_FUNCTION_GET_FILE_PROPERTY == (STRING*STRING --> BOOL);
 GET_FILE_PROPERTY(A,B) == directory_property(A,B)
