首页 > 解决方案 > 如何创建独立的 swi-plog 可执行文件?

问题描述

我是 Prolog 的新手。我有一个这样的.pl

male(philip).
male(charles).
male(andrew).
male(edward) .
male(mark) .
male(peter) .
male(mike) .
male(timothy) .
male(william) .
male(harry) .
male(geogre) .
male(louis) .
male(archie) .
male(james) .


female(elizabeth).
female(anne) .
female(zara) .
female(autumn) .
female(sophie) .
female(louise) .
female(sarah) .
female(diana) .
female(camilla) .
female(eugenie) .
female(beatrice) .
female(kate) .
female(meghan) .
female(charlotte) .

married(philip, elizabeth).
married(peter, autumn) .
married(zara, mike) .
married(anne, timothy) .
married(edward, sophie) .
married(andrew, sarah) .
married(charles, camilla) .
married(william, kate).
married(harry, meghan).

parent(philip, charles) .
parent(elizabeth, charles) .
parent(philip, andrew) .
parent(alizabeth, andrew) .
parent(philip, anne) .
parent(elizabeth, anne) . 
parent(philip, edward) .
parent(elizabeth, edward) .
parent(mark, peter) .
parent(anne, peter) .
parent(mark, zara) .
parent(anne, zara) .
parent(edward, louise) .
parent(sophie, louise) .
parent(edward, james) .
parent(sophie, james) .
parent(andrew, eugenie) .
parent(andrew, beatrice) .
parent(sarah, eugenie) .
parent(sarah, beatrice) .
parent(charles, william) .
parent(diana, william) .
parent(charles, harry) .
parent(diana, harry) .
parent(kate, geogre) .
parent(kate, charlotte) .
parent(kate, louis) .
parent(william, geogre) .
parent(william, charlotte) .
parent(william, louis) .
parent(harry, archie) .
parent(meghan, archie) .

divorced(anne, mark) .
divorced(charles, diana) .

father(Parent,Child):-male(Parent), parent(Parent,Child).
mother(Parent,Child):-female(Parent), parent(Parent,Child).
child(Child,Parent):-father(Parent,Child); mother(Parent,Child).
son(Child,Parent):-male(Child), child(Child,Parent).
daughter(Child,Parent):-female(Child), child(Child,Parent).
grandparent(GP,GC):-parent(GP,Parent),parent(Parent,GC).
grandmother(GM,GC):-mother(GM,Parent),mother(Parent,GC).
grandfather(GF,GC):-father(GF,Parent),father(Parent,GC).
grandchild(GC,GP):-parent(Parent,GC), parent(GP,Parent).
grandson(GS,GP):-male(GS), parent(GP,Parent),parent(Parent,GS).
granddaughter(GD,GP):-female(GD), parent(GP,Parent),parent(Parent,GD).
spouse(Husband,Wife):-married(Husband,Wife).
husband(Person,Wife):-male(Person),married(Person,Wife).
wife(Person,Husband):-female(Person),married(Husband,Person).
sibling(Person1,Person2):-parent(P,Person1), parent(P,Person2).
brother(Person,Sibling):-male(Person), parent(P,Person), parent(P,Sibling), Person \=Sibling.

sister(Person,Sibling):-female(Person), parent(P,Person), parent(P,Sibling), Person \=Sibling.

aunt1(Aunt, Person):- parent(Parent, Person), sister(Aunt, Parent).
aunt2(Aunt, Person):- parent(Parent, Person), sibling(Parent, Sib), married(Sib, Aunt).
aunt3(Aunt, Person):- married(P, Person), (aunt1(Aunt, P); aunt2(Aunt, P)).
aunt(Aunt, Person):- (aunt1(Aunt,Person); aunt2(Aunt, Person); aunt3(Aunt, Person)).

uncle1(Uncle, Person):- parent(Parent, Person), brother(Uncle, Parent).
uncle2(Uncle, Person):- parent(Parent, Person), sibling(Parent, Sib), married(Sib, Uncle).
uncle3(Uncle, Person):- married(P, Person), (uncle1(Uncle, P); uncle2(Uncle, P)).
uncle(Uncle, Person):- (uncle1(Uncle,Person); uncle2(Uncle, Person); uncle3(Uncle, Person)).

nephew(Person, Uncle):- male(Person), uncle(Uncle, Person).
niece(Person, Aunt):- female(Person), aunt(Aunt, Person).

firstCousin(Person, Cousin):- child(Cousin, AC), (aunt(AC, Person);uncle(AC, Person)).

在我使用命令“swipl.exe -o 1812057_18127064_18127205.exe -c 1812057_18127064_18127205.pl --goal=main”后,我在同一目录中得到了 1812057_18127064_18127205.exe 文件。然后我使用“1812057_18127064_18127205.exe”到 cmd 提示符来运行文件,但似乎它立即打开并结束。我想要的是将此文件用作您可以使用“?-”询问的程序。谁能帮我?非常感谢。

标签: prologswi-prolog

解决方案


似乎您忘记在代码中定义“主要”谓词!


推荐阅读