1

Тема: Пролог - программы.

domains
zanyatie=symbol
name=symbol
predicates
zan(zanyatie)
nam(name)
who(name,zanyatie)


clauses
zan(pisatel).
zan(pevec).
zan(hu).
zan(tancor).

nam(pavlov).
nam(voronov).
nam(levickiy).
nam(saxarov).


who(X,Y):-nam(X),zan(Y),X=levickiy,Y=pisatel.
who(X,Y):-nam(X),zan(Y),X=pavlov,Y<>hu,Y<>tancor,not (who(levickiy,Y)).
who(X,Y):-nam(X),zan(Y),X=saxarov,Y<>tancor,not (who(pavlov,Y)),not (who(levickiy,Y)).
who(X,Y):-nam(X),zan(Y),X=voronov,not (who(saxarov,Y)),not (who(levickiy,Y)),not (who(pavlov,Y)).


goal
who(X,Y).

Поделиться

2

Re: Пролог - программы.

domains

  name=symbol

predicates

  man(name)
  woman(name)
  parent(name,name)
  husband(name,name)
  c_brother(name,name)
  c_sister(name,name)
  husban(name,name)
  wife(name,name)
 
clauses

  man(alex).
  man(alexandr).
  man(sergey).
  man(petr).
  man(kostya).
  man(mihail).
  man(dmitriy).
  man(valera).
  man(nikolay).
 
  woman(barbara).
  woman(liza).
  woman(lyuda).
  woman(katya).
  woman(anna).
  woman(juli).
  woman(raisa).
  woman(tatiana).
 
  parent(barbara,liza).
  parent(anna,katya).
  parent(anna,petr).
  parent(sergey,katya).
  parent(sergey,petr).
  parent(tatiana,mihail).
  parent(dmitriy,mihail).
  parent(valera,nikolay).
  parent(nikolay,raisa).
  parent(raisa,kostya).
  parent(liza,alex).
  parent(alex,kostya).
  parent(katya,juli).
  parent(juli,lyuda).
  parent(petr,alex).
  parent(petr,alexandr).
  parent(alexandr,lyuda).
  parent(mihail,juli).
 
  husband(sergey,anna).
  husband(dmitriy,tatiana).
  husband(mihail,katya).
  husband(petr,liza).
  husband(alexandr,juli).
  husband(alex,raisa).
 
  c_brother(X,Y):-parent(P,C1),parent(P,C2),
                  parent(C1,X),parent(C2,Y),
                  C1<>C2,man(X).
  c_sister(X,Y):-parent(P,C1),parent(P,C2),
                 parent(C1,X),parent(C2,Y),
                 C1<>C2,woman(X),man(P).
  husban(X,Y):-husband(X,Y),man(X).
  wife(X,Y):-husband(Y,X),woman(X).
 
goal

%c_brother(X,Y).
% c_sister(X,Y).
husban(X,Y).
%wife(X,Y).

Поделиться

3

Re: Пролог - программы.

DOMAINS

name, addr = string

PREDICATES
person(name,addr)
print_all()

CLAUSES
person(tom,city1).
person(jim,city2).
person(ann,city3).
person(lize,city1).
person(tata,city4).
person(kat,city5).

print_all():-
    person(Name,Addr),
    write("\nName=",Name,", Address=",Addr),
    fail.
goal
    print_all.

Поделиться

4

Re: Пролог - программы.

predicates
         country(symbol)
         print_countries

clauses
         country(england).
         country(france).
         country(germany).
         country(denmark).

         print_countries :-
        country(X),
        write(X),          
        nl,          
        fail.

goal     
     print_countries.

Поделиться

5

Re: Пролог - программы.

predicates   
    man(symbol)
    woman(symbol)
    parent(symbol, symbol)
    tetya(symbol, symbol)
    dyadya(symbol, symbol)
   
clauses
    man(sergey).
    man(dmitriy).
    man(valera).
    man(petr).
    man(mihail).
    man(nikolay).
    man(alex).
    man(alexandr).
    man(kostya).   
    woman(barbara).
    woman(anna).
    woman(tatiana).
    woman(liza).
    woman(katya).
    woman(juli).
    woman(raisa).
    woman(lyuda).
   
    parent(barbara, liza).
    parent(liza, alex).
    parent(alex,kostya).
    parent(raisa, kostya).
    parent(anna, katya).
    parent(anna, petr).
    parent(sergey, katya).   
    parent(sergey, petr).
    parent(katya, juli).
    parent(petr, alex).
    parent(petr, alexandr).
    parent(alexandr, lyuda).
    parent(juli, lyuda).
    parent(tatiana, mihail).
    parent(dmitriy, mihail).
    parent(mihail, juli).
    parent(valera, nikolay).
    parent(nikolay, raisa).
   
    dyadya(X, Q) :- man(X), parent(Z, X), parent(Z, Y), parent(Y, Q),X<>Y.
    tetya(X, W) :- woman(X), parent(Z, X), parent(Z, Y), parent(Y, W),X<>Y.
   
goal
    tetya(Who, Whose); write("-------------------------------------------------"), nl,dyadya(Who, Whose).

Поделиться

6

Re: Пролог - программы.

predicates   
    man(symbol)
    woman(symbol)
    parent(symbol, symbol)
    d_brat(symbol, symbol)
    d_sestra(symbol, symbol)
   
clauses
    man(sergey).
    man(dmitriy).
    man(valera).
    man(petr).
    man(mihail).
    man(nikolay).
    man(alex).
    man(alexandr).
    man(kostya).   
    woman(barbara).
    woman(anna).
    woman(tatiana).
    woman(liza).
    woman(katya).
    woman(juli).
    woman(raisa).
    woman(lyuda).
   
    parent(barbara, liza).
    parent(liza, alex).
    parent(alex,kostya).
    parent(raisa, kostya).
    parent(anna, katya).
    parent(anna, petr).
    parent(sergey, katya).   
    parent(sergey, petr).
    parent(katya, juli).
    parent(petr, alex).
    parent(petr, alexandr).
    parent(alexandr, lyuda).
    parent(juli, lyuda).
    parent(tatiana, mihail).
    parent(dmitriy, mihail).
    parent(mihail, juli).
    parent(valera, nikolay).
    parent(nikolay, raisa).
   
    d_brat(X, Y) :- man(X), parent(Z, X), parent(W, Y), parent(Q, Z), parent(Q, W), Z<>W, X<>Y.
    d_sestra(X, Y) :- woman(X), parent(Z, Y), X<>Y, parent(W, X), parent(Q, Z), parent(Q, W), Z<>W.
   
goal
    d_brat(Who, Whose); write("-------------------------------------------------"), nl, d_sestra(Who, Whose).

Поделиться

7

Re: Пролог - программы.

predicates   
    man(symbol)
    woman(symbol)
    parent(symbol, symbol)
    p_ded(symbol, symbol)
    p_bab(symbol, symbol)
   
clauses
    man(sergey).
    man(dmitriy).
    man(valera).
    man(petr).
    man(mihail).
    man(nikolay).
    man(alex).
    man(alexandr).
    man(kostya).   
    woman(barbara).
    woman(anna).
    woman(tatiana).
    woman(liza).
    woman(katya).
    woman(juli).
    woman(raisa).
    woman(lyuda).
   
    parent(barbara, liza).
    parent(liza, alex).
    parent(alex,kostya).
    parent(raisa, kostya).
    parent(anna, katya).
    parent(anna, petr).
    parent(sergey, katya).   
    parent(sergey, petr).
    parent(katya, juli).
    parent(petr, alex).
    parent(petr, alexandr).
    parent(alexandr, lyuda).
    parent(juli, lyuda).
    parent(tatiana, mihail).
    parent(dmitriy, mihail).
    parent(mihail, juli).
    parent(valera, nikolay).
    parent(nikolay, raisa).
   
    p_ded(X, Y) :- man(X), parent(X, Z), parent(Z, W), parent(W, Y).
    p_bab(X, Y) :- woman(X), parent(X, Z), parent(Z,W), parent(W, Y).
   
goal
    p_ded(Who, Whose); write("-------------------------------------------------"), nl, p_bab(Who, Whose).

Поделиться

8

Re: Пролог - программы.

predicates   
    man(symbol)
    woman(symbol)
    parent(symbol, symbol)
    suprug(symbol, symbol)
    nevestka(symbol, symbol)
    zjat(symbol, symbol)
   
clauses
    man(sergey).
    man(dmitriy).
    man(valera).
    man(petr).
    man(mihail).
    man(nikolay).
    man(alex).
    man(alexandr).
    man(kostya).   
    woman(barbara).
    woman(anna).
    woman(tatiana).
    woman(liza).
    woman(katya).
    woman(juli).
    woman(raisa).
    woman(lyuda).
   
    parent(barbara, liza).
    parent(liza, alex).
    parent(alex,kostya).
    parent(raisa, kostya).
    parent(anna, katya).
    parent(anna, petr).
    parent(sergey, katya).   
    parent(sergey, petr).
    parent(katya, juli).
    parent(petr, alex).
    parent(petr, alexandr).
    parent(alexandr, lyuda).
    parent(juli, lyuda).
    parent(tatiana, mihail).
    parent(dmitriy, mihail).
    parent(mihail, juli).
    parent(valera, nikolay).
    parent(nikolay, raisa).
    
    suprug(sergey, anna).
    suprug(dmitriy, tatiana).
    suprug(petr, liza).
    suprug(alex, raisa).
    suprug(alexandr, juli).
    suprug(mihail, katya).
    
    nevestka(X, Y) :- woman(X), suprug(Z, X), parent(Y, Z).
    nevestka(X, Q) :- woman(X), suprug(E, X), parent(Y, E), parent(Y, Q), Q<>E, man(E), man(Q).
    zjat(X, Y) :- man(X), suprug(X, Z), parent(Y, Z).

goal
    nevestka(Who, Whose); write("-----------------------------------------------------"), nl, zjat(Who, Whose).

Поделиться