Логичка негација

Из Википедије, слободне енциклопедије

Логичка негација или Логичко не је унарна логичка операција чија је вредност тачно када њен операнд има вредност нетачно, и обрнуто. Другим речима, логичка негација претвара тачно у нетачно, а нетачно у тачно. Може се применити као рад на предлозима, истинитним вредностима или семантичким вредностима уопште. У класичној логици, негација се обично идентификује са функцијом истине која узима истину за обману и обрнуто. У интуитивној логици, према БХК-ом тумачењу, негација предлога p је предлог p чији докази су деманти од p.

Обележавање[уреди]

У математичкој логици, логичка негација се обележава знаком \lnot. Тако, логичка негација исказа p би се писала \lnot  p и читала „не p“.


Класична негација је логичка операција над једном логичком вредности, обично вредност предлога, који производи вредност тачно када је њен операнд нетачно и нетачно када је њен операнд истина. Дакле, ако је изјава A истинита, онда ¬A (изговара се "не A") ће стога бити лажна, и обрнуто, ако је ¬A истина, онда би A био лажан.

Таблице истинитости за ¬p:

Таблица истинитости за ¬p
p ¬p
Тачно Нетачно
Нетачно Тачно


Поред ове нотације, у пракси се користе још и \bar{p} (чита се „p конјуговано“) и p'\! (чита се „p прим“ или „p комплемент“).

Класична негација може да се дефинише у смислу других логичких операција. На пример, ¬p се може дефинисати као pF, где је "→" је последица и F ' је апсолутна неистина. Насупрот томе, може се дефинисати F као p & ¬p за било који предлог p, где је "&" конјункција. Идеја је да је свака противречност лажна. Док ове идеје раде и у класичној и у интуитиционој логици, они не раде у Бразилској логици, где противречности нису нужно лажне. Али, у класичној логици, ми смо добили још идентитета:pq се може дефинисати као ¬pq, где "∨" је дисјункција: "не p или q".

Алгебарски, класична негација одговара комплементарности у Буловој алгебри, а интуитиционо негирање за псеудо комплементарност у Heyting algebra. Ове алгебре дају семантику за класичне и интуитивне логике респективно.

Табела истинитости[уреди]

Негација p је означена на различите начине у различитим контекстима расправе и поља примене. Међу овим варијантама Таблице истинитости за логичку негацију гласи:

Обележавање Вокализација
¬p не p
p не p
~p не p
Np en p
p'\! p prim,
p комплемент
\bar{p} p bar,
bar p
!p\! bang p
не p

Без обзира на то како је забележено или симболизовано, негација ¬p / −p може се читати као "то није случај да је p" , "не то p", или обично, више једноставно као "не p".

Особине[уреди]

Двострука негација[уреди]

  • У оквиру система класичне логике, двоструке негације, односно, негација негираног исказа p, је логички еквивалентна почетном исказу p. Симболички записано, \lnot \lnot p \Leftrightarrow p 1

У интуитивној логици, предлог подразумева двоструку негацију, али не и обрнуто. Ово представља једну битну разлику између класичне и интуиционе негације. Алгебарски, класична негација се зове запетљање од два периода.

1 У систему интуиционистичке логике, \lnot \lnot p је исказ слабији од p. С друге стране, логичка еквиваленција \lnot \lnot \lnot p \Leftrightarrow \lnot p је и даље тачна.

Дистибутивност[уреди]

Де Морганови закони пружају начин дистрибуцију негације над дисјункцијом и конјункцијом:

\neg(a \vee b) \equiv (\neg a \wedge \neg b),  and
\neg(a \wedge b) \equiv (\neg a \vee \neg b).

Линеарност[уреди]

У Буловој алгебри, линеарна функција је:

Ако постоји a0, a1, ..., an \in {0,1} тако да је f(b1, ..., bn) = a0 ⊕ (a1 \land b1) ⊕ ... ⊕ (an \land bn), for all b1, ..., bn \in {0,1}. Још један начин да се изрази то је да свака променљива увек прави разлику у истинитној вредности за операцију или не прави разлику. Негација је линеарни логички оператор.

Правила закључивања[уреди]

Постоји више еквивалентних начина да се формулишу правила за негацију. Један уобичајени начин формулисања класичне негације у природнu дедукцијu је да се поставе примитивна правила закључивања негирања увођења (од извођењаp за и q и ¬ q, закључити ¬p; ово правило се зове reductio ad absurdum), негација елиминације (из p и ¬p закључити q; ово правило се зове ex falso quodlibet), а двострука негација елиминације (од ¬¬p закључити p). Добијају се правила за интуициону негацију на исти начин, али искључујући елиминацију двоструке негације.

Негација у уводу стоји да ако се апсурд може извући као закључак из p онда p не мора да буде случај (тј. p' је нетачно (класично) или оповргљива или сл). Негација елиминација наводи да било шта следи из апсурда. Понекад негација елиминација је формулисана помоћу примитивног апсурдног знака ⊥. У овом случају правило каже да је од p и ¬p следи апсурд. Заједно са двоструком негацијом елиминације може се закључити наше првобитно формулисано правило, а то је да било шта следи из апсурда.

Типична интуициона негација ¬p од p се дефинише као p→⊥. Онда негација увода и елиминација су само посебни случајеви имплицитног увођења (conditional proof) и елиминације (модус поненс). У том случају мора се такође додати као примитивно правило ex falso quodlibet.


Рачунарство[уреди]

Програмирање[уреди]

Логичка негација се у рачунарству користи аналогно свом значењу у логици и математици, дакле у градњи логичких исказа. У зависности од програмског језика записује се на различите начине. На пример, у програмском језику C се обележава знаком !, у Паскалу енглеском речју NOT итд. Следи пример програмског кода записаног на програмском језику C који користи логичку негацију:

if (!(r == t)) /* ако није тачно да је r једнако t... */
{
    /* ... изврши ове инструкције */
}

Неки програмски језици подржавају и извршавање логичке негације над појединачним битовима неке меморијске локације. Тада се сви битови који имају вредност 1 посматрају као „тачно“ (T) а сви битови вредности 0 као „нетачно“ (⊥). Операција те битовске логичке негације као резултат има вредност чији су сви битови супротни одговарајућим битовима почетне вредности. На пример:


\begin{alignat}{2}\\
45 = & 0010 1101\\
\lnot 45 = & 11010010 = 210
\end{alignat}

"!" означава логично НЕ у програмским језицима B, C и језицима са C-надахнутом синтаксиом као што су C++, Јава, Јаваскрипт, Перл, i PHP. "NOT" је оператор који се користи у ALGOL 60, Бејсик, и језицима са ALGOL- или BASIC- инспирисаном синтаксом, као што су Паскал, Ада, Eiffel i Seed7. Неки језици (C++, Перл...) дају више од једног оператера за негацију. Неколико језика као што су PL/I иРатфор користе ¬ за негацију. Неки модерни рачунари и оперативни системи ће се приказати ¬ као ! на фајлове снимљене у ASCII. Већина модерних језика дозвољавају изјаву да се скрати од if (!(r == t)) уif (r != t), што омогућава понекад , када преводилац/тумач није у стању да га оптимизује, брже програме.

У рачунарству постоји негација над битовима. Ово узима вредност дату и пребацује све бинарне 1s у 0s и 0s у 1s. Погледајте операције над битовима. Ово се често користи за креирање или "~" у C или C++ и (само поједностављена"-" или негативан знак, јер то је еквивалентно узимање аритметичке негативне вредности броја), јер у основи ствара супротно (негативна вредност) или математички комплемент (где су обе вредности сабирају и тако стварају целину).

Да бисте добили апсолутну (позитиван еквивалент) вредност датог целог броја следећи ће радити као"-" мењамењајући га од негативног ка позитивном (то је негативано, јер "x < 0" приноси тачно)

    unsigned int abs(int x)
    {
        if (x < 0)
            return -x;
        else
            return x;
    }

Демонстрирање логичке негације:

    unsigned int abs(int x)
    {
        if (!(x < 0))
            return x;
        else
            return -x;
    }

Инвертујући услов и обрнути резултат даје код који је логички еквивалентан на оригинални код, односно иматће исте резултате за било који улаз (имајте на уму да у зависности од компајлера који се користи, актуелне инструкције које обавља рачунар могу се разликовати).

У вези са рачунарима сленг за не. Фраза !гласање, на пример, значи "не гласају“.!

Види још[уреди]


Спољашње везе[уреди]