NorbertJu / ResolutionEditor

Bachelor thesis
GNU General Public License v3.0
1 stars 0 forks source link

Chyba pri kontrole rezolvencie #15

Closed crnkjck closed 4 years ago

crnkjck commented 4 years ago

V jazyku

C = { a } F = { f/1, g/1 } G = { p/2 }

som spravil takyto „dokaz“:

  1. p(f(x),x) ∨ p(y, a) – assum
  2. p(f(a), a) – factoring 1 { x -> a, y -> f(a) }
  3. ¬p(y, g(z)) ∨ p(z, y) – assum
  4. p(v, a) ∨ p(z, f(x)) ∨ -p(f(x),f(x)) – resolution 1 { y -> v } 3 { y -> f(x), x -> g(z) }

V 4. kroku je editor spokojny zo vsetkym, co je syntakticky spravne.

crnkjck commented 4 years ago

Hm, vyzera, ze je to len nejaky problem s tym, ako sa validuje. Lebo zrazu mi to zacalo pisat, ze to nie je rezolventa. Ale neviem zial povedat, co som zmenil.

Kazdopadne by bolo dobre, aby sa po zmene cohokolvek v kroku prevalidoval cely krok. Hlavne aby sa vzdy validovalo, ci je formula rezolventa/faktor. Ak sa to neda urcit, lebo v premenovani, premise, unifikatore je chyba alebo premisa je prazdna, treba to povedat aj pri formule, napr. DependencyError: Can't validate if the formula is a resolvent/factor. Bolo by dobre vyznacit aj to, ze premisy su prazdne ako chybu.

crnkjck commented 4 years ago

Celkom som sa zapotil, kym som prisiel na to, co je vlastne spravna rezolventa v 4. kroku. Nakoniec som pouzil Robinson ;-)

Okrem toho sa 3 da zrezolvovat sama so sebou:

crnkjck commented 4 years ago

Dohodi sme sa na refaktorizacii validacie.

Validacne funkcie pre komponenty kroku (vacsina uz funguje takto):

Tieto funkcie sa nebudu volat zo step, ale z validateStep. Sucasny validateStep by sa asi mal premenovat na validateRule.

Novy validateStep by mal postupne zavolat validaciu vsetkych komponentov (bez ohladu na to, ci sa zmenili alebo nie). Ak vsetky prejdu, zavola validateRule. Nakoniec posklada vsetky ciastocne stavy do noveho stavu a vrati ho.