1?-use_module(library(lists)). 2%:-prolog_flag(compiling,_,profiledcode). 3 4cleanTemporalOrderings([Plan,Ordering], ValidOrderings):- 5 fetchTemporalReferences(Plan, TempRefs),!, 6 append([t], TempRefs, FinalTempRefs), 7 cleanTemp(FinalTempRefs, Ordering, ValidOrderings), 8 9 % Cut required when generating multiple solutions to avoid 10 % backtrack possible cleaning options 11 !. 12 13cleanTemp( TempRefs, [], []). 14cleanTemp( TempRefs, [before(X,Y) | Tail] ,[ before(X,Y) | TailTemp]):- 15 member(X, TempRefs), 16 member(Y, TempRefs), 17 cleanTemp( TempRefs, Tail,TailTemp ). 18 19cleanTemp( TempRefs, [before(X,Y) | Tail] ,[ before(X,Unknown ) | TailTemp ] ):- 20 21 member(X,TempRefs), 22 \+ member(Y, TempRefs), 23 24 member(before(Y, Unknown ), Tail), 25 26 cleanTemp( TempRefs, Tail,TailTemp ). 27 28cleanTemp( TempRefs, [before(X,Y) | Tail] , [ before(Unknown,Y ) | TailTemp] ):- 29 member(Y,TempRefs), 30 \+ member(X, TempRefs), 31 32 member(before(Unknown,X), Tail), 33 34 cleanTemp( TempRefs, Tail,TailTemp ). 35 36%delete rudundant temporal ordering 37cleanTemp( TempRefs, [before(X,Y) | Tail] , TailTemp ):- 38 cleanTemp( TempRefs, Tail,TailTemp ). 39 40fetchTemporalReferences([] ,[]). 41fetchTemporalReferences([happens(A,F,T)|Tail], [ T | TempRefs]):- 42 fetchTemporalReferences(Tail, TempRefs). 43 44fetchTemporalReferences([before(X,Y)|Tail], [ T | TempRefs]):- 45 fetchTemporalReferences(Tail, TempRefs). 46 47 48% --------------Tests ---------------------- 49 50%test1_cleanTemporalOrderings(Result):- 51%cleanTemporalOrderings([[happens(createFormelement(restrictedDrugs,radiobtn,[size=2]),t149,t149),happens(entry(form,element,guard),t121,t121),happens(edgeProgression(form2,formElement(test2,value)),t132,t132),happens(formSubmission(form2),t129,t129),happens(entry(form,element,woobe),t120,t120),happens(formEntry(form2,jw99),t125,t125),happens(formEntry(form1,jw99),t8,t8),happens(createFormelement(textboxform1,textbox,[multline,numlines(4)]),t115,t115),happens(formSubmission(form1),t14,t14),happens(edgeProgression(form1,formElement(correctDrugs,off)),t108,t108)],[before(t149,t136),before(t138,t149),before(t115,t146),before(t148,t115),before(t142,t108),before(t146,t14),before(t8,t148),before(t14,t142),before(t134,t140),before(t136,t129),before(t125,t138),before(t129,t134),before(t134,t132),before(t132,t131),before(t131,t),before(t125,t131),before(t107,t125),before(t121,t119),before(t120,t118),before(t119,t14),before(t115,t118),before(t118,t119),before(t115,t112),before(t114,t115),before(t110,t108),before(t112,t14),before(t8,t114),before(t14,t110),before(t108,t107),before(t8,t107)]], Result), write(Result). 52 53%test2_clean(Z):-cleanTemp([t75,t45,t58,t29,t34],[before(t75,t92),before(t92,t34),before(t29,t75),before(t58,t60),before(t60,t29),before(t45,t58),before(t34,t)],Z).