GIM


[lesson no=8 part=1]
(dobro, ovo bas i nema neke direktne veze s Goedelom,
ali dobro ilustrira osnovnu ideju... a i ludo je zabavno,
bar meni - nadam se da ce biti i tebi bar malo:)
(savjet: uzmi olovku i papir... trebat ce ti, vjerojatno,
usprkos fotografskom pamcenju:)
(da, svjestan sam toga da se igram s vatrom:-/, ali moram
pokusati...)

Zamisli stroj (nazovimo ga GIM, Goedel Interpretation Machine:)
koji se sastoji od jedne crne kutije i jedne
(beskonacne:) papirne trake koja izlazi ravnomjerno iz te
kutije. Svaki put kad se traka pomakne za npr. jedan redak,
u tom retku nalazi se neka "recenica". Da bismo vidjeli sto
nam ovdje znaci recenica, definirajmo prvo "izraz":

izraz je bilo koji niz znakova sastavljen od znakova
	! I D ( )
 - dakle, npr. ")(DI(II" je izraz. On ce nam puno puta
posluziti kao primjer izraza, pa ga oznacimo s X0 .
Nadalje, neka je X genericka
oznaka za izraz (gdje stoji X , moze stajati bilo koji izraz).

Recenica je tada izraz jednog od sljedeca 4 oblika:
	I(X)
	ID(X)
	!I(X)
	!ID(X)
 - npr. "!I()(DI(II)" je recenica (X=X0 , treci oblik:).

Za izraze definirajmo pojam "ispisivosti": izraz X je ispisiv
ako se moze pojaviti na traci (nisu svi izrazi
ispisivi - vidi dolje) (s tim da imamo garanciju da
GIM radi tako da ako je neki izraz ispisiv, on ce se
pojaviti na traci prije ili kasnije - ovo nije toliko bitno,
ali je tako lakse vizualizirati sto znaci da je nesto ispisivo)

Takoder, za izraze definirajmo operaciju "dvostruki":
za izraz X , dvostruki X je jednostavno izraz X(X) .
Npr. dvostruki X0 je ")(DI(II()(DI(II)" - pratis jos uvijek:-?

Za recenice definirajmo pojam "istinitosti", baziran na
jednostavnoj intuitivnoj interpretaciji
	! -> nije
	I -> ispisiv
	D -> dvostruki ;
preciznije, ovako:
-recenica I(X) je istinita :akko je izraz X ispisiv.
-recenica ID(X) je istinita :akko je izraz X(X) ispisiv.
-recenica !R je istinita :akko recenica R _nije_ istinita.
Npr. ako je X0 ispisiv, tada je recenica "I()(DI(II)_ istinita.
Npr._2, recenice "!ID()(DI(II)" i "!I()(DI(II()(DI(II))" imaju
istu vrijednost istinitosti - obje "znace" da dvostruki X0
nije ispisiv... samo sto prva to izrazava malo ekonomicnije:-)

E sad da se pozabavimo onim gore "nisu svi izrazi ispisivi":
za naseg GIMa postoji pravilo koju kaze: sve ispisive recenice
moraju biti istinite. Preciznije, ako je R recenica i R je
ispisiva, tada je R istinita. Drugim rijecima, GIM
moze izraze koji nisu recenice (npr. X0 :) ispisivati ili ne
ispisivati po volji, ali recenice moze
(iako, naravno, ne mora - ovo ce biti glavni "uzrok" problema
kasnije...:) ispisivati samo ako su istinite.
Dakle, ako je "!ID()(DI(II)" ispisivo, tada sigurno
")(DI(II()(DI(II)" _nije_ ispisivo (jer ovo gore mora biti
istinito...).
(Tu vidimo da nema sanse da _svi_ izrazi budu ispisivi...
jer od gornja 2, bar jedan sigurno nije)
S druge strane, ako npr. ")" nije ispisivo, to _ne znaci_
da GIM mora u nekom momentu ispisati "!I())" - to jest
istinita recenica, no nigdje ne pise da sve istinite
recenice moraju biti ispisive... - jasno ovo:-?

Jedan malo:-) kompliciraniji primjer:
"ID(I(!))" ispisiv => "ID(I(!))" istinit =>
dvostruki "I(!)" ispisiv => "I(!)(I(!))" ispisiv =>
"I(!)(I(!))" istinit => "!)(I(!)" ispisiv .
(i tu je kraj zakljucivanja, jer "!)(I(!)" nije recenica...)
Ako si ovo uspjela skuziti, iskrene cestitke...:-)

Primijeti (ako vec dosad nisi:) da je GIM,
usprkos svojoj prilicno jednostavnoj strukturi,
"svjestan sebe" u prilicno snaznom smislu te fraze
 - moze govoriti o svojem ponasanju... o onome sto moze
i sto ne moze... moze postepeno "otkrivati" neke istine
o sebi (npr.
	")())"...
	'ooo, vidi, vidi, pa ja mogu ispisati ")())"'...
	'bas zgodno... idem to objaviti svijetu'...
	"I()()))"...
	's druge strane, kad malo bolje razmislim'...
	'mogao sam to i pametnije reci... idem sad'...
	"ID())" .... :),
a s druge strane, moze imati i neka religijska:-) uvjerenja
npr. o tome kako ne smije nikada, ni u kojem kontekstu,
ispisivati (vise od) 6 otvorenih zagrada zaredom
(to smatra jako nemoralnim:),
pa, kad toga postane svjestan, to dati naslutiti
kroz npr. "!ID(((()" (primijeti da mu ovdje D sluzi kao
handy autocenzura, jer upravo zbog svojih religijskih
uvjerenja nije mogao napisati
"!I(((((((())" (apage!:), sto je
inace ekvivalentno s ovim gore...)

(Vec ovo dosad bilo bi dovoljno za pisanje hrpetine
knjiga, tipa "Psihologija GIMa u 5 tomova":-),
o tome sto je ispisivo, a sto nije (primijeti da imamo
samo jedan "pravi" aksiom: ispisiv & recenica => istinit ),
no, da je stao na tome, Goedel ipak ne bi bio autor teorema
stoljeca:-)... najuzbudljiviji dio je tek pred nama...:-)
however, ako mislis da you need a break,
mislim da je ovo dobro mjesto za predah...:)
...
Idemo dalje:-? Na Mjesec:-? :-) Idemo...:-))

OK, a sad se malo pozabavimo onom legendarnom zakletvom na
americkim sudovima, tipa: "I will tell the truth, the whole
truth, and nothing but the truth" :-)... i pogledajmo zasto je
ona tako strahovito besmislena,
kad se shvati strogo logicki...:-/

Zamislimo da se covjecanstvu GIM jako svidio, i naucili su ga
jos neke stvari, tako da sad moze govoriti relativno dobro i
prirodnim jezikom, a ne samo tako da nam treba salabahter da
bismo ga razumjeli... kog vraga mu zapravo znaci
npr. "!ID(!I(!I(!)))" :-)

I sve je to lijepo, GIMovi suraduju s ljudima, lijepo je
popricati s jednim GIMom kad si apsolutno uvjeren da je
sve sto ce ti reci istina... (kad su im ugradivali speech
engine, dogovoreno je da na audio output idu samo
recenice - izrazi koji nisu recenice jos uvijek se logiraju
na papirnoj traci
za potrebe perverznih logicara:-), ali u obicnom razgovoru
s GIMom covjek ih i ne primjecuje...), pticice pjevaju... i
tako to (ili je bolje da ne spominjem pticice vise:-? :)

No postoji eine kleine
problem: ako GIM nesto _ne zeli_ reci, nema sanse
da ga se natjera da to kaze, cak i ako je sam uvjeren da je to
istina... ponekad covjeka zivcira imati tako logicki savrsenog
sugovornika koji uporno odbija izgovoriti neku trivijalnu
istinu... (poznato odnekud:-? :)

Zamislimo sad da ljudi, pohlepni kakvi vec jesu:-/ :-), pozele
novu verziju, GIM2, koja ce ispraviti taj "nedostatak"...
dakle, taj hipotetski GIM2 mogao bi s punim pravo reci
"I tell the truth, the whole truth, 
and nothing but the truth"...
s obzirom na to da bi GIM2 to vjerojatno smatrao recenicom,
ona bi morala biti istinita:-), dakle, GIM2 bi zaista morao
	(1) govoriti istinu            (E istina)izgovoriva
	(2) govoriti svu istinu        (A istina)izgovoriva
	(3) govoriti nista osim istine (A izgovoriva)istina
(jasno ovo s kvazi-kvantifikatorima:-?)
(u skladu sa specifikacijama 
GIMovog speech enginea - vidi gore:-),
"izgovoriva" ovdje znaci ispisiva & recenica ... ok?)

A sad da vidimo sto vec imamo:
*Obicni GIMovi niposto nisu sutljiva stvorenja - dakle,
(1) ocito nije problem... (uvijek mozemo staviti da je npr.
"(" ispisiv, kao i "I(()"...)
*Takoder, razlog zbog kojeg su GIMovi i postali toliko 
zanimljivi je upravo (3) - dakle, i to je vec rijeseno...
*Jedino sto treba ubaciti u GIMa2 je svojstvo (2)...
ne treba on govoriti neke teske filozofske istine... samo ono
sto se da izraziti u njegovom svijetu, pomocu ! I D ( ) ...
ideje... jednostavno prolaziti po svim recenicama, analizirati
njihovu istinitost i, ako su istinite, izgovarati ih... 
buduci da recenica ima prebrojivo mnogo, 
algoritam se moze dovoljno pametno napraviti tako da 
svaka recenica dode na red... pa ne bi to
trebalo biti tako tesko(?)... pitaju se znanstvenici, 
tehnicari i inzenjeri na projektu "GIM2"...

"E, PA BI! PRETESKO!" - grmi Goedel s pocetka 20og stoljeca,
preko vjecnosti... "NEMOGUCE!"
A zasto:-? Da vidimo...

Stos je u tome da jos u osnovnom GIM-sustavu
(kojeg su vec gotovo svi zaboravili, ali na kojem mora biti
nadograden GIM2 - jer se nitko vise ne sjeca kako je svojstvo
(3) bilo tako uspjesno implementirano bez bugova...:)
postoji recenica
(ne samo jedna, ali i jedna je previse:-/) G , koja je
nesumnjivo i neoborivo istinita (i GIM je svjestan toga!:),
ali koju jadni GIM nema sanse ispisati...

(to be continued... u sljedecem mailu...:)
[/lesson]