У современной математики есть собственный формальный язык. С его помощью мы сводим сложные высказывания к формальностям — то есть переводим рассуждения и мысли в плоскость математики. Так мы лучше понимаем мысли других людей, точнее высказываем свои рассуждения и учимся рассуждать логически.
В этом уроке мы продолжим изучать формальный язык логики высказываний. Мы разберем отношения эквивалентности и научимся определять высказывания, которые равнозначны по смыслу. Так мы сможем экономить время и заранее понимать, какие высказывания можно посчитать истинными или ложными без дополнительных рассуждений.
Логическая эквивалентность
Возьмем для примера такое предложение:
Если Вася получит прибавку к зарплате, то он пойдет в театр
С точки зрения логики в этом высказывании есть и такой смысл:
Если Вася не пошел в театр, значит он не получил прибавку к зарплате
Эти высказывания логически эквивалентны — одно можно заменить на другое без потери смысла. В этом и заключается логическая эквивалентность — два выражения считаются эквивалентными, если они имеют одинаковое истинностное значение во всех случаях.
Как эквивалентность помогает доказывать
Основная польза эквивалентности в том, что она помогает доказывать математические результаты. Допустим, мы знаем, что 2+3=5. Попробуем это доказать.
Можно заменить выражение 2+3 на другое эквивалентное выражение 3+2, которое также будет равно 5.
Как видите, значение составной пропозиции не изменилось. Значит, эквивалентность помогла нам доказать первоначальное высказывание — 2+3=5.
Как эквивалентность помогает рассуждать
Кроме доказательств, эквивалентность используется и в рассуждениях. Она помогает осмыслить предложение и отнести его к одной из трех категорий в таблице истинности.
Таблица истинности — это разбиение логической функции путем перечисления всех возможных значений, которые может принимать функция. Такая таблица обычно содержит несколько строк и столбцов. В верхней строке пр��дставлены логические переменные и комбинации, которые по возрастанию сложности приводят к конечной функции.
В логической функции есть три основные операции:
- НЕ (Инверсия или отрицание, обозначается как ¬)
- ИЛИ (Дизъюнкция или сложение, обозначается как ∨)
- И (Конъюнкция или умножение, обозначается как ∧)
Значениям функций обычно присваивается логический ноль (ложь) или логическая единица (истина).
Таблица истинности выглядит так:
Рассмотрим ее подробнее:
-
Тавтология (T) — высказывание, которое всегда истинно независимо от того, истинны ли значения переменных внутри него. По таблице вся колонка истинна
-
Противоречие или абсурд (F) — высказывание, которое всегда ложно
-
Случайность — составное предложение, которое не является ни тавтологией, ни противоречием.
Тавтологии и противоречия помогают доказывать и проверять математические аргументы, а также объяснить пропозициональные эквивалентности — утверждения, которые равны в логическом аргументе. В этом случае самый простой способ — создать таблицу истинности и посмотреть, идентичны ли столбцы.
По такой таблице мы можем проверить, эквивалентны ли высказывания a и b.
Иногда в математике полезно заменить одно утверждение другим, но эквивалентным. Возьмем такой пример:
Эквивалентное утверждение звучит так:
Первое высказывание имело вид «Если A, то B», а второе — «Если не B, то не A». Это эквивалентные высказывания, о которых мы подробнее поговорим ниже.
Законы логической эквивалентности (Законы Моргана)
Ниже приведен список важных законов эквивалентности — также их называют законами алгебры высказываний. На протяжение всего курса мы будем использовать такие законы:
Применим некоторые из этих законов на практике.
Возьмем для примера составное предложение:
Используем законы де Моргана — они связывают с помощью отрицания конъюнкцию и дизъюнкцию. Можно выразить отрицание так:
Обратите внимание, что мы отрицаем оба простых предложения и заменили «и» на «или».
В качестве еще одного примера рассмотрим следующее утверждение:
Это переводится на математический язык как:
Пусть:
- доктор — означает "Глеб — доктор"
- инженер — означает "Вася — инженер"
Эквивалентная форма по закону де Моргана:
Следовательно, мы можем сказать, что: Либо Глеб — не доктор, либо Вася — не инженер (или оба сразу).
Приведенные выше примеры можно легко решить с помощью таблицы истинности. Но это можно сделать только для предложения с небольшим числом переменных — здесь их всего две.
Чем больше переменных, тем менее практично использовать метод таблицы истинности. Для пропозиции с 20 переменными необходимо оценить (2^20) строк в таблице истинности. Человеку будет сложно справиться с такой задачей, но можно упростить процесс и воспользоваться компьютером.
Но если переменных будет больше 1000, вычисление на компьютере будет очень долгим.
А еще бывают случаи, когда можно не строить таблицу истинности — вместо этого можно указать причину, по которой два высказывания логически эквивалентны. При этом мы преобразуем левую часть высказывания, чтобы она соответствовала правой части, и приводим причины каждого преобразования. Как в примере выше:
- Высказывание: Если n четное, то n/2 — целое число
- И его эквивалент: Если n/2 не целое число, то n не четное
- При этом преобразование справедливо для любого n
Эти логические доказательства могут показаться сложными на первых порах. Эта тема станет понятнее, когда мы обсудим ее подробнее в следующих уроках.
<!DOCTYPE html>
<html class="h-100" data-bs-theme="light" data-mantine-color-scheme="light" lang="ru" prefix="og: https://ogp.me/ns#">
<head>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<link crossorigin="true" href="https://cdn.hexlet.io" rel="preconnect">
<link href="https://mc.yandex.ru" rel="preconnect">
<meta content="aa2vrdtq64dub8knuf83lwywit311w" name="facebook-domain-verification">
<link href="/favicon.ico" rel="icon" sizes="any">
<link href="/favicon.svg" rel="icon" type="image/svg+xml">
<link href="/apple-touch-icon.png" rel="apple-touch-icon">
<link href="/manifest.webmanifest" rel="manifest">
<script>
//<![CDATA[
window.gon={};gon.ym_counter="25559621";gon.is_bot=true;gon.applications={};gon.current_user={"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26 23:18:09 UTC","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false};gon.token="cJNLC2kAnDcy-vQaRC2F_-pigQDc1pJ0fS2VdgeSHlyfQoA8m34xV4S50IJIInWIKmusqtThbNbAzQ8iVZX5Mg";gon.locale="ru";gon.language="ru";gon.theme="light";gon.rails_env="production";gon.mobile=false;gon.google={"analytics_key":"UA-1360700-51","optimize_key":"GTM-5QDVFPF"};gon.captcha={"google_v3_site_key":"6LenGbgZAAAAAM7HbrDbn5JlizCSzPcS767c9vaY","yandex_site_key":"ysc1_Vyob5ZPPUdPBsu0ykt8bVFdzsfpoVjQChLGl2b4g19647a89","verification_failed":null};gon.social_signin=false;gon.typoreporter_google_form_id="1FAIpQLSeibfGq-KvWQ2Fyru-zkFFRVTLBuzXAHAoEyN1p49FtDmNoNA";
//]]>
</script>
<meta charset="utf-8">
<title>Эквивалентность | Введение в математическую логику</title>
<meta name="description" content="Эквивалентность / Введение в математическую логику: Познакомимся с эквивалентными высказываниями и научимся определять их">
<link rel="canonical" href="https://ru.hexlet.io/courses/logic/lessons/equivalences/theory_unit">
<meta name="robots" content="noarchive">
<meta property="og:title" content="Эквивалентность">
<meta property="og:title" content="Введение в математическую логику">
<meta property="og:description" content="Эквивалентность / Введение в математическую логику: Познакомимся с эквивалентными высказываниями и научимся определять их">
<meta property="og:url" content="https://ru.hexlet.io/courses/logic/lessons/equivalences/theory_unit">
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="cuQIa1JSBxL7Fwvl2_ijLsgmO0eV5x_oTxPjyEcNe5udNcNcoCyqck1UL33X91NZCC8W7Z3Q4Ury83mcFQqc9Q" />
<script src="/vite/assets/inertia-DfXos102.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/preload-helper-BJ4cLWpC.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-BrRXra1y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ahoy-DrlRQ-1D.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/analytics-cb8xch9l.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Surface-DL2bpZA-.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/extends-C-EagtpE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/inheritsLoose-BBd-DCVI.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/objectWithoutPropertiesLoose-DRHXDhjp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/index.esm-DAqKOkZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Button-CGPUux8l.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/CloseButton-D1euiPao.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Group-BX48WcuU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Loader-BQEY8g6v.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Modal-Cy3HByv7.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/OptionalPortal-1Hza5P2w.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Stack-CtjJzfw4.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Textarea-Ck64llAy.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/DirectionProvider-Dc9zdUke.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/events-DJQOhap0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-reduced-motion-D2owz4wa.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-disclosure-zKtK5W1r.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-hotkeys-Cnc_Rwkb.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/random-id-DOQyszCZ.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/exports-C_MrNx_T.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<link rel="stylesheet" href="/vite/assets/application-BqhCP46M.js" />
<script src="/vite/assets/application-Df9RExpe.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/autocomplete-VMNbxKGl.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/createPopper-C3aM9r1M.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/js.cookie-D1-O8zkX.js" as="script" crossorigin="anonymous"><link rel="stylesheet" href="/vite/assets/application-C8HjmMaq.css" media="screen" />
<script>
window.ym = function(){(ym.a=ym.a||[]).push(arguments)};
window.addEventListener('load', function() {
setTimeout(function() {
ym.l = 1*new Date();
ym(window.gon.ym_counter, "init", {
clickmap: true,
trackLinks: true,
accurateTrackBounce: true,
webvisor: true
});
// Загружаем скрипт
var k = document.createElement('script');
k.async = 1;
k.src = 'https://mc.yandex.ru/metrika/tag.js';
document.head.appendChild(k);
ym(window.gon.ym_counter, 'getClientID', function(clientID) {
window.ymClientId = clientID;
});
}, 1500);
});
</script>
<!-- Google Tag Manager - deferred -->
<script>
// dataLayer stub сразу — пуши работают до загрузки скрипта
window.dataLayer = window.dataLayer || [];
// Сам скрипт — отложенно после load
window.addEventListener('load', function() {
setTimeout(function() {
dataLayer.push({'gtm.start': new Date().getTime(), event: 'gtm.js'});
var j = document.createElement('script');
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-WK88TH';
document.head.appendChild(j);
}, 1500);
});
</script>
<!-- End Google Tag Manager -->
</head>
<body>
<noscript>
<div>
<img alt="" src="https://mc.yandex.ru/watch/25559621" style="position:absolute; left:-9999px;">
</div>
</noscript>
<header class="sticky-top bg-body">
<nav class="navbar navbar-expand-lg">
<div class="container-xxl">
<a class="navbar-brand" href="/"><img alt="Логотип Хекслета" height="24" src="https://ru.hexlet.io/vite/assets/logo_ru_light-BpiEA1LT.svg" width="96">
</a><button aria-controls="collapsable" aria-expanded="false" aria-label="Меню" class="navbar-toggler border-0 mb-0 mt-1" data-bs-target="#collapsable" data-bs-toggle="collapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="collapsable">
<ul class="navbar-nav mb-lg-0 mt-lg-1">
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
Все курсы
<span class="bi bi-chevron-down align-middle ms-1"></span>
</button>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item d-flex py-2" href="/courses"><div class="fw-bold me-auto">Все что есть</div>
<div class="text-muted">117</div>
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные категории</b>
</li>
<li>
<a class="dropdown-item py-2" href="/courses_devops">Курсы по DevOps
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_data_analytics">Курсы по аналитике данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_programming">Курсы по программированию
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_testing">Курсы по тестированию
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные курсы</b>
</li>
<li>
<a class="dropdown-item py-2" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/go">Go-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/java">Java-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/python">Python-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/qa-auto-engineer-java">Автоматизатор тестирования на Java
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/data-analytics">Аналитик данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/frontend">Фронтенд-разработчик
</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
О Хекслете
<span class="bi bi-chevron-down align-middle"></span>
</button>
<ul class="dropdown-menu bg-body">
<li>
<a class="dropdown-item py-2" href="/pages/about">О нас
</a></li>
<li>
<a class="dropdown-item py-2" href="/blog">Блог
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/hse-research" role="button">Результаты (Исследование)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://career.hexlet.io" role="button">Хекслет Карьера
</span></li>
<li>
<a class="dropdown-item py-2" href="/testimonials">Отзывы студентов
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://t.me/hexlet_help_bot" role="button">Поддержка (В ТГ)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/referal-program/?promo_creative=priglasite-druzei&promo_name=referal-program&promo_position=promo_position&promo_start=010724&promo_type=link" role="button">Реферальная программа
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/certificate" role="button">Подарочные сертификаты
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://hh.ru/employer/4307094" role="button">Вакансии
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://b2b.hexlet.io" data-target="_blank" role="button">Компаниям
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexly.ru/" data-target="_blank" role="button">Колледж
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexlyschool.ru/" data-target="_blank" role="button">Частная школа
</span></li>
</ul>
</li>
<li><a class="nav-link" href="/subscription/new">Подписка</a></li>
</ul>
<ul class="navbar-nav flex-lg-row align-items-lg-center gap-2 ms-auto">
<li>
<a class="nav-link" aria-label="Переключить тему" href="/theme/switch?new_theme=dark"><span aria-hidden="true" class="bi bi-moon"></span>
</a></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="/u/new" role="button"><span>Регистрация</span>
</span></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="https://ru.hexlet.io/session/new" role="button"><span>Вход</span>
</span></li>
</ul>
</div>
</div>
</nav>
</header>
<div class="x-container-xxxl">
</div>
<main class="mb-6 min-vh-100 h-100">
<link rel="preload" as="image" href="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY2MSwicHVyIjoiYmxvYl9pZCJ9fQ==--e9c2b6bde361adaac625a7f47d8b9671c17f3ddb/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Mathematics-bro.png"/><link rel="preload" as="image" href="/vite/assets/development-BVihs_d5.png"/><div id="app" data-page="{"component":"web/courses/lessons/theory_unit","props":{"errors":{},"locale":"ru","language":"ru","httpsHost":"https://ru.hexlet.io","host":"ru.hexlet.io","colorScheme":"light","auth":{"user":{"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26T23:18:09.079Z","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false}},"cloudflareTurnstileSiteKey":"0x4AAAAAAA15KmeFXzd2H0Xo","vkIdClientId":"51586979","yandexIdClientId":"88d071f1d3384eb4bd1deb37910235c7","formAuthToken":"0BIUjquNdmA9c-Qk_q6gc5k4WqTD8OCOPYMdm5lEBhQ_w9-5WfPbAIswwLzyoVAEWTF3DsvHHiyAY4fPy0Pheg","topics":[{"id":77020,"title":"Тест после теории обескуражил. Надо в теорию добавить хотя бы пару примеров подобных задач, определение понятия \"Истинностных значений\" и пример их расчёта","plain_title":"Тест после теории обескуражил. Надо в теорию добавить хотя бы пару примеров подобных задач, определение понятия \"Истинностных значений\" и пример их расчёта ","creator":{"public_name":"Маша Дюбанова","id":172981,"is_tutor":false},"comments":[{"creator":{"public_name":"Nikolai Gagarinov","id":104929,"is_tutor":true},"id":160136,"body":"Маша, добрый день.\n\nПередал информацию автору курса. Доработаем квизы (тесты). Спасибо за обратную связь.","topic_id":77020}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Эквивалентность","entity_url":null,"active":true}},{"id":88072,"title":"Вопрос по тесту:\n\n> Какое из следующих утверждений логически эквивалентно утверждению (p∧¬q) → ¬p?\n\n> Какое из следующих утверждений логически эквивалентно p → (p∨q)?\n\nБыл какой-то простой способ понять правильный ответ (через преобразования), или надо было решать через построение таблиц истинности для каждого варианта ответа?","plain_title":"Вопрос по тесту: Какое из следующих утверждений логически эквивалентно утверждению (p∧¬q) → ¬p? Какое из следующих утверждений логически эквивалентно p → (p∨q)? Был какой-то простой способ понять правильный ответ (через преобразования), или надо было решать через построение таблиц истинности для каждого варианта ответа? ","creator":{"public_name":"Денис Брагин","id":497216,"is_tutor":false},"comments":[{"creator":{"public_name":"Maksim Litvinov","id":198906,"is_tutor":true},"id":176202,"body":"Приветствую, Денис! Построение таблицы истинности - вполне себе нормальный вариант решения. Посмотрите в теории:\n\n> Приведенные выше примеры можно легко решить с помощью таблицы истинности. Но это можно сделать только для предложения с небольшим числом переменных — здесь их всего две.","topic_id":88072}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Эквивалентность","entity_url":null,"active":true}},{"id":81731,"title":"Прочитал теорию три раза до этого места и не смог ответить ни на один вопрос, хотя тест предыдущий прошел дважды (кажется). В итоге вот что я имею и понимаю: \"Каковы истинностные значения следующего утверждения? (p∧¬q) → ¬p\" - читаю: (если событие А и не событие Б), то не событие Б. Как это перевести в истину или ложь совсем не разобрался, к сожалению. Могу предположить что Если А истина и Б не истина (ложь), то Б не истина. Получаю TFT, но не четыре буквы. Короче.... можете дать какие-то ссылки внешние, которые помогут освоить теорию, в рамках поданного материала что-либо понять для моего уровня развития не представилось возможным.","plain_title":"Прочитал теорию три раза до этого места и не смог ответить ни на один вопрос, хотя тест предыдущий прошел дважды (кажется). В итоге вот что я имею и понимаю: \"Каковы истинностные значения следующего утверждения? (p∧¬q) → ¬p\" - читаю: (если событие А и не событие Б), то не событие Б. Как это перевести в истину или ложь совсем не разобрался, к сожалению. Могу предположить что Если А истина и Б не истина (ложь), то Б не истина. Получаю TFT, но не четыре буквы. Короче.... можете дать какие-то ссылки внешние, которые помогут освоить теорию, в рамках поданного материала что-либо понять для моего уровня развития не представилось возможным. ","creator":{"public_name":"Nikolay Shershakov","id":532764,"is_tutor":false},"comments":[{"creator":{"public_name":"Oleg Nikitin","id":457899,"is_tutor":false},"id":170477,"body":"Думаю, нужно будет ещё раз перечитать все материалы, тогда либо появится понимание, либо правильный вопрос :)","topic_id":81731},{"creator":{"public_name":"Oleg Nikitin","id":457899,"is_tutor":false},"id":169937,"body":"Всё стало ещё сложнее, ничего не понял( Даже вопрос не могу сформулировать. Просто не понимаю, как в тесте одно может быть эквивалентно другому, не понимаю, как нужно размышлять.","topic_id":81731},{"creator":{"public_name":"Nikolai Gagarinov","id":104929,"is_tutor":true},"id":167129,"body":"Николай, добрый день.\n\nСпасибо за замечание.\n\nМы добавим пример в урок, как решаются такие задачи.\nКак получается правильный ответ TFTT:\nДелаем таблицу истинности для p и q\n```\np q\nf f\nt f\nf t\nt t\n```\n\nДалее подставляя каждую строку в пример получаем значения: для отрицаний, в скобках, для всего выражения\n","topic_id":81731},{"creator":{"public_name":"Nikolai Gagarinov","id":104929,"is_tutor":true},"id":169974,"body":"Олег, добрый день.\n\nНапишите, пожалуйста, вопрос, с которым у вас трудности. Мы его посмотрим, попробуем переформулировать или заменить.","topic_id":81731},{"creator":{"public_name":"Nikolai Gagarinov","id":104929,"is_tutor":true},"id":170507,"body":"Олег, в любом случае ваш фидбек дл\nя нас полезен.\n\nКурс по логике как таковой появился давно, но сравнительно недавно мы его полностью переписали и сделали [трек по дискретной математике](https://ru.hexlet.io/programs/discrete-mathematics). \n\nБлагодаря фидбеку, мы улучшаем и упрощаем уроки, чтобы они были более понятны.","topic_id":81731}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Эквивалентность","entity_url":null,"active":true}},{"id":76306,"title":"Нет ли здесь опечатки в тексте вопроса?\n\n```\nВопрос: 1 из 3. Правильных ответов: 0\nКаковы истинностные значения следующего утверждения? (p∧¬q)rightarrow¬p\n```","plain_title":"Нет ли здесь опечатки в тексте вопроса? Вопрос: 1 из 3. Правильных ответов: 0 Каковы истинностные значения следующего утверждения? (p∧¬q)rightarrow¬p ","creator":{"public_name":"Владислав Алексеевский","id":500609,"is_tutor":false},"comments":[{"creator":{"public_name":"Maksim Litvinov","id":198906,"is_tutor":true},"id":159135,"body":"Да, конечно, я во всем квизе поправил","topic_id":76306},{"creator":{"public_name":"Владислав Алексеевский","id":500609,"is_tutor":false},"id":158943,"body":"Хорошо, в двух последующих вопросах тоже необходимо поправить, там тоже нет стрелок.","topic_id":76306},{"creator":{"public_name":"Maksim Litvinov","id":198906,"is_tutor":true},"id":158926,"body":"Да, тут стрелка должна быть. Спасибо, поправил","topic_id":76306}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Эквивалентность","entity_url":null,"active":true}},{"id":76534,"title":"День добрый, просьба уточнить по квизу, зачем в вопросе два одинаковых ответа {:T=>nil, :F=>nil} и (p∧q) → q , и почему верным оказывается только один из них\n\nКаковы истинностные значения следующего утверждения? (p∧¬q) → ¬p\n{:F=>nil, :T=>nil}\n{:T=>nil, :F=>nil}\n{:T=>nil, :F=>nil}\nни один не подходит\n\nКакое из следующих утверждений логически эквивалентно p → (p∨q)?\n(p∧q) → q\nни один не подходит\n(p∨q) → q\np → q","plain_title":"День добрый, просьба уточнить по квизу, зачем в вопросе два одинаковых ответа {:T=>nil, :F=>nil} и (p∧q) → q , и почему верным оказывается только один из них Каковы истинностные значения следующего утверждения? (p∧¬q) → ¬p {:F=>nil, :T=>nil} {:T=>nil, :F=>nil} {:T=>nil, :F=>nil} ни один не подходит Какое из следующих утверждений логически эквивалентно p → (p∨q)? (p∧q) → q ни один не подходит (p∨q) → q p → q ","creator":{"public_name":"Светлана Тульникова","id":497097,"is_tutor":false},"comments":[{"creator":{"public_name":"Maksim Litvinov","id":198906,"is_tutor":true},"id":159328,"body":"Приветствую, Светлана! Поправил варианты ответов в квизе, посмотрите пожалуйста. В последнем вопросе есть верный ответ, попробуйте построить таблицы истинности и найдите эквивалентный","topic_id":76534}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Эквивалентность","entity_url":null,"active":true}},{"id":91444,"title":"Тест, вопрос 1: Почему ¬p → (p∧¬q) - неверный ответ?\n\nЭто ведь абсолютно про первый же пример из теории о Васе, зарплате и театре.","plain_title":"Тест, вопрос 1: Почему ¬p → (p∧¬q) - неверный ответ? Это ведь абсолютно про первый же пример из теории о Васе, зарплате и театре. ","creator":{"public_name":"Денис Каракчиев","id":496877,"is_tutor":false},"comments":[{"creator":{"public_name":"Nikolai Gagarinov","id":104929,"is_tutor":true},"id":180967,"body":"Денис, добрый день. \n\nВот что на этот счет думает chatgpt (не истина в последней истанции):\n\n```Утверждение (p∧¬q) → ¬p эквивалентно ¬(p∧¬q) ∨ ¬p по закону импликации, что в свою очередь эквивалентно (¬p ∨ q) ∨ ¬p по закону дистрибуции. Это можно преобразовать к (¬p ∨ ¬p) ∨ q, что в свою очередь эквивалентно ¬p ∨ q.\n\nТаким образом, утверждение (p∧¬q) → ¬p логически эквивалентно утверждению ¬p ∨ q.\n\nТаким образом, правильный ответ: p → q.\n```\n\nС одной стороны кажется что тут несколько ответов верных. В любом случае я запросил пояснения у автора курса и вернусь к вам с ответом от него позже.","topic_id":91444}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Эквивалентность","entity_url":null,"active":true}},{"id":94789,"title":"Какое из следующих утверждений логически эквивалентно утверждению (p∧¬q) → ¬p?\n1. q → p\n2. ни один не подходит\n3. ¬p → (p∧¬q)\n4. p → q\n\nПочему не является правильным второй ответ? Я два раза перестроил таблицу и оба раза ни одна из функций в ответах не оказалась эквивалентной. При p,q: 0,0 0,1 1,0 1,1 у исходной функции значения: 1 1 0 0. У первого ответа: 1 0 1 1, у третьего: 1 1 0 0, у четвёртого: 1 1 0 1. Совпадений нет 🤷","plain_title":"Какое из следующих утверждений логически эквивалентно утверждению (p∧¬q) → ¬p? 1. q → p 2. ни один не подходит 3. ¬p → (p∧¬q) 4. p → q Почему не является правильным второй ответ? Я два раза перестроил таблицу и оба раза ни одна из функций в ответах не оказалась эквивалентной. При p,q: 0,0 0,1 1,0 1,1 у исходной функции значения: 1 1 0 0. У первого ответа: 1 0 1 1, у третьего: 1 1 0 0, у четвёртого: 1 1 0 1. Совпадений нет 🤷 ","creator":{"public_name":"Евгений Грязнов","id":732169,"is_tutor":false},"comments":[{"creator":{"public_name":"Elena Gromova","id":548102,"is_tutor":true},"id":185468,"body":"Добрый день!\n\n\nДавайте рассмотрим по пунктам:\n\nУ нас есть исходное выражение: (p ∧ ¬q) → ¬p\n\nПо закону импликации это равно: ¬(p ∧ ¬q) ∨ ¬p\n\nТеперь применим закон де Моргана: (¬p ∨ q) ∨ ¬p\n\nТеперь можем сократить одинаковые члены (в данном случае ¬p): ¬p ∨ q\n\nИ в итоге, это логически эквивалентно p → q","topic_id":94789},{"creator":{"public_name":"Евгений Грязнов","id":732169,"is_tutor":false},"id":185487,"body":"А как вы объясните, что таблицы истинности не совпадают? Или я неправильно их составил? В уроке речь шла про таблицы истинности и задание, как я понял, было \"потренироваться в составлении таблиц истинности\", я выполнял по ним. То, что вы продемонстрировали, не объяснялось, как делать. Про то, как сокращать, вроде, даже теоретически не рассказывалось.","topic_id":94789},{"creator":{"public_name":"Elena Gromova","id":548102,"is_tutor":true},"id":185626,"body":"**Евгений Грязнов**, да, у вас скорее всего не верно построена таблица для исходной функции. Там должно получиться для p,q: 0,0 0,1 1,0 1,1 - `1 1 0 1`","topic_id":94789}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Эквивалентность","entity_url":null,"active":true}},{"id":95626,"title":"Для решения тестов В теории не хватает формулы т.н. разложения Импликации т.е. A -> B = - A \\/ B . Как самому к ней прийти? Допустим победа Васи в Игре это А, а истинный факт получения мороженного это В. Получает что Импликация А -> В означет, то НЕ ВОЗМОЖНА ситуация когда одновременно верны два утверждения/факта - ( А /\\ -В ) (т.е. НЕ может быть чтобы Вася выиграл но мороженки не дали - ребенок потерял веру в справедливость) \nвнесем отрицание внутрь скобок и по закону де Моргана получим -(А /\\ -В ) = - А \\/ B","plain_title":"Для решения тестов В теории не хватает формулы т.н. разложения Импликации т.е. A -> B = - A \\/ B . Как самому к ней прийти? Допустим победа Васи в Игре это А, а истинный факт получения мороженного это В. Получает что Импликация А -> В означет, то НЕ ВОЗМОЖНА ситуация когда одновременно верны два утверждения/факта - ( А /\\ -В ) (т.е. НЕ может быть чтобы Вася выиграл но мороженки не дали - ребенок потерял веру в справедливость) внесем отрицание внутрь скобок и по закону де Моргана получим -(А /\\ -В ) = - А \\/ B ","creator":{"public_name":"Dmitry Sharypov","id":174965,"is_tutor":false},"comments":[{"creator":{"public_name":"Nikolai Gagarinov","id":104929,"is_tutor":true},"id":186502,"body":"Дмитрий, добрый день.\n\nПрошу прощения за длительный ответ. Подскажите, пожалуйста, про какой вопрос речь (в тесте их несколько)","topic_id":95626}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Эквивалентность","entity_url":null,"active":true}}],"lesson":{"exercise":null,"units":[{"id":6382,"name":"theory","url":"/courses/logic/lessons/equivalences/theory_unit"},{"id":6594,"name":"quiz","url":"/courses/logic/lessons/equivalences/quiz_unit"}],"links":[],"ordered_units":[{"id":6382,"name":"theory","url":"/courses/logic/lessons/equivalences/theory_unit"},{"id":6594,"name":"quiz","url":"/courses/logic/lessons/equivalences/quiz_unit"}],"id":2796,"slug":"equivalences","state":"approved","name":"Эквивалентность","course_order":400,"goal":"Познакомимся с эквивалентными высказываниями и научимся определять их","self_study":null,"theory_video_provider":null,"theory_video_uid":null,"theory":"\n\nУ современной математики есть собственный **формальный язык**. С его помощью мы сводим сложные высказывания к формальностям — то есть переводим рассуждения и мысли в плоскость математики. Так мы лучше понимаем мысли других людей, точнее высказываем свои рассуждения и учимся рассуждать логически.\n\nВ этом уроке мы продолжим изучать формальный язык логики высказываний. Мы разберем отношения эквивалентности и научимся определять высказывания, которые равнозначны по смыслу. Так мы сможем экономить время и заранее понимать, какие высказывания можно посчитать истинными или ложными без дополнительных рассуждений.\n\n## Логическая эквивалентность\n\nВозьмем для примера такое предложение:\n\nЕсли Вася получит прибавку к зарплате, то он пойдет в театр\n\nС точки зрения логики в этом высказывании есть и такой смысл:\n\nЕсли Вася не пошел в театр, значит он не получил прибавку к зарплате\n\nЭти высказывания **логически эквивалентны** — одно можно заменить на другое без потери смысла. В этом и заключается **логическая эквивалентность** — два выражения считаются эквивалентными, если они имеют одинаковое истинностное значение во всех случаях.\n\n### Как эквивалентность помогает доказывать\n\nОсновная польза эквивалентности в том, что она помогает доказывать математические результаты. Допустим, мы знаем, что `2+3=5`. Попробуем это доказать.\n\nМожно заменить выражение `2+3` на другое **эквивалентное** выражение `3+2`, которое также будет равно `5`.\n\nКак видите, значение составной пропозиции не изменилось. Значит, эквивалентность помогла нам доказать первоначальное высказывание — `2+3=5`.\n\n### Как эквивалентность помогает рассуждать\n\nКроме доказательств, эквивалентность используется и в рассуждениях. Она помогает осмыслить предложение и отнести его к одной из трех категорий в таблице истинности.\n\n**Таблица истинности** — это разбиение логической функции путем перечисления всех возможных значений, которые может принимать функция. Такая таблица обычно содержит несколько строк и столбцов. В верхней строке представлены логические переменные и комбинации, которые по возрастанию сложности приводят к конечной функции.\n\nВ логической функции есть три основные операции:\n\n* НЕ (Инверсия или отрицание, обозначается как `¬`)\n* ИЛИ (Дизъюнкция или сложение, обозначается как `∨`)\n* И (Конъюнкция или умножение, обозначается как `∧`)\n\nЗначениям функций обычно присваивается логический ноль (ложь) или логическая единица (истина).\n\nТаблица истинности выглядит так:\n\n| a∨a∨¬aa | a∧a∧¬aa | aa | ¬aa |\n|------------|--------------|-------------|-------------|\n| TT | FF | TT | FF |\n| TT | FF | FF | TT |\n| Тавтология | Противоречие | Случайность | Случайность |\n\nРассмотрим ее подробнее:\n\n* **Тавтология** (`T`) — высказывание, которое всегда истинно независимо от того, истинны ли значения переменных внутри него. По таблице вся колонка истинна\n* **Противоречие** или **абсурд** (`F`) — высказывание, которое всегда ложно\n* **Случайность** — составное предложение, которое не является ни тавтологией, ни противоречием.\n\nТавтологии и противоречия помогают доказывать и проверять математические аргументы, а также объяснить **пропозициональные эквивалентности** — утверждения, которые равны в логическом аргументе. В этом случае самый простой способ — создать таблицу истинности и посмотреть, идентичны ли столбцы.\n\nПо такой таблице мы можем проверить, эквивалентны ли высказывания a и b.\n\nИногда в математике полезно заменить одно утверждение другим, но эквивалентным. Возьмем такой пример:\n\n```text\nЕсли `n` четное, то `n/2` — это целое число\n```\n\nЭквивалентное утверждение звучит так:\n\n```text\nЕсли `n/2` не целое число, то `n` — это нечетное число\n```\n\nПервое высказывание имело вид «Если `A`, то `B`», а второе — «Если не `B`, то не `A`». Это эквивалентные высказывания, о которых мы подробнее поговорим ниже.\n\n## Законы логической эквивалентности (Законы Моргана)\n\nНиже приведен список важных законов эквивалентности — также их называют законами алгебры высказываний. На протяжение всего курса мы будем использовать такие законы:\n\n| Эквивалентность | Закон | То же, что равенство в булевой алгебре |\n|-------------------------------|--------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------|\n| a∧T≡aa∧T≡a a∨F≡aa∨F≡a | Законы тождества | Высказывание с определенным значением (истина или ложь) сохраняет свою первоначальную форму |\n| a∨T≡Ta∨T≡T a∧F≡Fa∧F≡F | Законы доминирования | ∧∧: Если в выражении первое И ложно, то все выражение И будет ложным ∨∨: Если в выражении первое ИЛИ истинно, то все выражение ИЛИ будет истинным |\n| a∨a≡aa∨a≡a a∧a≡aa∧a≡a | Законы тавтологии | Высказывание принимает только истинные значения в любом случае |\n| ¬((¬a)≡aa)≡a | Закон двойного отрицания | Два отрицания эквивалентны отсутствию отрицания |\n| a∨q≡q∨aa∨q≡q∨a a∧q≡q∧aa∧q≡q∧a | Законы коммутативности | Результат операции над двумя высказываниями не зависит от того, в каком порядке берутся эти высказывания |\n\nПрименим некоторые из этих законов на практике.\n\nВозьмем для примера составное предложение:\n\n```text\nЯ обедаю в ресторане и иду на танцы\n```\n\nИспользуем **законы де Моргана** — они связывают с помощью отрицания конъюнкцию и дизъюнкцию. Можно выразить отрицание так:\n\n```text\nЯ не буду есть в ресторане или не пойду танцевать\n```\n\nОбратите внимание, что мы отрицаем оба простых предложения и заменили «и» на «или».\n\nВ качестве еще одного примера рассмотрим следующее утверждение:\n\n```text\nНеверно, что Глеб — доктор, а Вася — инженер\n```\n\nЭто переводится на математический язык как:\n\n```text\n¬(доктор ∧ инженер)\n```\n\nПусть:\n\n* `доктор` — означает \"Глеб — доктор\"\n* `инженер` — означает \"Вася — инженер\"\n\nЭквивалентная форма по закону де Моргана:\n\n```text\n¬(доктор ∧ инженер) ≡ ¬доктор ∨ ¬инженер\n```\n\nСледовательно, мы можем сказать, что: *Либо Глеб — не доктор, либо Вася — не инженер (или оба сразу)*.\n\nПриведенные выше примеры можно легко решить с помощью таблицы истинности. Но это можно сделать только для предложения с небольшим числом переменных — здесь их всего две.\n\nЧем больше переменных, тем менее практично использовать метод таблицы истинности. Для пропозиции с 20 переменными необходимо оценить \\(2^20\\) строк в таблице истинности. Человеку будет сложно справиться с такой задачей, но можно упростить процесс и воспользоваться компьютером.\n\nНо если переменных будет больше 1000, вычисление на компьютере будет очень долгим.\n\nА еще бывают случаи, когда можно не строить таблицу истинности — вместо этого можно указать причину, по которой два высказывания логически эквивалентны. При этом мы преобразуем левую часть высказывания, чтобы она соответствовала правой части, и приводим причины каждого преобразования. Как в примере выше:\n\n* Высказывание: Если `n` четное, то `n/2` — целое число\n* И его эквивалент: Если `n/2` не целое число, то `n` не четное\n* При этом преобразование справедливо для любого `n`\n\nЭти логические доказательства могут показаться сложными на первых порах. Эта тема станет понятнее, когда мы обсудим ее подробнее в следующих уроках.\n"},"lessonMember":null,"courseMember":null,"course":{"start_lesson":{"exercise":null,"units":[{"id":6368,"name":"theory","url":"/courses/logic/lessons/introduction/theory_unit"}],"links":[],"ordered_units":[{"id":6368,"name":"theory","url":"/courses/logic/lessons/introduction/theory_unit"}],"id":2783,"slug":"introduction","state":"approved","name":"Введение","course_order":100,"goal":"Знакомимся с темой и задачами курса","self_study":null,"theory_video_provider":null,"theory_video_uid":null,"theory":"В повседневной жизни мы привыкли использовать слово «логика» в неформальном смысле. Если человек обоснованно рассуждает на конкретную тему или приводит уместные аргументы в споре, мы называем такое поведение логичным.\n\nНо на самом деле за этим понятием кроется гораздо большее. С точки зрения ученых, **логика** — это систематическое мышление, которое позволяет разбирать смысл высказываний и выводить новую информацию из уже известной. Это одна из основополагающих наук, потому что она стирает границы между математикой и философией. Именно правила логики придают математическим утверждениям точный смысл и помогают отличать достоверные аргументы от недостоверных. Кроме того, правила логики определяют смысл математических утверждений.\n\nПравила логики не только применяются в математике, но и помогают решать практические задачи из компьютерных наук: проектировать цифровые схемы, конструировать программы и проверять правильность кода. Потому этот курс будет полезен программистам, ведь они работают с автоматизированными рассуждениями.\n\nВ этом курсе мы научимся применять логику для решения прикладных математических задач и познакомимся с основой анализа данных — теорией множеств. Мы рассмотрим такие темы:\n\n* Логика и нотации\n* Парадоксы и софизмы\n* Эквивалентность\n* Предикаты и квантификаторы\n* Правила математической логики\n* Полные дизъюнктивные и конъюнктивные нормальные формы\n* Правила вывода\n* Введение в теорию множеств\n"},"id":39,"slug":"logic","challenges_count":0,"name":"Введение в математическую логику","allow_indexing":true,"state":"approved","course_state":"finished","pricing_type":"paid","description":"На этом курсе вы изучите язык математики и узнаете его базовые правила — они помогут яснее рассуждать и доносить свои мысли. Формальная логика пригодится, если вы станете инженером-программистом, займетесь аналитикой данных или решите изучать программирование на продвинутом уровне. Математика и логика помогают программистам быстрее учиться, смотреть на код под другим углом и мыслить по-новому.","kind":"basic","updated_at":"2026-01-20T11:53:59.661Z","language":"other","duration_cache":10260,"skills":["Переводить высказывания с естественного языка на формальный математический язык","Предлагать ясные, однозначные и простые интерпретации высказываний, которые будут близки к формальным математическим понятиям","Оперировать базовыми правилами логики"],"keywords":["логические высказывания","таблица истинности","нормальная форма","предикаты","множества","аксиомы"],"lessons_count":11,"cover":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6OTAzMiwicHVyIjoiYmxvYl9pZCJ9fQ==--0dc2c2114f74576aa1e770243707aa55af04a1a7/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fZmlsbCI6WzYwMCw0MDBdfSwicHVyIjoidmFyaWF0aW9uIn19--6067466c2912ca31a17eddee04b8cf2a38c6ad17/image.png"},"recommendedLandings":[{"stack":{"id":50,"slug":"discrete-mathematics","title":"Дискретная математика","audience":"for_beginners","start_type":"anytime","pricing_model":"subscription","priority":"medium","kind":"track","state":"published","stack_state":"finished","order":4650,"duration_in_months":1},"id":88,"slug":"discrete-mathematics","title":"Дискретная математика","subtitle":"Навык дискретной математики для укрепления теоретических знаний и лучшего понимания алгоритмов и структур данных","subtitle_for_lists":"Дискретная математика для программистов","locale":"ru","current":true,"duration_in_months_text":"1 месяц","stack_slug":"discrete-mathematics","price_text":"от 3 900 ₽","duration_text":"1 месяц","cover_list_variant":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY2MSwicHVyIjoiYmxvYl9pZCJ9fQ==--e9c2b6bde361adaac625a7f47d8b9671c17f3ddb/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Mathematics-bro.png"}],"lessonMemberUnit":null,"accessToLearnUnitExists":false,"accessToCourseExists":false},"url":"/courses/logic/lessons/equivalences/theory_unit","version":"8f286f6358a90a7bef2263b3a6edf5a90a94fa42","encryptHistory":false,"clearHistory":false}"><style data-mantine-styles="true">:root, :host{--mantine-font-family: Arial, sans-serif;--mantine-font-family-headings: Arial, sans-serif;--mantine-heading-font-weight: normal;--mantine-radius-default: 0rem;--mantine-primary-color-filled: var(--mantine-color-indigo-filled);--mantine-primary-color-filled-hover: var(--mantine-color-indigo-filled-hover);--mantine-primary-color-light: var(--mantine-color-indigo-light);--mantine-primary-color-light-hover: var(--mantine-color-indigo-light-hover);--mantine-primary-color-light-color: var(--mantine-color-indigo-light-color);--mantine-spacing-xxl: calc(4rem * var(--mantine-scale));--mantine-font-size-xs: 12px;--mantine-font-size-sm: 14px;--mantine-font-size-md: 16px;--mantine-font-size-lg: clamp(16.0000px, calc(15.2727px + 0.2273vw), 18.0000px);--mantine-font-size-xl: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-display-3: clamp(32.0000px, calc(26.1818px + 1.8182vw), 48.0000px);--mantine-font-size-display-2: clamp(36.0000px, calc(25.8182px + 3.1818vw), 64.0000px);--mantine-font-size-display-1: clamp(40.0000px, calc(25.4545px + 4.5455vw), 80.0000px);--mantine-font-size-h1: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-font-size-h2: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-font-size-h3: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-font-size-h4: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-font-size-h5: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-h6: 1rem;--mantine-primary-color-0: var(--mantine-color-indigo-0);--mantine-primary-color-1: var(--mantine-color-indigo-1);--mantine-primary-color-2: var(--mantine-color-indigo-2);--mantine-primary-color-3: var(--mantine-color-indigo-3);--mantine-primary-color-4: var(--mantine-color-indigo-4);--mantine-primary-color-5: var(--mantine-color-indigo-5);--mantine-primary-color-6: var(--mantine-color-indigo-6);--mantine-primary-color-7: var(--mantine-color-indigo-7);--mantine-primary-color-8: var(--mantine-color-indigo-8);--mantine-primary-color-9: var(--mantine-color-indigo-9);--mantine-color-red-0: #ffeaea;--mantine-color-red-1: #fed4d4;--mantine-color-red-2: #f4a7a8;--mantine-color-red-3: #ec7878;--mantine-color-red-4: #e55050;--mantine-color-red-5: #e03131;--mantine-color-red-6: #e02829;--mantine-color-red-7: #c71a1c;--mantine-color-red-8: #b21218;--mantine-color-red-9: #9c0411;--mantine-color-violet-0: #fce9ff;--mantine-color-violet-1: #f1cfff;--mantine-color-violet-2: #e09bff;--mantine-color-violet-3: #d16fff;--mantine-color-violet-4: #be37fe;--mantine-color-violet-5: #b51afe;--mantine-color-violet-6: #b009ff;--mantine-color-violet-7: #9b00e4;--mantine-color-violet-8: #8a00cc;--mantine-color-violet-9: #7800b3;--mantine-color-indigo-0: #edecff;--mantine-color-indigo-1: #d6d5fe;--mantine-color-indigo-2: #aaa9f4;--mantine-color-indigo-3: #7b79eb;--mantine-color-indigo-4: #5451e4;--mantine-color-indigo-5: #3b37e0;--mantine-color-indigo-6: #2d2adf;--mantine-color-indigo-7: #1f1ec7;--mantine-color-indigo-8: #1819b2;--mantine-color-indigo-9: #0c149e;--mantine-color-cyan-0: #dffdff;--mantine-color-cyan-1: #caf5ff;--mantine-color-cyan-2: #99e8ff;--mantine-color-cyan-3: #64daff;--mantine-color-cyan-4: #3ccffe;--mantine-color-cyan-5: #24c8fe;--mantine-color-cyan-6: #00c2ff;--mantine-color-cyan-7: #00ade4;--mantine-color-cyan-8: #009acd;--mantine-color-cyan-9: #0085b5;--mantine-color-green-0: #e9fdec;--mantine-color-green-1: #d7f6dc;--mantine-color-green-2: #b0eab9;--mantine-color-green-3: #86df94;--mantine-color-green-4: #62d574;--mantine-color-green-5: #4ccf5f;--mantine-color-green-6: #3fcc54;--mantine-color-green-7: #2fb344;--mantine-color-green-8: #25a03b;--mantine-color-green-9: #138a2e;--mantine-color-yellow-0: #fff7e2;--mantine-color-yellow-1: #ffeecd;--mantine-color-yellow-2: #ffdc9c;--mantine-color-yellow-3: #ffc966;--mantine-color-yellow-4: #feb93a;--mantine-color-yellow-5: #feae1e;--mantine-color-yellow-6: #ffa90f;--mantine-color-yellow-8: #ca8200;--mantine-color-yellow-9: #af7000;--mantine-h1-font-size: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-h1-font-weight: normal;--mantine-h2-font-size: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-h2-font-weight: normal;--mantine-h3-font-size: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-h3-font-weight: normal;--mantine-h4-font-size: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-h4-font-weight: normal;--mantine-h5-font-size: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-h5-font-weight: normal;--mantine-h6-font-size: 1rem;--mantine-h6-font-weight: normal;}
:root[data-mantine-color-scheme="dark"], :host([data-mantine-color-scheme="dark"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-dark-filled: var(--mantine-color-dark-5);--mantine-color-dark-filled-hover: var(--mantine-color-dark-6);--mantine-color-dark-light: rgba(105, 105, 105, 0.15);--mantine-color-dark-light-hover: rgba(105, 105, 105, 0.2);--mantine-color-dark-light-color: var(--mantine-color-dark-0);--mantine-color-dark-outline: var(--mantine-color-dark-1);--mantine-color-dark-outline-hover: rgba(184, 184, 184, 0.05);--mantine-color-gray-filled: var(--mantine-color-gray-5);--mantine-color-gray-filled-hover: var(--mantine-color-gray-6);--mantine-color-gray-light: rgba(222, 226, 230, 0.15);--mantine-color-gray-light-hover: rgba(222, 226, 230, 0.2);--mantine-color-gray-light-color: var(--mantine-color-gray-0);--mantine-color-gray-outline: var(--mantine-color-gray-1);--mantine-color-gray-outline-hover: rgba(241, 243, 245, 0.05);--mantine-color-red-filled: var(--mantine-color-red-5);--mantine-color-red-filled-hover: var(--mantine-color-red-6);--mantine-color-red-light: rgba(236, 120, 120, 0.15);--mantine-color-red-light-hover: rgba(236, 120, 120, 0.2);--mantine-color-red-light-color: var(--mantine-color-red-0);--mantine-color-red-outline: var(--mantine-color-red-1);--mantine-color-red-outline-hover: rgba(254, 212, 212, 0.05);--mantine-color-pink-filled: var(--mantine-color-pink-5);--mantine-color-pink-filled-hover: var(--mantine-color-pink-6);--mantine-color-pink-light: rgba(250, 162, 193, 0.15);--mantine-color-pink-light-hover: rgba(250, 162, 193, 0.2);--mantine-color-pink-light-color: var(--mantine-color-pink-0);--mantine-color-pink-outline: var(--mantine-color-pink-1);--mantine-color-pink-outline-hover: rgba(255, 222, 235, 0.05);--mantine-color-grape-filled: var(--mantine-color-grape-5);--mantine-color-grape-filled-hover: var(--mantine-color-grape-6);--mantine-color-grape-light: rgba(229, 153, 247, 0.15);--mantine-color-grape-light-hover: rgba(229, 153, 247, 0.2);--mantine-color-grape-light-color: var(--mantine-color-grape-0);--mantine-color-grape-outline: var(--mantine-color-grape-1);--mantine-color-grape-outline-hover: rgba(243, 217, 250, 0.05);--mantine-color-violet-filled: var(--mantine-color-violet-5);--mantine-color-violet-filled-hover: var(--mantine-color-violet-6);--mantine-color-violet-light: rgba(209, 111, 255, 0.15);--mantine-color-violet-light-hover: rgba(209, 111, 255, 0.2);--mantine-color-violet-light-color: var(--mantine-color-violet-0);--mantine-color-violet-outline: var(--mantine-color-violet-1);--mantine-color-violet-outline-hover: rgba(241, 207, 255, 0.05);--mantine-color-indigo-filled: var(--mantine-color-indigo-5);--mantine-color-indigo-filled-hover: var(--mantine-color-indigo-6);--mantine-color-indigo-light: rgba(123, 121, 235, 0.15);--mantine-color-indigo-light-hover: rgba(123, 121, 235, 0.2);--mantine-color-indigo-light-color: var(--mantine-color-indigo-0);--mantine-color-indigo-outline: var(--mantine-color-indigo-1);--mantine-color-indigo-outline-hover: rgba(214, 213, 254, 0.05);--mantine-color-blue-filled: var(--mantine-color-blue-5);--mantine-color-blue-filled-hover: var(--mantine-color-blue-6);--mantine-color-blue-light: rgba(116, 192, 252, 0.15);--mantine-color-blue-light-hover: rgba(116, 192, 252, 0.2);--mantine-color-blue-light-color: var(--mantine-color-blue-0);--mantine-color-blue-outline: var(--mantine-color-blue-1);--mantine-color-blue-outline-hover: rgba(208, 235, 255, 0.05);--mantine-color-cyan-filled: var(--mantine-color-cyan-5);--mantine-color-cyan-filled-hover: var(--mantine-color-cyan-6);--mantine-color-cyan-light: rgba(100, 218, 255, 0.15);--mantine-color-cyan-light-hover: rgba(100, 218, 255, 0.2);--mantine-color-cyan-light-color: var(--mantine-color-cyan-0);--mantine-color-cyan-outline: var(--mantine-color-cyan-1);--mantine-color-cyan-outline-hover: rgba(202, 245, 255, 0.05);--mantine-color-teal-filled: var(--mantine-color-teal-5);--mantine-color-teal-filled-hover: var(--mantine-color-teal-6);--mantine-color-teal-light: rgba(99, 230, 190, 0.15);--mantine-color-teal-light-hover: rgba(99, 230, 190, 0.2);--mantine-color-teal-light-color: var(--mantine-color-teal-0);--mantine-color-teal-outline: var(--mantine-color-teal-1);--mantine-color-teal-outline-hover: rgba(195, 250, 232, 0.05);--mantine-color-green-filled: var(--mantine-color-green-5);--mantine-color-green-filled-hover: var(--mantine-color-green-6);--mantine-color-green-light: rgba(134, 223, 148, 0.15);--mantine-color-green-light-hover: rgba(134, 223, 148, 0.2);--mantine-color-green-light-color: var(--mantine-color-green-0);--mantine-color-green-outline: var(--mantine-color-green-1);--mantine-color-green-outline-hover: rgba(215, 246, 220, 0.05);--mantine-color-lime-filled: var(--mantine-color-lime-5);--mantine-color-lime-filled-hover: var(--mantine-color-lime-6);--mantine-color-lime-light: rgba(192, 235, 117, 0.15);--mantine-color-lime-light-hover: rgba(192, 235, 117, 0.2);--mantine-color-lime-light-color: var(--mantine-color-lime-0);--mantine-color-lime-outline: var(--mantine-color-lime-1);--mantine-color-lime-outline-hover: rgba(233, 250, 200, 0.05);--mantine-color-yellow-filled: var(--mantine-color-yellow-5);--mantine-color-yellow-filled-hover: var(--mantine-color-yellow-6);--mantine-color-yellow-light: rgba(255, 201, 102, 0.15);--mantine-color-yellow-light-hover: rgba(255, 201, 102, 0.2);--mantine-color-yellow-light-color: var(--mantine-color-yellow-0);--mantine-color-yellow-outline: var(--mantine-color-yellow-1);--mantine-color-yellow-outline-hover: rgba(255, 238, 205, 0.05);--mantine-color-orange-filled: var(--mantine-color-orange-5);--mantine-color-orange-filled-hover: var(--mantine-color-orange-6);--mantine-color-orange-light: rgba(255, 192, 120, 0.15);--mantine-color-orange-light-hover: rgba(255, 192, 120, 0.2);--mantine-color-orange-light-color: var(--mantine-color-orange-0);--mantine-color-orange-outline: var(--mantine-color-orange-1);--mantine-color-orange-outline-hover: rgba(255, 232, 204, 0.05);--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-9) 0%, var(--mantine-color-cyan-7) 100%);--app-color-surface: #2e2e2e;}
:root[data-mantine-color-scheme="light"], :host([data-mantine-color-scheme="light"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-red-light: rgba(224, 40, 41, 0.1);--mantine-color-red-light-hover: rgba(224, 40, 41, 0.12);--mantine-color-red-outline-hover: rgba(224, 40, 41, 0.05);--mantine-color-violet-light: rgba(176, 9, 255, 0.1);--mantine-color-violet-light-hover: rgba(176, 9, 255, 0.12);--mantine-color-violet-outline-hover: rgba(176, 9, 255, 0.05);--mantine-color-indigo-light: rgba(45, 42, 223, 0.1);--mantine-color-indigo-light-hover: rgba(45, 42, 223, 0.12);--mantine-color-indigo-outline-hover: rgba(45, 42, 223, 0.05);--mantine-color-cyan-light: rgba(0, 194, 255, 0.1);--mantine-color-cyan-light-hover: rgba(0, 194, 255, 0.12);--mantine-color-cyan-outline-hover: rgba(0, 194, 255, 0.05);--mantine-color-green-light: rgba(63, 204, 84, 0.1);--mantine-color-green-light-hover: rgba(63, 204, 84, 0.12);--mantine-color-green-outline-hover: rgba(63, 204, 84, 0.05);--mantine-color-yellow-light: rgba(255, 169, 15, 0.1);--mantine-color-yellow-light-hover: rgba(255, 169, 15, 0.12);--mantine-color-yellow-outline-hover: rgba(255, 169, 15, 0.05);--app-color-surface: #f1f3f5;--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-5) 100%);}</style><style data-mantine-styles="classes">@media (max-width: 35.99375em) {.mantine-visible-from-xs {display: none !important;}}@media (min-width: 36em) {.mantine-hidden-from-xs {display: none !important;}}@media (max-width: 47.99375em) {.mantine-visible-from-sm {display: none !important;}}@media (min-width: 48em) {.mantine-hidden-from-sm {display: none !important;}}@media (max-width: 61.99375em) {.mantine-visible-from-md {display: none !important;}}@media (min-width: 62em) {.mantine-hidden-from-md {display: none !important;}}@media (max-width: 74.99375em) {.mantine-visible-from-lg {display: none !important;}}@media (min-width: 75em) {.mantine-hidden-from-lg {display: none !important;}}@media (max-width: 87.99375em) {.mantine-visible-from-xl {display: none !important;}}@media (min-width: 88em) {.mantine-hidden-from-xl {display: none !important;}}</style><div style="position:absolute;top:0rem" class=""></div><div style="max-width:var(--container-size-xl);height:100%;min-height:0rem" class=""><style data-mantine-styles="inline">.__m__-_R_5ub_{--grid-gutter:0rem;}</style><div style="height:100%;min-height:0rem" class="m_410352e9 mantine-Grid-root __m__-_R_5ub_"><div class="m_dee7bd2f mantine-Grid-inner" style="height:100%"><style data-mantine-styles="inline">.__m__-_R_rdub_{--col-flex-grow:auto;--col-flex-basis:91.66666666666667%;--col-max-width:91.66666666666667%;}@media(min-width: 48em){.__m__-_R_rdub_{--col-flex-grow:auto;--col-flex-basis:83.33333333333334%;--col-max-width:83.33333333333334%;}}</style><div style="min-width:0rem;height:100%;min-height:0rem;display:flex" class="m_96bdd299 mantine-Grid-col __m__-_R_rdub_"><style data-mantine-styles="inline">.__m__-_R_6qrdub_{margin-top:0rem;padding-inline:var(--mantine-spacing-xs);width:100%;}@media(min-width: 48em){.__m__-_R_6qrdub_{margin-top:var(--mantine-spacing-xl);width:80%;}}@media(min-width: 62em){.__m__-_R_6qrdub_{padding-inline:var(--mantine-spacing-xl);}}</style><div style="margin-inline:auto;max-width:var(--mantine-breakpoint-xl)" class="__m__-_R_6qrdub_"><div style="color:var(--mantine-color-dimmed)" class="m_4451eb3a mantine-Center-root" data-inline="true"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:calc(0.125rem * var(--mantine-scale));color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-lock "><path d="M5 13a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v6a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-6"></path><path d="M11 16a1 1 0 1 0 2 0a1 1 0 0 0 -2 0"></path><path d="M8 11v-4a4 4 0 1 1 8 0v4"></path></svg></div><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Введение в математическую логику</p></div><h1 style="--title-fw:var(--mantine-h1-font-weight);--title-lh:var(--mantine-h1-line-height);--title-fz:var(--mantine-h1-font-size);margin-bottom:var(--mantine-spacing-xl)" class="m_8a5d1357 mantine-Title-root" data-order="1">Теория: Эквивалентность</h1><script type="application/ld+json">{"@context":"https://schema.org","@type":"LearningResource","name":"Эквивалентность","inLanguage":"ru","isPartOf":{"@type":"LearningResource","name":"Введение в математическую логику"},"isAccessibleForFree":"False","hasPart":{"@type":"WebPageElement","isAccessibleForFree":"False","cssSelector":".paywalled"}}</script><div class=""><div style="--alert-color:var(--mantine-color-indigo-light-color);margin-bottom:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-lg)" class="m_66836ed3 mantine-Alert-root" id="mantine-_R_remqrdub_" role="alert" aria-describedby="mantine-_R_remqrdub_-body" aria-labelledby="mantine-_R_remqrdub_-title"><div class="m_a5d60502 mantine-Alert-wrapper"><div class="m_667f2a6a mantine-Alert-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-rocket "><path d="M4 13a8 8 0 0 1 7 7a6 6 0 0 0 3 -5a9 9 0 0 0 6 -8a3 3 0 0 0 -3 -3a9 9 0 0 0 -8 6a6 6 0 0 0 -5 3"></path><path d="M7 14a6 6 0 0 0 -3 6a6 6 0 0 0 6 -3"></path><path d="M14 9a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path></svg></div><div class="m_667c2793 mantine-Alert-body"><div class="m_6a03f287 mantine-Alert-title"><span id="mantine-_R_remqrdub_-title" class="m_698f4f23 mantine-Alert-label">Полный доступ к материалам</span></div><div id="mantine-_R_remqrdub_-body" class="m_7fa78076 mantine-Alert-message"><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Зарегистрируйтесь и получите доступ к этому и десяткам других курсов</p><a style="--button-height:var(--button-height-xs);--button-padding-x:var(--button-padding-x-xs);--button-fz:var(--mantine-font-size-xs);--button-bg:linear-gradient(45deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-filled) 100%);--button-hover:linear-gradient(45deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-filled) 100%);--button-color:var(--mantine-color-white);--button-bd:none" class="mantine-focus-auto mantine-active m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root" data-variant="gradient" data-size="xs" href="/u/new"><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label">Зарегистрироваться</span></span></a></div></div></div></div></div><div class="paywalled m_d08caa0 mantine-Typography-root"><p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6OTA0MSwicHVyIjoiYmxvYl9pZCJ9fQ==--8d0aebc10832869104e33839854c5f6c1df36405/logic400.png" alt="logic400" loading="lazy"/></p>
<p>У современной математики есть собственный <strong>формальный язык</strong>. С его помощью мы сводим сложные высказывания к формальностям — то есть переводим рассуждения и мысли в плоскость математики. Так мы лучше понимаем мысли других людей, точнее высказываем свои рассуждения и учимся рассуждать логически.</p>
<p>В этом уроке мы продолжим изучать формальный язык логики высказываний. Мы разберем отношения эквивалентности и научимся определять высказывания, которые равнозначны по смыслу. Так мы сможем экономить время и заранее понимать, какие высказывания можно посчитать истинными или ложными без дополнительных рассуждений.</p>
<h2 id="heading-2-1">Логическая эквивалентность</h2>
<p>Возьмем для примера такое предложение:</p>
<p>Если Вася получит прибавку к зарплате, то он пойдет в театр</p>
<p>С точки зрения логики в этом высказывании есть и такой смысл:</p>
<p>Если Вася не пошел в театр, значит он не получил прибавку к зарплате</p>
<p>Эти высказывания <strong>логически эквивалентны</strong> — одно можно заменить на другое без потери смысла. В этом и заключается <strong>логическая эквивалентность</strong> — два выражения считаются эквивалентными, если они имеют одинаковое истинностное значение во всех случаях.</p>
<h3 id="heading-3-2">Как эквивалентность помогает доказывать</h3>
<p>Основная польза эквивалентности в том, что она помогает доказывать математические результаты. Допустим, мы знаем, что <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">2+3=5</code>. Попробуем это доказать.</p>
<p>Можно заменить выражение <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">2+3</code> на другое <strong>эквивалентное</strong> выражение <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">3+2</code>, которое также будет равно <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">5</code>.</p>
<p>Как видите, значение составной пропозиции не изменилось. Значит, эквивалентность помогла нам доказать первоначальное высказывание — <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">2+3=5</code>.</p>
<h3 id="heading-3-3">Как эквивалентность помогает рассуждать</h3>
<p>Кроме доказательств, эквивалентность используется и в рассуждениях. Она помогает осмыслить предложение и отнести его к одной из трех категорий в таблице истинности.</p>
<p><strong>Таблица истинности</strong> — это разбиение логической функции путем перечисления всех возможных значений, которые может принимать функция. Такая таблица обычно содержит несколько строк и столбцов. В верхней строке представлены логические переменные и комбинации, которые по возрастанию сложности приводят к конечной функции.</p>
<p>В логической функции есть три основные операции:</p>
<ul>
<li>НЕ (Инверсия или отрицание, обозначается как <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">¬</code>)</li>
<li>ИЛИ (Дизъюнкция или сложение, обозначается как <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">∨</code>)</li>
<li>И (Конъюнкция или умножение, обозначается как <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">∧</code>)</li>
</ul>
<p>Значениям функций обычно присваивается логический ноль (ложь) или логическая единица (истина).</p>
<p>Таблица истинности выглядит так:</p>
<div style="--table-min-width:calc(50rem * var(--mantine-scale));--sa-corner-width:0px;--sa-corner-height:0px" class="m_a100c15 mantine-TableScrollContainer-scrollContainer m_d57069b5 mantine-ScrollArea-root"><div style="overflow-x:hidden;overflow-y:hidden" class="m_c0783ff9 mantine-ScrollArea-viewport" data-offset-scrollbars="x" data-scrollbars="xy"><div class="m_b1336c6 mantine-ScrollArea-content"><div class="m_62259741 mantine-TableScrollContainer-scrollContainerInner"><table><thead><tr><th>a∨a∨¬aa</th><th>a∧a∧¬aa</th><th>aa</th><th>¬aa</th></tr></thead><tbody><tr><td>TT</td><td>FF</td><td>TT</td><td>FF</td></tr><tr><td>TT</td><td>FF</td><td>FF</td><td>TT</td></tr><tr><td>Тавтология</td><td>Противоречие</td><td>Случайность</td><td>Случайность</td></tr></tbody></table></div></div></div></div>
<p>Рассмотрим ее подробнее:</p>
<ul>
<li><strong>Тавтология</strong> (<code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">T</code>) — высказывание, которое всегда истинно независимо от того, истинны ли значения переменных внутри него. По таблице вся колонка истинна</li>
<li><strong>Противоречие</strong> или <strong>абсурд</strong> (<code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">F</code>) — высказывание, которое всегда ложно</li>
<li><strong>Случайность</strong> — составное предложение, которое не является ни тавтологией, ни противоречием.</li>
</ul>
<p>Тавтологии и противоречия помогают доказывать и проверять математические аргументы, а также объяснить <strong>пропозициональные эквивалентности</strong> — утверждения, которые равны в логическом аргументе. В этом случае самый простой способ — создать таблицу истинности и посмотреть, идентичны ли столбцы.</p>
<p>По такой таблице мы можем проверить, эквивалентны ли высказывания a и b.</p>
<p>Иногда в математике полезно заменить одно утверждение другим, но эквивалентным. Возьмем такой пример:</p>
<div style="margin-bottom:var(--mantine-spacing-lg)" class="m_e597c321 mantine-CodeHighlight-codeHighlight" dir="ltr"><div class="m_be7e9c9c mantine-CodeHighlight-controls"><button style="--ai-bg:transparent;--ai-hover:transparent;--ai-color:inherit;--ai-bd:none" class="mantine-focus-auto mantine-active m_d498bab7 mantine-CodeHighlight-control m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="none" type="button" aria-label="Copy code"><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z"></path><path d="M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2"></path></svg></span></button></div><div style="--scrollarea-scrollbar-size:calc(0.25rem * var(--mantine-scale));--sa-corner-width:0px;--sa-corner-height:0px" class="m_f744fd40 mantine-CodeHighlight-scrollarea m_d57069b5 mantine-ScrollArea-root" dir="ltr"><div style="overflow-x:hidden;overflow-y:hidden;overscroll-behavior-inline:none" class="m_c0783ff9 mantine-ScrollArea-viewport" data-scrollbars="xy"><div class="m_b1336c6 mantine-ScrollArea-content"><pre class="m_2c47c4fd mantine-CodeHighlight-pre" style="padding:0"><code class="m_5caae6d3 mantine-CodeHighlight-code">Если `n` четное, то `n/2` — это целое число</code></pre></div></div></div><button class="mantine-focus-auto m_c9378bc2 mantine-CodeHighlight-showCodeButton m_87cf2631 mantine-UnstyledButton-root" data-hidden="true" type="button">Expand code</button></div>
<p>Эквивалентное утверждение звучит так:</p>
<div style="margin-bottom:var(--mantine-spacing-lg)" class="m_e597c321 mantine-CodeHighlight-codeHighlight" dir="ltr"><div class="m_be7e9c9c mantine-CodeHighlight-controls"><button style="--ai-bg:transparent;--ai-hover:transparent;--ai-color:inherit;--ai-bd:none" class="mantine-focus-auto mantine-active m_d498bab7 mantine-CodeHighlight-control m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="none" type="button" aria-label="Copy code"><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z"></path><path d="M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2"></path></svg></span></button></div><div style="--scrollarea-scrollbar-size:calc(0.25rem * var(--mantine-scale));--sa-corner-width:0px;--sa-corner-height:0px" class="m_f744fd40 mantine-CodeHighlight-scrollarea m_d57069b5 mantine-ScrollArea-root" dir="ltr"><div style="overflow-x:hidden;overflow-y:hidden;overscroll-behavior-inline:none" class="m_c0783ff9 mantine-ScrollArea-viewport" data-scrollbars="xy"><div class="m_b1336c6 mantine-ScrollArea-content"><pre class="m_2c47c4fd mantine-CodeHighlight-pre" style="padding:0"><code class="m_5caae6d3 mantine-CodeHighlight-code">Если `n/2` не целое число, то `n` — это нечетное число</code></pre></div></div></div><button class="mantine-focus-auto m_c9378bc2 mantine-CodeHighlight-showCodeButton m_87cf2631 mantine-UnstyledButton-root" data-hidden="true" type="button">Expand code</button></div>
<p>Первое высказывание имело вид «Если <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">A</code>, то <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">B</code>», а второе — «Если не <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">B</code>, то не <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">A</code>». Это эквивалентные высказывания, о которых мы подробнее поговорим ниже.</p>
<h2 id="heading-2-4">Законы логической эквивалентности (Законы Моргана)</h2>
<p>Ниже приведен список важных законов эквивалентности — также их называют законами алгебры высказываний. На протяжение всего курса мы будем использовать такие законы:</p>
<div style="--table-min-width:calc(50rem * var(--mantine-scale));--sa-corner-width:0px;--sa-corner-height:0px" class="m_a100c15 mantine-TableScrollContainer-scrollContainer m_d57069b5 mantine-ScrollArea-root"><div style="overflow-x:hidden;overflow-y:hidden" class="m_c0783ff9 mantine-ScrollArea-viewport" data-offset-scrollbars="x" data-scrollbars="xy"><div class="m_b1336c6 mantine-ScrollArea-content"><div class="m_62259741 mantine-TableScrollContainer-scrollContainerInner"><table><thead><tr><th>Эквивалентность</th><th>Закон</th><th>То же, что равенство в булевой алгебре</th></tr></thead><tbody><tr><td>a∧T≡aa∧T≡a a∨F≡aa∨F≡a</td><td>Законы тождества</td><td>Высказывание с определенным значением (истина или ложь) сохраняет свою первоначальную форму</td></tr><tr><td>a∨T≡Ta∨T≡T a∧F≡Fa∧F≡F</td><td>Законы доминирования</td><td>∧∧: Если в выражении первое И ложно, то все выражение И будет ложным ∨∨: Если в выражении первое ИЛИ истинно, то все выражение ИЛИ будет истинным</td></tr><tr><td>a∨a≡aa∨a≡a a∧a≡aa∧a≡a</td><td>Законы тавтологии</td><td>Высказывание принимает только истинные значения в любом случае</td></tr><tr><td>¬((¬a)≡aa)≡a</td><td>Закон двойного отрицания</td><td>Два отрицания эквивалентны отсутствию отрицания</td></tr><tr><td>a∨q≡q∨aa∨q≡q∨a a∧q≡q∧aa∧q≡q∧a</td><td>Законы коммутативности</td><td>Результат операции над двумя высказываниями не зависит от того, в каком порядке берутся эти высказывания</td></tr></tbody></table></div></div></div></div>
<p>Применим некоторые из этих законов на практике.</p>
<p>Возьмем для примера составное предложение:</p>
<div style="margin-bottom:var(--mantine-spacing-lg)" class="m_e597c321 mantine-CodeHighlight-codeHighlight" dir="ltr"><div class="m_be7e9c9c mantine-CodeHighlight-controls"><button style="--ai-bg:transparent;--ai-hover:transparent;--ai-color:inherit;--ai-bd:none" class="mantine-focus-auto mantine-active m_d498bab7 mantine-CodeHighlight-control m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="none" type="button" aria-label="Copy code"><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z"></path><path d="M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2"></path></svg></span></button></div><div style="--scrollarea-scrollbar-size:calc(0.25rem * var(--mantine-scale));--sa-corner-width:0px;--sa-corner-height:0px" class="m_f744fd40 mantine-CodeHighlight-scrollarea m_d57069b5 mantine-ScrollArea-root" dir="ltr"><div style="overflow-x:hidden;overflow-y:hidden;overscroll-behavior-inline:none" class="m_c0783ff9 mantine-ScrollArea-viewport" data-scrollbars="xy"><div class="m_b1336c6 mantine-ScrollArea-content"><pre class="m_2c47c4fd mantine-CodeHighlight-pre" style="padding:0"><code class="m_5caae6d3 mantine-CodeHighlight-code">Я обедаю в ресторане и иду на танцы</code></pre></div></div></div><button class="mantine-focus-auto m_c9378bc2 mantine-CodeHighlight-showCodeButton m_87cf2631 mantine-UnstyledButton-root" data-hidden="true" type="button">Expand code</button></div>
<p>Используем <strong>законы де Моргана</strong> — они связывают с помощью отрицания конъюнкцию и дизъюнкцию. Можно выразить отрицание так:</p>
<div style="margin-bottom:var(--mantine-spacing-lg)" class="m_e597c321 mantine-CodeHighlight-codeHighlight" dir="ltr"><div class="m_be7e9c9c mantine-CodeHighlight-controls"><button style="--ai-bg:transparent;--ai-hover:transparent;--ai-color:inherit;--ai-bd:none" class="mantine-focus-auto mantine-active m_d498bab7 mantine-CodeHighlight-control m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="none" type="button" aria-label="Copy code"><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z"></path><path d="M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2"></path></svg></span></button></div><div style="--scrollarea-scrollbar-size:calc(0.25rem * var(--mantine-scale));--sa-corner-width:0px;--sa-corner-height:0px" class="m_f744fd40 mantine-CodeHighlight-scrollarea m_d57069b5 mantine-ScrollArea-root" dir="ltr"><div style="overflow-x:hidden;overflow-y:hidden;overscroll-behavior-inline:none" class="m_c0783ff9 mantine-ScrollArea-viewport" data-scrollbars="xy"><div class="m_b1336c6 mantine-ScrollArea-content"><pre class="m_2c47c4fd mantine-CodeHighlight-pre" style="padding:0"><code class="m_5caae6d3 mantine-CodeHighlight-code">Я не буду есть в ресторане или не пойду танцевать</code></pre></div></div></div><button class="mantine-focus-auto m_c9378bc2 mantine-CodeHighlight-showCodeButton m_87cf2631 mantine-UnstyledButton-root" data-hidden="true" type="button">Expand code</button></div>
<p>Обратите внимание, что мы отрицаем оба простых предложения и заменили «и» на «или».</p>
<p>В качестве еще одного примера рассмотрим следующее утверждение:</p>
<div style="margin-bottom:var(--mantine-spacing-lg)" class="m_e597c321 mantine-CodeHighlight-codeHighlight" dir="ltr"><div class="m_be7e9c9c mantine-CodeHighlight-controls"><button style="--ai-bg:transparent;--ai-hover:transparent;--ai-color:inherit;--ai-bd:none" class="mantine-focus-auto mantine-active m_d498bab7 mantine-CodeHighlight-control m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="none" type="button" aria-label="Copy code"><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z"></path><path d="M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2"></path></svg></span></button></div><div style="--scrollarea-scrollbar-size:calc(0.25rem * var(--mantine-scale));--sa-corner-width:0px;--sa-corner-height:0px" class="m_f744fd40 mantine-CodeHighlight-scrollarea m_d57069b5 mantine-ScrollArea-root" dir="ltr"><div style="overflow-x:hidden;overflow-y:hidden;overscroll-behavior-inline:none" class="m_c0783ff9 mantine-ScrollArea-viewport" data-scrollbars="xy"><div class="m_b1336c6 mantine-ScrollArea-content"><pre class="m_2c47c4fd mantine-CodeHighlight-pre" style="padding:0"><code class="m_5caae6d3 mantine-CodeHighlight-code">Неверно, что Глеб — доктор, а Вася — инженер</code></pre></div></div></div><button class="mantine-focus-auto m_c9378bc2 mantine-CodeHighlight-showCodeButton m_87cf2631 mantine-UnstyledButton-root" data-hidden="true" type="button">Expand code</button></div>
<p>Это переводится на математический язык как:</p>
<div style="margin-bottom:var(--mantine-spacing-lg)" class="m_e597c321 mantine-CodeHighlight-codeHighlight" dir="ltr"><div class="m_be7e9c9c mantine-CodeHighlight-controls"><button style="--ai-bg:transparent;--ai-hover:transparent;--ai-color:inherit;--ai-bd:none" class="mantine-focus-auto mantine-active m_d498bab7 mantine-CodeHighlight-control m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="none" type="button" aria-label="Copy code"><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z"></path><path d="M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2"></path></svg></span></button></div><div style="--scrollarea-scrollbar-size:calc(0.25rem * var(--mantine-scale));--sa-corner-width:0px;--sa-corner-height:0px" class="m_f744fd40 mantine-CodeHighlight-scrollarea m_d57069b5 mantine-ScrollArea-root" dir="ltr"><div style="overflow-x:hidden;overflow-y:hidden;overscroll-behavior-inline:none" class="m_c0783ff9 mantine-ScrollArea-viewport" data-scrollbars="xy"><div class="m_b1336c6 mantine-ScrollArea-content"><pre class="m_2c47c4fd mantine-CodeHighlight-pre" style="padding:0"><code class="m_5caae6d3 mantine-CodeHighlight-code">¬(доктор ∧ инженер)</code></pre></div></div></div><button class="mantine-focus-auto m_c9378bc2 mantine-CodeHighlight-showCodeButton m_87cf2631 mantine-UnstyledButton-root" data-hidden="true" type="button">Expand code</button></div>
<p>Пусть:</p>
<ul>
<li><code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">доктор</code> — означает "Глеб — доктор"</li>
<li><code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">инженер</code> — означает "Вася — инженер"</li>
</ul>
<p>Эквивалентная форма по закону де Моргана:</p>
<div style="margin-bottom:var(--mantine-spacing-lg)" class="m_e597c321 mantine-CodeHighlight-codeHighlight" dir="ltr"><div class="m_be7e9c9c mantine-CodeHighlight-controls"><button style="--ai-bg:transparent;--ai-hover:transparent;--ai-color:inherit;--ai-bd:none" class="mantine-focus-auto mantine-active m_d498bab7 mantine-CodeHighlight-control m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="none" type="button" aria-label="Copy code"><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"></path><path d="M8 8m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z"></path><path d="M16 8v-2a2 2 0 0 0 -2 -2h-8a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h2"></path></svg></span></button></div><div style="--scrollarea-scrollbar-size:calc(0.25rem * var(--mantine-scale));--sa-corner-width:0px;--sa-corner-height:0px" class="m_f744fd40 mantine-CodeHighlight-scrollarea m_d57069b5 mantine-ScrollArea-root" dir="ltr"><div style="overflow-x:hidden;overflow-y:hidden;overscroll-behavior-inline:none" class="m_c0783ff9 mantine-ScrollArea-viewport" data-scrollbars="xy"><div class="m_b1336c6 mantine-ScrollArea-content"><pre class="m_2c47c4fd mantine-CodeHighlight-pre" style="padding:0"><code class="m_5caae6d3 mantine-CodeHighlight-code">¬(доктор ∧ инженер) ≡ ¬доктор ∨ ¬инженер</code></pre></div></div></div><button class="mantine-focus-auto m_c9378bc2 mantine-CodeHighlight-showCodeButton m_87cf2631 mantine-UnstyledButton-root" data-hidden="true" type="button">Expand code</button></div>
<p>Следовательно, мы можем сказать, что: <em>Либо Глеб — не доктор, либо Вася — не инженер (или оба сразу)</em>.</p>
<p>Приведенные выше примеры можно легко решить с помощью таблицы истинности. Но это можно сделать только для предложения с небольшим числом переменных — здесь их всего две.</p>
<p>Чем больше переменных, тем менее практично использовать метод таблицы истинности. Для пропозиции с 20 переменными необходимо оценить (2^20) строк в таблице истинности. Человеку будет сложно справиться с такой задачей, но можно упростить процесс и воспользоваться компьютером.</p>
<p>Но если переменных будет больше 1000, вычисление на компьютере будет очень долгим.</p>
<p>А еще бывают случаи, когда можно не строить таблицу истинности — вместо этого можно указать причину, по которой два высказывания логически эквивалентны. При этом мы преобразуем левую часть высказывания, чтобы она соответствовала правой части, и приводим причины каждого преобразования. Как в примере выше:</p>
<ul>
<li>Высказывание: Если <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">n</code> четное, то <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">n/2</code> — целое число</li>
<li>И его эквивалент: Если <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">n/2</code> не целое число, то <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">n</code> не четное</li>
<li>При этом преобразование справедливо для любого <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">n</code></li>
</ul>
<p>Эти логические доказательства могут показаться сложными на первых порах. Эта тема станет понятнее, когда мы обсудим ее подробнее в следующих уроках.</p></div><div style="margin-block:var(--mantine-spacing-xl)" class=""><h2 style="--title-fw:var(--mantine-h2-font-weight);--title-lh:var(--mantine-h2-line-height);--title-fz:var(--mantine-h2-font-size);margin-bottom:var(--mantine-spacing-md)" class="m_8a5d1357 mantine-Title-root" data-order="2">Рекомендуемые программы</h2><style data-mantine-styles="inline">.__m__-_R_2mremqrdub_{--carousel-slide-gap:var(--mantine-spacing-xs);--carousel-slide-size:70%;}@media(min-width: 36em){.__m__-_R_2mremqrdub_{--carousel-slide-gap:var(--mantine-spacing-xl);--carousel-slide-size:50%;}}</style><div style="--carousel-control-size:calc(2.5rem * var(--mantine-scale));--carousel-controls-offset:var(--mantine-spacing-sm);margin-bottom:var(--mantine-spacing-lg);padding-block:var(--mantine-spacing-sm);background:var(--app-color-surface)" class="m_17884d0f mantine-Carousel-root responsiveClassName" data-orientation="horizontal" data-include-gap-in-size="true"><div class="m_39bc3463 mantine-Carousel-controls" data-orientation="horizontal"><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="previous" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button><button class="mantine-focus-auto m_64f58e10 mantine-Carousel-control m_87cf2631 mantine-UnstyledButton-root" type="button" data-inactive="true" data-type="next" tabindex="-1"><svg viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(-90deg);width:calc(1rem * var(--mantine-scale));height:calc(1rem * var(--mantine-scale));display:block"><path d="M3.13523 6.15803C3.3241 5.95657 3.64052 5.94637 3.84197 6.13523L7.5 9.56464L11.158 6.13523C11.3595 5.94637 11.6759 5.95657 11.8648 6.15803C12.0536 6.35949 12.0434 6.67591 11.842 6.86477L7.84197 10.6148C7.64964 10.7951 7.35036 10.7951 7.15803 10.6148L3.15803 6.86477C2.95657 6.67591 2.94637 6.35949 3.13523 6.15803Z" fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"></path></svg></button></div><div class="m_a2dae653 mantine-Carousel-viewport" data-type="media"><div class="m_fcd81474 mantine-Carousel-container __m__-_R_2mremqrdub_" data-orientation="horizontal"><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/programs/discrete-mathematics?promo_name=programs_list&promo_position=course&promo_creative=catalog_card&promo_type=card" target="_blank"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><div style="--group-gap:calc(0.25rem * var(--mantine-scale));--group-align:center;--group-justify:flex-start;--group-wrap:nowrap" class="m_4081bf90 mantine-Group-root"><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">1 месяц</span><span class="mantine-focus-auto m_b6d8b162 mantine-Text-root">·</span><span style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">С нуля</span></div><p style="margin-bottom:var(--mantine-spacing-sm);font-size:var(--mantine-font-size-h5);font-weight:bold" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Дискретная математика</p><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Дискретная математика для программистов</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzY2MSwicHVyIjoiYmxvYl9pZCJ9fQ==--e9c2b6bde361adaac625a7f47d8b9671c17f3ddb/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJ3ZWJwIiwicmVzaXplX3RvX2xpbWl0IjpbNDAwLDQwMF0sInNhdmVyIjp7InF1YWxpdHkiOjg1fX0sInB1ciI6InZhcmlhdGlvbiJ9fQ==--5b6f46dacd1af664f27558553a58076185091823/Mathematics-bro.png" alt="Дискретная математика" loading="eager"/></div><div style="--group-gap:var(--mantine-spacing-md);--group-align:end;--group-justify:space-between;--group-wrap:wrap;margin-top:var(--mantine-spacing-xs)" class="m_4081bf90 mantine-Group-root"><p style="font-size:var(--mantine-font-size-xl)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">от 3 900 ₽</p><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Посмотреть →</p></div></div></div></a></div></div><div class="m_d98df724 mantine-Carousel-slide" data-orientation="horizontal"><div tabindex="0" style="cursor:pointer;height:100%"><a style="text-decoration:none" class="mantine-focus-auto m_849cf0da m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses?promo_name=programs_list&promo_position=course&promo_creative=catalog_card&promo_type=card"><div style="height:100%" class="m_e615b15f mantine-Card-root m_1b7284a3 mantine-Paper-root" data-with-border="true"><h2 style="--title-fw:var(--mantine-h2-font-weight);--title-lh:var(--mantine-h2-line-height);--title-fz:var(--mantine-h2-font-size);margin-bottom:var(--mantine-spacing-md);font-size:var(--mantine-font-size-h3)" class="m_8a5d1357 mantine-Title-root" data-order="2" data-responsive="true">Каталог</h2><p style="margin-bottom:auto" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Полный список доступных курсов по разным направлениям</p><div style="margin-top:auto" class=""><div class="m_4451eb3a mantine-Center-root"><img style="opacity:0.8;width:70%" class="m_9e117634 mantine-Image-root mantine-visible-from-xs" src="/vite/assets/development-BVihs_d5.png" alt="Orientation"/></div></div></div></a></div></div></div></div></div></div></div></div></div><style data-mantine-styles="inline">.__m__-_R_1bdub_{--col-flex-grow:auto;--col-flex-basis:8.333333333333334%;--col-max-width:8.333333333333334%;}@media(min-width: 48em){.__m__-_R_1bdub_{--col-flex-grow:auto;--col-flex-basis:16.666666666666668%;--col-max-width:16.666666666666668%;}}</style><div style="min-width:0rem;height:100%;min-height:0rem" class="m_96bdd299 mantine-Grid-col __m__-_R_1bdub_"><div style="margin-inline:var(--mantine-spacing-xs)" class="mantine-visible-from-sm"><a style="--button-color:var(--mantine-color-white);margin-bottom:var(--mantine-spacing-lg);text-decoration:none" class="mantine-focus-auto m_849cf0da mantine-focus-auto m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses/logic/lessons/equivalences/finish_unit?unit=theory" data-disabled="true" data-block="true" disabled=""><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label"><span style="margin-inline-end:var(--mantine-spacing-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Дальше</span>→</span></span></a><a style="padding-inline:0rem" class="mantine-focus-auto m_f0824112 mantine-NavLink-root m_87cf2631 mantine-UnstyledButton-root"><span class="m_690090b5 mantine-NavLink-section" data-position="left"><div style="--ti-size:var(--ti-size-sm);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-list-numbers "><path d="M11 6h9"></path><path d="M11 12h9"></path><path d="M12 18h8"></path><path d="M4 16a2 2 0 1 1 4 0c0 .591 -.5 1 -1 1.5l-3 2.5h4"></path><path d="M6 10v-6l-2 2"></path></svg></div></span><div class="m_f07af9d2 mantine-NavLink-body"><span class="m_1f6ac4c4 mantine-NavLink-label">Навигация по теме</span><span class="m_57492dcc mantine-NavLink-description">Теория</span></div><span class="m_690090b5 mantine-NavLink-section" data-position="right"></span></a><div style="margin-block:var(--mantine-spacing-lg)" class="m_3eebeb36 mantine-Divider-root" data-orientation="horizontal" role="separator"></div><div style="margin-block:var(--mantine-spacing-lg)" class=""><div style="justify-content:space-between;margin-bottom:calc(0.1875rem * var(--mantine-scale));color:var(--mantine-color-dimmed);font-size:var(--mantine-font-size-xs)" class="m_8bffd616 mantine-Flex-root __m__-_R_qimrbdub_"><p style="font-size:var(--mantine-font-size-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Завершено</p><p style="font-size:var(--mantine-font-size-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">0 / 11</p></div><div style="--progress-size:var(--progress-size-sm)" class="m_db6d6462 mantine-Progress-root" data-size="sm"><div style="--progress-section-size:0%;--progress-section-color:var(--mantine-color-gray-filled)" class="m_2242eb65 mantine-Progress-section" role="progressbar" aria-valuemax="100" aria-valuemin="0" aria-valuenow="0" aria-valuetext="0%"></div></div></div><button style="padding-inline:0rem" class="mantine-focus-auto m_f0824112 mantine-NavLink-root m_87cf2631 mantine-UnstyledButton-root" type="button"><span class="m_690090b5 mantine-NavLink-section" data-position="left"><div style="--ti-size:var(--ti-size-sm);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-message "><path d="M8 9h8"></path><path d="M8 13h6"></path><path d="M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12"></path></svg></div></span><div class="m_f07af9d2 mantine-NavLink-body"><span class="m_1f6ac4c4 mantine-NavLink-label">Обсуждения (архив)</span><span class="m_57492dcc mantine-NavLink-description"></span></div></button><div style="--toc-bg:var(--mantine-color-blue-light);--toc-color:var(--mantine-color-blue-light-color);--toc-size:var(--mantine-font-size-sm);--toc-radius:var(--mantine-radius-sm);margin-top:var(--mantine-spacing-xl)" class="m_bcaa9990 mantine-TableOfContents-root" data-variant="light" data-size="sm"></div></div><div class="mantine-hidden-from-sm"><div style="--stack-gap:0rem;--stack-align:stretch;--stack-justify:flex-start" class="m_6d731127 mantine-Stack-root"><a style="--button-color:var(--mantine-color-white);margin-bottom:var(--mantine-spacing-xs);padding:0rem;text-decoration:none" class="mantine-focus-auto m_849cf0da mantine-focus-auto m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses/logic/lessons/equivalences/finish_unit?unit=theory" data-disabled="true" data-block="true" disabled=""><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label">→</span></span></a><button style="--ai-size:var(--ai-size-sm);--ai-bg:transparent;--ai-hover:var(--mantine-color-indigo-light-hover);--ai-color:var(--mantine-color-indigo-light-color);--ai-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;padding-block:var(--mantine-spacing-lg);color:inherit;width:100%" class="mantine-focus-auto m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="subtle" data-size="sm" data-disabled="true" type="button" disabled=""><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-list-numbers "><path d="M11 6h9"></path><path d="M11 12h9"></path><path d="M12 18h8"></path><path d="M4 16a2 2 0 1 1 4 0c0 .591 -.5 1 -1 1.5l-3 2.5h4"></path><path d="M6 10v-6l-2 2"></path></svg></span></button><button style="--ai-size:var(--ai-size-sm);--ai-bg:transparent;--ai-hover:var(--mantine-color-indigo-light-hover);--ai-color:var(--mantine-color-indigo-light-color);--ai-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;padding-block:var(--mantine-spacing-lg);color:inherit;width:100%" class="mantine-focus-auto mantine-active m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="subtle" data-size="sm" type="button"><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-message "><path d="M8 9h8"></path><path d="M8 13h6"></path><path d="M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12"></path></svg></span></button></div></div></div></div></div></div></div>
</main>
<footer class="bg-dark fw-light text-light px-3 py-5">
<div class="row small">
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 mb-3">Хекслет</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/about">О нас</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/testimonials">Отзывы</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://b2b.hexlet.io" role="button">Корпоративное обучение</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/blog">Блог</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/qna">Вопросы и ответы</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/glossary">Глоссарий</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://help.hexlet.io" data-target="_blank" role="button">Справка</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" target="_blank" rel="noopener noreferrer" href="/map">Карта сайта</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 fw-normal mb-3">Направления</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_devops">DevOps
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_data_analytics">Аналитика
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_backend_development">Бэкенд
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_programming">Программирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_testing">Тестирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_front_end_dev">Фронтенд
</a></li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Профессии</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/go">Go-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/java">Java-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python">Python-разработчик </a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/data-analytics">Аналитик данных</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/qa-engineer">Инженер по ручному тестированию</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php">РНР-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/frontend">Фронтенд-разработчик</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Навыки</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python-django-developer">Django</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/docker">Docker</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php-laravel-developer">Laravel</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/postman">Postman</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-react-developer">React</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-rest-api">REST API в Node.js</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/spring-boot">Spring Boot</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/typescript">Typescript</a>
</li>
</ul>
</div>
</div>
<hr>
<div class="row">
<div class="col-12 col-sm-4 col-md-2">
<div class="fs-4">
<ul class="list-unstyled d-flex">
<li class="me-3">
<a aria-label="Telegram" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://t.me/hexlet_ru"><span class="bi bi-telegram"></span>
</a></li>
<li>
<a aria-label="Youtube" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://www.youtube.com/user/HexletUniversity"><span class="bi bi-youtube"></span>
</a></li>
</ul>
</div>
<div class="mb-2 d-flex flex-column">
<a class="link-light text-decoration-none" rel="nofollow" href="mailto:support@hexlet.io">support@hexlet.io</a>
<a class="link-light text-decoration-none py-2" target="_blank" href="https://t.me/hexlet_help_bot">t.me/hexlet_help_bot</a>
</div>
<ul class="list-unstyled d-flex">
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://hexlet.io/locale/switch?new_locale=en" data-target="_self" role="button"><span class="my-auto">EN</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 opacity-100 external-link" rel="nofollow" data-href="https://ru.hexlet.io/locale/switch?new_locale=ru" data-target="_self" role="button"><span class="my-auto">RU</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://kz.hexlet.io/locale/switch?new_locale=kz" data-target="_self" role="button"><span class="my-auto">KZ</span>
</span></li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<ul class="list-unstyled fs-4">
<li class="mb-3">
<a class="link-light text-decoration-none" href="tel:8%20800%20100%2022%2047">8 800 100 22 47</a>
<span class="d-block opacity-50 small">бесплатно по РФ</span>
</li>
<li>
<a class="link-light text-decoration-none" href="tel:%2B7%20495%20085%2021%2062">+7 495 085 21 62</a>
<span class="d-block opacity-50 small">бесплатно по Москве</span>
</li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<div class="small mb-3">Образовательные услуги оказываются на основании Л035-01298-77/01989008 от 14.03.2025</div>
<ul class="list-unstyled small">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/legal">Правовая информация</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/offer">Оферта</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/license">Лицензия</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/contacts">Контакты</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-12 col-md-4 small">
<div class="mb-2">
<div>ООО «<a href="/" class="text-decoration-none link-light">Хекслет Рус</a>»</div>
<div>108813 г. Москва, вн.тер.г. поселение Московский,</div>
<div>г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3</div>
<div>ОГРН 1217300010476</div>
<div>ИНН 7325174845</div>
</div>
<hr>
<div>АНО ДПО «<a href="/" class="text-decoration-none link-light">Учебный центр «Хекслет</a>»</div>
<div>119331 г. Москва, вн. тер. г. муниципальный округ</div>
<div>Ломоносовский, пр-кт Вернадского, д. 29</div>
<div>ОГРН 1247700712390</div>
<div>ИНН 7736364948</div>
</div>
</div>
</footer>
<div id="root-assistant-offcanvas"></div>
<script src="/vite/assets/assistant-Bukl1lYy.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-BrRXra1y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/MarkdownBlock-DbyKWoR_.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/shiki-V011pkdv.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-XR8Qr8kR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dist-GCHh59xr.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useIsomorphicEffect-HJ6VK0D3.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-KSp6QbZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/classnames-l6ipYlLR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/debounce-jMQ_Cf4f.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v67327c56f0bb4ef8b305cae61679db8f1769101564043" integrity="sha512-rdcWY47ByXd76cbCFzznIcEaCN71jqkWBBqlwhF1SY7KubdLKZiEGeP7AyieKZlGP9hbY/MhGrwXzJC/HulNyg==" data-cf-beacon='{"version":"2024.11.0","token":"d11015b65d11429ea6b4a2ef37dd7e0b","server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>