Logička konjunkcija

**Logička konjunkcija** ili **logičko „i“** je jedna od binarnih logičkih operacija čiji je rezultat „tačno“ samo ako su oba operanda tačna, a u svim drugim slučajevima rezultat je „netačno“.

## Obilježavanje
Logička konjunkcija kao operacija se obično naziva logičkim „i“, jer predstavlja analogiju sa govornim veznikom „i“. Na primjer, ako se kaže „Učiću matematiku ako budem odmoran **i** ako budem imao vremena“, to znači da će se učenje obaviti samo ukoliko se ispune oba uslova — ako bilo koji od uslova bude netačan ili oba budu netačna, učenje se neće obaviti.

U matematičkoj logici, logička konjunkcija se označava simbolom \land, pa se konjunkcija elemenata p i q obilježava na slijedeći način:

p \land q

## Istinitosna tablica
Logičko „i“ se kao operacija najlakše i najpraktičnije definiše pomoću istinitosne tablice. Naime, u tablici se definiše rezultat operacije za sve kombinacije operanada. Pošto je operacija binarna (ima samo dva operanda), a operandi su logičke vrijednosti (tačno ili netačno), istinitosna tablica je kratka i lako razumljiva:

Iz tablice se lako vidi koji je rezultat operacije za svaku moguću kombinaciju parametara. Na primjer, u trećoj koloni piše „ako je p netačno a q tačno, onda je p \land q netačno.“. U sabijenom obliku ova istinitosna tablica izgleda na slijedeći način:

## Osobine
Operacija konjunkcije ima slijedeće matematičke osobine:
1. Rezultat je isti bez obzira da li konjugujemo a sa b ili b sa a, tj. nije bitan raspored operanada:
::\forall p, q, p \land q = q \land p (komutativnost)
2. Ako imamo više elemenata koje konjugujemo, rezultat je isti bez obzira na redoslijed izvršavanja konjugacije. Drugim riječima, nije bitno da li prvo konjugujemo prvi sa drugim, a onda rezultat sa trećim, ili prvo npr. drugi sa trećim, pa rezultat sa prvim:
::\forall p, q, r, (p \land q) \land r = p \land (q \land r) (asocijativnost)
3. Ako se jedan element p konjuguje sa nekim složenim elementom koji predstavlja disjunkciju drugih elemenata, tada se element p može prvo konjugovati sa svakim od njih posebno, a onda nad ta dva rezultata izvršiti disjunkciju. Ista situacija važi i ako je složeni operand konjunkcija. Drugim riječima, važe slijedeće formule:
::\forall p, q, r, p \land (q \lor r) = (p \land q) \lor (p \land r) (lijeva distributivnost po disjunkciji)
::\forall p, q, r, p \land (q \land r) = (p \land q) \land (p \land r) (lijeva distributivnost po konjunkciji)
::\forall p, q, r, (q \lor r) \land p = (q \land p) \lor (r \land p) (desna distributivnost po disjunkciji)
::\forall p, q, r, (q \land r) \land p = (q \land p) \land (r \land p) (desna distributivnost po konjunkciji)
4. Bilo koji element, kad se konjuguje sa samim sobom, daje vrijednost koju ima i sam:
::\forall p, p \land p = p (idempotencija)
5. Na kraju, logička konjugacija je i monotona funkcija u odnosu na relaciju logičke implikacije:
::\forall p, q, r, (p \Rightarrow q) \Rightarrow ((p \land r) \Rightarrow (q \land r))

## Računarstvo
### Programiranje
Konjunkcija se u programiranju koristi kao operator koji učestvuje u formiranju složenih uslova koji moraju biti zadovoljeni da bi se određena radnja obavila (grananje) ili ponavljala (petlja). Na primjer, može se napisati „ako je broj prost I ako je veći od 10, ispiši ga na ekran“. U različitim programskim jezicima se koriste različite oznake za konjugaciju, pa se npr. u programskom jeziku -{C}- koristi oznaka `&&`, u Paskalu engleska riječ -{AND}- (što na srpskom znači „i“), itd. Slijedi programski kod za spomenuti primjer, pod pretpostavkom da je definisana funkcija `prost`:


```c
if ( prost(b) && b > 10 ) /* „ako je broj prost I ako je veći od 10“ */
    printf( "%d\n", b );   /* „odštampaj ga na ekran“ */
```


Pored toga, konjugacija se koristi i u radu sa bitovima koji grade memorijske lokacije; bit sa vrijednošću `1` se posmatra kao logička vrijednost „tačno“ (⊤) a bit sa vrijednošću `0` se posmatra kao logička vrijednost „netačno“ (⊥), a rezultat operacije je broj koji je sačinjen od bitova koji predstavljaju rezultate konjugacije svih odgovarajućih bitova operanada. Tada se u -{C}--u koristi operator `&`, a iako u standardnom Paskalu ne postoji ovaj operator, razna proširenja ga definišu i označavaju isto kao i obični operator -{AND}-. Tako, ako imamo brojeve `p = 45` i `q = 56`, rezultat njihove binarne konjugacije je slijedeći:


\begin{alignat}{2}
p = 45 = & 0010 1101\\
q = 56 = & 0011 1000 \land \\
& 0010 1000 = 40
\end{alignat}


### Baze podataka
U bazama podataka, konjunkcija se često koristi kao operator koji učestvuje u građenju izraza koji određuje podatke na koje se određena naredba odnosi. Tako, ako želimo da obrišemo nevaljane podatke koji su stariji od 7 dana, imaćemo uslov „da su valjani I da su stariji od 7 dana“. S obzirom da većina današnjih baza podataka radi po -{SQL}- standardu, operator konjugacije se uglavnom obilježava engleskom riječju -{AND}-, pri čemu određeni serveri zahtijevaju i da ta riječ bude napisana velikim slovima.

## Porijeklo riječi
Riječ „konjunkcija“ je nastala od latinske riječi „*-{coniunctio, coniunctionis, f.}-*“, što znači „spoj“, „ujedinjenje“ (kao što u srpskom jeziku veznik „i“ sastavlja — „element **i** element“). Bitno je primijetiti da se u srpskom jeziku slova „n“ i „j“ nisu spojila u „nj“, pa je nepravilno reći i napisati „konjunkcija“.

## Povezano
* Logička disjunkcija
* Logičke operacije