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
(Item,Result) :-
44 write_header_footer(Item,Result).
45
(Item,Result) :-
47 write_header_footer(Item,Result).
48
(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
72
73 74 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 120 121 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 298 299 300 301 302 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].
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).
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([],_,_,[]). 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').