Tehtävä:
Sieventäminen propositiologiikassa
Lyhyt
MathCheck-ohje (uuteen välilehteen)
Tässä tehtävässä harjoitellaan lisää propositiologiikan operaattoreiden
käyttöä ja tutustutaan kaavojen sieventämiseen yksinkertaisempaan muotoon.
Tehtävässä käytetään klassista kaksiarvologiikkaa, eli kolmas totuusarvo
U ei ole käytössä.
Hiukan totuustauluista
Yleensä logiikan alkeiskursseilla on totuustaulutehtäviä.
Minusta totuustaulut ovat tylsä ja virhealtis tekniikka, joten tällä
veppisivulla on totuustaulun laatimistehtäviä vain tämä yksi, ja sekin pieni.
Valitse ne ja vain ne kohdat joihin tulee T .
Täydennä kaavan (P ∨ ¬Q ∨ R ) ∧ (¬P ∨ ¬Q
∧ R ) totuustaulu.
Toisinpäin on vähemmän tylsää, mutta sinne päästäksemme
aloitamme tylsästi.
Miten voi helposti muodostaa kaavan, joka tuottaa yhdellä totuustaulun rivillä
T ja muilla riveillä F ?
VastausKäydään läpi kaikki propositiot
X ja muodostetaan jokaisesta niistä osakaava.
Osakaava on ¬X , jos ko. rivillä X on F , ja osakaava on
X , jos ko. rivillä X on T .
Osakaavat yhdistetään operaattorilla ∧.
Miten voi helposti muodostaa (mahdollisesti pitkän) kaavan, joka tuottaa
joillakin totuustaulun riveillä T ja muilla riveillä F ?
VastausMuodostetaan jokaisesta
T -rivistä kaava edellä kuvatulla tavalla, ja yhdistetään ne
operaattorilla ∨.
Muodosta edellä kuvatulla tavalla alla olevaa totuustaulua vastaava kaava.
prop_logic ok_text Oikein!
f_nodes 14 f_DNF hide_expr P /\ !Q /\ R \/ !P /\ Q /\ !R <=>
tai
P Q R
F F F
F
F F T
F
F T F
T
F T T
F
T F F
F
T F T
T
T T F
F
T T T
F
Toivottavasti olet hoksannut, että jos T -rivejä on paljon, niin
edellä kuvattu tapa tuottaa pitkiä kaavoja!
Toisinaan on mahdollista löytää paljon lyhyempi kaava.
Kirjoita totuustaulua vastaavat kaavat.
Melko kömpelötkin kaavat hyväksytään, mutta todelliset taiturit saavat aikaan
melko lyhyet kaavat.
Voit vaikka kehittää jonkin kelpaavan kaavan, jättää sen yläriville, lisätä
perään <=> ja alarivillä kehittää mahdollisimman lyhyen
kelpaavan kaavan.
Vihje ψMuodosta ¬ψ ja täydennä
sitä.
P Q R
φ ψ χ
F F F
F T F
F F T
F T F
F T F
F T T
F T T
F T F
T F F
T T T
T F T
F F T
T T F
T T F
T T T
F T T
prop_logic ok_text Oikein!
f_nodes 14 b_nodes 4 hide_expr P /\ !R <=>
φ ⇔
tai
prop_logic ok_text Oikein!
f_nodes 7 b_nodes 5 hide_expr Q \/ !(P /\ R) <=>
ψ ⇔
tai
prop_logic ok_text Oikein!
f_nodes 15 b_nodes 5 hide_expr P <-> (Q --> R) <=>
χ ⇔
tai
Jatkoa varten huomaa, että edellä kaavan φ sarakkeessa on 2 ja kaavan ψ
sarakkeessa 7 T :tä.
Edellä kuvailtiin kaava, joka tuottaa yhdellä totuustaulun rivillä T
ja muilla F .
Seuraava tavoite on hahmottaa, mitä saadaan muodostamalla samalla
periaatteella lyhyempi kaava, jossa vain osa propositioista on mukana.
Jos propositiot ovat p , q , r ja s , niin sellainen
kaava koostuu yhdestä tai useammasta osasta, missä osa on pelkkä propositio
tai ¬ ja propositio, ja peräkkäisten osien välissä on ∧.
Se siis noudattaa kielioppia
K ::= L | K ∧ L
L ::= A | ¬A
A ::= p | q | r | s
Kukin propositioista p , q , r ja s esiintyy
kaavassa enintään kerran.
Kaava voi siis olla esimerkiksi q ∧¬r ∧¬p , mutta ei voi
olla ¬s ∧s .
Kuinka monta T on kaavan sarakkeessa kaavan totuustaulussa, jos
kaavassa on kaikkiaan ilmoitettu määrä propositioita?
only_no_yes_on ok_text Oikein!
f_nodes 1 hide_expr 8 =
1
tai
only_no_yes_on ok_text Oikein!
f_nodes 1 hide_expr 4 =
2
tai
only_no_yes_on ok_text Oikein!
f_nodes 1 hide_expr 2 =
3
tai
only_no_yes_on ok_text Oikein!
f_nodes 1 hide_expr 1 =
4
tai
Jos eri propositioita on kaikkiaan n kappaletta ja kaavassa esiintyy
i propositiota, niin kuinka monta T on kaavan sarakkeessa?
(Edellä oli n = 4 ja i vaihteli 1, 2, 3 ja 4.)
ok_text Oikein!
assume i > 0 /\ n > 0; f_nodes 5 hide_expr 2^(n-i) =
tai
Tällä tavalla voidaan poimia monta T -riviä lyhyellä kaavalla, mutta
vain jos ne sijaitsevat totuustaulussa sopivasti toisiinsa nähden.
Suuruusjärjestyskaavoja
Sovelluksissa propositioina on usein jotain konkreettista.
Harjoittelemme sitä hetken aikaa.
(Muodollisesti tämä ei ole propositiologiikkaa vaan kvanttoritonta
predikaattilogiikkaa.)
Varmistamme ensin, että muutama tärkeä peruskaava on tuttu.
¬(x < y ) ⇔
real_logic ok_text Oikein!
f_nodes 3 ¬(x < y) ⇔
tai
x < y ∨ x = y ⇔
real_logic ok_text Oikein!
f_nodes 3 x < y ∨ x = y ⇔
tai
x < y ∧ x = y ⇔
real_logic ok_text Oikein!
f_nodes 1 x < y ∧ x = y ⇔
tai
x ≤ y ∨ x = y ⇔
real_logic ok_text Oikein!
f_nodes 3 x ≤ y ∨ x = y ⇔
tai
x ≤ y ∧ x = y ⇔
real_logic ok_text Oikein!
f_nodes 3 x ≤ y ∧ x = y ⇔
tai
x < y ∨ x > y ⇔
real_logic ok_text Oikein!
f_nodes 3 x < y ∨ x > y ⇔
tai
x < y ∧ x > y ⇔
real_logic ok_text Oikein!
f_nodes 1 x < y ∧ x > y ⇔
tai
x ≤ y ∨ x ≥ y ⇔
real_logic ok_text Oikein!
f_nodes 1 x ≤ y ∨ x ≥ y ⇔
tai
x ≤ y ∧ x ≥ y ⇔
real_logic ok_text Oikein!
f_nodes 3 x ≤ y ∧ x ≥ y ⇔
tai
Sitten teemme vaiheittain kaavoja kuvista.
Kirjoita muuttujaa x koskeva ehto, joka vastaa oheisen suorakaiteen
vasenta ja oikeaa reunaa sekä niiden väliin jäävää aluetta.
Älä vielä välitä y -koordinaateista.
real_logic ok_text Oikein!
f_nodes 6 hide_expr -1 <= x <= 3 <=>
tai
Kirjoita muuttujaa y koskeva ehto, joka vastaa oheisen suorakaiteen
ylä- ja alareunaa sekä niiden väliin jäävää aluetta.
Älä välitä x -koordinaateista.
real_logic ok_text Oikein!
f_nodes 5 hide_expr 1 <= y <= 4 <=>
tai
Kirjoita ehto, joka vastaa oheisen suorakaiteen peittämää aluetta reunat
mukaan lukien.
real_logic ok_text Oikein!
f_nodes 12 hide_expr -1 <= x <= 3 /\ 1 <= y <= 4
<=>
tai
Kirjoita ehto, joka vastaa oheisen suorakaiteen peittämää aluetta vasen ja
yläreuna mukaan lukien mutta oikea ja alareuna pois lukien.
Nurkista vain vasen ylänurkka on mukana.
real_logic ok_text Oikein!
f_nodes 12 hide_expr -1 <= x < 3 /\ 1 < y <= 4
<=>
tai
Kirjoita ehto, joka vastaa oheisen suorakaiteen nurkkia (siis neljää
erillistä pistettä).
real_logic ok_text Oikein!
f_nodes 33 b_nodes 16 hide_expr (x = -1 \/ x = 3) /\ (y = 1 \/ y = 4)
<=>
tai
Kirjoita ehto, joka vastaa oheisen suorakaiteen reunaa (siis vasen reuna,
oikea reuna, yläreuna ja alareuna, mutta ei sisälle jääviä pisteitä).
real_logic ok_text Oikein!
f_nodes 29 b_nodes 26 hide_expr -1 <= x <= 3 /\ 1 <= y <= 4 /\
!(-1 < x < 3 /\ 1 < y < 4)
<=>
tai
Kirjoita sen suoran yhtälö, joka kulkee pisteen (0,2) kautta ja täsmää
oheisen kolmion yhteen sivuun.
real_logic ok_text Oikein!
f_nodes 7 b_nodes 5 hide_expr y = 2 - x <=>
tai
Kirjoita ehto, joka täsmää niihin pisteisiin, jotka jäävät äskeisen suoran
yläpuolelle.
real_logic ok_text Oikein!
f_nodes 7 b_nodes 5 hide_expr y > 2 - x <=>
tai
Kirjoita oheisen kolmion oikeanpuoleista reunaa vastaavan suoran yhtälö.
real_logic ok_text Oikein!
f_nodes 9 b_nodes 7 hide_expr y = 3x-6 <=>
tai
Kirjoita oheisen kolmion yläreunaa vastaavan suoran yhtälö.
real_logic ok_text Oikein!
f_nodes 12 b_nodes 7 hide_expr y = -x/5+3 3/5 <=>
tai
Kirjoita oheisen kolmion pisteitä reunat pois lukien vastaava ehto.
real_logic ok_text Oikein!
f_nodes 30 b_nodes 21 hide_expr y > 2 - x /\ y > 3x-6 /\ y <
-x/5+3 3/5 <=>
tai
Sieventäminen tapauksiin jakamalla
Propositiologiikassa voi sieventää ja päätellä monella eri tavalla.
Yksi helppo tehokas tapa, josta voi jopa tehdä MathCheckillä tarkastettavia
tehtäväsarjoja, on valita jokin propositio, sijoittaa sen arvoksi F ja
sieventää, sijoittaa sen arvoksi T ja sieventää, ja yhdistää tulokset.
Todistamme tällä tavalla, että
¬(P ↔ Q ) ⇔ P ↔ ¬Q .
Tarvitsemme seuraavat aputulokset.
Sitten todistamme tavoitteemme vaiheittain.
Seuraavaksi todistamme, että ↔ on liitännäinen eli (P ↔ Q ) ↔
R ⇔ P ↔ (Q ↔ R ).
Tarvitsemme seuraavan aputuloksen.
VihjeTietokonepeleissäkin aikaisemmin
saman pelin aikana kohdatuilla asioilla saattaa olla käyttöä
myöhemmin.
Sitten todistamme tavoitteemme vaiheittain.
Seuraavaksi tavoitteena on soveltaa tätä keinoa itsenäisemmin.
Sitä varten on hyödyksi palauttaa mieleen, mitä P → Q tuottaa
silloin kun P tai Q on totuusarvovakio.
Vihje: P → Q voidaan ilmaista ilman symbolia → tällä¬P ∨ Q
tavalla.
only_no_yes_on ok_text Oikein!
prop_logic f_nodes 1 FF → Q <=>
F → Q ⇔
end_of_answer
prop_logic f_nodes 1 TT → Q <=>
T → Q ⇔
end_of_answer
prop_logic f_nodes 2 P → FF <=>
P → F ⇔
end_of_answer
prop_logic f_nodes 1 P → TT <=>
P → T ⇔
tai
Propositionaalinen implikaatio → ei ole liitännäinen, eli
(P → Q ) → R ⇔ P → (Q → R ) ei päde.
Valitse alta propositio, sijoita sen paikalle vuoronperään F ja
T , sievennä vasen puoli ja sievennä oikea puoli.
Valitse alempaa ne proposition ja totuusarvon yhdistelmät, joilla vasen ja
oikea puoli sievenevät samoiksi.
prop_logic ok_text Oikein!
assume
P
Q
R
<->
F
T
;
(P → Q ) → R ⇔
P →
(Q → R ) ⇔
tai
ok_text Teit oikeat valinnat!
only_no_yes_on arithmetic hide_expr 2 = hide_expr
P ≡ F
P ≡ T
Q ≡ F
Q ≡ T
R ≡ F
R ≡ T
tai
Propositioilla P , Q ja R on yhteensä
only_no_yes_on ok_text Oikein!
arithmetic f_nodes 1 hide_expr 8 =
totuusarvoyhdistelmää.
Tapaukset, joissa edellä vasen ja oikea puoli sievenivät samoiksi, kattavat
niistä
end_of_answer
arithmetic f_nodes 1 hide_expr 6 =
.
Tutkimatta on enää
end_of_answer
arithmetic f_nodes 1 hide_expr 2 =
totuusarvoyhdistelmää.
Ne ovat nämäP ⇔ F ,
R ⇔ F ja Q on kumpi tahansa. .
tai
Sijoittamalla tutkimatta olevissa tapauksissa propositioille edellä mainitut
totuusarvot, (P → Q ) → R sievenee muotoon
only_no_yes_on ok_text Oikein!
prop_logic assume !P /\ !R;
f_nodes 1 hide_expr (P → Q) → R <=>
ja P → (Q →
R ) sievenee muotoon
end_of_answer
prop_logic assume !P /\ !R;
f_nodes 1 hide_expr P → (Q → R) <=>
.
tai
Muodosta mahdollisimman lyhyt kaava, joka on tosi täsmälleen silloin, kun
(P → Q ) → R ⇔ P → (Q → R ) pätee.
ok_text Oikein!
prop_logic f_nodes 3 hide_expr P \/ R <=>
tai
Muita sievennyskeinoja
Propositiologiikassa voi päätellä myös kaavoja käyttämällä samaan tapaan kuin
aritmetiikassa.
Esimerkkinä todistamme, että P → Q ⇔ ¬Q → ¬P .
Ensin sovella implikaation eliminointia, sitten kaksoisnegaation eliminointia,
ja lopuksi implikaation määritelmää.
prop_logic ok_text Oikein!
f_top_opr \/ f_nodes 6
!Q --> !P
<=>
end_of_answer prop_logic
f_top_opr \/ f_nodes 4 hide_expr !Q --> !P
<=>
end_of_answer prop_logic
f_top_opr --> f_nodes 3 hide_expr !Q --> !P
<=>
tai
Sovella ensin implikaation eliminointia, sitten de Morganin lakia, ja keksi
loppu itse!
prop_logic ok_text Oikein!
f_top_opr \/ f_nodes 6
P /\ Q --> P
<=>
end_of_answer prop_logic
f_nodes 7 hide_expr P /\ Q --> P
<=>
end_of_answer prop_logic
f_nodes 1 hide_expr P /\ Q --> P
<=>
tai
Toisinaan sieventämisessä voi hyödyntää sitä, että jos disjunktion jokin osa
toteutuu, muiden osien totuusarvoilla ei ole väliä.
Jos P ⇔ T , niin P ∨ ¬P ∧ Q ⇔
prop_logic ok_text Oikein!
f_nodes 1 TT \/ ! TT /\ Q <=>
, ja
jos P ⇔ F , niin P ∨ ¬P ∧ Q ⇔
end_of_answer prop_logic
f_nodes 1 FF \/ ! FF /\ Q <=>
.
Siksi P ∨ ¬P ∧ Q ⇔
end_of_answer prop_logic
f_nodes 3 P \/ ! P /\ Q <=>
tai
Sievennä P ∧ (¬P ∨ Q ) ⇔
prop_logic ok_text Oikein!
f_nodes 3 P /\ (! P \/ Q) <=>
tai
Sievennä (P ∧ Q ∨ ¬Q ∧ R ) ∧ (P ∨ ¬R )
⇔
prop_logic ok_text Oikein!
f_nodes 5 (P /\ Q \/ !Q /\ R) /\ (P \/ !R) <=>
tai
vihjeTähän puree hyvin jako tapauksiin
P ⇔ F ja P ⇔ T .
Sieventäminen millä vaan keinolla
Sievennä seuraavat lausekkeet mahdollisimman yksinkertaiseen muotoon, jossa
ei esiinny → eikä ↔.
Valitse itse keinot, joita käytät.
Yhdessä kohdassa on kaksi kompleksisuusrajaa.
Väljemmän rajan saavuttaminen riittää, mutta on hienoa, jos saavutat
tiukemmankin.
P → ¬P ⇔
prop_logic ok_text Oikein!
f_ban --> <->; f_nodes 2 P --> !P <=>
tai
P ↔ Q ↔ P ⇔
prop_logic ok_text Oikein!
f_ban --> <->; f_nodes 1 P <-> Q <-> P
<=>
tai
(P → Q ) ∧ ¬(Q → P ) ⇔
prop_logic ok_text Oikein!
f_ban --> <->; f_nodes 4 (P --> Q) /\ !(Q --> P)
<=>
tai
P ∧ ¬Q ∨ Q ∧ R ∧ ¬P ∨ Q ∧ P ⇔
VihjeMihin muotoon kaava sievenee, jos
P ⇔ F ?
Entä jos P ⇔ T ?
prop_logic ok_text Oikein!
f_ban --> <->; f_nodes 5 P /\ !Q \/ Q /\ R /\ ! P \/ Q /\ P
<=>
tai
(P → Q ) ∧ (Q → R ) ∧ (R → P ) ⇔
Vihje 1Kaava koostuu kolmesta osasta.
Millä osat on yhdistetty?
Mikä kunkin osan totuusarvon tulee olla, jotta koko kaavan totuusarvo olisi
T ?
Vihje 2Osat on yhdistetty ∧:lla ja
kunkin osan totuusarvon tulee olla T .
Vihje 3Jos sijoitetaan P ⇔
T , niin mikä Q :n totuusarvon tulee olla, jotta osuuden P
→ Q totuusarvo olisi T ?
Vihje 4Jos sijoitetaan P ⇔
F , niin mikä R :n totuusarvon tulee olla, jotta osuuden R
→ P totuusarvo olisi T ?
prop_logic ok_text Oikein!
f_ban --> <->; f_nodes 14 b_nodes 12 (P --> Q) /\ (Q --> R) /\
(R --> P) <=>
tai
y + 2x ≤ 11 ∧ ¬(y < 3 ∨ y − 6 ≥ 3x ) ∨
y − 1 > x − 2 ⇔
Vihje 1Piirrä kuva.
Vihje 2Ole tarkkana sen suhteen, ovatko
reunatapaukset mukana vai ulkona.
real_logic ok_text Oikein!
f_nodes 13 f_ban --> <->;
y+2x ≤ 11 ∧ !(y < 3 ∨ y-6 ≥ 3x) ∨ y-1 > x-2 <=>
tai
Loogisesti ajateltu!