Импликация

Программирование

В языках программирования импликация используется, как правило, неявно.
Например, конструкция, предполагающая истинность условия B в данном участке программы:

 if ( выражение A ) {
    if ( выражение B ) {
       сделать_что-то_полезное
    }
       else {
       <font color=Red>сбой</font>
    };
 }

будет успешно выполняться тогда и только тогда, когда верна импликация A→B.
В то же время эти условия можно спокойно написать в одной строке, объединив их оператором конъюнкции.

 if ( выражение A ) and ( выражение B ) {
    сделать_что-то_полезное
 }

При стандартных опциях компилятора (Delphi, C++ Builder) проверка идет до тех пор, пока результат не станет очевидным, и если А ложно, то (А и В) ложно вне зависимости от В, и не нужно ставить еще один условный оператор.

 //выражение A - ложно
 if ( выражение A ) {
    //Дальше проверка не идет
    ... if ( выражение B ) {
       сделать_что-то_полезное
    } ...
 }

В функциональных языках импликация может быть не только правилом вычислений, но и видом отношения между данными, то есть обрабатываться (в том числе и выполняться) и создаваться по ходу выполнения программы.

Программирование

В языках программирования импликация используется, как правило, неявно.
Например, конструкция, предполагающая истинность условия B в данном участке программы:

 if ( выражение A ) {
    if ( выражение B ) {
       сделать_что-то_полезное
    }
       else {
       <font color=Red>сбой</font>
    };
 }

будет успешно выполняться тогда и только тогда, когда верна импликация A→B.
В то же время эти условия можно спокойно написать в одной строке, объединив их оператором конъюнкции.

 if ( выражение A ) and ( выражение B ) {
    сделать_что-то_полезное
 }

При стандартных опциях компилятора (Delphi, C++ Builder) проверка идет до тех пор, пока результат не станет очевидным, и если А ложно, то (А и В) ложно вне зависимости от В, и не нужно ставить еще один условный оператор.

 //выражение A - ложно
 if ( выражение A ) {
    //Дальше проверка не идет
    ... if ( выражение B ) {
       сделать_что-то_полезное
    } ...
 }

В функциональных языках импликация может быть не только правилом вычислений, но и видом отношения между данными, то есть обрабатываться (в том числе и выполняться) и создаваться по ходу выполнения программы.

Программирование

В языках программирования импликация используется, как правило, неявно.
Например, конструкция, предполагающая истинность условия B в данном участке программы:

 if ( выражение A ) {
    if ( выражение B ) {
       сделать_что-то_полезное
    }
       else {
       <font color=Red>сбой</font>
    };
 }

будет успешно выполняться тогда и только тогда, когда верна импликация A→B.
В то же время эти условия можно спокойно написать в одной строке, объединив их оператором конъюнкции.

 if ( выражение A ) and ( выражение B ) {
    сделать_что-то_полезное
 }

При стандартных опциях компилятора (Delphi, C++ Builder) проверка идет до тех пор, пока результат не станет очевидным, и если А ложно, то (А и В) ложно вне зависимости от В, и не нужно ставить еще один условный оператор.

 //выражение A - ложно
 if ( выражение A ) {
    //Дальше проверка не идет
    ... if ( выражение B ) {
       сделать_что-то_полезное
    } ...
 }

В функциональных языках импликация может быть не только правилом вычислений, но и видом отношения между данными, то есть обрабатываться (в том числе и выполняться) и создаваться по ходу выполнения программы.

Булева логика

В булевой логике импликация — это функция двух переменных (они же — операнды операции, они же — аргументы функции). Переменные могут принимать значения из множества {,1}{\displaystyle \{0,1\}}. Результат также принадлежит множеству {,1}{\displaystyle \{0,1\}}. Вычисление результата производится по простому правилу, либо по таблице истинности. Вместо значений ,1{\displaystyle 0,1} может использоваться любая другая пара подходящих символов, например false,true{\displaystyle false,true} или F,T{\displaystyle F,T} или «ложь», «истина».
Правило:
Импликация как булева функция ложна лишь тогда, когда посылка истинна, а следствие ложно. Иными словами, импликация A→B{\displaystyle A\to B} — это сокращённая запись для выражения ¬A∨B{\displaystyle \neg A\lor B}.
Таблицы истинности:прямая импликация
(от a к b) (материальная импликация (англ.)русск., материальный кондиционал (англ.)русск.)

a{\displaystyle a} b{\displaystyle b} a→b,a⩽b{\displaystyle a\to b,a\leqslant b}
{\displaystyle 0} {\displaystyle 0} 1{\displaystyle 1}
1{\displaystyle 1} {\displaystyle 0} {\displaystyle 0}
{\displaystyle 0} 1{\displaystyle 1} 1{\displaystyle 1}
1{\displaystyle 1} 1{\displaystyle 1} 1{\displaystyle 1}

если первый операнд не больше второго операнда, то 1,если a⩽b{\displaystyle a\leqslant b}, то истинно (1),

«Житейский» смысл импликации.
Для более лёгкого понимания смысла прямой импликации и запоминания её таблицы истинности может пригодиться житейская модель:
А — начальник. Он может приказать «работай» (1) или сказать «делай что хочешь» (0).
В — подчиненный. Он может работать (1) или бездельничать (0).
В таком случае импликация — не что иное, как послушание подчиненного начальнику.
По таблице истинности легко проверить, что послушания нет только тогда, когда начальник приказывает работать, а подчиненный бездельничает.

обратная импликация (англ.)русск. (от b к a, A∨(¬B){\displaystyle A\lor (\neg B)})

a{\displaystyle a} b{\displaystyle b} a←b,a⩾b{\displaystyle a\leftarrow b,a\geqslant b}
{\displaystyle 0} {\displaystyle 0} 1{\displaystyle 1}
1{\displaystyle 1} {\displaystyle 0} 1{\displaystyle 1}
{\displaystyle 0} 1{\displaystyle 1} {\displaystyle 0}
1{\displaystyle 1} 1{\displaystyle 1} 1{\displaystyle 1}

если первый операнд не меньше второго операнда, то 1,если a⩾b{\displaystyle a\geqslant b}, то истинно (1),
обратная импликация — отрицание (негация, инверсия) обнаружения увеличения (перехода от 0 к 1, инкремента).

отрицание (инверсия, негация) прямой импликации

a{\displaystyle a} b{\displaystyle b} ¬(a→b),a>b{\displaystyle \lnot (a\to b),a>b}
{\displaystyle 0} {\displaystyle 0} {\displaystyle 0}
1{\displaystyle 1} {\displaystyle 0} 1{\displaystyle 1}
{\displaystyle 0} 1{\displaystyle 1} {\displaystyle 0}
1{\displaystyle 1} 1{\displaystyle 1} {\displaystyle 0}

если первый операнд больше второго операнда, то 1,если a>b{\displaystyle a>b}, то истинно (1).

отрицание (инверсия, негация) обратной импликации (англ.)русск. (¬A∧B{\displaystyle \lnot A\land B}),
разряд займа в ,

a{\displaystyle a} b{\displaystyle b} ¬(a←b),a<b{\displaystyle \lnot (a\leftarrow b),a<b}
{\displaystyle 0} {\displaystyle 0} {\displaystyle 0}
1{\displaystyle 1} {\displaystyle 0} {\displaystyle 0}
{\displaystyle 0} 1{\displaystyle 1} 1{\displaystyle 1}
1{\displaystyle 1} 1{\displaystyle 1} {\displaystyle 0}

если первый операнд меньше второго операнда, то 1,если a<b{\displaystyle a<b}, то истинно (1).

Другими словами, две импликации (прямая и обратная) и две их инверсии — это четыре оператора отношений. Результат операций зависит от перемены мест операндов.

Программирование

В компьютерных языках используется два основных варианта конъюнкции: логическое «И» и побитовое (поразрядное) «И». Например, в языках C/C++ логическое «И» обозначается символом «&&», а побитовое — символом «&». В терминологии, используемой в C#, операцию «&» принято называть логическим «И», а операцию «&&» — условным «И», поскольку значения операндов являются условиями для продолжения вычисления. В языках Pascal/Delphi оба вида конъюнкции обозначаются с использованием ключевого слова «and», а результат действия определяется типом операндов. Если операнды имеют логический тип (например, Boolean) — выполняется логическая операция, если целочисленный (например, Byte) — поразрядная.

Логическое «И» применяется в операторах условного перехода или в аналогичных случаях, когда требуется получение результата false{\displaystyle false} или true{\displaystyle true}. Например:

if (a & b & c) 
{
    /* какие-то действия */
};

Сравнение в данном случае будет продолжаться до конца выражения, независимо от промежуточных результатов.
Принцип работы условного «И» в аналогичной ситуации:

a = false; b = true; c = true;
if (a && b && c) 
{
    /* какие-то действия */ 
};

Проверка истинности выражения в данном случае остановится после проверки переменной a, так как дальнейшее сравнение не имеет смысла.

Результат будет равен true{\displaystyle true}, если оба операнда равны true{\displaystyle true} (для числовых типов не равны {\displaystyle 0}). В любом другом случае результат будет равен false{\displaystyle false}.

При этом применяется стандартное соглашение: если значение левого операнда равно false{\displaystyle false}, то значение правого операнда не вычисляется (вместо b{\displaystyle b} может стоять сложная формула). Такое соглашение ускоряет исполнение программы и служит полезным приёмом в некоторых случаях. Компилятор Delphi поддерживает специальную директиву, включающую

{$B-}

или выключающую

{$B+}

подобное поведение. Например, если левый операнд проверяет возможность вычисления правого операнда:

if (a !=  && b  a > 3) 
{
    /* какие-то действия */
};

В этом примере, благодаря проверке в левом операнде, в правом операнде никогда не произойдёт деления на ноль.

Побитовое «И» выполняет обычную операцию булевой алгебры для всех битов левого и правого операнда попарно. Например,

если
a = 011001012{\displaystyle 01100101_{2}}
b = 001010012{\displaystyle 00101001_{2}}
то
a И b = 001000012{\displaystyle 00100001_{2}}

Булева логика

В булевой логике импликация — это функция двух переменных (они же — операнды операции, они же — аргументы функции). Переменные могут принимать значения из множества {,1}{\displaystyle \{0,1\}}. Результат также принадлежит множеству {,1}{\displaystyle \{0,1\}}. Вычисление результата производится по простому правилу, либо по таблице истинности. Вместо значений ,1{\displaystyle 0,1} может использоваться любая другая пара подходящих символов, например false,true{\displaystyle false,true} или F,T{\displaystyle F,T} или «ложь», «истина».
Правило:
Импликация как булева функция ложна лишь тогда, когда посылка истинна, а следствие ложно. Иными словами, импликация A→B{\displaystyle A\to B} — это сокращённая запись для выражения ¬A∨B{\displaystyle \neg A\lor B}.
Таблицы истинности:прямая импликация
(от a к b) (материальная импликация (англ.)русск., материальный кондиционал (англ.)русск.)

a{\displaystyle a} b{\displaystyle b} a→b,a⩽b{\displaystyle a\to b,a\leqslant b}
{\displaystyle 0} {\displaystyle 0} 1{\displaystyle 1}
1{\displaystyle 1} {\displaystyle 0} {\displaystyle 0}
{\displaystyle 0} 1{\displaystyle 1} 1{\displaystyle 1}
1{\displaystyle 1} 1{\displaystyle 1} 1{\displaystyle 1}

если первый операнд не больше второго операнда, то 1,если a⩽b{\displaystyle a\leqslant b}, то истинно (1),

«Житейский» смысл импликации.
Для более лёгкого понимания смысла прямой импликации и запоминания её таблицы истинности может пригодиться житейская модель:
А — начальник. Он может приказать «работай» (1) или сказать «делай что хочешь» (0).
В — подчиненный. Он может работать (1) или бездельничать (0).
В таком случае импликация — не что иное, как послушание подчиненного начальнику.
По таблице истинности легко проверить, что послушания нет только тогда, когда начальник приказывает работать, а подчиненный бездельничает.

обратная импликация (англ.)русск. (от b к a, A∨(¬B){\displaystyle A\lor (\neg B)})

a{\displaystyle a} b{\displaystyle b} a←b,a⩾b{\displaystyle a\leftarrow b,a\geqslant b}
{\displaystyle 0} {\displaystyle 0} 1{\displaystyle 1}
1{\displaystyle 1} {\displaystyle 0} 1{\displaystyle 1}
{\displaystyle 0} 1{\displaystyle 1} {\displaystyle 0}
1{\displaystyle 1} 1{\displaystyle 1} 1{\displaystyle 1}

если первый операнд не меньше второго операнда, то 1,если a⩾b{\displaystyle a\geqslant b}, то истинно (1),
обратная импликация — отрицание (негация, инверсия) обнаружения увеличения (перехода от 0 к 1, инкремента).

отрицание (инверсия, негация) прямой импликации

a{\displaystyle a} b{\displaystyle b} ¬(a→b),a>b{\displaystyle \lnot (a\to b),a>b}
{\displaystyle 0} {\displaystyle 0} {\displaystyle 0}
1{\displaystyle 1} {\displaystyle 0} 1{\displaystyle 1}
{\displaystyle 0} 1{\displaystyle 1} {\displaystyle 0}
1{\displaystyle 1} 1{\displaystyle 1} {\displaystyle 0}

если первый операнд больше второго операнда, то 1,если a>b{\displaystyle a>b}, то истинно (1).

отрицание (инверсия, негация) обратной импликации (англ.)русск. (¬A∧B{\displaystyle \lnot A\land B}),
разряд займа в ,

a{\displaystyle a} b{\displaystyle b} ¬(a←b),a<b{\displaystyle \lnot (a\leftarrow b),a<b}
{\displaystyle 0} {\displaystyle 0} {\displaystyle 0}
1{\displaystyle 1} {\displaystyle 0} {\displaystyle 0}
{\displaystyle 0} 1{\displaystyle 1} 1{\displaystyle 1}
1{\displaystyle 1} 1{\displaystyle 1} {\displaystyle 0}

если первый операнд меньше второго операнда, то 1,если a<b{\displaystyle a<b}, то истинно (1).

Другими словами, две импликации (прямая и обратная) и две их инверсии — это четыре оператора отношений. Результат операций зависит от перемены мест операндов.

Булева логика

В булевой логике импликация — это функция двух переменных (они же — операнды операции, они же — аргументы функции). Переменные могут принимать значения из множества {,1}{\displaystyle \{0,1\}}. Результат также принадлежит множеству {,1}{\displaystyle \{0,1\}}. Вычисление результата производится по простому правилу, либо по таблице истинности. Вместо значений ,1{\displaystyle 0,1} может использоваться любая другая пара подходящих символов, например false,true{\displaystyle \operatorname {false} ,\operatorname {true} } или F,T{\displaystyle F,T} или «ложь», «истина».

Правило:

Импликация как булева функция ложна лишь тогда, когда посылка истинна, а следствие ложно. Иными словами, импликация A→B{\displaystyle A\to B} это сокращённая запись для выражения ¬A∨B{\displaystyle \neg A\lor B}.

Таблицы истинности:

прямая импликация
(от a к b) (материальная импликация (англ.)русск., материальный кондиционал (англ.)русск.)

a{\displaystyle a} b{\displaystyle b} a→b,a⩽b{\displaystyle a\to b,a\leqslant b}
{\displaystyle 0} {\displaystyle 0} 1{\displaystyle 1}
{\displaystyle 0} 1{\displaystyle 1} 1{\displaystyle 1}
1{\displaystyle 1} {\displaystyle 0} {\displaystyle 0}
1{\displaystyle 1} 1{\displaystyle 1} 1{\displaystyle 1}
  • если первый операнд не больше второго операнда, то 1,
  • если a⩽b{\displaystyle a\leqslant b}, то истинно (1).

«Житейский» смысл импликации.
Для более лёгкого понимания смысла прямой импликации и запоминания её таблицы истинности может пригодиться житейская модель:

А — начальник. Он может приказать «работай» (1) или сказать «делай что хочешь» (0).
В — подчинённый. Он может работать (1) или бездельничать (0).

В таком случае импликация — не что иное, как послушание подчинённого начальнику.
По таблице истинности легко проверить, что послушания нет только тогда, когда начальник приказывает работать, а подчинённый бездельничает.

обратная импликация (от b к a, A∨(¬B){\displaystyle A\lor (\neg B)})

a{\displaystyle a} b{\displaystyle b} a←b,a⩾b{\displaystyle a\leftarrow b,a\geqslant b}
{\displaystyle 0} {\displaystyle 0} 1{\displaystyle 1}
{\displaystyle 0} 1{\displaystyle 1} {\displaystyle 0}
1{\displaystyle 1} {\displaystyle 0} 1{\displaystyle 1}
1{\displaystyle 1} 1{\displaystyle 1} 1{\displaystyle 1}
  • если первый операнд не меньше второго операнда, то 1,
  • если a⩾b{\displaystyle a\geqslant b}, то истинно (1).

Обратная импликация — отрицание (негация, инверсия) обнаружения увеличения (перехода от 0 к 1, инкремента).

отрицание (инверсия, негация) прямой импликации

a{\displaystyle a} b{\displaystyle b} ¬(a→b),a>b{\displaystyle \lnot (a\to b),a>b}
{\displaystyle 0} {\displaystyle 0} {\displaystyle 0}
{\displaystyle 0} 1{\displaystyle 1} {\displaystyle 0}
1{\displaystyle 1} {\displaystyle 0} 1{\displaystyle 1}
1{\displaystyle 1} 1{\displaystyle 1} {\displaystyle 0}
  • если первый операнд больше второго операнда, то 1,
  • если a>b{\displaystyle a>b}, то истинно (1).

отрицание (инверсия, негация) обратной импликации (¬A∧B{\displaystyle \lnot A\land B}),
разряд займа в .

a{\displaystyle a} b{\displaystyle b} ¬(a←b),a<b{\displaystyle \lnot (a\leftarrow b),a<b}
{\displaystyle 0} {\displaystyle 0} {\displaystyle 0}
{\displaystyle 0} 1{\displaystyle 1} 1{\displaystyle 1}
1{\displaystyle 1} {\displaystyle 0} {\displaystyle 0}
1{\displaystyle 1} 1{\displaystyle 1} {\displaystyle 0}
  • если первый операнд меньше второго операнда, то 1,
  • если a<b{\displaystyle a<b}, то истинно (1).

Другими словами, две импликации (прямая и обратная) и две их инверсии — это четыре оператора отношений. Результат операций зависит от перемены мест операндов.

Расширенные и редко используемые символы

Символы отсортированы согласно коду Unicode:

  • U+00B7 • Точка в середине, устаревший способ обозначения AND, остаётся употребимым в электронике, например, «A•B» означает то же самое, что и «A&B»
  • • : Центральная точка с чертой над ней, устаревший способ для обозначения И-НЕ, например, «A•B» означает то же, что и «A И-НЕ B», или «A|B», или «¬(A & B)». См. также символ Unicode U+22C5 ⋅ оператор точка.
  • U+0305 ◌̅ Комбинируемое надчёркивание, используется для сокращения стандартных представлений чисел (). Например, «4̅» является сокращённым написанием стандартного числа «SSSS0».
  • Надчёркивание также иногда используется для обозначения нумерации Гёделя, например, «AVB» обозначает номер Гёделя для «(AVB)»
  • Надчёркивание также является устаревшим способом обозначения отрицания, но продолжает использоваться в электронике, например, «AVB» означает то же самое, что и «¬(AVB)»
  • U+2191 ↑ Стрелка вверх или U+007C | Вертикальная черта: Штрих Шеффера, знак для оператора И-НЕ.
  • U+2201 ∁ Дополнение
  • U+2204 ∄ Не существует: перечёркнутый квантор существования, то же самое, что и «¬∃»
  • U+2234 ∴
  • U+2235 ∵
  • U+22A7 ⊧ Импликация (логическое следование): является моделью для …. Например, A ⊧ B означает, что из A следует B. В любой модели, где A ⊧ B, если А верно, то и B верно.
  • U+22A8 ⊨ Истина: является истиной.
  • U+22AC ⊬ Невыводимо: отрицание ⊢, символ невыводимо, например, TP означает, что «P не является теоремой в T»
  • U+22AD ⊭ Неверно: не является истиной
  • U+22BC ⊼ НЕ-И: другой оператор НЕ-И, может быть записан также как ∧
  • U+22BD ⊽ ИЛИ-НЕ: оператор Исключающее ИЛИ, может быть записан также как V
  • U+22C4 ⋄ Ромб: модальный оператор для «возможно, что», «не обязательно нет» или, редко, «непротиворечиво» (в большинстве модальных логик оператор определяется как «¬¬»)
  • U+22C6 ⋆ Звёздочка: обычно используется как специальный оператор
  • U+22A5 ⊥ Кнопка вверх или U+2193 ↓ Стрелка вниз: стрелка Пирса, символ исключающего ИЛИ. Иногда «⊥» используется для противоречия или абсурда.

U+2310 ⌐ Отменённый НЕ

U+231C ⌜ Левый верхний уголок и U+231D ⌝ Правый верхний уголок: угловые скобки, также называемые «кавычками Куайна». Используется как квазикавычки, то есть выделение определённого контекста неопределённого выражения («переменной»). Используется также для чисел Гёделя. Например, «⌜G⌝» обозначает число Гёделя для G. (Типографическое замечание: хотя кавычки появляются всегда в «паре» в (231C и 231D в Unicode), они не всегда симметричны в некоторых фонтах, а в некоторых фонтах, таких как Arial, они симметричны только при определённых размерах букв). Альтернативно кавычки могут быть представлены как ⌈ и ⌉ (U+2308 и U+2309) или с помощью символов отрицания и обратного отрицания ⌐ ¬ в верхнем индексе.)

U+25FB Средний белый квадрат или U+25A1 □ Белый квадрат: модальный оператор необходимо, чтобы (в модальной логике), или доказуемо (в логике доказуемости), или обязательно (в нормативной логике), или убеждены, что (в доксастической логике).

Следующие операторы редко поддерживаются стандартными фонтами. Если вы хотите использовать их на своей странице, вам следует всегда встраивать нужные фонты, чтобы браузер мог отражать символы без необходимости устанавливать фонты на компьютер.

  • U+27E1 ⟡ Незакрашенный ромб с вогнутыми сторонами
  • U+27E2 ⟢ Незакрашенный ромб с вогнутыми сторонами и чёрточкой влево: модальный оператор для никогда не было
  • U+27E3 ⟣ Незакрашенный ромб с вогнутыми сторонами и чёрточкой вправо: модальный оператор для никогда не будет
  • U+27E4 ⟤ Незакрашенный квадрат с чёрточкой влево: модальный оператор для всегда было
  • U+27E5 ⟥ Незакрашенный квадрат с чёрточкой вправо: модальный оператор для всегда будет

Польша и Германия

В Польше квантор всеобщности иногда записывается как ∧{\displaystyle \wedge }, а квантор существования как ∨{\displaystyle \vee }.
То же самое наблюдается в немецкой литературе.

Программирование

В языках программирования импликация используется, как правило, неявно.
Например, конструкция, предполагающая истинность условия B в данном участке программы:

 if ( выражение A ) {
    if ( выражение B ) {
       сделать_что-то_полезное
    }
       else {
       <font color=Red>сбой</font>
    };
 }

будет успешно выполняться тогда и только тогда, когда верна импликация A→B.
В то же время эти условия можно спокойно написать в одной строке, объединив их оператором конъюнкции.

 if ( выражение A ) and ( выражение B ) {
    сделать_что-то_полезное
 }

При стандартных опциях компилятора (Delphi, C++ Builder) проверка идет до тех пор, пока результат не станет очевидным, и если А ложно, то (А и В) ложно вне зависимости от В, и не нужно ставить еще один условный оператор.

 //выражение A - ложно
 if ( выражение A ) {
    //Дальше проверка не идет
    ... if ( выражение B ) {
       сделать_что-то_полезное
    } ...
 }

В функциональных языках импликация может быть не только правилом вычислений, но и видом отношения между данными, то есть обрабатываться (в том числе и выполняться) и создаваться по ходу выполнения программы.