در منطق، یک مجموعه کامل فانکشنال از رابط‌های منطقی یا عملگرهای بولین، مجموعه ای است که می‌توان با ترکیب اعضای مجموعه در یک عبارت بولین تمام جدول‌های درستی ممکن را به دست آورد. یک مجموعه معروف کامل از رابط‌ها {AND, NOT} است که شامل وَ و نقیض باینری می‌شود. هر کدام از مجموعه‌های تک عضوی {NAND} و {NOR} نیز کامل فانکشنال هستند.

یک گیت یا مجموعه ای از گیت‌ها که کامل هستند، گیت یا گیت‌های جهانی نیز نامیده می‌شوند.

یک مجموعه کامل از گیت‌ها، ممکن است به عنوان بخشی از محاسبه خود «بیت‌های زباله» را استفاده یا تولید کند که یا بخشی از ورودی نیستند یا بخشی از خروجی سیستم نیستند.

در چارچوب منطق گزاره ای، مجموعه‌های کامل رابط‌ها، **کافی (adequate)** نیز نامیده می‌شوند.

از نظر الکترونیک دیجیتال، تمامیت تابع به این معنی است که هر گیت منطقی می‌تواند به عنوان شبکه ای از گیت‌های مشخص شده توسط مجموعه ساخته شود. به‌طور خاص، همه گیت‌های منطقی را می‌توان فقط از گیت های NAND باینری، یا فقط از گیت‌های NOR باینری ساخت.

مقدمه
-----

متون مدرن منطق معمولاً زیرمجموعه ای از رابط‌ها را اولیه می‌دانند: وَ (\land )؛ یا (\lor )؛ نقیض (\neg )؛ شرطی ({\displaystyle \to })؛ و احتمالاً دوشرطی (\leftrightarrow ) در صورت تمایل می‌توان رابط‌های بیشتری را با تعریف آنها بر اساس این رابط‌های اولیه تعریف کرد. به عنوان مثال، NOR (گاهی نشان داده شده با {\displaystyle \downarrow } ، نقیض یا) را می‌توان به عنوان عطف دو نقیض بیان کرد:

{\displaystyle A\downarrow B:=\neg A\land \neg B}

به‌طور مشابه، نقیض وَ، NAND (گاهی نشان داده شده با {\displaystyle \uparrow })، می‌تواند بر اساس یا و نقیض تعریف شود. هر رابط باینری را می‌توان بر حسب {\displaystyle \{\neg ,\land ,\lor ,\to ,\leftrightarrow \}}، پس این یک مجموعهٔ کامل است.

با این حال، این مجموعه هنوز شامل بخشی زائد است: یک مجموعه کامل *مینیمال* نیست، چرا که دوشرطی و شرطی می‌تواند توسط رابط‌های دیگر تعریف شوند:

{\displaystyle {\begin{aligned}A\to B&:=\neg A\lor B\\A\leftrightarrow B&:=(A\to B)\land (B\to A).\end{aligned}}}

بنابراین مجموعهٔ کوچکتر {\displaystyle \{\neg ,\land ,\lor \}} نیز کامل است اما این مجموعه هنوز حداقل اندازه را ندارد. رابط \lor  می‌تواند به این شکل تعریف شود:

{\displaystyle A\lor B:=\neg (\neg A\land \neg B).}

به‌طور جایگزین، \land  ممکن است بر حسب \lor  به شکلی مشابه تعریف شود، یا \lor  ممکن است بر حسب {\displaystyle \rightarrow } تعریف شود:

{\displaystyle \ A\vee B:=\neg A\rightarrow B.}

هیچ ساده‌سازی بیشتر از این امکان‌پذیر نیست. پس، هر مجموعه دو عنصری از روابط شامل رابط \neg  و یک رابط از اعضای مجموعه {\displaystyle \{\land ,\lor ,\rightarrow \}}، یک زیر مجموعه کامل مینیمال از مجموعه ی{\displaystyle \{\neg ,\land ,\lor ,\to ,\leftrightarrow \}} می‌سازد.

تعریف رسمی
----------

با در نظر گرفتن دامنه بولین به صورت **B** = {۰٬۱}، مجموعه *F* از توابع بولین *ƒ* i: **B** *n i* → **B** **کامل به صورت فانکشنال** است اگر کلون تولید شده روی **B** توسط توابع اساسی *ƒi* برای همه اعداد صحیح اکیداً *مثبت*، شامل تمام توابع *ƒ:* **B** *n* → **B** شود. به عبارت دیگر، این مجموعه کامل فانکشنال است اگر هر تابع بولین که حداقل یک متغیر را می‌گیرد بتواند بر حسب توابع *ƒ* i نشان داده شود. از آنجا که هر تابع بولین شامل لااقل یک متغیر را می‌توان بر حسب توابع بولین باینری نشان داد، *F* کامل فانکشنال است اگر و فقط اگر هر تابع بولین باینری را بتوان برحسب توابع در *F* بیان کرد.

شرایطی طبیعی تر این خواهد بود که کلون تولید شده توسط *F*، برای تمام اعداد صحیح *n* ≥ ۰ از توابع *ƒ:* **B** *n* → **B** تشکیل شود. با این حال، مثالهای ذکر شده در بالا با این تعریف قوی تر کامل فانکشنال نیستند زیرا در صورتی که *F* خود دارای لااقل یک تابع nullary نباشد، نمی‌توان یک تابع nullary، یا به عبارت دیگر یک عبارت ثابت را بر حسب *F* نوشت. با در نظر گرفتن این تعریف قوی تر، کوچکترین مجموعه‌های کامل فانکشنال دارای ۲ عنصر هستند.

یک شرایط طبیعی دیگر این است که کلون تولید شده توسط *F* همراه با دو ثابت nullar کامل فانکشنال، یا در حالت معادل آن کامل فانکشنال به معنای قوی شرح داده شده در پاراگراف قبلی باشد. مثال تابع بولین مشخص شده توسط *S* (*x*، *y* , *z*) = *z* اگر *x* = *y* و *S* (*x*، *y* , *z*) = *x* در غیر این صورت نشان می‌دهد که این شرایط در مقایسه با تمامیت فانکشنال اکیداً ضعیف تر است.

ویژگی‌های تمامیت فانکشنال
-------------------------

امیل پست ثابت کرد که یک مجموعه از رابط‌های منطقی کامل است اگر و فقط اگر زیر مجموعه هیچ‌یک از مجموعه‌های تشکیل شده از رابط‌های زیر نباشد:

* رابط‌های یکنواخت، تغییر مقدار ارزش هر متغیرهای متصل از **F** به **T** بدون تغییر هیچ از **T** به **F** هرگز باعث نمی‌شود که این رابط‌ها مقدار خروجی خود را از **T** به **F** تغییر دهند، به عنوان مثال : {\displaystyle \vee ,\wedge ,\top ,\bot }
* رابط‌های آفین، به طوری که هر متغیر متصل یا همیشه یا هرگز بر ارزش خروجی این رابط‌ها تأثیری نمی‌گذارد، به عنوان مثال: {\displaystyle \neg ,\top ,\bot ,\leftrightarrow ,\nleftrightarrow }
* رابط‌های **خود دوگانه(self-dual)**، که برابر دمورگان دوئال خود هستند. اگر مقادیر ارزش همه متغیرها معکوس شود، مقدار ارزش خروجی این رابط‌ها نیز معکوس می‌شود، به عنوان مثال: \neg  ، *MAJ* (*p*، *q* , *r*).
* رابط‌های **حافظ حقیقت(truth-preserving)؛** آن هامقدار ارزش **T** را تحت هر تفسیری که **T** را به همه متغیرها نسبت می‌دهد، برمی‌گردانند، به عنوان مثال:{\displaystyle \vee ,\wedge ,\top ,\rightarrow ,\leftrightarrow }
* رابط‌های **حافظ کذب(falsity-preserving)؛** آنها مقدار ارزش **F** را تحت هر تفسیری که **F را** به همه متغیرها اختصاص می‌دهد، برمی‌گردانند، به عنوان مثال: {\displaystyle \vee ,\wedge ,\bot ,\nrightarrow ,\nleftrightarrow }

در واقع، پست توضیحات کاملی از شبکه همه کلون‌ها (مجموعه‌هایی از عملیات بسته نسبت به ترکیب و شامل تمام پیش‌بینی‌ها) در مجموعه دو عنصری {**T**, **F**}، که امروزه شبکه پست نامیده می‌شود ارائه داد که نتیجه ساده ای را به دست می‌آورد: پنج مجموعه رابط ذکر شده دقیقاً ماکسیمال کلون‌ها هستند.

مجموعه‌های عملگر مینیمال کامل فانکشنال
--------------------------------------

وقتی یک رابط منطقی یا عملگر بولین به تنهایی کامل شود، به آن **تابع Sheffer** یا گاهی اوقات **عملگر به تنهایی کافی (sole sufficient operator)** می‌گویند. عملگر یگانی با این ویژگی وجود ندارد. NAND و NOR، که نسبت به یکدیگر دوئال هستند، تنها دو تابع باینری شفر هستند. این‌ها توسطچارلز سندرز پیرس حدود ۱۸۸۰ کشف شدند، اما منتشر نشدند و به‌طور مستقل دوباره کشف و توسط هنری ام شفر در سال ۱۹۱۳ منتشر شد. در اصطلاحات الکترونیک دیجیتال، گیت باینری NAND و گیت باینری NOR تنها گیت‌های منطقی جهانی باینری هستند.

مجموعه‌های زیر، مجموعه‌های رابط‌های منطقی کامل فانکشنال مینیمال با آریتی ≤ ۲ هستند.

تک عضوی:
{↑}، {↓}.
 دو عضوی:
{\displaystyle \{\vee ,\neg \}} ، {\displaystyle \{\wedge ,\neg \}} ، {\displaystyle \{\to ,\neg \}} ، {\displaystyle \{\gets ,\neg \}} ، {\displaystyle \{\to ,\bot \}} ، {\displaystyle \{\gets ,\bot \}} ، {\displaystyle \{\to ,\nleftrightarrow \}} ، {\displaystyle \{\gets ,\nleftrightarrow \}} ، {\displaystyle \{\to ,\nrightarrow \}} ، {\displaystyle \{\to ,\nleftarrow \}} ، {\displaystyle \{\gets ,\nrightarrow \}} ، {\displaystyle \{\gets ,\nleftarrow \}} ، {\displaystyle \{\nrightarrow ,\neg \}} ، {\displaystyle \{\nleftarrow ,\neg \}} ، {\displaystyle \{\nrightarrow ,\top \}} ، {\displaystyle \{\nleftarrow ,\top \}} ، {\displaystyle \{\nrightarrow ,\leftrightarrow \}} ، {\displaystyle \{\nleftarrow ,\leftrightarrow \}.}
 سه عضوی:
{\displaystyle \{\lor ,\leftrightarrow ,\bot \}} ، {\displaystyle \{\lor ,\leftrightarrow ,\nleftrightarrow \}} ، {\displaystyle \{\lor ,\nleftrightarrow ,\top \}} ، {\displaystyle \{\land ,\leftrightarrow ,\bot \}} ، {\displaystyle \{\land ,\leftrightarrow ,\nleftrightarrow \}} ، {\displaystyle \{\land ,\nleftrightarrow ,\top \}.}
هیچ مجموعه مینیمال بیش از سه رابط منطقی که کامل باشد وجود ندارد. به منظور خواندن لیست‌های بالا، عملگرهایی که یک یا چند ورودی را نادیده می‌گیرند حذف شده‌اند. به عنوان مثال، اپراتوری که ورودی اول را نادیده می‌گیرد و نقیض ورودی دوم را خروجی می‌دهد، می‌تواند جایگزین نقیض غیرمستقیم شود.

مثال‌ها
-------

* نمونه‌هایی از استفاده از تمامیت `NAND` (↑):
	+ ¬A ≡ A ↑ A
	+ A ∧ B ≡ ¬ (A ↑ B) ≡ (A ↑ B) ↑ (A ↑ B)
	+ A ∨ B ≡ (A ↑ A) ↑ (B ↑ B)
* نمونه‌هایی از استفاده از تمامیت `NOR` (↓):
	+ ¬A ≡ A ↓ A
	+ A ∨ B ≡ ¬ (A ↓ B) ≡ (A ↓ B) ↓ (A ↓ B)
	+ A ∧ B ≡ (A ↓ A) ↓ (B ↓ B)

توجه داشته باشید که یک مدار الکترونیکی یا عملکرد نرم‌افزاری را می‌توان با استفاده مجدد، به منظور کاهش تعداد گیت‌ها، بهینه‌سازی کرد. به عنوان مثال، عملیات "A ∧ B"، هنگامی که توسط گیت‌های ↑ بیان می‌شود، با استفاده مجدد از "A ↑ B" اجرا می‌شود.

X ≡ (A ↑ B); A ∧ B ≡ X ↑ X

در حوزه‌های دیگر
----------------

گذشته از رابط‌های منطقی (عملگرهای بولین)، تمامیت را می‌توان در حوزه‌های دیگری نیز تعریف کرد. به عنوان مثال، مجموعه ای از دروازه‌های برگشت‌پذیر، کامل نامیده می‌شوند، اگر بتواند هر عملگر برگشت‌پذیر را بیان کند.

دروازه فردکین ۳ ورودی به خودی خود یک گیت برگشت‌پذیر کامل است - یک عملگر به تنهایی کافی. بسیاری از گیت‌های منطقی جهانی سه ورودی دیگر مانند دروازه Toffoli نیز وجود دارند.

در محاسبات کوانتومی، گیت هادامارد و گیت T جهانی هستند، البته با تعریف کمی محدود کننده تر از تمامیت فانکشنال.

نظریه مجموعه‌ها
---------------

بین جبر مجموعه‌ها و جبر بولی یک ایزومورفیسم وجود دارد، و آن این است که آنها ساختار یکسانی دارند. اگر عملگرهای بولی را به عملگرهای مجموعه مپ کنیم، متن ترجمه شده بالا به زبان نظریه مجموعه‌ها، برای مجموعه‌ها نیز معتبر است: بسیاری از «مجموعه‌های مینیمال کامل عملگرهای نظریه مجموعه ها» وجود دارند که می‌توانند هرگونه رابط دیگری را تولید کنند. {¬, ∩} و {¬، ∪ } مشهورترین «مجموعه عملگر مینیمال کامل اپراتور» هستند. اگر مجموعه جهانی ممنوع باشد، عملگرهای مجموعه محدود به حفظ کذب (Ø) هستند و نمی‌توانند معادل جبر بولی کامل فانکشنال باشند.

جستارهای وابسته
---------------

* تمامیت (منطق)
* جبر مجموعه‌ها
* جبر بولی
* منطق NAND

منابع
-----

1. ↑  Enderton, Herbert (2001), *A mathematical introduction to logic* (2nd ed.), Boston, MA: Academic Press, ISBN 978-0-12-238452-3. ("Complete set of logical connectives").
2. ↑  Nolt, John; Rohatyn, Dennis; Varzi, Achille (1998), *Schaum's outline of theory and problems of logic* (2nd ed.), New York: McGraw–Hill, ISBN 978-0-07-046649-4. ("[F]unctional completeness of [a] set of logical operators").
3. ↑  Smith, Peter (2003), *An introduction to formal logic*, Cambridge University Press, ISBN 978-0-521-00804-4. (Defines "expressively adequate", shortened to "adequate set of connectives" in a section heading.)
4. ↑  Wesselkamper, T.C. (1975), "A sole sufficient operator", *Notre Dame Journal of Formal Logic*, **16**: 86–88, doi:10.1305/ndjfl/1093891614
5. ↑  Massey, G.J. (1975), "Concerning an alleged Sheffer function", *Notre Dame Journal of Formal Logic*, **16** (4): 549–550, doi:10.1305/ndjfl/1093891898
6. ↑  Wesselkamper, T.C. (1975), "A Correction To My Paper" A. Sole Sufficient Operator", *Notre Dame Journal of Formal Logic*, **16** (4): 551, doi:10.1305/ndjfl/1093891899
7. ↑  The term was originally restricted to *binary* operations, but since the end of the 20th century it is used more generally. Martin, N.M. (1989), *Systems of logic*, Cambridge University Press, p. 54, ISBN 978-0-521-36770-7.
8. ↑  Scharle, T.W. (1965), "Axiomatization of propositional calculus with Sheffer functors", *Notre Dame J. Formal Logic*, **6** (3): 209–217, doi:10.1305/ndjfl/1093958259.
9. 1 2  Wernick, William (1942) "Complete Sets of Logical Functions," *Transactions of the American Mathematical Society 51*: 117–32. In his list on the last page of the article, Wernick does not distinguish between ← and →, or between {\displaystyle \nleftarrow } and {\displaystyle \nrightarrow }.
10. ↑  "NAND Gate Operations" at
11. ↑  "NOR Gate Operations" at