Mag ik mij even voorstellen. Mijn naam is Han de Bruijn,
72 jaar, ingenieur technische natuurkunde, afgestudeerd theoretische fysica.
Mijn twee voornaamste bezigheden (naast zaken van huishoudelijke en sociale aard)
zijn wiskunde en muziek.
Daarnaast voer ik soms discussies op het Sterrenstof forum. Daar kwam een zekere Emanual Rutten ter sprake:
1 JULI, 2019 OM 3:40 PM.
Toen ging ik graven.
Het probleem van de materiële implicatie speelt bij mij als sinds mijn afstuderen, en dan spreek ik over 1973, uw geboortejaar!
Klik op:
Volgens mij is er dus wel degelijk een oplossingsrichting, zoals ook aangeduid op Sterrenstof: de IF .. THEN .. ELSE .. in computertalen.
Nemen we de Nederlandse presentatie "Het schandaal van de propositie logica"
slide nummer 58: $(P \Rightarrow R) \vee (Q \Rightarrow R)$.
In gewone omgangstaal is dit, pertinent onjuist:
Uit het feit dat Jan ouder is dan 20 volgt dat zijn leeftijd tussen 20 en 30 ligt
OF uit het feit dat hij jonger is dan 30 volgt dat zijn leeftijd tussen 20 en 30 ligt.
In de Engelstalige versie staat er:
Brigitte can mix green with yellow paint
or Brigitte can mix green with blue paint.
In een boek over compiler bouw [ David Gries, "Compiler Construction for Digital Computers", John Wiley & Sons, 1971 ] lezen wij:
c OR d wordt gedefinieerd door IF c THEN TRUE ELSE d c AND d wordt gedefinieerd door IF c THEN d ELSE FALSE NOT c wordt gedefinieerd door IF c THEN FALSE ELSE TRUE c ==> d wordt gedefinieerd door IF c THEN d ELSE TRUE c wordt gedefinieerd door IF c THEN TRUE ELSE FALSEDe gewraakte uitdrukking $(P \Rightarrow R) \vee (Q \Rightarrow R)$ wordt hiermee:
if (if P then R else TRUE) then TRUE else (if Q then R else TRUE)In de bijlage vindt u een stroomdiagram dat overeenkomt met deze opeenvolging van instructies.
Maar we hebben nog meer geluk.
In de meeste moderne programmeertalen zijn "boolean expressions" namelijk automatisch onderhevig aan "lazy evaluation".
Daarom kunnen we de sequentiële uitdrukking van hierboven eenvoudig vervangen door het combinatorische equivalent:
$((\neg P) \vee R) \vee ((\neg Q) \vee \underset{\color{red}{\bf -}}{R}(R))$.
Met een kleine aanpassing voor de tweede variabele $R$: de functie $\underset{\color{red}{\bf -}}{R}(R)$ is identiek aan $R$
maar bevat een alarm melding: ' waargenomen! '.
Een klein programmaatje in Pascal moet nog meer duidelijk maken waar de clou zit: inderdaad wordt de melding nooit gegeven!
program de_clou; function r_(r : boolean) : boolean; begin Write(' waargenomen! '); r_ := r; end; procedure test; var p,q,r : boolean; k : integer; L : double; begin Writeln('P':6,'Q':6,'R':6,'(P=>R)v(Q=>R)':16); Writeln('-----------------------------------'); for k := 1 to 3 do begin L := 10*k+5; p := (L >= 20); q := (L <= 30); r := (p and q); Writeln(p:6,q:6,r:6,((not p) or r) or ((not q) or r_(r)):12); { if (if p then r else true) then true else (if q then r else true) } end; end; begin test; end.Uitvoer (let op afwezigheid alarm):
P Q R (P=>R)v(Q=>R) ----------------------------------- FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE FALSE FALSE TRUEHet feit dat de opdracht $\underset{\color{red}{\bf -}}{R}(R)$ nooit kan worden uitgevoerd komt geheel en al overeen met het besef van onzinnigheid in de omgangstaal.
Uit het feit dat Jan ouder is dan 20 volgt dat zijn leeftijd tussen 20 en 30 ligt
OF hij is niet jonger dan 30
Dit lijkt mij geen schandalige conclusie meer!
Met vriendelijke groet,
Han de Bruijn
Aanleiding to mijn email was een bericht
op het Sterrenstof forum over deze publicatie:
Het kosmologisch argument - E. Rutten.
De publicatie genoemd in je email lijkt op het eerste gezicht van soortgelijke strekking:
Atomism, Causalism and the Existence of a First Cause - E. Rutten.
Zelf ben ik absoluut geen atheïst en heb geen a priori oordeel over argumenten die het bestaan van God aannemelijk proberen te maken.
Maar ik heb beide artikelen slechts vluchtig doorgelezen, getuige bijvoorbeeld
deze reactie.
Met degene die jouw publicatie ter sprake bracht (Ubbo) heb ik vervolgens een tamelijk vruchteloze discussie gevoerd over
causaliteit.
Waarbij moet worden aangetekend dat mijn begrip, van wat causaliteit eigenlijk is, aanzienlijk afwijkt van wat anderen ervan denken:
Maar om nog even terug te komen op "Het schandaal van de propositielogica".
We hebben gezien dat de gewraakte uitdrukking $(P \Rightarrow R) \vee (Q \Rightarrow R)$ equivalent is met $((\neg P) \vee R) \vee ((\neg Q) \vee R)$.
Dus er staat in feite: $((\neg P) \vee (\neg Q) \vee (R \vee R))$. De laatste R is overbodig: $(R \vee R = R)$. Dus er staat: $(P \Rightarrow R) \vee (\neg Q)$.
Het heeft er de schijn van dat de logica van de omgangstaal superieur is aan de mathematische logica om de volgende reden: EFFICIENCY.
De uitdrukking $(P \Rightarrow R) \vee (Q \Rightarrow R)$ is ondoelmatig / inefficiënt, omdat ze twee keer hetzelfde poneert: $R \vee R$.
Onze logische intuitie "weet" dat en verwerpt dit soort uitdrukkingen. Zou je jezelf in deze conclusie kunnen vinden?
Hartelijke groet,
Han
Nog even een andere blik op ons oude probleem, met 0 = FALSE en 1 = TRUE:
$ (P \Rightarrow R) \vee (Q \Rightarrow R) \quad \mbox{met} \quad R = (P \wedge Q) $
Maar dan sequentiëel opgevat, alle mogelijkheden op een rijtje:
if (if P then R else 1) then 1 else (if Q then R else 1) : algemeen
if (if 0 else 1) then 1 [ ] : P = 0
if (if 1 then 0 ) else (if 0 [ ] else 1) : P = 1, Q = 0
if (if 1 then 1 ) then 1 [ ] : P = 1, Q = 1
De tweede instantie van R is bij alle (0,1) specificaties een lege plek.
Dit betekent dat de tweede instantie van R
- in de meest letterlijke zin - niet waarneembaar is.
Het bijbehorende stroomdiagram is hiermee in overeenstemming:
Beschouw de tautologie $(P \Rightarrow Q) \vee (Q \Rightarrow P)$.
Deze is identiek aan $(\neg P) \vee Q \vee (\neg Q) \vee P$
en is dus combinatorisch heel erg waar.
De sequentiële versie is,
met 0 = FALSE en 1 = TRUE en alle mogelijkheden op een rijtje:
if (if P then Q else 1) then 1 else (if Q then P else 1) : algemeen if (if 0 else 1) then 1 [ ] : P = 0 if (if 1 then 0 ) else (if 0 [ ] else 1) : P = 1, Q = 0 if (if 1 then 1 ) then 1 [ ] : P = 1, Q = 1De tweede instantie van P is dus niet waarneembaar. Zoals ook duidelijk te zien is in het stroomdiagram:
if FALSE then Q else TRUEHet is duidelijk dat een computerprogramma nooit de instructie Q zal bereiken. Dit is waarschijnlijk ook zo in onze hersenen.
Niet alle propositielogica is schandalig. De hoogste tijd voor een tegenvoorbeeld: $(P \Rightarrow Q) \Rightarrow (\neg Q \Rightarrow \neg P)$.
if (if P then Q else 1) then (if -Q then -P else 1) else 1 : algemeen if (if 0 else 1) then (if 1 then 1 ) : P = 0, Q = 0 if (if 0 else 1) then (if 0 else 1) : P = 0, Q = 1 if (if 1 then 0 ) else 1 : P = 1, Q = 0 if (if 1 then 1 ) then (if 0 else 1) : P = 1, Q = 1Alle instanties van P en Q zijn dus waarneembaar. Alle nuttige paden leiden naar de waarheid.