% В тази програма се разглеждат случаите, % когато един член на Закона за висшето % образование цитира друг. Константите % а8, а6, а26v и пр. в нея следва да се % четат "чл. 8", "чл. 6", "чл. 26в" и % т.н.; изразът q(X,Y) може да се чете % "X цитира Y". q(a8,a6). q(a10,a9). q(a11,a6). q(a26,a50). q(a26,a58). q(a26v,a26). q(a26v,a26g). q(a30,a9). q(a30,a6). q(a31,a35). q(a34a,a58a). q(a42,a7). q(a46,a78). q(a47,a46). q(a47,a67). q(a47,a70). q(a49,a48). q(a50,a48). q(a50,a51). q(a54,a48). q(a55,a51). q(a55,a52). q(a55,a48). q(a64,a90). q(a64,a91). q(a65a,a61). q(a65a,a62). q(a65a,a63). q(a65a,a64). q(a65a,a65). q(a68,a9). q(a78,a7). q(a78,a47). q(a78,a9). q(a78,a82). q(a78,a81). q(a79,a47). q(a79,a14). q(a79,a87). q(a81,a77). q(a85,a84). q(a95,a91). % Можем да четем израза o(X,V) по-долу % като "X е вън от списъка V". o(X,[]). o(X,[A|V]) :- X \= A, o(X,V). % Нека G е ориентираният граф, изобра- % зяващ дадената в началото информация. % Един път в G да наречем прост, ако % всеки два върха с различни поредни % номера по него с евентуално изключение % на началния и крайния са различни % помежду си. Изразите по-долу, имащи % вид p(L,A,B,V), можем да четем по % следния начин: "L е списък на последо- % вателните върхове по такъв прост път в % G с начален връх A и краен връх B, че % всеки връх по този път с евентуално % изключение на A и на B е вън от % списъка V". p([A,B],A,B,V) :- q(A,B). p([A|L],A,B,V) :- q(A,C), o(C,[A|V]), p(L,C,B,[A|V]), B \= C. % Прилагането на програмата към запитва- % нето по-долу дава всички прости цикли в % G, представени чрез списъците на после- % дователните им върхове. ?- p(L,X,X,[]), write(L). % Забележка. Частта ", write(L)" от това % запитване може да се пропусне, ако из- % ползваната реализация на Пролог при % всяко изпълняване на условие показва % намереното изпълняващо заместване на % променливите. % Последно изменение: 26.02.2004 г.