სამმნიშვნელობიანი ლოგიკა

**სამმნიშვნელობიანი ლოგიკა** (ასევე **სამობითი ლოგიკა**, **ტერნარული ლოგიკა**) — მრავალმნიშვნელობიან ლოგიკებს შორის ერთ-ერთი, რომელიც გამოსახავს ჭეშმარიტების სამ მნიშვნელობას — ჭეშმარიტი, მცდარი, დაუდგენელი. სამობითი ლოგიკა არის ორობითი, იგივე ბულის ლოგიკის უმარტივესი განვითარება. ისტორიულად იგი მრავალმნიშვნელობიან ლოგიკათა ოჯახის პირველი წარმომადგენელია. მისი კონცეფცია და საწყისი იდეები წამოყენებულ იქნა იან ლუკასიევიჩის და კლარენს ლევისის მიერ 1920 წელს. აქსიომატური ალგებრული ფორმით ფორმულირება გრიგორე მოისილმა მოახდინა, მანვე სამობითი ლოგიკა გააფართოვა *n*-მნიშვნელობიან ლოგიკამდე 1945 წელს.
## მნიშვნელობათა წარმოდგენა 
ორმნიშვნელობიანი (ბინარული) ლოგიკის მსგავსად, ტერნარულ ლოგიკაშიც ჭეშმარიტება რიცხვობრივად შეიძლება წარმოდგენილ იქნას ათვლის სამობითი სისტემის სხვადასხვა ფორმით. მაგალითად:
* დაბალანსებულ ტერნარულ ლოგიკაში, თითოეული ციფრს შეიძლება სამი მნიშვნელობიდან ერთ-ერთი: -1, 0 ან +1; ეს მნიშვნელობები შეიძლება გამარტივდეს: -, 0, + შესაბამისად.
* ნამატ ორობით წარმოდგენაში, თითოეულ ციფრს შეიძლება ჰქონდეს მნიშვნელობა -1, 0, 0/1 (0/1-ის მნიშვნელობას აქვს ორი განსხვავებული წარმოდგენა).
* სამობით ათვლით სისტემაში, თითიეული ციფრი არის ტრიტი (სამობითი ციფრი), რომელსაც აქვს მნიშვნელობები: 0, 1 ან 2;
* ირიბი ორობითი ათვლის სისტემაში, მხოლოდ ყველაზე მნიშვნელოვან არანულოვან ციფრს აქვს 2-ის მნიშვნელობა, დანარჩენ ციფრებს აქვთ 0 ან 1-ის ტოლი;
* 1 — ჭეშმარიტი, 2 — მცდარი, 0 — უცნობი, შეუცნობელი/გადაუწყვეტელი, უმნიშვნელო ან ორივე.
* 0 — მცდარი, 1 — ჭეშმარიტი, მესამე არამთელრიცხვა „შესაძლოა“ სიმბოლო ?, # ან xy

ტერნარულ კომპიუტერში, ტერნარული მნიშვნელობები წარმოდგენილია ტერნარული სიგნალებით. 

ძირითადად ამ სტატიაში აღწერილია ტერნარული პრეპოზიციური ლოგიკა ჭეშმარიტების მნიშვნელობების გამოყენებით (სიცრუე, უცნობი, ჭეშმარიტი), რაც აფართოებს ორობითი ლოგიკის კავშირებს სამობითის კონტექსტში. არსებობს პრედიკატების სამობითი ლოგიკაც; მათ შეიძლება ჰქონდეთ კვანტიფიკატორების განმარტებაც, რომელიც განსხვავებულია კლასიკური ბინარული პრედიკატული ლოგიკისგან და შეიძლება აერთიანებდეს სხვა ალტერნატიულ კვანტიფიკატორებსაც.

## ლოგიკა 
ორობით (ბულის) ლოგიკაში არსებობს 22 უნარული ოპერატორი. მას შემდეგ რაც ბულის ორობით ლოგიკას ემატება მესამე მნიშვნელობა, ოპერატორების რიცხვი იზრდება 33= 27 სხვადასხვა ოპერატორამდე ერთ შესასვლელზე. მსგავსად ამისა, იქ, სადაც ორობითი ლოგიკისას აქვს 222 = 16 სხვადასხვა ორობითი ოპერატორი (ოპერატორი ორი შესასვლელით), ტერნარულ ლოგიკას აქვს 332 = 19,683 ასეთი ოპერატორი. ორობით ლოგიკაში მარტივად შეიძლება დავასახელოდ ბულის ალგებრის ოპერატორების უმრავლესობა (არა, და, ან, და-არა, ან-არა (პირსის ისარი), ან-ის გამომრიცხავი XOR, ან-არას გამომრიცხავი XNOR, გამომდინარეობა (იმპლიკაცია)); ტერნარული ლოგიკის ყველა ოპერატორის ჩამოთვლის მცდელობა არაა გონივრული, გარდა მათი მცირე ნაწილისა.

### კლეინის და პრისტის ლოგიკა 
ქვემოთ მოცემულია კლეინის „განუსაზღვრელობის ძლიერი ლოგიკის“ და პრისტის „პარადოქსის ლოგიკის“ ლოგიკური ოპერაციების ჭეშმარიტების ცხრილები.

|

|

|}

|

|

|}

ამ ჭეშმარიტების ცხრილებში, კლეინის ლოგიკით „უცნობი“ შეიძლება განიმარტოს როგორც ისეთი მდგომარეობა, რომელიც არც „მცდარია“ და არც „ჭეშმარიტი“, პრისტის ლოგიკით კი, „უცნობს“ შეესაბამება ერთდროულად ორი მდგომარეობა — ჭეშმარიტი და მცდარი. კლეინის ლოგიკით, ჭეშმარიტება შეიძლება იყოს მხოლოდ ერთი მნიშვნელობის — „ჭეშმარიტი“ (T), პრისტის შემთხვევაში ჭეშმარიტია როგორც T, ასევე U (უცნობი). კლეინის ლოგიკაში, შეუძლებელია დროის მოცემულ მომენტში განისაზღვროს „უცნობ“ მდგომარეობაში მყოფი ოპერანდი სინამდვილეში „ჭეშმარიტია“ თუ „მცდარი“. მიუხედავად ამისა, ზოგიერთ ლოგიკურ ოპარაციაში შესაძლებელია ცალსახა პასუხის მიღება, მათში თუნდაც ერთი „უცნობი“ მნიშვნელობის ოპერანდის მონაწილეობის მიუხედავად. მაგალითად, ვინაიდან „ან“-ოპერაციის შემთხვევაში T \lor F = T, სადაც T - ჭეშმარიტია, ხოლო F მცდარი, მაშინ თუ მცდარს ჩანავანაცვლებთ უცნობით, ამ შემთხვევაშიც ჭეშმარიტებას მივიღებთ, ანუ T \lor U = T. 

ისეთ შემთხვევაში, თუ რიცხვობრივი მნიშვნელობა ენიჭება ჭეშმარიტს, უცნობს და მცდარს იმგვარად, რომ მცდარი ნაკლებია უცნობზე, ხოლო უცნობი ნაკლებია ჭეშმარიტზე, მაშინ,
: A \land B \land C, ... = MIN(A, B, C, ...) და A \lor B \lor C, ... = MAX(A, B, C, ...)

კლეინის და პრისტის ლოგიკაში იმპლიკაციის ოპერაცია განისაზღვრება ორობითი ლოგიკის ფორმულის ანალოგით:
:  A \rightarrow B \ \overset{\underset{\mathrm{def}}{}}{=} \bar{A} \lor B

მისი ჭეშმარიტების ცხრილი გამოიყურება შემდეგნაირად:

|

|}
ეს განსაზრვრება განსხვავდება ლუკასიევიჩის ლოგიკის განსაზღრებისგან, რომელიც აღწერილია ქვემოთ. 
კლეინის ლოგიკა არ შეიცავს ტავტოლოგიებს (ნამდვილი ფორმულა), ვინაიდან ყოველთვის, როდესაც სწორად განსაზღვრული ფორმულის ყველა კომპონენტს ენიჭება „უცნობის“ მნიშვნელობა, თავად ფორმულასაც უნდა ჰქონდეს „უცნობი“ მნიშვნელობა. კლეინის ლოგიკისთვის ჭეშმარიტების ერთდადერთი განსაზღრული მნიშვნელობა არის „ჭეშმარიტი“. თუმცა, ნამდვილი ფორმულების არ არსებობა არ ნიშნავს რომ იგი ნამდვილ არგუმენტებს და დასკვნების კანონებს მოკლებულია. კლეინის ლოგიკაში, არგუმენტი სემანტიკურად ნამდვილია (ნებისმიერი ინტერპრეტაციისთვის/მოდელისთვის) თუ  ყოველთვის როდესაც წინაპირობა ჭეშმარიტია, დასკვნაც უნდა იყოს ჭეშმარიტი. აღსანიშნავია, რომ პარადოქსის და კლეინის ლოგიკებს ერთი და იგივე ჭეშმარიტების ცხრილი აქვთ, თუმცა პარადოქსის ლოგიკას აქვს ჭეშმარიტების ორი განსაზღვრება ერთის მაგივრად: ჭეშმარიტი და ორივე („უცნობის“ ანალოგი), შესაბამისად, პარადოქსის ლოგიკას გააჩნია ტავტოლოგიების, თუმცა მას ნაკლები ნამდვილი დასკვნის კანონი აქვს.

### ლუკასიევიჩის ლოგიკა 
ლუკასიევიჩის Ł3 ლოგიკას „და“, „ან“ და „არა“ ოპერაციებისთვის იგივე ჭეშმარიტების ცხრილები გააჩნია რაც ზემოთ მოცემულ კლეინის ლოგიკას, თუმცა განსხვავდება იმპლიკაციიის განსაზღვრებაში: „უცნობის იმპლიკაცია უცნობთან“ ჭეშმარიტია.

ლუკასიევვიჩის ლოგიკისთვის ჭეშმარიტების ცხრილი გამოიყურება შემდეგნაირად:

|

|}

ფაქტობრივად, ლუკასიევიჩის უარყოფის და იმპლიკაციის გამოყენებით შესაძლებელია სხვა ბმების წარმოებაც, შემდეგნაირად:
* A \lor B = (A \rightarrow B) \rightarrow B
* A \land B = \neg (\neg A \lor \neg B)
* A \Leftrightarrow B = (A \rightarrow B) \land (B \rightarrow A)

აგრეთვე, შესაძლებელია რამდენიმე სხვა სასარგებლო უნარული ოპერატორების წარმოებაც (პირველად წარმოებულ იქნა ალფრედ ტარსკის მიერ 1921 წელს):

* \textbf M A = \neg A \rightarrow A
* \textbf L A = \neg \textbf M \neg A
* \textbf I A = \textbf M A \land \neg \textbf L A

მათ შეესაბამებათ ჭეშმარიტების შემდეგი ცხრილები:

|

|

|}
სადაც M იკითხება როგორც „არ არის მცდარი, რომ...“ ან ტარსკი-ლუკასიევიჩის მიერ მოდალური ლოგიკის სამობითი ლოგიკით აქსიოატიზების (წარუმატებელი) მცდელობის მიხედვით, „შესაძლოა, რომ...“; L იკითხება როგორც „ჭეშმარიტია, რომ...“ ან „აუცილებელია, რომ...“; ხოლო I იკითხება როგორც „უცნობია, რომ...“ ან „დამოკიდებულია იმაზე, რომ...“.

ლუკასიევიჩის Ł3-ში განსაზღრული მნიშვნელობა არის „ჭეშმარიტი“, რაც ნიშნავს, რომ მხოლოდ პრეპოზიციას, რომლესაც ყველაგან აქვს ეს მნიშვნელობა, ითვლება ტავტოლოგიად. მაგალითისთვის, A \rightarrow A და A \leftrightarrow A ტავტოლოგიებია როგორც Ł3-ში, ისევე კლასიკურ ლოგიკაში. კლასიკური ლოგიკის ყველა ტავტოლოგია როდი წვდება Ł3-ს იმ სახით „როგორც არის“. მაგალითისთვის, გამორიცხული მესამეს კანონი, A \lor A, და არაწინააღმდეგობრივობის კანონი, \neg(A \land \neg A) ლუკასიევიჩის ლოგიკაში ტავტოლოგიები არ არიან. თუმცა, ზემოთ აღწერილი \textbf I ოპერატორის გამოყენებით შესაძლებელია გამოჩხადდეს მათი ანალოგი ტავტოლოგიები:

* A \lor \textbf I A \lor \neg A (გამორიცხული მეოთხეს კანონი);
* \neg (A \land \neg \textbf I A \land \neg A) (გაფართოებული წინააღმდეგობრივობის პრინციპი)

### ბოჩვარის ლოგიკა 
### პოსტის ტერნარული ლოგიკა 
* \neg A = (A+1) \mod 3, ან
* \neg A = (A+1) \mod (n), სადაც (n) ლოგიკის მნიშვნელობაა

### მოდულური ალგებრა 
ბოლო დროს წარმოდგენილი ზოგიერთი 3VL მოდულური ალგებრა უფრო წრედის პრობლემებით არის ნაკარნახები, ვიდრე ფილოსოფიურით:
* კონის ალგებრა
* პრადხანის ალგებრა
* დუბროვა-მუციოს ალგებრა

## პროგრამები 
მონაცემთა ბაზების სტრუქტურირებული მოთხოვნების ენაში SQL რეალიზებულია სამმნიშვნელობიანი ლოგიკა როგორც NULL მნიშვნელობის ველების შედარების დასამუშავებლად. მონაცემთა ბაზებში NULL მნიშვნელობის დანერგვის საწყის იდეა იყო ისეთი ისეთი ველების წარმოდგენა რომლებშიც მონაცემები არ იყო, ე.ი. დაიშვებოდა, რომ მონაცემები არსებობს, თუმცა ამ დროისთვის ბაზაში ჩაწერილი არ არის. SQL იყენებს კლეინის ტერნარული ლოგიკის ფრაგმენტს, რომელიც შეზღუდულია „და“, „ან“ და „არა“ ცხრილებით.

SQL-ში მიღებულია რომ შუალედურ მნიშვნელობას დაერქვას „უცნობი“. შედარება NULL-თან, მათ შორის სხვა NULL-ელის შედარება მასთან, აბრუნებს „უცნობს“, ვინაიდან NULL-ის მნიშვნელობა უცნობია. NULL არ არის NULL-ის ტოლი. მიუხედავად ამისა, ზოგიერთ ოპერაციაში ეს პრინციპი არ მუშაობს და NULL მუშავდება როგორც NULL-ის ტოლი, მაგალითად `UNION` ან `INTERSECT` ოპერაციებში. კრიტიკოსების აზრით, ეს შეუსაბამობა SQL-ს NULL-ების დამუშავების ინტუიტიურ სემანტიკას აკარგვინებს. SQL-ის სტანდარტში გათვალისწინებულია ნებაყოფლობითი შესაძლებლობა სახელწოდებით F571, რომელიც ამატებს რამდენიმე უნარულ ოპერატორს. მათ შორისაა `IS UNKNOWN`. იგი შეესაბამება ლუკასიევიჩის  \textbf I-ს, რომელიც აღერილია მოცემულ სტატიაში, ზემოთ. დანარჩენი სამობითი ლოგიკის ოპერატორებთან ერთად `IS UNKNOWN` ოპერატორის დამატებით, SQL-ის სამობითმა ლოგიკამ ფუნქციონალურად დასრულებული სახე მიიღო, რამეთუ, მისი ოპერატორებით (კომბინაციაში) შესაძლებელი გახდა ნებისმიერი სამმნიშვნელობიანი ლოგიკური ფუნქციის გამოსახვა.
## აგრეთვე იხილეთ 
* ოთხმნიშვნელობიანი ლოგიკა
* ბულის ფუნქცია
* ბულის ალგებრა
* სეტუნი
* SQL

## ლიტერატურა 
* Bergmann, Merrie (2008). An Introduction to Many-Valued and Fuzzy Logic: Semantics, Algebras, and Derivation Systems. Cambridge University Press. . Chapters 5-9.
* Mundici, D. The C*-Algebras of Three-Valued Logic. Logic Colloquium ’88, Proceedings of the Colloquium held in Padova 61–77 (1989).
* Reichenbach, Hans (1944). Philosophic Foundations of Quantum Mechanics. University of California Press. Dover 1998: 

## სქოლიო 
კატეგორია: სამობითი ლოგიკა
კატეგორია: სამობითი კომპიუტერები
კატეგორია: მათემატიკური ლოგიკა
კატეგორია: მრავალმნიშვნელობიანი ლოგიკა