3prolog_must(X):-X,!.
4prolog_must(X):-trace,not(X).
5
6:-dynamic(asserted/4).
7:-dynamic(assertion/13).
8
10
11:-use_module('cyc.pl').
12
13current_file(FileBase,Dir):-current_stream(File,read,_Stream),atom(File),is_absolute_file_name(File),
14 file_directory_name(File,Dir),file_base_name(File,FilePart),once(FileBase=FilePart;file_name_extension(FileBase,_Ext,FilePart)).
15
16asserta_if_new(A):-retract(A),fail.
17asserta_if_new(A):-asserta(A),!.
18
19:- current_file(F,Dir),writeq(current_file(F,Dir)),nl,!,
20 asserta_if_new(user:file_search_path(cyc_api, Dir)),asserta_if_new(library_directory(Dir)).
21
22some_data_file(File,Filename):-
23 absolute_file_name(library(File),[extensions(['.pl','.qlf',''])],Filename),exists_file(Filename),!.
24some_data_file(File,Filename):-
25 absolute_file_name(cyc_api(File),[extensions(['.pl','.qlf',''])],Filename),exists_file(Filename),!.
26some_data_file(Filename,Filename).
27
28cycdataFile(File):-some_data_file(File,Filename),exists_file(Filename),debugFmt(ensure_qlf_loaded(Filename)),ensure_qlf_loaded(Filename).
29
30cycdataFile(File,File):-cycdataFile(File).
31
32init_cycdataFile(F):-initialization(cycdataFile(F)).
33
34:-ensure_loaded('../logicmoo_module_aiml_shared').
35
36ensure_qlf_loaded(Name):-!,translate_cyc_datafile(Name).
37ensure_qlf_loaded(Name):-!,ensure_loaded(Name).
38ensure_qlf_loaded(Name):- file_name_extension(FileStem,_,Name),file_name_extension(FileStem,'qlf',QLF),
39 catch((load_files(FileStem,[qcompile(auto)]),(ensure_loaded(Name))),_,(qcompile(FileStem),ensure_loaded(QLF))),!.
40
41
42load_lljs([]):-!.
43load_lljs([X|Xs]):-load_llj(X),!,load_lljs(Xs).
44load_llj(X):-[X].
45
46:-dynamic(cyc_meta_predicate/1).
47:-multifile(cyc_meta_predicate/1).
48:-dynamic(nd_cyc_meta_predicate/3).
49:-multifile(nd_cyc_meta_predicate/3).
50cyc_meta_predicate([]):-!.
51cyc_meta_predicate([X|L]):-cyc_meta_predicate(X),cyc_meta_predicate(L),!.
53cyc_meta_predicate(F/A):- nd_cyc_meta_predicate(F,A,A)->true;
54 (X=F/A, asserta(nd_cyc_meta_predicate(F,A,A)),!,dynamic(X),multifile(X),style_check(-singleton)),!.
56cyc_meta_predicate(X):-throw(X).
57
58:-dynamic(cyc_predicate/1).
59:-multifile(cyc_predicate/1).
60:-dynamic(nd_cyc_predicate/3).
61:-multifile(nd_cyc_predicate/3).
63cyc_predicate([]):-!.
64cyc_predicate([X]):-!,cyc_predicate(X),!.
65cyc_predicate([X|L]):-cyc_predicate(X),cyc_predicate(L),!.
66cyc_predicate(F/A):- nd_cyc_predicate(F,A,A)->true;
67 (X=F/A, asserta(nd_cyc_predicate(F,A,A)),!,dynamic(X),multifile(X),style_check(-singleton)),!.
69cyc_predicate(X):-throw(X).
70
71
72:-dynamic(savedStubs/3).
73:-multifile(savedStubs/3).
74
76
77:- ignore((savedStubs(_, F, A), dynamic(F/A) , multifile(F/A),fail)).
78:- ignore((nd_cyc_meta_predicate(F, A,_), dynamic(F/A) , multifile(F/A),fail)).
79:- ignore((nd_cyc_predicate(F, A,_), dynamic(F/A) , multifile(F/A),fail)).
80
81checkStatics(P):-not(predicate_property(P,dynamic)),trace,throw(P).
82checkStatics(P):-not(predicate_property(P,multifile)),trace,throw(P).
83
84
85orig_source_file(File,P):-absolute_file_name(File,F),var(P),source_file(_,F),!,source_file(P,F).
86
87checkStatics:- orig_source_file('splits/allSplits.pl',P),once(checkStatics(P)),fail.
88checkStatics:-!.
89
90
91:-checkStatics.
92
93
94saveOfLoaded:-!.
95
96file_name_no_extension(File,Base):-file_name_extension(Base,_,File).
97load_cyc_data_file(ZZZ):-debugFmt(ZZZ),maplist(cycdataFile,ZZZ,_).
98
99loadRestOfStages:-expand_file_name('./stage*/*.pl',X),expand_file_name('./stage*/*.qlf',Y),append(X,Y,Z),maplist(file_name_no_extension,Z,ZZ),sort(ZZ,ZZZ),load_cyc_data_file(ZZZ).
100
101loadRestOfKif:-expand_file_name('./stage*/*.kif',X),sort(X,ZZZ),maplist(load_cyc_kif_file,ZZZ).
102
103
104
105
107outputDateDir(FORWARD,NIL1,T1,ASSERTEDTRUEMON,DATE,NIL2,[date(DATE)|MORE]):-integer(DATE),DATE>0,!,
108 outputDateDir(FORWARD,NIL1,T1,ASSERTEDTRUEMON,0,NIL2,MORE).
109
111outputDateDir('BACKWARD',NIL1,T1,ASSERTEDTRUEMON,DATE,NIL2,[dir('BACKWARD')|MORE]):-!,
112 outputDateDir('FORWARD',NIL1,T1,ASSERTEDTRUEMON,DATE,NIL2,MORE).
113
114outputDateDir('CODE',NIL1,T1,ASSERTEDTRUEMON,DATE,NIL2,[dir('CODE')|MORE]):-!,
115 outputDateDir('FORWARD',NIL1,T1,ASSERTEDTRUEMON,DATE,NIL2,MORE).
116
117outputDateDir('FORWARD',NIL1,T1,ASSERTEDTRUEMON,_DATE,NIL2,MORE):-
118 outputDateDir2(NIL1,T1,ASSERTEDTRUEMON,NIL2,MORE).
119
120outputDateDir2(NIL1,T1,ASSERTEDTRUEMON,NIL2,[ntan(NIL1,T1,ASSERTEDTRUEMON,NIL2)]).
121
122
123makeLogicTV('TRUE', 'MONOTONIC',_ASSERTEDTRUEMON,':TRUE-MON').
124makeLogicTV('TRUE', 'DEFAULT',_ASSERTEDTRUEMON,':TRUE-DEF').
125makeLogicTV(_TRUE, _MONOTONIC,'ASSERTED-TRUE-MON',':TRUE-MON').
126makeLogicTV(_TRUE, _DEFAULT,'ASSERTED-TRUE-DEF',':TRUE-DEF').
127makeLogicTV('FALSE', 'MONOTONIC',_ASSERTEDTRUEMON,':FALSE-MON').
128makeLogicTV('FALSE', 'DEFAULT',_ASSERTEDTRUEMON,':FALSE-DEF').
129makeLogicTV(_TRUE, _MONOTONIC,'ASSERTED-FALSE-MON',':FALSE-MON').
130makeLogicTV(_TRUE, _DEFAULT,'ASSERTED-FALSE-DEF',':FALSE-DEF').
131makeLogicTV(A,B,C,D):-concat_atom([':',A,'-',B,'-',C],'',D),!.
132
133tdval(TD):-atom(TD),!,member(TD,[':UNKNOWN',':TRUE-DEF',':TRUE-MON',':FALSE-DEF',':FALSE-MON']),!.
134
135
136
137betterSentence(EL,HL,SENT):-atom(HL),SENT=EL,!.
138betterSentence(EL,HL,SENT):-atom(EL),SENT=HL,!.
139betterSentence(EL,_HL,SENT):-SENT=EL.
140
144outputTrans(IN,OUT):-functor(IN,F,A),outputTrans(F,A,IN,MID),!,outputTrans2(MID,OUT).
145
146outputTrans2(IN,OUT):-IN=..[output,TermOfUnit|_],functor(TermOfUnit,termOfUnit,_),!,OUT=skip(IN).
147outputTrans2(OUT,OUT).
148
149outputTrans(savedStubs,3,A,prologDb(A)).
150outputTrans(':-',1,':-'(A),call(':-'(A))):-debugOnFailure(A),!.
154outputTrans(assertion,_FA,assertion(NUM,'termOfUnit',
155 [nart(NART), NART],
156 'BaseKB',
157 _,'TRUE','FORWARD','MONOTONIC','NIL','T','ASSERTED-TRUE-MON',0,'NIL'),skip(nart(NUM,NART))):-!.
158
159outputTrans(assertion,_FA,assertion(NUM,'termOfUnit',
160 [nart(NART), NART],
161 'BaseKB',
162 _,'TRUE','FORWARD','MONOTONIC','NIL','T','ASSERTED-TRUE-MON',0,'NIL'),skip(nart(NUM,NART))):-!.
163
164
165outputTrans(assertion,_FA,assertion(NUM,ELPRED,ELARGS,MT, HL, TRUE, FORWARD, MONOTONIC,NIL1,T1,ASSERTEDTRUEMON,ZERO,NIL2),
166 output(NEWSENT, NEWMT, PROPS, TRUEMON)):-
167 EL=[ELPRED|ELARGS],
168 betterSentence(EL,HL,SENT),
169 fixupEL(MT,SENT,NEWMT,NEWSENT,[],VARS),!,
170 makeLogicTV(TRUE,MONOTONIC,ASSERTEDTRUEMON,TRUEMON),!,
171 172 (not(tdval(TRUEMON))->debugFmt(nonTD(TRUEMON,assertion(NUM,ELPRED,ELARGS,MT, HL, TRUE, FORWARD, MONOTONIC,NIL1,T1,ASSERTEDTRUEMON,ZERO,NIL2)));true),
173 outputDateDir(FORWARD,NIL1,T1,ASSERTEDTRUEMON,ZERO,NIL2,MORE),!,append([num(NUM)|VARS],MORE,PROPS),!.
174
178outputTrans(asserted,4,asserted(('.'),NART,REST,[]), skip(nart([NART|REST]))):-!.
179
183outputTrans(asserted,_FA,asserted(PRED,ARG1,ARG2,REST), assertedWithoutMt(NEWSENT,MtInfo,VARS)):-
184 fixupEL('UnknownMt',[PRED,ARG1,ARG2|REST],MtInfo,NEWSENT,[],VARS),!.
185
186outputTrans(holds,_FA,HOLDS, assertedWithoutMt(NEWSENT,MtInfo,VARS)):- HOLDS=..[holds|SENT],
187 fixupEL('UnknownMt',SENT,MtInfo,NEWSENT,[],VARS),!.
188
189
193
194outputTrans(TRUEMON,_FA,TDSENT, output(NEWSENT, NEWMT, PROPS, TRUEMON)):-
195 TDSENT=..[TRUEMON,TD1,TD2,TD3|TDN],
196 tdval(TRUEMON),
197 append(PREFIX,[MT,NUM],[TD2,TD3|TDN]),
198 SENT=[TD1|PREFIX],
199 number(NUM),!,
200 fixupEL(MT,SENT,NEWMT,NEWSENT,[num(NUM)],PROPS).
201
202outputTrans('ASSERTION',_FA,'ASSERTION'(TRUEMON,_HL,MT,VARLIST,NUM,BACKWARDFORWARD,ENT),
203 output(NEWSENT, NEWMT, PROPS, TRUEMON)):- compound(SENT),
204 tdval(TRUEMON),
205 number(NUM),!,
206 fixupEL(MT,SENT,NEWMT,NEWSENT,VARLIST,VARS),!,
207 append([num(NUM),dir(BACKWARDFORWARD)],VARS,PROPS).
208
212outputTrans('ASSERTION',_FA,'ASSERTION'(TRUEMON,[[],SENT],MT,VARLIST,NUM,BACKWARDFORWARD),
213 output(NEWSENT, NEWMT, PROPS, TRUEMON)):- compound(SENT),
214 tdval(TRUEMON),
215 number(NUM),!,
216 fixupEL(MT,SENT,NEWMT,NEWSENT,VARLIST,VARS),!,
217 append([num(NUM),dir(BACKWARDFORWARD)],VARS,PROPS).
218
219outputTrans('ASSERTION',_FA,'ASSERTION'(TRUEMON,_,MT,VARLIST,NUM,BACKWARDFORWARD,_HL,SENT),
220 output(NEWSENT, NEWMT, PROPS, TRUEMON)):- compound(SENT),
221 tdval(TRUEMON),
222 number(NUM),!,
223 fixupEL(MT,SENT,NEWMT,NEWSENT,VARLIST,VARS),!,
224 append([num(NUM),dir(BACKWARDFORWARD)],VARS,PROPS).
225
226outputTrans(Fun,_FA,TDSENT,error(TDSENT)):-tdval(Fun),!,fail.
227outputTrans(Fun,_FA,TDSENT,error(TDSENT)):-member(Fun,['asserted','assertion','ASSERTION','holds']),!,fail.
228
232
233outputTrans(PRED,_FA,TDSENT, output(NEWSENT, NEWMT, PROPS, TRUEMON)):-
234 TDSENT=..[PRED,TD1,TD2,TD3|TDN],
235 append(PREFIX,[MT,NUM,TRUEMON],[TD2,TD3|TDN]),
236 tdval(TRUEMON),
237 SENT=[PRED,TD1|PREFIX],
238 number(NUM),!,
239 fixupEL(MT,SENT,NEWMT,NEWSENT,[num(NUM)],PROPS).
240
241
242
243fixupEL(MT,SENT,NEWMT,NEWSENT,VARLIST,VARS):-
244 normalizeDataTerms('istAsserted'(MT,SENT),'istAsserted'(NEWMT,NEWSENT),Feats),append_nonvars(VARLIST,Feats,VARS),!.
245fixupEL(_MT,_SENT,mt,[a,b,c,d,e],VARS,[v='?x'|VARS]):-!.
246
247append_nonvars(VARLIST,Feats,VARS):-var(VARLIST),!,append_nonvars([],Feats,VARS).
248append_nonvars(VARLIST,Feats,VARS):-var(Feats),!,append_nonvars(VARLIST,[],VARS).
249append_nonvars(VARLIST,Feats,VARS):-append(VARLIST,Feats,VARS).
250
251normalizeDataTerms(X,Y,Feats):- debugOnFailure((normalizeDataTerms1(X,XO,Feats),balanceBinding(XO,Y))).
252
253normalizeDataTerms1(X,Z,Feats):-
254 balanceBinding(X,Y),
255 unnumbervars(Y,UN),
256 cyc:s2p(cleanUpData, UN,Z,Feats),!.
257
258cleanUpDataRecurse(I,O,Feats):- cyc:s2p(cleanUpData,I,O,Feats),!.
259
260cleanUpData(S,S,[]):-var(S),!.
261cleanUpData(S,S,[]):-string(S),!.
262cleanUpData(M,M,[]):- atom(M),atom_concat(':',_I,M),!.
263cleanUpData(nart(I),O,Feats):-!,cleanUpDataRecurse(I,O,Feats).
264
265cleanUpData(kw(I),O,Feats):- atom_concat(':',I,M),!,cleanUpDataRecurse(M,O,Feats).
266cleanUpData('#$'(I),O,Feats):- atom_concat('#$',I,M),!,cleanUpDataRecurse(M,O,Feats).
267
268cleanUpData(string([I]),Out,[]):-localDestringify(I,Out).
269cleanUpData(string(I),Out,[]):-localDestringify(I,Out).
270cleanUpData(I,O,[]):-atom(I),atom_concat('#$',O,I),!,trace.
271cleanUpData(I,O,[]):-atom(I),atom_concat('"',_,I),!,localDestringify(I,O).
272cleanUpData(I,Out,[]):-is_string(I),localDestringify(I,Out).
273
274
275cleanUpData(List,Out,[]):-is_list(List),ground(List),member('~a',List),trace,debugOnFailure(localDestringify(List,Out)).
276cleanUpData([H|T],R,Features):-atom(H),cyc:isKeyword(H),!,cyc:s2List(cleanUpData,T,TT,Features),R=[H|TT],!.
277
278
279localDestringify(string([I]),Out):-!,localDestringify(I,Out).
280localDestringify(string(I),Out):-!,localDestringify(I,Out).
281localDestringify([],""):-!,trace.
282localDestringify([I],Out):-!,localDestringify(I,Out).
283localDestringify([N,S],Out):-number(N),atom_number(AN,N),debugOnFailure((localDestringify(S,SS),string_concat(AN,SS,Out))).
284localDestringify([AN,S],Out):-atom(AN),catch(atom_number(AN,_N),_,fail),trace,debugOnFailure((localDestringify(S,SS),string_concat(AN,SS,Out))).
285localDestringify(S,Out):-not(atom(S)),!,cyc:toCycApiExpression(string(S),_,M),!,string_to_atom(M,A),debugOnFailure(localDestringify(A,Out)).
286localDestringify(S,Out):-atom(S),pUnquoteAtom(S,OutA),!,string_to_atom(Out,OutA).
287localDestringify(S,Out):-atom(S),!,string_to_atom(Out,S).
288
289localDestringify(S,Out):-trace,cyc:destringify(S,DS),cyc:unquoteAtom(DS,UQ),string_to_atom(Out,UQ),!.
290localDestringify(Out,error(Out)):-!,trace.
291
292pUnquoteAtom(Atom,New):-concat_atom(['',New,''],'"',Atom).
293
294translate_cyc_datafile(InputFileHint):-load_single_cyc_data_file(InputFileHint),!.
295
296load_single_cyc_data_file(InputFileHint):-
297 debugOnFailure((global_pathname(InputFileHint,InputFile))),
298 debugOnFailure((
299 guess_cyc_predname(InputFile,PredName),
300 atom_concat_safe(InputFile,'.llj',OutputName),
301 load_single_cyc_data_file(InputFile,OutputName,PredName,[load]))).
302
303load_single_cyc_data_file(InputFile,OutputName,_PredMatch,_Load):- loaded_cyc_data_file(InputFile,OutputName),!.
304load_single_cyc_data_file(InputFile,OutputName,PredName,Load):-
305 create_cyc_data_file2(InputFile,OutputName,PredName,Load),!,
306 asserta(pending_cyc_data_file(InputFile,OutputName)).
307
308guess_cyc_predname(File,PredName):-ignore(File=PredName).
309
310translate_single_cyc_data_file(InputFileHint):-
311 debugOnFailure((
312 global_pathname(InputFileHint,InputFile))),
313 debugOnFailure((
314 guess_cyc_predname(InputFile,PredName),
315 atom_concat_safe(PredName,'.llj',OutputName),
316 create_cyc_data_file2(InputFile,OutputName,PredName,[noload]))),!.
317
318
322
323:-dynamic(creating_cyc_data_file/2).
324:-dynamic(loaded_cyc_data_file/2).
325:-dynamic(pending_cyc_data_file/2).
326
327do_pending_data_loads:-forall(retract(pending_cyc_data_file(FileName,OutputName)),load_pending_cyc_data_file(FileName,OutputName)).
328
329load_pending_cyc_data_file(InputFile,OutputName):- debugFmt(load_pending_cyc_data_file(InputFile,OutputName)),
330 catch(debugOnFailure(create_cyc_data_file2(InputFile,OutputName)),E,(debugFmt(E),asserta(pending_cyc_data_file(InputFile,OutputName)))),!.
331
333create_cyc_data_file2(File,OutputName,PredName,_Load):- loaded_cyc_data_file(File,OutputName),!, throw_safe(already(loaded_cyc_data_file(File,OutputName),PredName)).
334
335create_cyc_data_file2(File,OutputName,_PredMatch,Load):-
336 exists_file(OutputName),
337 time_file_safe(OutputName,PLTime), 338 time_file_safe(File,FTime),
339 340 PLTime > FTime,!,
341 debugFmt(up_to_date(create_cyc_data_file(File,OutputName))),!,
342 ignore((member(load,Load),asserta(pending_cyc_data_file(File,OutputName)))),!.
343
347create_cyc_data_file2(InputFile,OutputName,_PredMatch,_Load):-
348 debugOnFailure((
349 retractall(lineInfoElement(InputFile,_,_,_)),
350 open(InputFile, read, In, [type(binary)]),
351 repeat,
352 line_count(In,Lineno),
354 Options = [variables(_Vars),variable_names(_VarNames),singletons(_Singletons),comment(_Comment)],
355 catch((read_term(In,Term,[syntax_errors(error)|Options])),E,(debugFmt(E),fail)),
356 prolog_must((load_cyc_data_term(Term,[line_count(Lineno),file(OutputName),stream(In)|Options],OutputName))),
357 Term==end_of_file,
358 close(In))
358)
358.
359
360
361commitOutput(skip(_),_Options,_OutputName):-!.
362commitOutput(Output,_Options,_OutputName):-debugFmt(Output),!.
363
364load_cyc_data_term(end_of_file,_Options,_OutputName):-!.
365load_cyc_data_term(Term,Options,OutputName):-
366 catch(
367 debugOnFailure((outputTrans(Term,Output),commitOutput(Output,Options,OutputName))),
368 E,
369 (debugFmt(error(load_term(Term,Output,E))),throw_safe(E))).
370
371
372create_cyc_data_file2___XXXXXX(InputFile,OutputName,PredName,Load):-
373 asserta(creating_cyc_data_file(InputFile,OutputName)),
374 debugFmt(doing(create_cyc_data_file(InputFile,OutputName))),
375 376 (format('%-----------------------------------------~n')),
377 printPredCount('Cleaning',PredName,_CP),
378 (format('%-----------------------------------------~n')),
379 unify_listing(PredName),
380 retractall(PredName),
381 (format('%-----------------------------------------~n')),
382
383 tell(OutputName),
384 flag(cateSigCount,PREV_cateSigCount,0),
385
391 (format('%-----------------------------------------~n')),
392 unify_listing(PredName),
393 (format('%-----------------------------------------~n')),
394 listing(xmlns),
395 (format('%-----------------------------------------~n')),
396 told,
397 flag(cateSigCount,NEW_cateSigCount,PREV_cateSigCount),
398 printPredCount('Errant Lines',lineInfoElement(InputFile,_,_,_),_EL),
399 printPredCount('Total Categories',toDoCateSig,_TC),!,
400 debugFmt('NEW_cateSigCount=~q~n',[NEW_cateSigCount]),!,
401 statistics(global,Mem),MU is (Mem / 1024 / 1024),
402 debugFmt(statistics(global,MU)),!,
403 printPredCount('Loaded',PredName, FM),
405 retractall(lineInfoElement(InputFile,_,_,_)),
406 retractall(xmlns(_,_,_)),
407 retractall(creating_cyc_data_file(InputFile,OutputName)),
408 ignore((FM == 0, PREV_cateSigCount>0, retractall(loaded_cyc_data_file(InputFile,OutputName)), member(load,Load), asserta(pending_cyc_data_file(InputFile,OutputName)))),!
408.
409
410
411
418
419load_cyc_kif_file(File):-atom_concat(File,'.pl',OutputName),
420 load_cyc_kif_file(File,OutputName,_PredName).
421
422
423load_cyc_kif_file(File,OutputName,PredName):- loaded_cyc_data_file(File,OutputName),!, throw_safe(already(load_cyc_kif_file(File,OutputName),PredName)).
424
425load_cyc_kif_file(File,OutputName,_PredMatch):-fail,
426 exists_file(OutputName),
427 time_file_safe(OutputName,PLTime), 428 time_file_safe(File,FTime),
429 430 PLTime > FTime,!,
431 debugFmt(up_to_date(create_cyc_data_file(File,OutputName))),!,
432 Load = [load],
433 ignore((member(load,Load),asserta(pending_cyc_data_file(File,OutputName)))),!.
434
438load_cyc_kif_file(InputFile,_OutputName,_PredMatch):-
439 setup_call_cleanup(open(InputFile, read, In),
440 load_cyc_kif_file0(InputFile, In),
441 close(In) ).
442
443load_cyc_kif_file0(_InputFile, In):-
444 445 debugOnFailure((
447
449 450 loadLispStream(In,loadKifTerm))
450)
450.
451
452loadKifTerm(token(Surf),Vars):-!,loadKifTerm(Surf,Vars).
453loadKifTerm((whitepace(_)),_Vars):- !.
454loadKifTerm([H|T],Feats):- cleanUpDataRecurse([H|T],Z,Feats),!, writeFmtFlushed(surface(Z:Feats)),!.
455loadKifTerm(Surf,Vars):- writeFmtFlushed(surface((Surf:Vars))),!.
456
462rpl:- repeat,(cyc:lisp_read(user_input,S,Sexp)),debugFmt((string(S)->Sexp)),S="EOF\n".
464
465:- tell('translate.pl'),loadRestOfKif,told.