Неформално въведение във формалната многозначна логика
Веднъж зададох един въпрос на празен хуманист, който вярва, че „Google знае всичко“: „Програмистите често използват тризначна логика. Къде точно?" Мисля, че все още се гугли. Но всичко не е толкова трудно. На първо място бих искал да отбележа, че значението на логиката няма нищо общо с концепцията за основата на бройната система, както понякога се смята. Какво е формална многозначна логика?
Съществуването на многозначни логики е открито преди около сто години от известния полски математик и философ Ян Лукасевич през 1910 г. Той показа, че всяка многозначна логика може да бъде конструирана или по табличен начин, или с помощта на система от аксиоми, и предложи методи за изучаване на многозначни логики.
Най-простата от многозначните логики е тризначната. Това е постоянен спътник и програмист, и ремонтник на цифрова техника, и на цялото ни ежедневие. Ще илюстрирам.
Това са само здрави двоични вериги, които имат високо-ниско ниво на напрежение, подчиняват се на двузначна логика. Веднага щом възникне неизправност, се появява неопределено състояние „евентуално“, образно казано, отскок. Нека го обозначим като i и ще получим следната система от стойности на логическите променливи: . Ясно е, че при наличието на отскок по принцип не може да се говори за никакви аритметични изчисления. Нито в двоичен, нито в троичен, нито в който и да е друг. Въпреки това, тази тризначна логика има право на живот и се подчинява на следните закони.
Дизюнкция (логическо ИЛИ): резултат=1, ако поне една променлива=1, резултат=i, ако всички променливи=0, с изключение на недефинираната.
Конюнкция (логическо И): резултат=0, ако поне една променлива=0, резултат=i, ако всички променливи=1 с изключение набезсрочен.
Отрицание (логическо НЕ): резултат=инвертиране, ако е дефинирана променлива, резултат=i, ако променлива=i.
В нашата тризначна логика правилото на Де Морган е изпълнено: отрицание на конюнкция = дизюнкция на отрицания и отрицание на дизюнкция = конюнкция на отрицания. Можете да видите сами. :) Също така, законът за изключеното излишно е изпълнен: резултатът не надхвърля значението на логиката за произволен брой променливи и за всяка схема на разсъждение. Законът за изключеното излишък се нарича още закон за пълнотата на състоянията. Както можете да видите, дадената тризначна логика се подчинява на доста строги закони.
В рамките на схема за разсъждение, съдържаща само операциите на дизюнкция и отрицание, в нашата тризначна логика е възможно да се класират стойностите по сила. Лесно се вижда, че i потиска 0, когато няма променлива със стойност 1, а 1 винаги потиска i. Следователно, в дизюнктивната схема (определяне на резултата с помощта на операциите ИЛИ и НЕ), стойностите могат да бъдат класирани по сила, като 0