1:- dynamic prolog_files/3, prolog_files/2.    2:- multifile classifiedTerm/1.    3
    4:- use_module(library(regex)).    5
    6:- assert(prolog_files(util,'util')).    7
    8:- dynamic planStepNumber/2.
   16view(Item) :-
   17	write_term(Item,[quoted(true)]),nl,!.
   18
   19viewIf(Item) :-
   20 	(   flpFlag(debug) -> 
   21	    view(Item) ;
   22	    true).
   23
   24seer(Item) :-
   25	write_term(Item,[quoted(true)]),nl,!.
   26
   27
   28scry(Item) :-
   29	findall(Item,(Item,declassified(Item)),Result),
   30	write_header(Item,Result),nl,
   31	write_list(Result),
   32	write_footer(Item,Result),nl,nl.
   33
   34tsScry(Item) :-
   35	findall(Item,Item,Result),
   36	write_header(Item,Result),nl,
   37	sec_write_list(Result),
   38	write_footer(Item,Result),nl,nl.
   39
   40scryList(X,List) :-
   41	findall(X,X,List).
   42
   43write_header(Item,Result) :-
   44	write_header_footer(Item,Result).
   45
   46write_footer(Item,Result) :-
   47	write_header_footer(Item,Result).
   48
   49write_header_footer(Item,Result) :-
   50	write_result_length(Result),write(' for Scrying for: '),
   51	write_term(Item,[quoted(true)]).
   52
   53write_result_length(Result) :-
   54	length(Result,Length),
   55	write(Length),write(' results').
   56
   57write_list(List) :-
   58	member(Term,List),
   59	isDeclassified(Term),
   60	tab(4),write_term(Term,[quoted(true)]),write('.'),nl,
   61	fail.
   62write_list(_).
   63
   64sec_write_list(List) :-
   65	member(Term,List),
   66	tab(4),write_term(Term,[quoted(true)]),write('.'),nl,
   67	fail.
   68sec_write_list(_).
   69
   70
   71%%% COMPLETIONS FOR TAB COMPLETIONS
   72
   73				% listCompletions(Completions) :-
   74				% 	findall(X,current_atom(X),Completions).
   75
   76listCompletions(Completions) :-
   77	setof(X,M^P^current_predicate(X,M:P),Completions).
   78
   79listCompletionsForModule(M,Completions) :-
   80	setof(X,M^P^current_predicate(X,M:P),Completions).
   86declassified_orig(Goal) :-
   87	Goal,
   88	forall(occurs:sub_var(X,Goal),isDeclassified(X)).
   89
   90declassified(Goal) :-
   91	Goal,
   92	forall(term_contains_subterm(X,Goal),isDeclassified(X)).
   93
   94isDeclassified(Term) :-
   95	forall(classifiedTerm(Sub),free_of_term(Sub, Term)).
  108listFiles(Files) :-
  109	listFilesA(FilesA),
  110	listFilesB(FilesB),
  111	setof(File,FilesA^FilesB^(member(File,FilesA) ; member(File,FilesB)),Files).
  112
  113listFilesA(Files) :-
  114	setof(File,Predicate^(predicate_property(Predicate,file(File)),not((File =~ "^/usr/lib/swi-prolog");(File =~ "^/usr/local/lib/swipl-");(File =~ "lib/swipl/pack"))),Files).
  115
  116listFilesB(Files) :-
  117	setof(File,Project^Mode^Exported^(prolog_files(Mode,File);prolog_files(Mode,File,Exported)),Files).
  118
  119				% grep_atoms(Search) :-
  120				% 	setof(Atom,current_atom(Atom),List),
  121				% 	member(Atom,List),
  122
  123prolog_record_load(Type,File) :-
  124	write('Prolog-Loading-'),write(Type),write(': '),write(File),nl,
  125	assert(prolog_files(Type,File)).
  126
  127prolog_record_load(Type,File,X) :-
  128	write('Prolog-Loading-'),write(Type),write(': '),write(File),write(' :: '),write(X),nl,
  129	assert(prolog_files(Type,File,X)).
  130
  131prolog_ensure_loaded(File) :-
  132	prolog_record_load(ensure_loaded,File),
  133	ensure_loaded(File).
  134
  135prolog_consult(File) :-
  136	prolog_record_load(consult,File),
  137	consult(File).
  138
  139prolog_include(File) :-
  140	prolog_record_load(include,File).
  141
  142prolog_use_module(File) :-
  143	prolog_record_load(use_module,File),
  144	use_module(File).
  145
  146prolog_use_module(File,X) :-
  147	prolog_record_load(use_module,File,X),
  148	use_module(File,X).
  149
  150prolog_import(File) :-
  151	prolog_record_load(import,File),
  152	import(File).
  178directory_files_no_hidden(Dir,Files) :-
  179	directory_files(Dir,TmpFiles),
  180	findall(File,(member(File,TmpFiles),not(atom_concat('.',_,File))),Files).
  181
  182sorted_directory_files(Dir,Files) :-
  183	directory_files(Dir,TmpFiles),
  184	sort(TmpFiles,Files).
  185
  186sorted_directory_files_no_hidden(Dir,Files) :-
  187	directory_files_no_hidden(Dir,TmpFiles),
  188	sort(TmpFiles,Files).
  189
  190load_all_prolog_files_in_subdirectories_with_matching_names(Dir) :-
  191	nl,write('LOADING DIR(1): '),write(Dir),nl,
  192	sorted_directory_files_no_hidden(Dir,Files),
  193	member(File,Files),
  194	atom_concat(File,'.pl',PrologFile),
  195	atomic_list_concat([Dir,'/',File,'/',PrologFile],'',FullFileName),
  196	write(FullFileName),nl,
  197	exists_file(FullFileName),
  198	tab(4),write('Loading Prolog File: '),write(FullFileName),nl,
  199	prolog_consult(FullFileName),
  200	fail.
  201load_all_prolog_files_in_subdirectories_with_matching_names(Dir).
  202
  203load_frdcsa_project_files(Project,Dir) :-
  205	exists_directory(Dir),
  206	sorted_directory_files_no_hidden(Dir,Files),
  207	member(File,Files),
  208	split_string(File, "-", "", SplitFile),
  209	atomic_list_concat(SplitFile, "_",FileProlog),
  211	load_frdcsa_project_files_helper(Project,Dir,File,FileProlog),
  212	fail
  212.
  213load_frdcsa_project_files(Project,Dir) :-
  215	not(exists_directory(Dir)),
  216	write('WARNING: Directory does not exist: '),write(Dir),nl,
  217	fail
  217.
  218load_frdcsa_project_files(Project,Dir).
  219
  220load_myfrdcsa1p1_project_files(Project,Dir) :-
  222	exists_directory(Dir),
  223	sorted_directory_files_no_hidden(Dir,Files1),
  224	member(File1,Files1),
  225	atomic_list_concat([Dir,'/',File1],NewDir),
  226	exists_directory(NewDir),
  227	sorted_directory_files_no_hidden(NewDir,Files2),
  228	member(File2,Files2),
  229	split_string(File1, "-", "", SplitFile),
  230	atomic_list_concat(SplitFile, "_",FileProlog),
  232	atomic_list_concat([File1,'/',File2],NewFile),
  233	atomic_list_concat([Dir,'/',NewFile],TmpFullFileName),	
  234	exists_directory(TmpFullFileName),
  235	load_frdcsa_project_files_helper(Project,Dir,NewFile,FileProlog),
  236	fail
  236.
  237load_myfrdcsa1p1_project_files(Project,Dir) :-
  239	not(exists_directory(Dir)),
  240	write('WARNING: Directory does not exist: '),write(Dir),nl,
  241	fail
  241.
  242load_myfrdcsa1p1_project_files(Project,Dir).
  243
  244load_frdcsa_project_files_helper(Project,Dir,File,FileProlog) :-
  245	atomic_list_concat([Dir,'/',File,'/frdcsa/sys/',Project,'/',FileProlog,'.pl'],'',FullFileName),
  246	exists_file(FullFileName),
  247	write('Loading Source File: '),write(FullFileName),nl,
  248	prolog_consult(FullFileName),
  249	fail.
  250load_frdcsa_project_files_helper(Project,Dir,File,FileProlog) :-
  251	atomic_list_concat([Dir,'/',File,'/frdcsa/sys/',Project,'/autoload'],'',FullDirName),
  253	exists_directory(FullDirName),
  254	tab(4),write('Loading Directory Files: '),write(FullDirName),nl,
  255	load_all_files_in_subdirectories_with_matching_names(FullDirName,'\\.pl$')
  255.
  263load_all_files_having_extension_in_directory(Dir,Extension) :-
  264	nl,write('LOADING DIR(2): '),write(Dir),nl,
  265	sorted_directory_files(Dir,Files),
  266	member(File,Files),
  267	atom_concat(Thing,Extension,File),
  268	atomic_list_concat([Dir,'/',File],'',FullFileName),
  269	exists_file(FullFileName),
  270	tab(4),write('Loading Prolog File: '),write(FullFileName),nl,
  271	prolog_consult(FullFileName),
  272	fail.
  273load_all_files_having_extension_in_directory(Dir,Extension).
  274
  275load_all_prolog_files_in_directory(Dir) :-
  276	load_all_files_having_extension_in_directory(Dir,'.pl').
  281load_all_files_having_extension_in_directory_and_all_subdirectories(Dir,Extension) :-
  282	exists_directory(Dir),
  283	nl,write('LOADING DIR(3): '),write(Dir),nl,
  284	sorted_directory_files(Dir,Files),
  285	member(File,Files),
  286	atom_concat(Thing,Extension,File),
  287	atomic_list_concat([Dir,'/',File],'',FullFileName),
  288	exists_file(FullFileName),
  289	tab(4),write('Loading Prolog File: '),write(FullFileName),nl,
  290	prolog_consult(FullFileName),
  291	fail.
  292load_all_files_having_extension_in_directory_and_all_subdirectories(Dir,Extension).
  293
  294:- include('shell-utils.pl').  295:- prolog_include('shell-utils.pl').  296
  297				% make :-
  298				% 	listFiles(Files),
  299				% 	member(File,Files),
  300				% 	qcompile(File),
  301				% 	fail.
  302				% make.
  303
  304load_qlf(File) :-
  305	atom_concat(Tmp1,'.pl',File),
  306	atom_concat(Tmp1,'.qlf',File2),
  307	consult(File2).
  308
  309load_qlf_but_failed(File) :-
  310	true.
  313nextCounter(Task,ID) :-
  314	\+ counter(Task,_),
  315	NewID is 1,
  316	atom_concat(Task,NewID,ID),
  317	assert(counter(Task,NewID)).
  318nextCounter(Task,ID) :-
  319	counter(Task,OrigID),
  320	retractall(counter(Task,OrigID)),
  321	NewID is OrigID + 1,
  322	atom_concat(Task,NewID,ID),
  323	assert(counter(Task,NewID)).
  324
  325resetCounter(Task) :-
  326	retractall(counter(Task,_)).
  327
  328string_match_p(String,Regex) :-
  329	regex(Regex, [], String, []).
  330
  331load_all_files_in_subdirectories_with_matching_names(Dir,Regex) :-
  332	nl,write('LOADING DIR RECURSIVELY: '),write(Dir),nl,
  333	sorted_directory_files_no_hidden(Dir,Files),
  334	member(File,Files),
  335	atomic_list_concat([Dir,'/',File],'',FullFile),
  336	(exists_file(FullFile) ->
  337	 (string_match_p(FullFile,Regex) -> (tab(4),write('LOADING FILE: '),write(FullFile),nl,prolog_consult(FullFile))) ;
  338	 load_all_files_in_subdirectories_with_matching_names(FullFile,Regex)),
  339	fail.
  340load_all_files_in_subdirectories_with_matching_names(Dir,Regex).
  341
  342load_all_prolog_files_in_subdirectories_with_downcased_matching_names(Dir) :-
  343	nl,write('LOADING DIR(4): '),write(Dir),nl,
  344	sorted_directory_files_no_hidden(Dir,Files),
  345	member(File,Files),
  346	atom_concat(File,'.pl',Tmp),
  347	view(1117),
  348	downcase_atom(Tmp,PrologFile),
  349	atomic_list_concat([Dir,'/',File,'/',PrologFile],'',FullFileName),
  350	write(FullFileName),nl,
  351	exists_file(FullFileName),
  352	tab(4),write('Loading Prolog File: '),write(FullFileName),nl,
  353	prolog_consult(FullFileName),
  354	fail.
  355load_all_prolog_files_in_subdirectories_with_downcased_matching_names(Dir).
  356
  357getListing(M,Listing) :-
  358 	findall(Result,(current_predicate(_,M:P),catch(clause(M:P,Result),_,true)),Listing).
  378findDefinitionInformation(Predicate/ArityArg,DefinitionInformation) :-
  379	(number(ArityArg) -> (Arity = ArityArg) ; (atom_number(ArityArg,Arity))),
  380	repl(_,Arity,ArgList),
  381	Term =.. [Predicate|ArgList],
  382	predicate_property(Term,file(Filename)),
  383	predicate_property(Term,line_count(LineNumber)),
  384	DefinitionInformation = [Filename,LineNumber].
 write_list_no_tabs(_)
  422write_list_no_tabs(List) :-
  423	member(Term,List),
  424	isDeclassified(Term),
  425	write_term(Term,[quoted(true)]),write('.'),nl,
  426	fail.
  427write_list_no_tabs(_).
  428
  429allTermAssertionsNoPredicates(Term,Assertions) :-
  430	listFiles(Files),
  431	findall(C,(member(File,Files),atom(File),predicate_property(user:P,file(File)),clause(P,B,R),C = :-(P,B)),Cs),
  432	findall(Output,(member(Clause,Cs),occurs:sub_var(Term,Clause),Clause = (:-(Body,Head)),((Head = true) -> (Output = Body) ; (Output = :-(Body,Head)))),Assertions).
  439allTermAssertionsNoPred(Term,Assertions) :-
  440	listFiles(Files),
  441	setof(C,File^Files^M^P^B^R^(member(File,Files),atom(File),(predicate_property(M:P,file(File));predicate_property(M:P,dynamic)),clause(P,B,R),C = :-(P,B)),Cs),
  442	setof(Output,Clause^Cs^Term^Body^Head^(member(Clause,Cs),occurs:sub_var(Term,Clause),Clause = (:-(Body,Head)),((Head = true) -> (Output = Body) ; (Output = :-(Body,Head)))),Assertions).
  443
  444allTermAssertions(Term) :-
  445	allTermAssertions(Term,Assertions),
  446	write_list(Assertions).
  454allTermAssertions(Term,Assertions) :-
  455	listFiles(Files),
  456	setof(C,File^Files^M^P^B^R^(member(File,Files),atom(File),(predicate_property(M:P,file(File));predicate_property(M:P,dynamic)),clause(P,B,R),C = :-(P,B)),Cs),
  457	setof(Output,Clause^Cs^Term^Body^Head^(member(Clause,Cs),term_contains_subterm_nonvar(Term,Clause),Clause = (:-(Body,Head)),((Head = true) -> (Output = Body) ; (Output = :-(Body,Head)))),Assertions).
  458
  459allTermAssertionsSource(Term,Results) :-
  460	listFiles(Files),
  461	setof([C,File],File^Files^M^P^B^R^(member(File,Files),atom(File),(predicate_property(M:P,file(File));predicate_property(M:P,dynamic)),clause(P,B,R),C = :-(P,B)),Cs),
  462	setof(Output,Clause^Cs^Term^Body^Head^(member([Clause,File],Cs),term_contains_subterm_nonvar(Term,Clause),Clause = (:-(Body,Head)),((Head = true) -> (Output = [Body,File]) ; (Output = [:-(Body,Head),File]))),Results).
  470getFullListing(Assertions) :-
  471	listFiles(Files),
  472	findall(C,(member(File,Files),atom(File),predicate_property(user:P,file(File)),clause(P,B,R),C = :-(P,B)),Cs),
  473	findall(Output,(member(Clause,Cs),Clause = (:-(Body,Head)),((Head = true) -> (Output = Body) ; (Output = :-(Body,Head)))),Assertions).
  474
  475dump :-
  476	getFullListing(Assertions),write_list(Assertions).
  487get_all_subterms_with_leading_predicate_orig(Predicate,Matches) :-
  488	findall(C,(predicate_property(user:P,file(_)),clause(P,B,R),C = :-(P,B)),Clauses),
  489	findall(Term,(member(Clause,Clauses),occurs:sub_term(Term,Clause),nonvar(Term),Term =.. [Predicate|B]),Matches).
  495get_all_subterms_with_leading_predicate(Predicate,Matches) :-
  496	findall(C,(predicate_property(user:P,file(_)),clause(P,B,R),C = :-(P,B)),Clauses),
  497	findall(Term,(member(Clause,Clauses),occurs:sub_term(Term,Clause),nonvar(Term),((compound(Term)) -> (compound_name_arguments(Term,Predicate,B)) ; (Term = Predicate))),Matches).
 toUppercase(A, A)
 toLowercase(A, A)
 toPropercase(A, A)
 toCamelcase(A, A)
  572capitalize(WordLC, WordUC) :-
  573	atom_chars(WordLC, [FirstChLow|LWordLC]),
  574	atom_chars(FirstLow, [FirstChLow]),
  575	upcase_atom(FirstLow, FirstUpp),
  576	atom_chars(FirstUpp, [FirstChUpp]),
  577	atom_chars(WordUC, [FirstChUpp|LWordLC]),!.
  578
  579tokensToPrologCamelCase(Input,Output) :-
  580	[Head|Rest] = Input,
  581	downcase_atom(Head,DowncasedHead),
  582	findall(CapitalizedWord,(member(Word,Rest),capitalize(Word,CapitalizedWord)),RestWords),
  583	append([DowncasedHead],RestWords,Words),
  584	atomic_list_concat(Words,'',Output).
  585
  586
  587kifToPrologCamelCase(Input,Output) :-
  588	atomic_list_concat([Head|Rest],'-',Input),
  589	downcase_atom(Head,DowncasedHead),
  590	findall(CapitalizedWord,(member(Word,Rest),capitalize(Word,CapitalizedWord)),RestWords),
  591	append([DowncasedHead],RestWords,Words),
  592	atomic_list_concat(Words,'',Output).
  593
  594prologCamelCaseToKIF(Input,Output) :-
  595	decamelcaseIntoList(Input,List),
  596	findall(DowncasedAtom,(member(Codes,List),atom_codes(Atom,Codes),capitalize(Atom,CapitalizedAtom),downcase_atom(Atom,DowncasedAtom)),Words),
  597	atomic_list_concat(Words,'-',Output).
  598
  599decamelcase(Input,Output) :-
  600	decamelcaseIntoList(Input,List),
  601	view([list,List]),
  602	findall(CapitalizedAtom,(member(Codes,List),atom_codes(Atom,Codes),capitalize(Atom,CapitalizedAtom)),Words),
  603	view([words,Words]),
  604	atomic_list_concat(Words,' ',Output).
  608decamelcaseIntoList(Input,List) :-
  609	getNextWord(Input,Word,New),
  610	view([input,Input,word,Word,new,New]),
  611	decamelcaseIntoList(New,List2),
  612	List = [Word|List2].
  613
  614decamelcaseIntoList('',[]).
  628:- use_module(library(regex)).  629
  630regex_atom(Regex,Unknown,Input,OutputList) :-
  631	atom_string(Input,String),
  632	regex(Regex,Unknown,String,List),
  633	findall(Item,(member(Item,List),atom_string(Output,Item)),OutputList).
  634
  635getNextWord(Atom,Word,NewAtom) :-
  637	regex_atom("^([A-Za-z][a-z]*)",[],Atom,[Word]),
  638	atom_length(Word,WordLength),
  639	atom_length(Atom,AtomLength),
  640	view([atom,Atom,word,Word,atomLength,AtomLength,wordLength,WordLength]),
  641	SecondLength is AtomLength - WordLength,
  642	sub_atom(Atom,WordLength,SecondLength,_,NewAtom)
  642.
  643
  654list_terms_starting_with_predicate(Predicate,Terms) :-
  655	findall(P,(predicate_property(user:P,file(_)),clause(P,B,R),C = :-(P,B),P =.. [Predicate|A]),Terms).
  656
  657log_message(Message) :-
  658	getCurrentDateTime(DateTime),
  659	generateGlossFor(DateTime,Gloss),
  660	atomic_list_concat(['On',Gloss,':',Message],' ',LogMessage),
  661	write(LogMessage),nl,nl.
  662
  663test_multiarity_predicate.
  664test_multiarity_predicate(_).
  665test_multiarity_predicate(_,_).
  666
  667term_contains_subterm(SubTerm, Term) :-
  668	not(compound(Term)),
  669	SubTerm=Term.
  670term_contains_subterm(SubTerm, Term) :-
  671	compound(Term),
  672	compound_name_arguments(Term, SubTerm, _).
  673term_contains_subterm(SubTerm, Term) :-
  674	compound(Term),
  675	arg(_, Term, SubSubTerm),
  676	term_contains_subterm(SubTerm, SubSubTerm).
  677
  678term_contains_subterm_nonvar(SubTerm, Term) :-
  679	not(compound(Term)),
  680	nonvar(Term),
  681	SubTerm=Term.
  682term_contains_subterm_nonvar(SubTerm, Term) :-
  683	compound(Term),
  684	nonvar(Term),
  685	compound_name_arguments(Term, SubTerm, _).
  686term_contains_subterm_nonvar(SubTerm, Term) :-
  687	compound(Term),
  688	nonvar(Term),
  689	arg(_, Term, SubSubTerm),
  690	term_contains_subterm_nonvar(SubTerm, SubSubTerm).
  702term_contains_variable(1,A).
  703
  704write_data_to_file(Data,Filename) :-
  705	open(Filename, write, S),
  706	write(S,Data),
  707	close(S).
  708
  709writeq_data_to_file(Data,Filename) :-
  710	open(Filename, write, S),
  711	writeq(S,Data),
  712	close(S).
  713
  714read_all([])     --> [].
  715read_all([L|Ls]) --> [L], read_all(Ls).
  716
  717read_data_from_file(File,Data) :-
  718	once(phrase_from_file(read_all(Ls), File)),
  719	atom_string(Data,Ls).
  720
  721typeHasMainType(consult,consult).
  722typeHasMainType(ensure_loaded,ensure_loaded).
  723typeHasMainType(flp,consult).
  724typeHasMainType(include,include).
  725typeHasMainType(use_module,use_module).
  726typeHasMainType(util,ensure_loaded).
  727
  728getMainTypeForFilename(Filename,MainType) :-
  729	prolog_files(Type,Filename),
  730	typeHasMainType(Type,MainType).
  731
  732sublist([X|_],1,1,[X]).
  733sublist([],_,_,[]).		% I use this one for the case bases
  734sublist([X|Xs],1,K,[X|Ys]):-
  735	K>1,
  736	K1 is K-1,
  737	sublist(Xs,1,K1,Ys).
  738sublist([_|Xs],I,K,Ys):-
  739	I > 1,
  740	I1 is I-1,
  741	sublist(Xs,I1,K,Ys).
  742
  743kmax_get_index_of_first_item_in_list(Item,List,Index) :-
  744	nth1(Index,List,Item),!.
  745
  746chomp(String,Atom) :-
  747	regex_atom('^(.+)\n*$',[s],String,[Output]),
  748	atom_string(Atom,Output).
  754allAssertedKnowledge(Assertions) :-
  755	listFiles(Files),
  756	setof(C,File^Files^M^P^B^R^(member(File,Files),atom(File),(predicate_property(M:P,file(File));predicate_property(M:P,dynamic)),clause(P,B,R),C = :-(P,B)),Cs),
  757	setof(Clause,Cs^member(Clause,Cs),Assertions).
  758
  759allFacts(Facts) :-
  760	allAssertedKnowledge(Assertions),
  761	findall(Fact,
  762		(   member(Assertion,Assertions),
  763		    Assertion = (:-(Body,Head)),
  764		    (	(   Head = true) ->
  765			(   Fact = Body) ;
  766			fail)),
  767		Facts).
  773arities(P,Arities) :-
  774	setof(Arity,X^Y^B^P^A^(current_predicate(X,Y:B),B =.. [P|A],length(A,Arity)),Arities).
  775
  776planStepNumber(planFn(1),1).
  777
  778setSingleValued(Assertion,Result) :-
  779	Assertion =.. [P|Args],
  780	reverse(Args,[Last|Rest]),
  781	reverse(Rest,Tmp),
  782	append(Tmp,[A],NewArgs),
  783	NewAssertion =.. [P|NewArgs],
  784	findall(NewAssertion,NewAssertion,NewAssertions),
  786	view([newAssertions,NewAssertions])
  786.
  787	
  788	
  800frdcsaElConcatDir(List,FileName) :-
  802	atomic_list_concat(List,'/',FileName)
  802.
  803
  804kbs2_import_export([input(Input),inputType(InputType),outputType(OutputType),results(Results)]) :-
  807	
  808	InputFile = '/tmp/kbs2-import-export-input.txt',
  809	OutputFile = '/tmp/kbs2-import-export-output.txt',
  810	writeq_data_to_file(Input,InputFile),
  811	atomic_list_concat([
  812			    'import-export -i \'',
  813			    InputType,
  814			    '\' -o \'',
  815			    OutputType,
  816			    '\' -f \'',
  817			    InputFile,'\' > ',
  818			    OutputFile
  819			   ],'',Command),
  820	shell(Command),
  821	read_data_from_file(OutputFile,Results)
  821.
  822
  823timestamp(TimeStamp) :-
  824	shell_command_to_string('timestamp',TimeStamp).
  825
  826shell_command_to_string(Command,String) :-
  827	File = '/tmp/shell_command_to_string.txt',
  828	atomic_list_concat(['rm -f ',File],'',Command1),
  829	shell(Command1),
  830	atomic_list_concat([Command,' > ',File],'',Command2),
  831	shell(Command2),
  832	read_data_from_file(File,String),
  833	shell(Command1).
  834
  835shell_quote_term(Term,Atom) :-
  836	with_output_to(atom(Atom),write_term(Term,[quoted(true)])).
  837
  838shell_command_async(Command,STDOUT) :-
  839	File = '/tmp/flp-util.sh',
  840	write_data_to_file(Command,File),
  841	atomic_list_concat(['shell-command-async-wrapper.sh',File],' ',ShellCommand),
  842	view(['shell_command_async/2',ShellCommand]),
  843	shell_command_to_string(ShellCommand,STDOUT),
  844	view([stdout2,STDOUT]).
  845
  846shell_command_async(Command) :-
  847	view(['shell_command_async/1',Command]),
  848	shell_command_async(Command,STDOUT),
  849	view([stdout1,STDOUT]).
  850
  851replaceArgPos(L, I, X, R) :-
  853	Dummy =.. [dummy|L],
  854	J is I + 1,
  855	setarg(J, Dummy, X),
  856	Dummy =.. [dummy|R]
  856.
  857
  858repl(X, N, L) :-
  859	length(L, N),
  860	maplist(=(X), L).
  861
  862replaceArgPositions(List,[Position|RestPositions],[Replacement|RestReplacements],NewList) :-
  863 	replaceArgPos(List,Position,Replacement,TmpNewList),
  864 	replaceArgPositions(TmpNewList,RestPositions,RestReplacements,NewList).
  865replaceArgPositions(List,[Position],[Replacement],NewList) :-
  866	replaceArgPos(List,Position,Replacement,NewList).
  867
  868my_set_of(X,Y,C) :-
  869	findall(X,Y,Z),
  870	view([Z]),
  871	setof(A,(member(B,Z),nonvar(B)),C).
  872
  873getFirst(Var,Query,Result) :-
  874	findall(Var,Query,Results),
  875	nth0(0,Results,Result),
  876	!.
  877
  878executeCommandOnSystem(loginFn(UserName,System),TmpCommand) :-
  879	view([executeCommandOnSystem,[loginFn(UserName,System),TmpCommand]]),
  880	hasIPAddress(System,IP),
  881	atomic_list_concat(TmpCommand,'',Command),
  882	atomic_list_concat([
  883			    'remote-execution.pl -s ',
  884			    IP,
  885			    ' -u ',
  886			    UserName,
  887			    ' -c "',
  888			    Command,
  889			    '"'
  890			   ],'',ShellCommand),
  891	shell_command_async(ShellCommand).
  908executeCommandOnSystem(loginFn(UserName,System),TmpCommand,Result) :-
  909	view([executeCommandOnSystem(loginFn(UserName,System),TmpCommand,Result)]),
  910	hasIPAddress(System,IP),
  911	atomic_list_concat(TmpCommand,'',Command),
  912	atomic_list_concat([
  913			    'remote-execution.pl -s ',
  914			    IP,
  915			    ' -u ',
  916			    UserName,
  917			    ' -c "',
  918			    Command,
  919			    '"'
  920			   ],'',ShellCommand),
  921	shell_command_to_string(ShellCommand,Result).
  938hasTruthValue(Expression,Value) :-
  939	(   Expression -> (Value = true) ; (Value = fail)),
  940	view([expression,Expression,value,Value]).
  952allTermAssertionsWrapper(Search) :-
  953	allTermAssertions(Search,Results),
  954	write_list(Results),!.
  955
  956ensureAsserted(Fact) :-
  957	(   not(Fact) -> (assert(Fact),view([fact,Fact])) ; true).
  958
  959:- prolog_include('regex.pl').  960:- include('regex.pl').