استقرای ساختاری
استقرای ساختاری روشی است که برای اثبات کردن قضایا از آن استفاده می‌شود که در منطق ریاضی (به عنوان مثال، در اثبات قضیه لس)، علوم کامپیوتر، نظریه گراف، و برخی دیگر از زمینه‌های ریاضی کاربرد دارد. این استقرا یک تعمیم از استقراء ریاضی روی اعداد طبیعی است، و می‌تواند به‌طور قراردادی به استقرای Noetherian تعمیم داده شود. روش بازگشت ساختاری یک روش بازگشتی است که ارتباط آن با استقرای ساختاری همانند ارتباط یک رابطه بازگشتی ساده با یک رابطه استقرای ریاضی ساده است.
استقرای ساختاری برای اثبات برخی گزاره‌های (P(x، که به ازای همهٔ xهای نوعی از ساختارهای تعریف شده به صورت بازگشتی مانند لیست‌ها یا درختان صحیح است، استفاده می‌شود. یک ترتیب جزئی کامل بر ساختارها ("زیرلیست" برای لیست‌ها و "زیر درخت" برای درختان) تعریف شده‌است. روش اثباتی استقرای ساختاری ثابت می‌کند که گزاره برای تمام ساختارهای مینیمال صحیح است، و در صورتی که این روش برای زیرساخت¬های بلافاصله یک ساختار خاص مانند S برقرار باشد آنگاه می¬بایست برای خود S نیز برقرار باشد.
یک تابع بازگشتی ساختاری ازهمان ایده که برای تعریف یک تابع بازگشتی به کار برده می‌شود، استفاده میکند: حالات پایه که هر یک از ساختارهای مینیمال را رسیدگی می‌کنند و یک قانون برای بازگشت. رابطه بازگشتی ساختاری معمولاً بوسیله استقرای ساختاری ثابت می‌شود؛ در موارد خاص آسان ،معمولاً از گام استقرا صرف نظر می‌شود. طول(length) و توابع ++ در مثال زیر روابط ساختاری بازگشتی‌اند. برای مثال، اگر ساختارها به صورت لیست باشند، لیستی معمولاً ترتیب جزئی 'حالت پایه و/ یا بیش از یک حالت استقرا، بسته به اینکه چگونه تابع یا ساختار ساخته شده است، وجود داشته باشد. در آن موارد، اثبات استقرای ساختاری برخی از گزاره‌های (P(L شامل: الف) اثبات این که (P(BC، برای هر حالت پایه BC درست است. و ب) اثبات این که اگر (P(l برای برخی از موارد l درست باشد، وM بتواند از l با یک بار امتحان کردن هر یک از قواعد بازگشتی به دست بیاید، پس (P(M نیز باید درست باشد، می‌شود.
شجره نامه یک ساختار داده شناخته شده‌است که پدر و مادر، پدربزرگ و مادربزرگ، و اجداد یک فرد را تا آنجا که شناخته شده باشند نشان می دهد و به صورت بازگشتی تعریف می‌شود: به عنوان مثال، ویژگی " یک شجره نامه که بیش از g نسل را گسترش می دهد حداکثر 2g-1 نفر را نشان می دهد" را می‌توان با استقرای ساختاری ثابت کرد که به شرح زیر است: پس می‌توان فرض کرد، p ≤ 2g – 1 و q ≤ 2h – 1، که در آن g و h نشان دهنده تعداد نسل‌هایی است که زیردرخت‌های پدر و مادر به ترتیب گسترش می دهند، و p و q نشان دهنده تعداد افرادی است که آن‌ها نشان می دهند.
به عنوان مثالی رسمی تر، ویژگی مربوط به لیست‌های زیر را در نظر بگیرید:
در اینجا ++ نشان دهنده عمل الحاق لیست هاست وL و M لیست می‌باشند. به منظور اثبات این ویژگی، ما تعاریف طول(length) و عمل الحاق(++) را نیاز داریم. قرار دهید (h : t) که لیستی را که سر (عنصر اول) آن h و دم (فهرست عناصر باقی مانده) آن T است نشان می دهد، و اجازه دهید [] نشان دهنده ی لیست خالی باشد. تعاریف طول(length) و عمل الحاق(++) عبارتند از:
گزاره (P(l ما برابراست با EQ برای همه لیست‌های M درست است اگر L برابر l باشد. می خواهیم نشان می دهیم که (P(l برای همه لیست‌های l درست است. ما این کار را با استقرای ساختاری بر لیست‌ها ثابت خواهیم کرد. ابتدا ثابت می‌کنیم که ([])P درست است. که در واقع برابر است با، EQ درست است برای همه لیستهای M زمانی که L برابر لیست خالی [] است. EQ را به صورت زیردر نظر بگیرید: بنابراین این بخش از قضیه ثابت شد. EQ برای همه Mها درست است، هنگامی که L برابر [] است، چرا که سمت چپ و سمت راست برابرند. سپس، هر لیست مخالف تهی I را در نظر بگیرید. از آنجا که l مخالف تهی است، پس یک سر، x ، و یک لیست دم، xs ، دارد. بنابراین ما می‌توانیم آن را به عنوان (x: xs) بیان کنیم. فرض استقرا این است که EQ برای تمام مقادیر M زمانی است که L برابر xs است درست باشد:
میخواهیم نشان دهیم که در صورت برقراری این شرایط EQ برای تمام مقادیر M هنگامی که (L = I = (x: xs درست است.همانند قبل ادامه می دهیم:
بنابراین، ما بوسیله ی استقرای ساختاری، به دست آوردیم که (P(L برای همه لیست‌های L درست است . همانگونه که استقرای ریاضی استاندارد معادل "اصل خوش ترتیبی" است، استقرای ساختاری نیز معادل یک "اصل خوش ترتیبی" است. اگر مجموعه ی تمام ساختارهای نوعی خاص یک ترتیب جزئی کامل را بپذیرد ، پس هر زیر مجموعه ناتهی باید دارای یک عنصر مینیمال باشد.(این تعریف کامل است.) اهمیت این لم در این زمینه، آن است که به ما اجازه می دهد تا استنباط کنیم که اگر هر گونه مثال نقضی برای قضیه‌ای که می خواهیم اثباتش کنیم وجود داشته باشد، پس باید یک مثال نقض مینیمم وجود داشته باشد. اگر ما بتوانیم نشان دهیم که وجود مثال نقض مینیمم دلالت می‌کند بر وجود مثال نقض‌های حتی کوچکتر، ما یک تناقض (هنگامی که مثال نقض مینیمم، کوچکترین نیست) داریم و در نتیجه مجموعه مثالهای نقض باید خالی باشد. به عنوان مثالی از این نوع استدلال، مجموعه‌ای از تمام درختان دودویی را در نظربگیرید. ما نشان خواهیم داد که تعداد برگ‌ها در یک درخت دودویی کامل یکی بیشتر از تعداد گره‌های داخلی آن است. فرض کنید یک مثال نقض وجود داشته باشد؛ پس باید یک درخت کامل با حداقل تعداد گره‌های داخلی ممکن وجود داشته باشد. این مثال نقض، C، دارای n گره داخلی وl برگ است، که در آن l ≠ n + 1 . علاوه بر این، C باید غیر بدیهی باشد، چرا که درخت بدیهی دارای n = 0 و L = 1 است و بنابراین، این یک مثال نقض نیست. در نتیجه C حداقل یک برگ که پدر آن یک گره داخلی است، دارد. حذف این برگ و پدر آن از درخت، گره برادر برگ را به موقعیت ای که قبلاً توسط پدر گره اشغال شده بود انتقال می‌دهد. این هر دوی n و l را یک واحد کاهش می دهد ، پس درخت جدید نیز دارای n + 1 ≠ l و بنابراین دارای یک مثال نقض کوچکتر است. اما بنابر فرض، C در حال حاضر کوچکترین مثال نقض بود. لذا این فرض که هرگونه مثال نقضی برای شروع وجود دارد می¬بایست فرض نادرستی باشد. "ترتیب جزئی که توسط 'کوچکتر' در اینجا گفته شد بیان می‌کند که S