Zoran Skoda
logika predikata

Uz ovu stranicu pročitajte i stranicu zaključivanje.

Sud (iskaz) je izjava koja ima točno određenu i nepromjenjivu vrijednost istinitosti, istina ili laž. Istinu označavamo s \top ili 11, a laž s \perp ili 00. Koristimo uobičajenu matematičku pokratu akko za sintagmu ‘ako i samo ako’.

Od jednostavnih sudova možemo sastavljati složene sudove, npr. ako je PP sud “3 je neparan broj” i Q sud “4 je paran broj” tada možemo sastaviti složeni sud PQP\wedge Q, “3 je neparan broj i 4 je paran broj”. Operator konjunkcije \wedge čitamo “i” jer odgovara (do neke mjere) uporabi veznika i u prirodnom jeziku. Konjunkcija dvaju sudova je istinita akko je svaki od ta dva suda istinit.

Slično, konstruiramo disjunkciju sudova PQP\vee Q i čitamo PP ili QQ. Disjunkcija sudova je istinit sud onda i samo onda kad je barem jedan od sastavnih sudova istinit.

Implikacija sudova PQP\implies Q je lažna onda i samo onda ako je PP istinit, a QQ lažan sud. Dakle čak iz laži možemo dobiti zaključak koji je istinit, ali iz istine nikako ne možemo ispravnim zaključivanjem dobiti laž. Jedino što je nemoguće je da istina implicira laž. PQP\implies Q čitamo “iz PP slijedi QQ” ili “PP implicira QQ” ili “QQ ako PP”.

Ekvivalencija sudova PQP\Leftrightarrow Q je istinita ako oba sastavna suda PP i QQ imaju istu istinitosnu vrijednost, tj. ako su oba istina ili oba laž. PQP\Leftrightarrow Q čitamo PP ako i samo ako QQ ili čitamo PP onda i samo onda kada QQ ili čitamo PP je ekvivalentno QQ.

Konačno negacija suda PP je sud ¬P\neg P koji je istinit ako je PP lažan i lažan ako je PP istinit.

Logika sudova ili račun sudova se bavi računanjem istinitosnih vrijednosti izraza koji se od jednostavnih sudova dobiju pomoću gornjih operacija negacije, disjunkcije, konjunkcije, implikacije i ekvivalencije. Pri tome smatramo da se negacija uže veže uz ime suda, a druge su operacije jednako vrijedne pa redoslijed moramo diktirati zagradama.

Dakle, imamo slijedeća gramatička pravila produkcija kako formiramo složene sudove

JEDNOSTAVNISUD JEDNOSTAVNISUD SUDJEDNOSTAVNISUD SUD(SUDSUD) SUD(SUDSUD) SUD¬SUD SUD(SUDSUD) SUD(SUDSUD)\array{ JEDNOSTAVNISUD \to \top \\ JEDNOSTAVNISUD \to \perp \\ SUD \to JEDNOSTAVNISUD \\ SUD \to (SUD \wedge SUD) \\ SUD \to (SUD \vee SUD) \\ SUD \to \neg SUD \\ SUD \to (SUD \implies SUD) \\ SUD \to (SUD \Leftrightarrow SUD) }

i naravno JEDNOSTAVNISUDJEDNOSTAVNISUD možemo zamijeniti imenom nekog jednostavnog suda.

Npr. pogledajmo slijedeće primjere složenih sudova

()()(\top \implies \perp)\implies (\perp\implies\perp) je sud čija vrijednost je \top

(PR)(RQ)(P \implies R) \wedge (R\vee Q) gdje su P,Q,RP,Q,R imena jednostavnih sudova. Istinitosna vrijednost tog suda zavisi od istinitosnih vrijednosti sudova P,Q,RP,Q,R, dakle o 2×2×2=82\times 2\times 2 = 8 kombinacija njihovih istinitosnih vrijednosti.

Složeni sud čija vrijednost je istina za ma koju kombinaciju istinitosnih vrijednosti jednostavnih sudova u njegovoj strukturi zovemo tautologijom logike sudova.

Predikat (prirok) je izjava čija istinitosna vrijednost zavisi samo od vrijednosti nekog parametra. Dakle, za svaku vrijednost parametra dobijemo sud, pa je prirok kao familija sudova koja je parametrizirana tim parametrom. Ako je xx parametar (kažemo i argument priroka) tada predikat zovemo P(x)P(x). Sam izraz P(x)P(x) nema istinitosnu vrijednost, nema značenja, sam po sebi je besmislen. Parametar/argument xx mora biti iz neke kolekcije mogućih parametara, no ako ipak nismo odredili za koju vrijednost testiramo izraz tada kažemo da je xx slobodni ili nevezani parametar. Ako je PP predikat “biti paran broj” na skupu prirodnih brojeva tada je P(1)P(1) laž, a P(2)P(2) istina. Ako smo fiksirali koliko je xx tada znamo vrijednost P(x)P(x). Zanima nas slučaj kad je P(x)P(x) točan za svaku vrijednost od xx, što izražavamo rečenicom: za svaki xx vrijedi P(x)P(x) i pišemo (x)P(x)(\forall x) P(x). Taj izraz je istinit ako je za svaki broj stavljen umjesto xx izraz P(x)P(x) istinit. Ovdje smo pretpostavili da je skup parametara koje gledamo skup (prirodnih) brojeva, no općenito to nije jasno. Zato bismo točnije trebali reći (xN)P(x)(\forall x\in N) P(x) gdje je NN skup prirodnih brojeva. Ekvivalentno možemo reći da je xx varijabla općeg tipa i da naknadno specificiramo u kvantificiranoj formuli da je xNx\in N, tj. (x)(xNP(x))(\forall x) (x\in N \wedge P(x)). Simbol \forall zovemo univerzalnim kvantifikatorom. U izrazu (xN)P(x)(\forall x\in N)P(x) jasno je za koje vrijednosti testiramo P(x)P(x) i kako je definirana istinitosna vrijednost cijelog izraza jer nema parametara koji lete slobodni u zraku i ne znamo na koje vrijednosti ih testiramo. Kažemo da je xx vezana varijabla (tj. nije slobodna). Ako gledamo samo izraz P(x)P(x) onda nije jasno gdje leži xx i unutar tog izraza xx nije vezana nego slobodna varijabla. Pitamo se na primjer da li su svi prirodni brojevi parni ? (xN)(paran(x))(\forall x\in N)(paran(x)). Nisu, jer 11 nije paran pa je cijeli izraz laž.

Izraz (x)P(x)(\exists x) P(x) (“postoji xx takav da je P(x)P(x)”) je drugi način određivanja kako testirati P(x)P(x). Taj izraz ima vrijednost istina akko postoji vrijednost parametra xx za koju je P(x)P(x) istina. Simbol \exists označava egzistencijalni kvantifikator. Predikat ima određenu vrijednost samo ako su svi argumenti vezani.

Jednostavne predikate možemo kombinirati u složene predikate. Npr. ako su P(x),Q,R(y,z)P(x), Q, R(y,z) tri predikata (prvi ima jedan argument, drugi nema argumenata, a treći ima dva argumenta) tada slijedeći predikat

(x)((P(x)Q)((x)P(x)(y)(z)R(y,z))) (\forall x) ((P(x) \cap Q) \implies ((\exists x')P(x') \vee (\forall y)(\forall z)R(y,z)))

ima neku istinitosnu vrijednost koja zavisi naravno o izboru predikata jer su svi argumenti vezani.

Primjetimo da uvijek ako vrijedi (x)P(x)(\forall x)P(x) tada vrijedi i (x)P(x)(\exists x)P(x) (pri čemu u računu predikata podrazumijevamo da univerzalni skup nije prazan, inače P(x)P(x) ne bi imao niti jednu definiranu istinitosnu vrijednost pa ne bi bio predikat).

Jednakost == i kratice \neq i !x\exists! x

Posebno zanimljiv predikat je jednakost ==, posebno značajan predikat koji zavisi od dva argumenta.

Taj predikat tipično ima drukčiju sintaksu, umjesto =(x,y)=(x,y) pišemo x=yx = y.

U logici predikata možemo neke objekte smatrati jednakima. Kažem da je predikat jednakosti == s dva argumenta istinit za one parove za koje su oba argumenta jednaka ili identična u nekom smislu. Npr. interpretiramo da su nazivi argumenata samo različiti nazivi za isti objekt u interpretaciji. Sintaktički, prije nego možemo osmisliti interpretaciju preko objekata, tražimo samo da jednakost zadovoljava svojstva

  • tranzitivnost (x)(y)(z)((x=y)(y=z))(x=z)(\forall x)(\forall y)(\forall z)((x = y)\wedge(y=z))\implies (x = z) (ako je neki xx jednak nekom yy i taj yy jednak nekom zz tada je i taj xx jednak tomu zz)

  • simetričnost (x)(y)(x=y)(y=x)(\forall x)(\forall y) (x = y)\implies (y = x) (ako je neki xx jednak nekom yy tada je taj yy jednak tome xx)

  • refleksivnost (x)(x=x)(\forall x)(x = x) (svaki xx je jednak sebi samom)

  • jednakost čuva vrijednost predikata: ako za ma koji predikat PP vrijedi P(x)P(x) i vrijedi x=yx = y tada vrijedi i P(y)P(y).

Npr. pogledajmo slijedeći izraz:

(x)(y)(x=yP(x)=P(y)) (\forall x)(\forall y)(x = y \implies P(x) = P(y))

Taj izraz je uvijek istinit, za ma koji predikat PP s jednim argumentom: ako u PP supstituiramo nešto ili nešto drukčije nazvano ali koje je “jednako” prvom argumentu dobit ćemo istu istinitosnu vrijednost. Govorimo o računu predikata s jednakošću.

Izraz xyx \neq y je kratica za izraz ¬(x=y)\neg(x = y).

Izraz (!x)P(x)(\exists! x)P(x) (postoji točno jedan xx takav da je P(x)P(x)) je kratica za izraz

(x)P(x)(y)(z)((P(y)P(z))(y=z)) (\exists x)P(x) \wedge (\forall y)(\forall z)((P(y)\wedge P(z))\implies (y = z))

To je “logično”, naime u običnom jeziku ovaj izraz kaže: postoji xx takav da vrijedi P(x)P(x) i ako vidimo bilo koja dva takva onda su oni jednaki. Dakle sve zajedno to znači da postoji točno jedan xx takav da vrijedi P(x)P(x).

Kvantifikator s tipom

Ponekad kvantifikatori vrijede za varijable nekog tipa. U teoriji skupova možemo tip smatrati kao pripadnost nekom skupu. Npr. ako je xx tipa AA to je kao da xAAx\in AA gdje je AA skup svih yy tipa AA. Možemo to promatrati i kao imati neko svojstvo AAAAAA, tj. da vrijedi AAA(x)AAA(x). Dakle, AAA(x)AAA(x) je vrijednost predikata AAAAAA na varijabli xx. No, moguće je direktno u kvantifikatoru napisati na koji tip se odnosi. Možda je dobro izbjeći pitanje postojanje skupa svih zz tako da vrijedi AA(z)AA(z) pa jednostavno reći da je xx tipa AA kao neki posebni sintaktički odnos, recimo x:Ax:A (xx je tipa AA). Dakle, neki pišu Ax\forall_A x umjesto x:A\forall x:A ili umjesto x,AAA(x)\forall x, AAA(x) ili umjesto x,xAA\forall x, x\in AA. Slično pišemo i Ax\exists_A x za x:A\exists x:A (postoji xx tipa AA).

category: zadarmat1

Last revised on November 5, 2017 at 23:38:10. See the history of this page for a list of all contributions to it.