ویرگول
ورودثبت نام
محمد طهماسبی زاده
محمد طهماسبی زاده
خواندن ۳۵ دقیقه·۲ سال پیش

زبان‌های صوری، نظریه صدق تارسکی و قضیه تمامیت گودل

به من گفته بودی که از مطالعه‌ی رساله‌ی منطقی-فلسفیِ ویتگنشتاین چیزی نصیبت نشد و از شدتِ دشواری این اثر گلایه داشتی! از تو می‌خواهم که خیلی نگران نباشی! فهم رساله او واقعا دشوار است و کمتر کسی است که ویتگنشتاینِ متقدم را به نیکی فهمیده باشد.

من هم چند باری با رساله منطقی-فلسفی برخورد داشته‌ام؛ یک بار پیش از مطالعه زبان‌های صوری و منطقِ ریاضی، و چند بار پس از آن. جالب اینجا بود که آشنایی با زبان‌های صوری و منطق ریاضی، به من کمک کرد تا کمی بیش‌تر از مفاهیم دشوارِ رساله سر در بیاورم. از آنجایی که هدف من کمک به توست، بر آن شدم تا برایت نامه‌ای بنویسم و راه ورود به دنیای زبان‌‌های صوری و منطق ریاضی را بر تو هموار کنم. به علاوه، این نامه به تو کمک می‌کند تا «نظریه صدق تارسکی» را نیز بهتر بفهمی، و اگر روزی با کارهای فرگه، راسل و هیلبرت در مبانی ریاضیات برخورد داشتی، راحت‌تر از پسِ فهمِ آن‌ها برآیی. زبان نامه‌ام رسمی است، برای آنکه هر وقتی که خواستی، آن را رسماً به اساتیدِ متخصص نشان دهی تا ایرادات نوشته‌ام را پیدا کنی و برایم بفرستی. از تو می‌خواهم پیش از شروع مطالعه این نامه، نامه‌ی «فرآیند اثبات منطقی و قضیه‌های ناتمامیتِ گودل» را که چندی پیش برایت فرستادم، دوباره بخوانی، چرا که مطالعه‌ی دقیقِ آن را پیش‌فرض گرفته‌ام.


قصد دارم مفهوم زبان‌ صوری را معرفی کنم. یکی از اهداف زبان صوری، این است که ما را از بند زبان‌‌های طبیعی مانند زبان‌های فارسی و انگلیسی و ... بِرَهانَد. چرا که این زبان‌ها، از دقت لازم برخوردار نیستند و صحبت کردن در چنین زبان‌هایی، ممکن است مثلا در هنگام بحث‌های دقیقِ ریاضی و فلسفی، مشکلاتی را در فهمِ معنا به وجود آورند. پژوهش‌های فلاسفه تحلیلی از جمله فرگه، راسل و ویتگنشتاین، به مشکلات زبان طبیعی و استفاده نابجا از آن‌ها به نیکی اشاره می‌کند و برای مطالعه بیشتر در این باره، خوب است تا بعدا بعضی از آثار آن‌ها را مطالعه کنی. اما زبان صوری چگونه ساخته می‌شود؟ در ادامه تلاش می‌کنم تا این پرسش را پاسخ دهم.


زبان فارسی را در نظر بگیر. اساس زبان فارسی، و البته هر زبان دیگری، «الفبا»ی آن است. بعد که الفبای زبان فارسی را مشخص کردیم، کوچک‌ترین واحد عبارت‌های معنادار یا همان واژه‌ها را مشخص می‌کنیم. مثلا «ااااا‌ت‌ش‌ش‌ل‌ی‌ی‌ی‌گ» درست است که از الفبای زبان فارسی تشکیل شده، اما صرفا یک «عبارت» است، «واژه» نیست. بعد که واژه‌ها معلوم شدند، قواعد «جمله»سازی مشخص می‌شوند‌؛ مثلا «را ریاضی دارد انسان هواپیما درخت» از کنار هم قرار گرفتن چند واژه تشکیل شده، اما «جمله» نیست.


ما هم قصد داریم برای ساخت یک زبان صوری و منطقی، فرآیند مشابهی را طی کنیم؛ یعنی ابتدا «الفبا» را معرفی کنیم، سپس مفهوم «عبارت» و «واژه» را تعریف کنیم، و در پایان قواعد «جمله»سازی را شرح دهیم.


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


در یک زبان صوری، مجموعه زیر را مجموعه نمادهای زبان می‌نامند:


L={F₁, ... , Fₙ, R₁, ... , Rₘ, C₁,..., Cₖ}


که در آن Fᵢها نماد تابعی، Rᵢها نماد رابطه‌ای و Cᵢها نماد ثابت‌‌ هستند. هر کدام از Fᵢها می‌توانند نماد تابعیِ یک متغیره، دو متغیره یا در حالت کلی n متغیره باشند. همین‌طور هر کدام از Rᵢها می‌توانند نماد رابطه‌ای یک جایی (یک موضعی)، دو جایی یا در حالت کلی n جایی باشند. چند متغیره بودن نمادهای تابعی، و چند جایی بودن نمادهای رابطه‌ای، باید همان ابتدا دقیقا مشخص شود. یعنی مشخص باشد که F₁ چند متغیره است، R₂ چندجایی است و ... .


اما هدف از این نمادگذاری‌ها چیست؟ نکته اینجاست که یک زبان صوری، می‌خواهد درباره یک جهانِ مشخص حرف بزند. منظور از جهان چیست؟ منظور، مجموعه‌ای از اشیاء است. آن اشیاء می‌توانند انسان‌ها باشند، پرنده‌ها باشند، انسان‌ها و پرنده‌ها باشند، اعداد طبیعی باشند، اعداد گویا باشند یا ... . البته یک زبان صوری، مشخص نمی‌کند که آن جهان دقیقا کدام یک از این جهان‌ها است؛ بلکه این آزادی را می‌دهد که تو هر جهانی را که دوست داشتی انتخاب کنی. پس برای فهمِ بهتر می‌توانی جهان را مجموعه‌ای از متغیرها تصور کنی که در واقع هر یک از آن‌ متغیرها، بیان کننده‌ی یک شیئ در جهان هستند. مثلا فرض کن a یک شیئ در جهان باشد. گاهی پیش می‌آید که می‌توانیم با داشتنِ همین a، به اشیائی دیگر در جهان اشاره کنیم.

مثلا اگر جهان مورد بحث مجموعه همه انسان‌ها باشد، در این صورت a یک انسان است و پدرِ a و مادرِ a به اشیائی دیگر در همان جهان اشاره می‌کنند؛ در واقع «پدرِ x» و «مادرِ x» هر کدام یک تابع از مجموعه همه انسان‌ها به مجموعه همه انسان‌ها هستند. اینجاست که نمادهای تابعی وارد کار می‌شوند.

همان‌طور که گفتم، نمادهای تابعی، به ما کمک می‌کنند تا به اشیاء بیشتری در جهان مورد بحثمان اشاره کنیم. فرض کن جهان مورد بحث ما مجموعه همه انسان‌ها باشد. در این صورت، مثلا F₁ می‌تواند نماد تابعیِ یک متغیره‌ای در نظر گرفته شود که هدفش، ترجمه عبارتِ فارسیِ «پدرِ x» باشد.

و F₂ می‌تواند نماد تابعیِ یک متغیره‌ای در نظر گرفته شود که هدفش، ترجمه عبارتِ فارسیِ «مادرِ x» باشد.

یا مثلا F₃ می‌تواند نماد تابعیِ دو متغیره‌ای در نظر گرفته شود که هدفش، ترجمه عبارتِ فارسیِ «پدرِ x و y» باشد.

در این صورت F₃ دو ورودی x و y را می‌گیرد و یک خروجی تحویل می‌دهد که در اینجا، خروجی، «پدرِ x و y» است. خروجی را در زبان صوری به شکل F₃(x,y) می‌نویسیم. روشن است که F₃(x,y) هیچ خبری را بیان نمی‌کند و صرفا دارد به یک شیئ در جهان اشاره می‌کند. پس بی‌معناست که بگوییم F₃(x,y) درست است یا غلط است؛ چرا که اصلا خبری (حکمی) بیان نشده که بخواهیم به آن درستی یا غلطی را نسبت دهیم.

گاهی، بین اشیاءِ جهان مورد بحث، رابطه‌ای (نسبتی) برقرار است. مثلا وقتی جهان، مجموعه همه انسان‌ها باشد، و a و b دو انسان باشند و a برادر b باشد، بین a و b رابطه برادری برقرار است. در این صورت، در زبان طبیعی می‌گوییم «a برادر b است»؛ در واقع «برادری» یک رابطه دو جایی روی مجموعه‌ همه انسان‌ها است. اینجاست که نمادهای رابطه‌ای برای ترجمه این عبارت‌ها از زبان طبیعی به زبان صوری وارد کار می‌شوند. مثلا رابطه R₁ می‌تواند رابطه‌ای دو جایی باشد که هدفش ترجمه‌ی جمله «x برادرِ y است» از زبان فارسی به زبان صوری باشد. در این صورت می‌نویسیم R₁(x,y) که یعنی x با y رابطه R₁ دارد.

همین‌طور، اگر a و b و c سه انسان باشند، جمله‌ی «a قدبلندتر از b و قدکوتاه‌تر از c است» با استفاده از یک نماد رابطه‌ای سه جایی می‌تواند به زبان صوری ترجمه شود.

و اگر a یک انسان باشد، آنگاه جمله «a سیاه‌پوست است» با استفاده از یک نماد رابطه‌ای یک جایی می‌تواند به زبان صوری ترجمه شود و ... .

همان‌طور که احتمالا دقت کرده‌ای، نمادهای رابطه‌ای، در حال بیان یک خبر هستند؛ مثلا R₁(x,y) می‌گوید: «بین x و y رابطه R₁ برقرار است». اگر نماد رابطه‌ای R₁ به رابطه‌ی «برادری» بین انسان‌ها تعبیر شود، R₁(x,y) دارد می‌گوید: «x برادر y است». خب اگر x یک انسان باشد و y انسان دیگری باشد، یا «x برادر y است» یا «x برادر y نیست». پس یا R₁(x,y) درست است یا غلط. پس هنگام بحث از رابطه‌ها، صحبت از درستی و غلطی معنادار است؛ بعدا به موشکافیِ معنا باز خواهم گشت.

هر کدام از نمادهای ثابتی که در مجموعه L معرفی شده، قصد دارند تا به شیئی کاملا مشخص در جهان اشاره کنند. مثلا C₁ می‌تواند فقط برای این وضع شده باشد که به شخص شکسپیر در جهان انسان‌ها اشاره کند، اما در یک زبان صوری، نه در یک زبان طبیعی.

ممکن است هنوز در فهمِ این نمادها ابهام داشتی باشی؛ عیبی ندارد. به مطالعه نامه ادامه بده؛ تا حد زیادی اطمینان دارم که هر چه جلوتر بروی، این نمادها را بهتر درک خواهی کرد.


هر یک از اعضای L، جزئی از الفبای زبان هستند.


سه مورد زیر را هم جزئی از الفبای زبان در نظر می‌گیریم:


۱. متغیرهای فردی: x ، y ، z و ... .

۲. هابندهای منطقی: ∧، ∨، ¬،⇒

۳. چَنداگَر(سور)ها: ∀، E

۳. پرانتزها: ( ، )


ممکن است بپرسی این‌ها چیستند. این‌ها صرفا نماد هستند؛ معنایی ندارند! بعدا به آن‌ها معنایی را نسبت خواهیم داد.


تعریف عبارت:

به هر دنباله متناهی که اعضای آن دنباله از الفبای زبان انتخاب شده باشند، یک عبارت می‌گوییم؛ مثلا دنباله زیر یک عبارت است:

x y⇒∧ ) ¬ ( ∀


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

اما برای ساختن جمله، ابتدا باید مفهوم «واژه» (term) را تعریف کنیم. این مفهوم را به شکلی استقرایی تعریف می‌کنند:


۱. هر متغیر فردی یک واژه است.

۲. هر نماد ثابت، یک واژه است.

۳. اگر t₂، t₁ و ... و n ، tₙ واژه باشند و f یک نماد رابطه‌ای n جایی باشد، آنگاه f(t₁,t₂,...,tₙ) یک واژه است.


همان‌طور که احتمالا دقت کرده‌ای، هر واژه قرار است به شیئی در جهان اشاره کند.


اکنون مفهوم «فرمول» را نیز به شکلی استقرایی تعریف می‌کنیم:

(یک جمله، حالت خاصی از یک فرمول است که آن را معرفی خواهم کرد)


۱. اگر t₁ و t₂ واژه باشند، t₁=t₂ یک فرمول است.

۲. اگر t₂، t₁ و ... و n ، tₙ واژه باشند و R یک نماد رابطه‌ای n جایی باشد، آنگاه R(t₁,t₂,...,tₙ) یک فرمول است.

۳. اگر A و B فرمول باشند، هر یک از عبارت‌های زیر فرمول هستند:

(¬A)

(A∧B)

(A∨B)

(A⇒B)


۴. اگر A یک فرمول باشد، عبارات زیر فرمول هستند:

(∃x A)

(∀x A)


فرمول‌هایی را که به روش ۱ یا ۲ ساخته می‌شوند، «فرمول‌ اتمی» می‌گوییم؛ چرا که همه فرمول‌های دیگر، یعنی فرمول‌هایی که به روش ۳ یا ۴ ساخته می‌شوند، از همین فرمول‌ها تشکیل شده‌اند؛ درست مثل اینکه در نگاهِ نظریه اتم‌ها، هر ماده‌ای از کنار هم قرار گرفتنِ اتم‌ها تشکیل شده است.




متغیر x را در فرمول B «متغیر پابند» گوییم هرگاه

∃x

یا

∀x

در فرمول B قرار داشته باشد.


متغیر x را در فرمول A «متغیر آزاد» گوییم هرگاه پابند نباشد. (این تعریف، تعریف دقیق متغیر آزاد و پابند نیست، و از نظر تکنیکی اشکالاتی دارد، اما به طور غیررسمی واقعا تعریف خوبی است و کارمان را راه می‌اندازد!)


فرمول A را با A(x₁,...,xₙ) نمایش می‌دهیم، هرگاه متغیرهای آزاد به کار رفته در A، همان x₁،...،xₙ باشد.


یک فرمول را «جمله» می‌گوییم، هرگاه در آن فرمول هیچ متغیر آزادی به کار نرفته باشد.


اکنون می‌توانیم به راحتی عبارت‌هایی را که فرمول هستند از عبارت‌هایی که فرمول نیستند تفکیک کنیم. مثلا عبارت زیر که در آن R یک نماد رابطه‌ای یک جایی است، یک فرمول است:

B(t,z): ∀x ((R(x))∧(¬(t=z)))

زیرا: (t=z) فرمول است، در نتیجه (t=z)¬ نیز فرمول است. و چون (R(x فرمول است، پس

(R(x))∧(¬(t=z))

نیز فرمول است، و در نتیجه

∀x ((R(x))∧(¬(t=z)))

نیز فرمول است.

در فرمول B، متغیر‌های t و z آزاد هستند، زیرا پابند هیچ چنداگری نیستند (منظور از چنداگر، همان ∃ یا ∀ است که به E چنداگر وجودی و به ∀ چنداگر جهانی می‌گویند). اما متغیر x متغیری پابند است، زیرا پابندِ یک چنداگر است. چون B متغیر آزاد دارد، پس فرمولی است که جمله نیست. اما فرمول زیر، جمله است:

C: ∀x (¬(R(x))

زیرا این فرمول، هیچ متغیر آزادی ندارد.


دقت کن که در این‌جا همه چیز بی‌معناست! منظور از بی‌معنا بودن این است که مثلا نباید تصورت از B∧A این باشد که «هم A درست است، هم B»! یا نباید

∀x (R(x))

را این‌گونه تصور کنی که «x هرچه که باشد ویژگی R را دارد». پس این‌ها را چطور باید تصور کنی؟ صرفا چند نماد بی‌معنا که کنار یکدیگر قرار گرفته‌اند! آری بعدا قصد داریم به این فرمول‌ها معنا ببخشیم، اما نباید در مرحله‌ی تعریف، برای آن‌ها معنایی قائل شویم.



اکنون که زبان صوری معرفی شد، می‌خواهیم قواعد منطق و استنتاج را اضافه کنیم. این قواعد به ما کمک می‌کنند که از چند فرمول داده شده، فرمول جدیدی را نتیجه بگیریم. همین قواعد هستند که به ما کمک می‌کنند تا مفهوم «اثبات» را صورت‌بندی کنیم.

من قصد ندارم وارد بحث‌های تخصصیِ این قسمت شوم؛ همین‌که بدانی قواعد منطق و استنتاج برای چه وضع شده‌اند، برای مطالعه و فهم ادامه نامه کافی است.

این قواعد در واقع همان «بنداشت‌های منطق و استنتاج» هستند که پیش‌تر در نامه قبلی به طور غیر رسمی درباره آن‌ها سخن گفته بودم. این بنداشت‌ها را می‌پذیریم، تا منطق کلاسیکی را که در ذهن داریم، به طور دقیق صورت‌بندی کرده باشیم. مثلا، معمولا یکی از کارکردهای منطقی ذهن ما این است که از جمله‌ «اگر باران ببارد، آنگاه پشت بام خیس می‌شود» و جمله «باران آمده است» نتیجه می‌گیرد «پشت بام خیس شده است»؛ این‌که چرا ذهن ما این‌طور عمل می‌کند، پرسشی است که مربوط به فلسفه، علوم شناختی و روانشناسی می‌شود و محل بحث ما نیست. به هر حال، این کارکرد منطقی ذهن، در قاعده‌ «قیاس استثنائی» صورت‌بندی شده است؛ و قاعده قیاس استثنائی این‌طور بیان می‌شود اگر جمله A را داشته باشیم و جمله A⇒B را نیز داشته باشیم، اجازه داریم جمله B را نتیجه بگیریم.

ما همیشه قاعده بالا را فرض می‌گیریم و از آن استفاده می‌کنیم. دقت کن که این قاعده را بدون اثبات پذیرفته‌ایم؛ به عبارتی، قیاس استثنائی یک بنداشت است. همین‌طور همه قواعد دیگر منطق و استنتاج، بنداشت هستند؛ بنداشت‌هایی که هدفشان صورت‌بندی کردن قواعد منطقیِ ذهن ماست، و کمک کردن به ما برای نتیجه گرفتن جمله‌های جدید.

لازم به ذکر است که اگر تو بعضی از این بنداشت‌ها را تغییر دهی، یعنی بعضی جمله‌های دیگر را به عنوان بنداشت‌های منطق و استنتاج در نظر بگیری (هیچ مانعِ جدی برای انجام این کار وجود ندارد!)، منطق‌هایی بدست می‌آوری که به منطق‌های غیرکلاسیک معروفند؛ البته من در این نوشتار، به این منطق‌ها کاری ندارم و در سرتاسر نوشته، سر و کار ما با منطق کلاسیک است؛ یعنی همان قواعد منطق و استنتاج رایجی که می‌شناسیم.

تنها چیزی که در الفبای زبان صوری ممکن است تغییر کند، اعضای مجموعه L است. ممکن است تو مجموعه L را یک مجموعه تک عضوی بگیری که تنها شامل یک نماد رابطه‌ای یک جایی باشد. ممکن است شخص دیگری، مجموعه L را مجموعه‌ای فرض کند که تنها شامل یک نماد تابعی سه متغیره و یک نماد ثابت باشد و ... . در واقع، اعضای مجموعه L، همان مفاهیم اولیه هستند که در ابتدای نامه‌ی «فرآیند اثبات منطقی...» به طور مفصل و کمی غیر رسمی درباره آن‌ها نوشتم. بنابراین وقتی مجموعه L را تغییر می‌دهی، در واقع داری مفاهیم اولیه‌ را تغییر می‌دهی.

البته چند مفهوم اولیه هست، که L را هر مجموعه‌ای بگیری، باز هم این مفاهیم اولیه، فرض می‌شوند. یکی از آن مفاهیم، مفهومِ «وجود» است. وجود، مفهومی اولیه است که چون در همه زبان‌های صوری فرض می‌شود، آن را عضوی از مجموعه L نمی‌دانیم؛ صوری کردن مفهوم وجود را، چنداگر وجودی به عهده می‌گیرد. مثلا فرمول زیر:

∃x (x=x)

بیان می‌کند که حداقل یک عضو وجود دارد.

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

این رابطه‌ی دو جایی چون در هر L که تصور کنی فرض می‌شود، معمولا به عنوان عضوی از L در نظر گرفته نمی‌شود. البته بعضی نیز آن را عضوی از L می‌گیرند که این تا اندازه‌ای به سلیقه نویسنده بستگی دارد. من نیز در این‌جا آن را عضوی از L در نظر نمی‌گیرم. خلاصه لازم است بدانی که L هر چه باشد، عبارتِ x=y واقعا یک فرمول است که هدفش بیان این حقیقت است که نام x و نام y، هر دو به یک شیئ واحد در جهان اشاره می‌کنند.


همان‌طور که گفتم، انتخاب‌های مختلفی برای L وجود دارد. فرض کن مجموعه L هیچ عضوی نداشته باشد؛ به عبارتی، فرض کن مجموعه L، همان مجموعه تهی باشد. در این صورت، تنها فرمول اتمی که می‌توانیم بنویسیم، فرمولی به شکل x=y است. بنابراین همه فرمول‌ها را که بشکافیم و تجزیه کنیم، به فرمول‌های تساوی، مانند فرمول x=y می‌رسیم. شاید تصور کنی که در چنین زبانی، هیچ چیز مفیدی قابل بیان نیست. اما این تصور درست نیست؛ مثلا، در همین زبان، می‌توانیم جمله‌ی «حداقل سه چیز وجود دارد» را به این شکل بیان کنیم:

∃x∃y∃z (¬(x=y) ∧ ¬(x=z) ∧ ¬(y=z))

فرمول بالا، یک جمله است، زیرا هیچ متغیر آزادی ندارد. در نوشتن این جمله، بعضی پرانتزها برای کوتاه‌تر شدن عبارت، حذف شده‌اند‌. اگر می‌خواستیم دقیق‌تر بنویسیم، باید پرانتزهای بیشتری می‌گذاشتیم. معمولا هنگامی که ابهامی ایجاد نشود، پرانتز‌ها را تا حدامکان حذف می‌کنیم، تا عبارت نوشته شده، ساده‌تر خوانده شده و فهم شود.

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

در این زبان، علاوه بر جمله بالا، می‌توانیم جمله «حداکثر سه چیز وجود دارد» را نیز بیان کنیم. همین‌طور، می‌توانیم بیان کنیم که «دقیقا سه چیز وجود دارد».


اکنون پرسشی که مطرح می‌شود این است که چند چیز وجود دارد؟ پاسخ این است که معلوم نیست! زیرا بنداشت‌هایی که اکنون داریم، درباره تعداد موجودات حرفی نمی‌زنند! اصلا طبیعت منطق نیز همین است که هیچ تعهد هستی‌شناسانه نداشته باشد. مثلا منطق، از آن جهت که منطق است، ادعا نمی‌کند که شیئی وجود دارد یا نه، و خب از او انتظار هم می‌رود که چنین ادعایی نکند. اینکه آیا شیئی وجود دارد یا نه، و اگر وجود دارد چند شیئ وجود دارد، پرسشی نیست که وظیفه منطق، پاسخ دادن به آن باشد. پاسخ چنین پرسش‌هایی را باید‌ در علوم دیگر جست‌وجو کرد. منطق، صرفا قواعدِ کلیِ بیان مفاهیم و استنتاج جمله‌های جدید از جمله‌های پذیرفته شده را بیان می‌کند؛ منطق قدیم که همان منطق ارسطو است چنین روحیه‌ای داشته، و منطق جدید نیز که همان منطق فرگه یا منطق ریاضی است، چنین روحیه‌ای دارد. به عبارتی دیگر، منطق، فی نفسه، ماهیتی «اگر-آنگاهی» دارد و مثلا می‌گوید اگر جمله A را بپذیری آنگاه باید جمله B را نیز بپذیری. اما هیچ وقت به تو نمی‌گوید که جمله A را بپذیر یا نه. نمی‌گوید جمله A درست است یا نه. می‌گوید اگر به هر طریقی A را پذیرفتی، B را نیز باید بپذیری.

پس بنداشت‌هایی که اکنون می‌پذیریم، صرفا بعضی از فرمول‌های ابتداییِ منطق و چند قاعده‌ی استنتاج هستند. من آن‌ها را دقیقا ننوشتم، چون نمی‌خواستم وارد جزئیات این قسمت شوم. برای آنکه آن‌ها را دقیقا ببینی، به مرجعی که در انتهای نامه برایت نوشته‌ام، مراجعه کن.

درست است که منطق هیچ تعهد هستی‌شناسانه ندارد، اما ما، مثلا می‌توانیم فرض کنیم که حداقل سه چیز وجود دارد! در این صورت، باید جمله «حداقل سه چیز وجود دارد» را به عنوان بنداشت در نظر بگیریم! یعنی جمله‌ی

a: ∃x∃y∃z (¬(x=y) ∧ ¬(x=z) ∧ ¬(y=z))

را به بنداشت‌هایمان اضافه کنیم. برای این‌که در نوشتن‌هایمان صرفه‌جویی کنیم، از این پس، هر زمان می‌گوییم بنداشت، منظورمان بنداشت‌هایی غیر از بنداشت‌های منطق و استنتاج است. بنداشت‌های منطق و استنتاج را، یک بار برای همیشه در نظر گرفته‌ایم و همواره از آن‌ها استفاده خواهیم کرد. بنابراین، در این مثال، مجموعه T={a} مجموعه همه بنداشت‌هایمان است. یعنی صرفا فرض کرده‌ایم که «حداقل سه چیز وجود دارد» (به علاوه بنداشت‌های منطق و استنتاج که همیشه آن‌ها را مفروض گرفته‌ایم).


اکنون که زبان صوری را ساختیم، آماده هستیم تا «دستگاه هندسه وقوع» را که در نامه «فرآیند اثبات منطقی...» به زبان فارسی معرفی کردیم، در این زبانِ صوری بیان کنیم و از بند زبان فارسی یا انگلیسی یا ... برهیم.

مجموعه L={W, P, ∈} را که در آن W و P رابطه‌هایی یک جایی و ∈ رابطه‌ای دو جایی است در نظر می‌گیریم و بنداشت‌های زیر را می‌پذیریم؛

بنداشت اول:

∀x [ (W(x)∨P(x)) ∧ ¬(W(x)∧P(x)) ]

بنداشت دوم:

∀x∀y (x∈y⇒P(x)∧W(y))

بنداشت سوم:

∀x∀y [ (P(x)∧P(y)∧¬(x=y))⇒

( ∃z (W(z)∧(x∈z)∧(y∈z)) ) ∧

( ∀t ((W(t)∧(x∈t)∧(y∈t))⇒(t=z) ) ]

بنداشت چهارم:

∀x [ (W(x)) ⇒

∃y∃z (P(y)∧P(z)∧¬(y=z)∧(y∈x)∧(z∈x)) ]

بنداشت پنجم:

∃x∃y∃z

[ (P(x)∧P(y)∧P(z)∧

(¬(x=y) ∧ ¬(x=z) ∧ ¬(y=z))∧

( ∀t (W(t)) )⇒(¬((x∈t)∧(y∈t)∧(z∈t))) ]


همان‌طور که می‌بینی، در این‌جا همه چیز صوری است و هر چیزی که نوشته می‌شود، تنها رشته‌ای از نمادهای بی‌معنا است. در واقع این‌ نمادها، ترجمه‌ای از زبان فارسی به زبان صوری هستند. خط بودن را به W، نقطه بودن را به P، و واقع بودن را به ∈ ترجمه کرده‌ایم. یعنی وقتی می‌نویسیم (W(x، معادل فارسی آن این است که x یک خط است، و وقتی می‌نویسیم (P(x، معادل فارسی آن این است که x یک نقطه است، و وقتی می‌نویسیم x∈y معادل فارسی آن این است که نقطه x روی خط y واقع است.

بنداشت اول بیان می‌کند که:

هر متغیر فردی، بالاخره یا خط است یا نقطه، و امکان ندارد که هم خط باشد و هم نقطه.

بنداشت دوم بیان می‌کند که:

وقتی می‌نویسیم x∈y، آنگاه x حتما نقطه است و y حتما خط است.

بنداشت سوم بیان می‌کند که:

اگر x و y دو نقطه باشند، آنگاه فقط یک خط مانند z وجود دارد که نقاط x و y روی z واقع هستند.

بنداشت چهارم بیان می‌کند که:

اگر x یک خط باشد، آنگاه حداقل دو نقطه مانند y و z وجود دارند به طوری که y و z روی x واقع‌اند.

بنداشت پنجم بیان می‌کند که:

سه نقطه مانند x و y و z وجود دارند به طوری که t هر خطی باشد، حداقل یکی از نقاط x یا y یا z روی این خط قرار ندارد.

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

∃x P(x)

که بیان می‌کند حداقل یک نقطه وجود دارد.

و جمله زیر:

∃x W(x)

که بیان می‌کند حداقل یک خط وجود دارد.

و ...


این نتیجه‌گیری‌ها را اثبات یا برهان می‌نامیم. بنابراین اثبات را می‌توان بدین شکل تعریف کرد:

تعریف اثبات:

فرض کن L مجموعه زبان باشد، T مجموعه‌ای از جمله‌ها باشد که در زبان L نوشته شده‌اند، و A جمله‌ای باشد که در زبان L نوشته شده است.

یک اثبات برای جمله A در T، دنباله‌ای متناهی از فرمول‌ها مانند دنباله a₁, a₂, ... ,aₙ است که شرایط زیر را دارد:

۱. فرمول aₙ، همان جمله A است.

۲. به ازای هر i که بزرگ‌تر مساوی 1 و کوچک‌تر مساوی n باشد، فرمول aᵢ یا عضوی از T است، یا یکی از فرمول‌های منطق است که همان ابتدا به عنوان بنداشت پذیرفته بودیم، یا با استفاده از قواعد استنتاج، از جمله‌های a₁, a₂, ... ,aᵢ₋₁ نتیجه شده است.


تعریف قضیه:

فرض کن L مجموعه زبان باشد، T مجموعه‌ای از جمله‌ها باشد که در زبان L نوشته شده‌اند، و A جمله‌ای باشد که در زبان L نوشته شده است. می‌گویند A یک قضیه در T است، هرگاه در T اثباتی برای جمله A وجود داشته باشد.


همان‌طور که می‌بینی، فرآیند اثبات نیز فرآیندی کاملا صوری است و صرفا رشته‌ای از نمادهای صوری و بی‌معنا هستند که در اینجا نقش بازی می‌کنند. مثلا بسیاری از قضیه‌های هندسه را می‌توان در همین دستگاه صوریِ هندسه وقوع که معرفی کردیم، به اثبات رساند. یعنی می‌توانیم یک کتاب هندسه بنویسیم که در آن هر چیزی که می‌بینیم، از حروف الفبای زبان صوری تشکیل شده باشد؛ بدون هیچ شکل و نموداری! اما معمولا چنین کتاب هندسه‌ای را پیدا نمی‌کنی. دلیل این موضوع هم روشن است؛ چرا که خواندنِ متنی که به زبان صوری نوشته شده است، برای انسان کار پیچیده‌ای است؛ درست برعکس کامپیوتر! به علاوه، وقتی جمله‌ی ساده‌ای را از زبان فارسی به زبان صوری ترجمه می‌کنیم، ممکن است حجم جمله ترجمه شده چندین برابر حجم جمله فارسی باشد. بنابراین ترجیح می‌دهیم اثبات‌هایمان را به زبان فارسی یا انگلیسی بنویسیم، برای اینکه هم خواندن و فهم آن ساده‌تر باشد، هم در حجم نوشتن‌هایمان صرفه جویی کنیم. اما برای اینکه از دایره منطق خارج نشویم، باید به طریقی این اطمینان را به خود ببخشیم که اثباتمان به زبان صوری «قابل ترجمه» است. ابداعِ زبان‌های صوری، برای علوم کامپیوتر نیز بیش از اندازه مفید است؛ زیرا همان‌طور که دیدی، زبان‌های صوری با ماهیتی که دارند، خوراک کامپیوتر‌ها هستند. کامیپوتر نمی‌فهمد نقطه چیست و خط چیست، و شهودی که ما مثلا از مفاهیم هندسی داریم، او (احتمالا!) ندارد. اما می‌توانیم برای او زبانی معرفی کنیم (مثلا همین زبان صوری) و قواعد استنتاجی را برایش تعریف کنیم، که بتواند بدون اینکه بداند خط چیست و نقطه چیست، همان قضیه‌هایی را از هندسه اثبات کند که ما اثبات می‌کنیم! واقعا چنین چیزی ممکن است؟ به یک معنا، بله!

برای مطالعه بیشتر درباره ارتباط بین زبان‌های صوری و علوم کامپیوتر، تحقیق درباره‌ی پژوهش‌های آقای چِرچ و آقای تورینگ، و جست‌وجوی مفاهیم محاسبه‌پذیری و تصمیم‌پذیری، می‌تواند برایت راهگشا باشد. همین‌طور توصیه می‌کنم فیلم the imitation game را که درباره بخشی از زندگی آلن تورینگ است ببینی.

اما به هر حال پرسش مهم این‌جاست که نقش «معنا» (semantic) چه می‌شود؟ تا کنون هرچه که گفتیم، مربوط به زبان صوری یا به عبارتی مربوط به «نحو» (syntax) بود. آیا بالاخره در یک دستگاه منطقی، معنا جایگاهی دارد؟! چگونه راهِ معنا را باز کنیم؟

در ادامه، با بررسی یک مثال مهم و کاربردی از یک دستگاه منطقی، به پرسش‌های بالا پاسخ می‌دهم.


مجموعه‌ L={*,e} را در نظر بگیر که در آن * یک نماد تابعی دو متغیره و e یک نماد ثابت است.

بیا در این زبان، بنداشت‌های زیر را بپذیریم:

(برای خلاصه نویسی، به جای (x,y)* می‌نویسم: x*y)

بنداشت اول:

a: ∀x∀y∀z [ x*(y*z)=(x*y)*z ]

بنداشت دوم:

b: ∀x [ (x*e=e*x)∧(x*e=x) ]

بنداشت سوم:

c: ∀x∃y [ (x*y=y*x)∧(x*y=e) ]


دستگاه بالا را، «دستگاه گروه‌ها» می‌نامند.

در واقع، بنداشت اول، خاصیت شرکت‌پذیری را بیان می‌کند، بنداشت دوم، وجود عضو همانی را تضمین می‌کند و می‌گوید عضو همانی، همان e است، و بنداشت سوم، وجود عضو وارون را برای هر عضوی تضمین می‌کند. نمادهای e و * صرفا نمادهایی صوری هستند و هیچ معنایی ندارند. همین‌طور تمام بنداشت‌های بالا هم کاملا صوری هستند. حال می‌خواهیم جهانی واقعی پیدا کنیم، که این مفاهیم و جملات بی‌معنا، در آن جهان، معنادار شوند. مثلا یکی از آن جهان‌های واقعی، جهان اعداد طبیعی است. جهان اعداد طبیعی (N)، به همراه عمل جمع معمولی اعداد طبیعی (+) برایمان جهانی شناخته شده است. در واقع عمل +، یک تابع دو متغیره از N×N به N است. بیا در جهان N، نماد تابعیِ * را به عمل +، و نماد ثابت e را به عدد 1 تعبیر کنیم. پس مفاهیمِ صوریِ اولیه، یعنی نماد تابعی * و نماد ثابت e، اکنون به چیزهایی واقعی نسبت داده شده‌اند. همین‌طور هابند‌های منطقی و چنداگرهای عمومی و وجودی را به همان تصوراتی که در ذهن داریم ارجاع می‌دهیم؛ یعنی «∧» را به معنای «و» در نظر می‌گیریم، «∨» را به معنای «یا»، «¬» را به معنای نقیض، «⇒» را به معنای «آنگاه»، «∀» را به معنای «به ازای هر» و «E» را به معنای «وجود دارد» در نظر می‌گیریم.

اکنون تمام سه بنداشت نظریه گروه‌ها، در ساختارِ (N,+,1) جملاتی معنادار و واقعی قلمداد می‌شوند. مثلا بنداشت اول، چنین معنایی می‌یابد:

برای هر سه عدد طبیعی مانند x و y و z داریم:

x+(y+z)=(x+y)+z

و این جمله، واقعا درست است! چرا که عمل جمع در اعداد طبیعی خاصیت شرکت‌پذیری دارد.

بنداشت دوم، چنین معنایی می‌یابد:

برای هر عدد طبیعی مانند x داریم:

(x+1=1+x)

و نیز داریم:

(x+1=x)

اما این جمله غلط است! چون در جهان اعداد طبیعی، داریم: 3=1+2. در حالی که این جمله می‌گوید هر عدد طبیعی را که با 1 جمع کنی، خود آن عدد حاصل می‌شود.

بنداشت سوم، چنین معنایی می‌یابد:

برای هر عدد طبیعی مانند x، عددی طبیعی مانند y وجود دارد به طوری که:

(x+y=y+x)

و

(x+y=1)

اما این جمله هم غلط است! چرا که در جهان اعداد طبیعی، مثلا هیچ عددی وجود ندارد که وقتی با 5 جمع شود، حاصل 1 شود.

پس دیدیم که ساختارِ (N,+,1) تعبیر مناسبی برای دستگاه منطقی گروه‌ها است. نماد تابعیِ دومتغیره‌ی *، به شکل مناسبی به تابعی دو متغیره‌ی واقعی روی جهان اعداد طبیعی که همان تابعِ جمع است، نسبت داده شده‌ است و نماد ثابت e به طور مناسبی به شیئی واقعی در جهان اعداد طبیعی که همان عددِ طبیعیِ 1 است نسبت داده شده‌ است. و به تبع این‌ها، تمام جملاتی که در زبان L نوشته می‌شوند، و ماهیتی کاملا صوری و نمادین داشتند، به جملاتی واقعی در جهان اعداد طبیعی ترجمه می‌شوند؛ وقتی چنین اتفاقی بیفتد، یعنی ساختار مناسبی برای یک دستگاه منطقی معین شود، صحبت از درستی و غلطی نیز معنادار می‌شود. مثلا دیدیم که بنداشت اول نظریه گروه‌ها در جهان اعداد طبیعی درست بود، اما بنداشت دوم و سوم غلط بودند. فرضی فلسفی که در این‌جا آن را در نظر گرفته‌ایم، این است که در یک جهان واقعی، هر جمله خبری، یا درست است یا غلط، و نمی‌تواند همزمان هم درست باشد و هم غلط. و این فرض، تا اندازه زیادی با شهودمان هم‌خوانی دارد؛ مثلا ما این‌گونه تصور می‌کنیم که بالاخره در ساختار اعداد طبیعی، یا خاصیت شرکت‌پذیری برقرار است، یا برقرار نیست! و امکان ندارد که ساختار اعداد طبیعی، هم خاصیت شرکت‌پذیری داشته باشد، هم خاصیت شرکت‌‌پذیری نداشته باشد!

پرسش این‌جاست که آیا نماد * و e را می‌توانیم به چیزهای دیگری هم تعبیر کنیم؟ پاسخ مثبت است. مثلا می‌توانستیم ساختار (N,×,1) را در نظر بگیریم، که در آن × همان عمل ضرب معمولی اعداد طبیعی است؛ به عبارتی به جای آنکه نماد * را به تابع جمع در اعداد طبیعی تعبیر کنیم، آن را به تابع ضرب در اعداد طبیعی تعبیر کنیم؛ در این صورت، بنداشت اول و بنداشت دوم جملاتی درست در این ساختار هستند، اما بنداشت سوم، جمله‌ای غلط است.

آیا می‌توانیم جهانی پیدا کنیم که هر سه بنداشت دستگاه گروه‌ها در آن جهان، جملاتی درست باشند؟ پاسخ مثبت است؛ مثلا:

ساختار (Z,+,0) را که در آن + همان جمع معمولی اعداد صحیح، و 0 همان عدد صحیحِ صفر است در نظر بگیر.

در واقع، نماد تابعیِ * را به تابعِ جمع اعداد صحیح، و نماد e را به عدد صفر در اعداد صحیح تعبیر کرده‌ایم. در این ساختار، هر سه بنداشت نظریه گروه‌ها درست هستند. وقتی ساختاری پیدا می‌کنیم که تعبیرِ همه بنداشت‌های دستگاه منطقی مورد نظر در آن ساختار درست باشند، آن ساختار را یک «مدل» برای دستگاه منطقی می‌گوییم.

وقتی دستگاه گروه‌ها مورد نظر باشد، هر مدل برای دستگاه منطقی گروه‌ها را یک «گروه» می‌نامند. به عبارتی، گروه‌ها، دقیقا همان ساختارهایی هستند که مدلی برای دستگاه گروه‌ها باشند؛ به عبارتی، یک گروه، یک‌ جهان واقعی است که در آن همه بنداشت‌های نظریه گروه‌ها، جملاتی درست هستند.

مثلا ساختار (Q-{0},×,1) که در آن Q-{0} همان مجموعه اعداد گویا بدون عدد گویای صفر، × همان ضرب معمولی اعداد گویا و 1 همان عدد گویای یک است، یک گروه است؛ چرا که هر سه بنداشت نظریه گروه‌ها در این ساختار، جملاتی درست هستند. به عبارتی، این ساختار، مدلی برای نظریه گروه‌ها است.

ممکن است با خودت بگویی چرا همه این جهان‌ها، جهان‌های ریاضی هستند! یعنی یک زبان صوری نمی‌تواند در جهانی غیر از جهان‌های ریاضی تعبیر شود؟ پرسشت بجاست. پاسخش هم این است که هیچ ضرورتی ندارد که جهان در نظر گرفته شده برای یک زبان صوری، حتما یک جهان ریاضی باشد. اکنون مثالی می‌زنم و خیالت را راحت می‌کنم. همان دستگاه صوری گروه‌ها را در نظر بگیر. این بار، بیا مثلا به جای جهان اعداد طبیعی، جهان انسان‌ها را به عنوان جهان مورد بحث فرض کنیم. خب، لازم است نماد * را به یک تابع دو متغیره روی جهان انسان‌ها تعبیر کنیم. یعنی تابعی که دو انسان را به عنوان ورودی بگیرد، و یک انسان را به عنوان خروجی تحویل دهد. مثلا آن تابع، می‌تواند تابعِ f باشد که به شکل زیر تعریف می‌شود:

اگر a و b دو انسان باشند، آنگاه f(a,b) همان a است. پس این تابع، دو انسان را به عنوان ورودی می‌گیرد و انسان اول را به عنوان خروجی تحویل می‌دهد. مثلا:

f(شکسپیر,حافظ)=حافظ

نماد ثابت e را نیز باید به عضوی از جهان تعبیر کنیم. مثلا می‌توانیم e را به Hitler تعبیر کنیم. پس تا اینجا، تمام نمادهای زبان را به اشیائی واقعی در جهان انسان‌ها تعبیر کرده‌ایم. بیا ببینیم که با این تعابیر، معنای جملات صوری دستگاه گروه‌ها چه می‌شود.

تعبیر بنداشت اول دستگاه گروه‌ها، می‌شود جمله واقعی زیر:

به ازای هر سه انسان مانند a و b و c، داریم:

f(f(a,b),c)=f(a,(b,c))

خب، این جمله واقعا درست است! چون سمت چپ تساوی، بنا بر تعریف تابع f، برابر است با:

f(f(a,b),c)=f(a,c)=a

و سمت راست تساوی، بنا بر تعریف تابع f، برابر است با:

f(a,(b,c))=f(a,b)=a

تعبیر بنداشت دوم دستگاه گروه‌ها، می‌شود جمله واقعی زیر:

به ازای هر انسان مانند a داریم:

f(a , Hitler)=f(Hitler , a)

و نیز:

f(a , Hitler)=a

اما این جمله درست نیست!

زیرا اگر a را آقای Turing در نظر بگیریم،

تساویِ f(a , Hitler)=f(Hitler , a) برقرار نیست؛ چرا که بنا بر تعریف تابع f، سمت چپ تساوی برابر است با a، و سمت راست تساوی، برابر است با Hitler. و a همان Hitler نیست. a آقای Turing است و انسانی غیر از آقای Hitler است.

و در نهایت، تعبیر بنداشت سوم دستگاه گروه‌ها، می‌شود جمله واقعی زیر:

برای هر انسان مانند a، انسانی مانند b یافت می‌شود به طوری که:

f(a,b)=f(b,a)

و نیز:

f(a,b)=Hitler

خب روشن است که این جمله غلط است! چرا که اگر a را آقای Turing در نظر بگیریم و b را آقای Godel، بنا بر تعریف تابع f داریم:

f(Turing , Godel)=Turing

اما آقای Turing انسانی است غیر از آقای Hitler.

پس این ساختار، یک مدل برای دستگاه گروه‌ها نیست؛ به عبارتی دیگر، اگر جهان همه انسان‌ها را با P نشان دهیم، ساختارِ (P,f,Hitler) یک مدل برای دستگاه گروه‌ها نیست. زیرا وقتی بعضی از بنداشت‌های دستگاه گروه‌ها را در این ساختار تعبیر کنیم، جملاتی غلط بدست می‌آید.

اکنون که مثال‌های خوبی از ساختار دیدی، زمان مناسبی است تا مفهوم ساختار و مدل را به طور دقیق تعریف کنیم.


تعریف Lساختار:

فرض کن L={F₁, ... ,F₂, R₁, ... , Rₘ, C₁,...,Cₖ}. در این صورت چندتایی مرتبِ ?=(M,f₁,...fₙ,r₁,...rₘ,c₁,...cₖ) را یک Lساختار گویند، هرگاه M یک مجموعه غیر تهی باشد، و برای هرn≥i≥1 اگر Fᵢ یک نماد تابعی s متغیره باشد، fᵢ یک تابع از Mˢ (مجموعه همه sتایی‌های مرتب که هر مولفه از M انتخاب شده است) به M باشد، و برای هرm≥i≥1، اگر Rᵢ یک نماد رابطه‌ای d متغیره باشد، rᵢ زیرمجموعه‌ای از Mᵈ باشد، و در نهایت برای هر k≥i≥1 داشته باشیم cᵢ∈M.

در این صورت می‌گویند fᵢ یک تعبیر برای Fᵢ است، rᵢ یک تعبیر برای Rᵢ است و cᵢ یک تعبیر برای Cᵢ.


تعریف مدل:

فرض کن L یک زبان مشخص، و T مجموعه‌ای از جمله‌ها در L باشد. در این صورت، Lساختارِ ? را یک مدل برای T می‌گویند، هرگاه همه جملاتی که در T هستند، تعبیرشان در ? درست باشد.


با توجه به تعریف Lساختار و مدل، اگر به مثال دستگاه گروه‌ها برگردی، می‌توانی به سادگی تحقیق کنی که اگر L={*,e}، آنگاه (N,+,1)، (N,×,0)، (Z,+,0)، (Q-{0},×,1)

همگی Lساختار هستند که از بین آن‌ها، (Z,+,0) و (Q-{0},×,1) هر کدام مدلی برای T={a,b,c} هستند اما (N,+,1) و (N,×,0) هیچ کدام مدلی برای T نیستند.


اکنون آمادگی آن را داریم که دو قضیه اساسی منطق ریاضی، یعنی «قضیه صِحَت» و «قضیه تمامیت گودل» را بشناسیم. اما قبل از آن، لازم است یک مفهوم دیگر را معرفی کنم.


درستی:

فرض کن L مجموعه زبان باشد، T مجموعه‌ای از جمله‌ها باشد که در زبان L نوشته شده‌اند، و A جمله‌ای باشد که در زبان L نوشته شده است. می‌گویند جمله A در T «درست» است، هرگاه تعبیر جمله A در هر مدلِ T درست باشد. به عبارتی، A در T درست است، هرگاه تو هر جهانی را معرفی کنی که تعبیرِ همه‌ی جمله‌های T در آن درست باشد، تعبیر جمله A هم در آن جهان، درست باشد.


قضیه صِحَت(soundness):

فرض کن L مجموعه زبان باشد، T مجموعه‌ای از جمله‌ها باشد که در زبان L نوشته شده‌اند، و A جمله‌ای باشد که در زبان L نوشته شده است. در این صورت، اگر A در T یک قضیه باشد، آنگاه A در T درست است.


به عبارتی، قضیه صحت به ما این اطمینان را می‌دهد که اگر توانستیم با استفاده از قواعد منطق و استنتاج و بنداشت‌هایمان(T) جمله‌ A را اثبات کنیم (که این کار، کاری کاملا صوری و نمادین است)، آن جمله الزاما درست است. به این معنا که در هر جهانی که تعبیرِ بنداشت‌هایمان در آن درست باشد، تعبیر جمله A هم باید درست باشد. یا به طور خلاصه، «اگر جمله‌ای اثبات شود، آن جمله درست است».


قضیه صحت، ابزار خوبی برایمان فراهم می‌کند. با استفاده از این قضیه، می‌توانیم بفهمیم که بعضی جمله‌ها را هرگز نمی‌توان اثبات کرد! برای این‌که چنین پدیده‌ای را با چشمان خود ببینی، «دستگاه گروه‌ها» را در نظر بگیر. یعنی فرض کن L={*,e} و T={a,b,c} که در آن b ،a و c همان بنداشت‌های دستگاه گروه‌ها هستند. اکنون جمله زیر را در نظر بگیر:

A: ∀x∀y (x*y=y*x)

ادعا می‌کنم جمله A در T اثبات نمی‌شود. فرض کن جمله A در T اثبات شود (فرض خلف). در این صورت، بنا بر قضیه صحت، تعبیر جمله A باید در هر مدل از T درست باشد. اما می‌دانیم مدل‌های T دقیقا همان گروه‌ها هستند. بنابراین، تعبیر جمله A در هر گروهی، باید درست باشد. اما اگر تعبیر جمله A در یک گروه درست باشد، یعنی آن گروه جابه‌جایی است. پس هر گروهی باید جابه‌جایی باشد. این تناقض است؛ زیرا گروه‌هایی وجود دارند که جابه‌جایی نیستند. بنابراین فرض خلف باطل می‌شود.


در نتیجه، هر چقدر که تلاش کنی به گونه‌ای از جملات a و b و c و قواعد منطق و استنتاج، جمله A را اثبات کنی، موفق نخواهی شد؛ چرا که چنین چیزی غیرممکن است!

با استدلالی مشابه، می‌توان دید که جمله A¬ نیز در T اثبات نمی‌شود. زیرا اگر این جمله در T اثبات شود، بنا بر قضیه درستی، نتیجه می‌شود که هیچ گروهی جابه‌جایی نیست. اما این تناقض است؛ زیرا گروه‌هایی وجود دارند که جابه‌جایی هستند.

بنابراین، دستگاه گروه‌ها کامل نیست؛ چون جمله‌ای در زبان دستگاه گروه‌ها پیدا کردیم (جمله A) که نه خودش در نظریه گروه‌ها اثبات می‌شود، نه نقیضش.


اکنون پرسش منطقی دیگری مطرح می‌شود:

قضیه صحت می‌گوید که اگر جمله‌ای اثبات شود، درست است. آیا عکس قضیه صحت نیز برقرار است؟ به عبارتی، اگر جمله‌ای درست باشد، آیا حتما اثبات می‌شود؟ پاسخ مثبت است. در واقع، قضیه تمامیت گودل، این حقیقت را تضمین می‌کند.


قضیه تمامیت گودل (Gödel's completeness):

فرض کن L مجموعه زبان باشد، T مجموعه‌ای از جمله‌ها باشد که در زبان L نوشته شده‌‌اند، و A جمله‌ای باشد که در زبان L نوشته شده است. در این صورت، اگر A در T درست باشد، آنگاه A در T یک قضیه است.

به عبارتی، قضیه تمامیت گودل بیان می‌کند که اگر تعبیرِ جمله‌ای صوری در همه مدل‌های یک نظریه، درست باشد، آنگاه می‌توان به شکلی کاملا صوری، آن جمله را از جملات نظریه استنتاج کرد. مثلا نظریه گروه‌ها را در نظر بگیر. فرض کن در زبان L با استفاده از نمادهای * و e و هابندهای منطقی، جمله‌ای بنویسیم. اکنون فرض کن تعبیر این جمله در هر گروهی که در نظر بگیری، جمله‌ای درست باشد. در این صورت، قضیه تمامیت تضمین می‌کند که الزاما اثباتی (یادت باشد فرآیند اثبات، فرآیندی کاملا صوری و نمادین است) برای این جمله وجود دارد. جالب است به این موضوع دقت کنی که وقتی ما اثباتی معمولی مثلا در جبر انجام می‌دهیم، اغلب به طور ضمنی در حال استفاده از قضیه تمامیت گودل هستیم! مثلا فرض کن می‌خواهیم در دستگاه گروه‌ها جمله‌ای را اثبات کنیم. ما این کار را به شکلی صوری انجام نمی‌دهیم. بلکه از جهان‌های واقعی و بامعنا استفاده می‌کنیم؛ یعنی فرض می‌کنیم G (که یک ساختار واقعی ریاضی است) گروهی دلخواه باشد، نشان می‌دهیم حکم مورد نظر در G برقرار است. اگر چنین کنیم، بنا بر قضیه تمامیت، اطمینان می‌یابیم که برای این حکم، اثباتی کاملا صوری و منطقی نیز وجود دارد.

قضیه تمامیت، قضیه عجیبی است. معمولا برای آنکه قضیه تمامیت را اثبات کنند، یکی از معادل‌های آن‌ را که به «لمِ وجودِ مدل» معروف است اثبات می‌کنند. لم وجود مدل، از نظر منطقی همان قضیه تمامیت است. یعنی قضیه تمامیت لم وجود مدل را نتیجه می‌دهد و برعکس. اما لم وجود مدل بیان می‌کند که اگر در زبانی مانند L، تعدادی جمله بنویسی، و مطمئن باشی که از این جمله‌ها، تناقض نتیجه نمی‌شود، (نتیجه شدن تناقض به این معنی است که مثلا جمله‌ای مانند A پیدا شود که هم خود A از جملاتی که نوشتی استنتاج شود و هم نقیضِ A) در آن صورت حتما جهانی واقعی وجود دارد که تعبیر همه جمله‌هایی که نوشتی، در آن جهان درست است! به عبارتی، دستگاهی که نوشتی، مدل دارد.

خب، این پدیده‌ی عجیبی است! اگر روی کاغذ چند نماد بنویسی و فقط تناقض از این نمادها استنتاج نشود، حتما جهانی واقعی وجود دارد که تعبیر این نمادها در آن جهان، جملاتی درست هستند!

لم وجود مدل، یا همان قضیه تمامیت گودل، چنین ادعایی می‌کند و گودل این ادعا را در سال ۱۹۲۹ میلادی اثبات کرده است. به راستی چنین چیزی حقیقت دارد؟ اصلا چگونه می‌توان این ادعا را اثبات کرد؟ پیشنهاد می‌کنم اثبات قضیه تمامیت را ببینی، تا بفهمی فرآیند اثباتش به چه شکل است و چه حقایقی را پیشفرض گرفته است، سپس قضاوت کنی که آیا این اثبات قانع‌کننده هست یا نه.


دو قضیه صحت و تمامیت، به گونه‌ای، نحوشناسی و معناشناسی را به هم مرتبط می‌کنند و بین دو شاخه مهم منطق ریاضی، یعنی نظریه برهان و نظریه مدل، پلی می‌سازند.


نامه‌ی «فرآیند اثبات منطقی و قضیه‌های ناتمامیتِ گودل» و این نامه، شاید کمک کند تا بتوانی هنگام خواندن رساله‌ی منطقی-فلسفیِ ویتگنشتاین، کمی بیش‌تر از پیش بفهمی! به علاوه اگر محتویات این دو نامه را به نیکی درک کرده باشی، تا حدودی با «دستگاه‌های صوری» و «منطق ریاضی» که فرگه آن را پدید آورد و راسل، هیلبرت، گودل و بعضی دیگر از منطق‌دانان بزرگ قرن بیستم آن را پروراندند، آشنا شده‌ای و اکنون می‌توانی با درک بهتری، به مطالعه‌ی عمیق‌تری درباره این موضوعات بپردازی‌. کتاب «منطق ریاضی» از محمد اردشیر که به زبان فارسی چاپ شده، منبع مناسبی برای مطالعه دقیق‌ترِ منطق ریاضی است.


امیدوارم که این نامه برایت جذاب و سودمند واقع شده باشد. نظر خود را با من در میان گذار و اشکالاتِ نوشته‌ام را به من گوشزد کن. سپاسگزارم.

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