Sintaxa
folosita de Oscar este relativ simpla. Nici o definitie a setului de forumle
nu e presupusa, dar se presupune ca formula poate fi combinata si construita
din alte formule prin folosirea operatiilor cum ar fi conjunctia, negatia
sau cuantificarea. Detaliile sunt prezentate in fisierul Syntax. lisp.
Oscar presupune urmatoarele constante
logice: ~,&,v,->,<->,@,=. Formulele sunt liste de 3 simboluri.
Urmatoarea lista e o formula:
(((all
x) ((P x) ->(- Q x)))) v ((some y) ((P y)&(R y))))
Daca P e o formula, atunci (- P) e negatia
acelei formule. Cuantificatorii au formula (Q var) unde Q poate fi all, some.
Dandu-se cuantificatorul (Q var) si o formula P, ((Q var) P) e o formula
cuantificata. Rezultatul trebuie inclus intre paranteze.Daca F este un predicat,
formulele sunt construite din el, prin constructie de liste sub forma
(F x1...xn). Nu se poate folosi formula standard pentru liste,F(x1..xn) pentru
ca nu e o lista Lisp. Aceste expresii sunt destul de dificile. Se face distinctie
intre formule si stringuri. Stringurile sunt numite "formule dragute"
si sunt construite la randul lor din formule, prin functia "PRETTY"
si arata mai mult ca o notatie logica standard. De exemplu, pentru forumla
de mai sus, stringul urmatorul:
"(((all
x) ((P x) ->(- Q x)))) v ((some y) ((P y)&(R y)))) "
Functia
REFORM converteste o formula PRETTY intr-o formula obisnuita.
Secventele
vor fi ordonate in perechi (X,P) unde X este o secventa supozitie si P e o
formula secventa. Formula se va scrie "P/X". O secventa e
dedusa daca e o secventa de noduri ale grafului de deductii si poate fi dedusa
fara a fi justificata, pentru ca nodul care o suporta poate fi definit.
Setul
de noduri deduse vor fi pastrate intr-o lista de concluzii. Regulile de deductii
vor accesa aceasta lista mai usor decat sa acceseze graful de deductii.
Apare o complicatie cand se folosesc concluziile. Considerand o judecata anticipata
avand multiple premise. De exemplu presupunand ca [P,Q] e o judecata(rezolvare)
pentru R. Presupunand ca P si Q sunt ambele in coada de deductii. Daca P e
regasit primul, se va cauta Q in lista de concluzii iar apoi se va face
deductia lui R. E valabil si ivners.
Init.lisp
- fisierul de baza, care contine codul pentru
incarcarea tuturor fisierelor utilizate de program;
- Calea: Oscar-pathname: "/home/okv/oscar/src/"
Initc.lisp
- fisier identic cu "Init.lisp";
- diferenta consta in faptul ca acesta din urma,
e folosit pentru o compilare mai rapida, prin incarcarea cailor in intregime:
(compile-file (full-pathname-of "nume_fisier.lisp")
Enviroment.lisp
- arhitectura agentilor (OSCAR_3.33)
- se bazeaza pe varianta Oscar_3-32, insa introduce
o noua metoda de calculare a grafului
- definitii de variabile utilizate in program
Oscar-Tools.lisp
- definitii de macrouri
- definitii de functii folosite in program
Syntax.lisp
- sintaxa folosita in limbaj , cu functii
symbol
- formule
- secvente
- formule pretty, stringuri
Support-link.lisp
- legaturi support, definire de structuri
Inference-node.lisp
- definitie de structura
- tipul nodului: perceptii, dorinte, inferente
Assignment_trees_3-32.lisp
- calculul starilor
- fixeaza calculul starilor de asignare
Conclusions.lisp
- lista premiselor partial instantiate
- apelul functiei (display-conclusions)
determina afisarea celor 27 de noduri ale grafului; nodurile de la 1 la 19
au gradul de acceptare 1, iar cele de la 20 la 27 au gradul 0
- (display-c-lists) -. afiseaza formula
listei pentru cele 27 de noduri:
ex:
c-list-formula: (Q1 & (Q2&Q3))
#17
sup = {} pentru nodul 17,unde sup=supozitiile asupra nodului
Ultimate-epistemic-interests.lisp
- afisarea cerintelor
- coada de cerinte
- se alege problema din lista celor 104
- determina daca interesele sunt satisfacute
sau nu; daca raspunsul la intrebare este null => se afiseaza :"nu
a fost gasit nici un argument"
Interests.lisp
- instantierea premiselor
- grful intereselor
- graful nodurilor
Forward-reasons.lisp
- definsete o structura generica ale carei sloturi
sunt folosite in comun de deductiile anterioare si ulterioare
Backward-reasons.lisp
- structuri de date ce contin urmatoarele
informatii:
-numele
justificarii
-functia
justificarii, explicatiei
-premise
forward
-premise
bacward
-concluzii
justificate - o lista de formule
-variabile
justificate
-strength
- variabila reala cuprinsa intre 0 si 1 sau o expresie ce contine variabile
justificate evaluate la un numar
-regula
nerealizabila: T daca ea e nerealizabila si NIL in rest
-conditii
de judecata - conditiile ce trebuie satisfacute de secventa de itneres
-lungimea
judecatii - nuamrul premiselor forward
-factorul
de reducere: nuamr real intre 0 si 1, folosit pentru determinarea judecatilor
prioritare
-variabile
concluzii: concluzia judecatii
Inference-queue.lisp
- definirea cozii de inferente
- afisare
- calculul gradului de acceptare al premiselor
- premisele au trei cinstituenti(formula,
supozitia si un grad de support)
-codificarea stari nodurilor (perceptii
si dorinte primitive) => graful nodurilor de interes
- o lista de structuri de date numite
noduri ale cozii de deductii ce contine urmatoarele informatii:
°
nodul de introdus in coada: un interes , o intrebare
°
un item nou: intrebare, concluzie, interes
°
item complex
°
reducere a lungimii
°
gradul de acceptare
Ordinea
nodurilor va fi data de relatia : "X este preferat de Y"( daca gradul
de acceptare a lui X este mai mare decat gradul de acceptare a lui Y)
Reasons.lisp
- afisarea rezultatelor proiectului se
face in aceasi fereastra. Controlul e determinat de functii definite in acest
fisier, functii care in general pot lua doua valori,corespunzatoare lui on/off
-(proof-on)-Toate argumentele relevante
sunt afisate la sfarsitul programului;Daca programul e oprit inainte sa se
termine, vor fi afisate argumentele descoperite pana in acel moment, folosind
functia (show-arguments); default
este off;
-(proof-off) Argumentele
nu sunt afisate
-(display-on) judecata este
afisata (default este"off".)
-(display-off) judecata nu
e afisata
-(trace-on) activeaza modul
display si da informatii detaliate despre ce operatii au loc. Este adesea
folosit pentru compilare si pentru intelegerea codului(default e "off")
-(trace-off) inchide modul
trace, dar lasa display-ul activ
-(trace-from n) deschide
modul trace cand numarul concluziei e luat din coada de deductii
-(logic-on) activeaza folosirea
regulilor logice (default este"on".)
-(logic-off) dezactiveaza
posibilitatea de a folosi regulile logice
-(reductio-on) activeaza
posibilitatea de a dovedi ca, contrariul unei propozitii este total fals,
deci propozitia e adevarata (default este "on".)
-(reductio-off) dezactivare
-(pause-on) pauza intre probleme
(default este "off".)
-(pause-off) dezactiveaza
pauza
-(log-on) se vor afisa toate
judecatile dupa terminare si se va indica care dintre ele a fost folosita
pentru a obitne solutia (default este "off".)
-(log-off) dezactivare
Skolemization.lisp
- functii de conversie a variabilelor
de interes in variabile concluzii
Unification.lisp
- ex: Daca p si q sunt variabile libere, ele
trebuie rescrise inainte sa aplicam algoritmul de unificare. Codul din acest
fisier produce o pereche de substituenti (m1 m2) aplicand m1 lui p si m2 lui
q, le unifica.
Reason-macros_3-30.lisp
- acest fisier ofera codul pentru macrouri
- premisele si concluziile sunt luate drept
forumle/expresii
Prob_compiler_3-24.lisp
- O problema e o lista care contine urmatoarele:
o
1. numarul problemei
o
2. lista de premise, care sunt perechi (formula, grad de justificare)
o
3. lista de concluzii formata din perechi( formule, grad de interes)
o
4. liste de deductii anticipate, cvintuple (nume, premise, concluzii, variabile,
strength)
o
5. lista de concluzii anticipape, 4(nume, premise, concluzii, variabile)
o
6. lista de deductii ulterioare, 6
o
7. lista de concluzii ulterioare, 5
o
8. un string optional care descrie problema
- Toate formulele pot fi introduce ca
si formule "pretty"
- Compilatorul problemelor
Rules_3-30.lisp
- reguli pentru alculul predicatelor si
calculul propozitional
Combined-problems.lisp
- fisierul defineste 104 probleme si o
functie test care are ca argument sau nu, numarul problemei
Agent-arguments5.lisp
- afisarea argumentelor