Totuusfunktio

**Totuusfunktio** on matemaattisen logiikan termi, joka tarkoittaa totuusarvon (tavallisesti *tosi* tai *epätosi*) antamista väitelauseelle (propositio). Totuusfunktion tulee täyttää seuraavat aksioomat:
* se antaa kullekin väitelauseelle totuusarvoksi joko toden tai epätoden (law of excluded middle)
* samalle väitelauseelle voidaan antaa vain yksi totuusarvo: joko tosi tai epätosi (law of contradiction)
* kaikki totuusfunktiot antavat loogisilla operaattoreilla (konnektiivi) muodostetuille yhdistetyille väitelauseille totuusarvon samalla tavalla niiden osien totuusarvojen perusteella.

Tavallisessa Tosi/Epätosi-kaksiarvologiikassa totuusarvoa Tosi ilmaistaan usein bitillä 1_\mathbf{} ja totuusarvoa Epätosi bitillä 0_\mathbf{}. Tällöin totuusfunktio on mikä tahansa funktio f_\mathbf{}, jonka pituus on 0_\mathbf{}:aa suurempi kokonaisluku n_\mathbf{} ja joka saa arvon 0_\mathbf{} tai 1_\mathbf{} jokaista n_\mathbf{}-pituista bittijonoa kohti. Esimerkiksi totuustaulussa

on kuvattu eräs 3_\mathbf{}-pituisista totuusfunktioista, jossa siis funktio f_\mathbf{} saa arvon 1_\mathbf{} muun muassa silloin, kun x_{1}x_{2}x_{3}\mathbf{}-bittijonona on 101_\mathbf{}. Yleisesti tunnettu esimerkki 2_\mathbf{}-pituisista totuusfunktioista on propositiologiikan JA-konnektiivi, jossa f_\mathbf{}-funktiomerkinnän tilalla on yleensä \land -merkki, joka lisäksi - niin kuin 2_\mathbf{}-paikkaisissa funktioissa useinkin - merkitään väliin edessä olemisen sijaan. Näillä merkinöillä JA-totuusfunktio on siis tällainen: 0\land 0=0, 0\land 1=0, 1\land 0=0 ja 1\land 1=1.

Eri totuusfunktioita voi myös yhdistellä, jolloin saadaan edelleen jokin totuusfunktio. Yhdistämisessä bittimuuttujien tilalle saa mielivaltaisesti sijoittaa jonkin käytettävän bittimuuttujan (Bittimuuttujien määrä riippuu yhdistämisessä saatavan totuusfunktion halutusta pituudesta. Jos n_\mathbf{}  on esimerkiksi 5_\mathbf{}, käytettävissä ovat bittimuuttujat x_{1}, x_{2}, x_{3}, x_{4}\mathbf{} ja x_{5}\mathbf{}.) tai totuusfunktiosta tulevan bittiarvon. Esimerkiksi jos f(00)=0, f(01)=1, f(10)=1_\mathbf{} ja f(11)=1_\mathbf{} sekä g(00)=0, g(01)=1, g(10)=1_\mathbf{} ja g(11)=0_\mathbf{} ovat annetut totuusfunktiot, niin niistä voidaan yhdistellä muun muassa 5_\mathbf{}-paikkainen totuusfunktio y_\mathbf{} säännöllä y(x_{1}x_{2}x_{3}x_{4}x_{5})=g(f(x_{3}g(x_{5}x_{5}))f(x_{4}x_{2}))_\mathbf{}, jolloin esimerkiksi y(10101)=g(f(1g(11))f(00))=g(f(10)0)=g(10)=1_\mathbf{}. Kaikkien bittimuuttujien tai käytettävissä olevien totuusfunktioiden ei tarvitse esiintyä yhdistelmässä, mutta toisaalta sama bittimuuttuja tai totuusfunktio saa esiintyä useamminkin kuin kerran. (Esimerkki-yhdistelmässä x_{1}\mathbf{}-bittimuuttuja ei esiintynyt lainkaan, mutta x_{5}\mathbf{}-bittimuuttuja ja molemmat käytettävissä olleet totuusfunktiot esiintyivät kahdesti.)

Jonkin kiinteän totuusfunktio-joukon (mahdollisesti äärettömän) kohdalla tärkeä kysymys on, onko tämä totuusfunktio-joukko täydellinen. Totuusfunktioiden joukon täydellisyydellä tarkoitetaan sitä, että joukon totuusfunktioita käyttäen voidaan ylläkuvatussa mielessä yhdistellä mikä tahansa haluttu totuusfunktio. Yleinen esimerkki täydellisestä totuusfunktio-joukosta on propositiologiikasta tutut JA- TAI- ja EI-konnektiivit (merkitään \land ,\lor ja \lnot), sillä niitä käyttäen mikä tahansa totuusfunktio voidaan esittää disjunktiivisessa normaalimuodossa. Tässä tapauksessa täydellinen totuusfunktio-joukko sisältää kaksi 2-paikkaisia totuusfunktioita (JA ja TAI) sekä yhden 1-paikkaisen totuusfunktion (EI), mutta yleisessä tapauksessa annetut totuusfunktiot voivat olla pitempiä. Emil Post:n esittämän menetelmän avulla on mahdollista selvittää mistä tahansa totuusfunktio-joukosta, onko se täydellinen vai ei. Tämä menetelmä perustuu seuraavaksi esitettäviin totuusfunktio-luokkiin.

0P:

Tähän luokkaan kuuluvat 0:n säilyttävät totuusfunktiot. Tässä 0:n säilyttäminen tarkoittaa sitä, että totuusfunktion arvona on 0 silloin, kun syötteessä kaikkien bittimuuttujien arvona on 0. Esimerkiksi h(0000)=0 on 0:n säilyttävä totuusfunktio täysin riippumatta siitä mitä arvoja se muilla syötteillä saa. Artikkelin alussa totuustaululla esitetty f ei ole 0:n säilyttävä totuusfunktio.

1P:

Tähän luokkaan kuuluvat 1:n säilyttävät totuusfunktiot. Tässä 1:n säilyttäminen määritellään aivan vastaavasti 0:n säilyttämiseen nähden. Esimerkiksi g(11)=1 on 1:n säilyttävä totuusfunktio.

Iso:

Tähän luokkaan kuuluvat isotoniset totuusfunktiot. Isotonisuuden määrittely perustuu järjestykseen, joka määritellään toisaalta yksittäisten totuusarvojen ja tätä kautta myös useista totuusarvoista (totuusarvo kutakin bittimuuttujaa kohti) koostuvien syötteiden välillä. Totuusarvojen välinen järjestys määritellään niin, että 0 on pienempi kuin 1 ("Tosi on suurempi kuin epätosi."), mikä merkitään 0 , mistä merkintää laajennetaan tavalliseen tapaan ottamaan huomioon myös yhtäsuuruus, jolloin esimerkiksi 0 \leq 1 ja 1 \leq 1, mutta 1 \leq 0 ei ole voimassa. Nyt järjestys laajennetaan useammasta totuusarvosta koostuvalle syötteelle niin, että syöte s on pienempi tai yhtäsuuri kuin syöte t, jos tämä on voimassa erikseen kullakin syötteen totuusarvolla yllä määritellyn totuusarvojen välisen järjestyksen suhteen. Esimerkiksi s=100 \leq 110=t, mutta 10101 \leq 10010 ei ole voimassa, koska vasemmanpuoleisessa syötteessä kolmas ja viides bittimuuttuja on arvoltaan aidosti suurempi (siis 1 > 0-tilanne) kuin vastaava kohta oikeanpuoleisessa syötteessä. Tässä tapauksessa kuitenkaan myöskään 10010 \leq 10101 ei ole voimassa (Nyt vasemmanpuoleisessa neljäs bittimuuttujan arvo on aidosti suurempi kuin oikeanpuoleisessa.), mikä tarkoittaa sitä, että nämä kaksi syötettä eivät ole vertailtavissa, eli on olemassa syötteitä, joita ei voi asettaa keskinäiseen järjestykseen, mikä tarkoittaa sitä, että annettu järjestys ei ole täydellinen. (Täydellisessä järjestyksessä kaikilla syötteillä s ja t olisi voimassa se, että joko s \leq t tai t \leq s.) 

Nyt voidaan määritellä totuusfunktion isotonisuus. 

Totuusfunktio f on isotoninen, jos sen kaikilla vertailtavissaolevilla syötteillä s \leq t on voimassa f(s) \leq f(t), eli funktio antaa aidosti pienemmälle syötteelle pienemmän tai yhtäsuuren arvon kuin suuremmalle syötteelle. (Jos syötteet ovat samat, silloin tietysti funktion antama totuusarvokin on sama.) Artikkelin alussa totuustaulussa esitetty totuusfunktio f ei ole isotoninen, sillä mm. 000 \leq 100, mutta f(000)=1 \leq 0=f(100) ei ole voimassa. Sen sijaan (g(00)=0,g(01)=1,g(10)=0,g(11)=1)-totuusfunktio on isotoninen, sillä siinä järjestysvertailtavissa olevat ei-samat syötteet ovat 00 \leq 10, 00 \leq 01, 00 \leq 11, 01 \leq 11 ja 10 \leq 11 ja jokaisen kohdalla g antaa vasemmanpuoleiselle pienemmälle syötteelle pienemmän tai yhtäsuuren totuusarvon kuin suuremmalle oikeanpuoleiselle.

Totuusfunktion osoittaminen ei-isotoniseksi totuustaulusta katsomalla onnistunee helpoiten löytämällä kaksi syötettä, jotka eroavat toisistaan vain yhden bittimuuttujan arvon suhteen ja joista funktion arvo on 1 siinä missä kyseisen bittimuuttujan arvo on 0 ja päinvastoin. (Esimerkiksi artikkelin alun totuustaulun f-totuusfunktiolla on tällaiset syötteet, kun syötteiksi valitaan f(000)=1>0=f(100), joissa arvoltaan eroava syötteen bittimuuttuja on siis tässä tapauksessa ensimmäinen kolmesta.) On helposti osoitettavissa, että funktio on isotoninen tarkalleen silloin, kun tällaista syöteparia ei ole.

SD:

Tähän luokkaan kuuluvat itseduaaliset totuusfunktiot. Funktion itseduaalisuus perustuu sen "käyttäytymiseen" suhteessa EI-konnektiiviin (\lnot 0=1, \lnot 1=0), jonka käyttö voidaan laajentaa myös useammasta bittimuuttujasta koostuvaan syötteeseen soveltamalla EI-konnektiivia kuhunkin bittimuuttujaan erikseen. 

(esimerkiksi \lnot (10100)=\lnot 1\lnot 0\lnot 1\lnot 0\lnot 0=01011) Totuusfunktion f koon ollessa n se on itseduaalinen, jos sen kaikilla syötteillä x_{1}x_{2}\dots x_{n}

f(\lnot x_{1} \lnot x_{2} \dots \lnot x_{n})=\lnot f(x_{1} x_{2}\dots x_{n}) on voimassa. Toisin sanoen tämä tarkoittaa sitä, että funktion arvo muuttuu aina vastakkaiseksi, jos syötteessä kaikkien bittimuuttujien arvot muutetaan vastakkaisiksi. Esimerkiksi (g(000)=0, g(001)=1, g(010)=0, g(011)=0, g(100)=1, g(101)=1, g(110)=0, g(111)=1)-totuusfunktio on itseduaalinen, ja tätä vaatimusta toteuttaa osaltaan se, että siinä mm. g(\lnot 0\lnot 0\lnot 1)=g(110)=0=\lnot 1=\lnot g(001).

## Katso myös
* Tautologia
* Totuustaulu
* Ekvivalenssi
* Implikaatio
* Totuusarvo

## Lähteet