Strukturální indukce je konstruktivní metoda matematického důkazu , která zobecňuje matematickou indukci (aplikovanou na přirozené řady) na libovolné rekurzivně definované částečně uspořádané kolekce. Strukturální rekurze je implementace strukturální indukce ve formě definice, důkazní procedury nebo programu , který poskytuje indukční přechod přes částečně uspořádanou množinu.
Zpočátku se metoda používala v matematické logice , nalezla uplatnění také v teorii grafů , kombinatorice , obecné algebře , matematické lingvistice , ale nejvíce se používala jako samostatně studovaná metoda v teoretické informatice [1] , kde se používá v otázkách sémantiky programovacích jazyků , formální verifikace , výpočetní složitosti , funkcionálního programování .
Na rozdíl od noetherovské indukce – nejobecnější formy matematické indukce aplikované na libovolné dobře podložené množiny – koncept strukturální indukce implikuje konstruktivní povahu, výpočetní implementaci. Opodstatněnost množiny je zároveň vlastností nezbytnou pro rekurzivní definovatelnost [2] , takže strukturální rekurzi lze považovat za konkrétní verzi noetherovské indukce [1] .
Využití metody se vyskytuje minimálně od 50. let 20. století, zejména v důkazu Losovy věty o ultraproduktech se používá indukce na konstrukci vzorce, přičemž samotná metoda nebyla výslovně nazývána zvláštním způsobem [3]. . Ve stejných letech byla metoda používána v teorii modelů pro důkazy nad řetězci modelů, má se za to, že právě s těmito důkazy souvisí výskyt termínu "strukturální indukce" [4] . Curry rozdělil všechny typy aplikací indukce v matematice do dvou typů – deduktivní indukce a strukturální indukce, přičemž klasickou indukci na přirozených číslech považoval za podtyp druhého zmíněného [5] .
Na druhou stranu, nejpozději počátkem 50. let 20. století byla metoda transfinitní indukce již rozšířena na libovolné částečně uspořádané množiny splňující podmínku přerušování rostoucích řetězců (což se rovná opodstatněnosti [6] ), přičemž Genkin odkazoval na možnost indukce „u některých typů, částečně uspořádaných systémů“ [7] . V 60. letech 20. století byla metoda zafixována pod názvem noetherovská indukce (analogicky s noetherovským prstencem , ve kterém je splněna podmínka přerušení rostoucích řetězců ideálů ) [8] .
Explicitní definici strukturální indukce, odkazující jak na rekurzivní definovatelnost, tak na noetherovskou indukci, podal koncem 60. let 20. století Rod Burstall [9] a v počítačové literatuře je označována jako zavedení metody [10] [ 11 ] .
Následně se v informatice objevilo několik směrů založených na strukturální indukci jako základním principu, zejména taková je strukturální operační sémantika programovacích jazyků Plotkin ( angl. Gordon Plotkin ) [12] , série induktivních metod formální verifikace. [13] [14] , strukturální rekurzivní dotazovací jazyk UnQL [15] . V 90. letech 20. století se v teoretické informatice rozšířila metoda koindukce , aplikovaná na nepodložené (obvykle nekonečné) struktury a považovaná za duální ke strukturální indukci [16] .
Vzhledem k širokému uplatnění v teoretické informatice a nedostatku odkazů v matematické literatuře se od 10. let 20. století má za to, že přidělení strukturální indukce jako speciální metody je typičtější pro informatiku než pro matematiku [17] .
Nejobecnější definice [18] [19] je zavedena pro třídu struktur (bez objasnění podstaty struktur ) s částečným řádovým vztahem mezi strukturami , s podmínkou minimálního prvku v a podmínkou přítomnosti pro každou zcela uspořádanou množinu všech přísně předcházející struktury: . Princip strukturální indukce je v tomto případě formulován následovně: jestliže splnění vlastnosti pro vyplývá z naplnění vlastnosti pro všechny struktury, které jí přesně předcházejí, pak je vlastnost splněna i pro všechny struktury třídy; symbolicky (v zápisu přirozených inferenčních systémů ):
.Rekurzivita v této definici je implementována množinou vnořených struktur: jakmile existuje způsob, jak určit odvození vlastností struktury na základě vlastností všech předcházejících, můžeme mluvit o rekurzivní definovatelnosti struktury.
V informatické literatuře je také běžná jiná forma definice strukturální indukce, zaměřená na rekurzi pomocí konstrukce [20] , je považována za třídu objektů definovaných nad určitou množinou atomárních prvků a množinou operací , přičemž každá objekt je výsledkem sekvenční aplikace operací na atomové prvky. V této formulaci princip říká, že vlastnost je vykonána pro všechny objekty , jakmile nastane pro všechny atomární prvky a pro každou operaci , provedení vlastnosti pro prvky následuje provedení vlastnosti pro :
.Roli relace dílčího řádu z obecné definice zde hraje relace inkluze konstrukcí: [21] .
Zavedení principu do informatiky bylo motivováno rekurzivní povahou datových struktur, jako jsou seznamy a stromy [22] . První Burstallův příklad nad seznamem je prohlášení o vlastnostech skládání seznamu s prvky typu dyadická funkce a prvek počátečního skládání ve spojení se zřetězením seznamu :
.Strukturální indukce v důkazu tohoto tvrzení se provádí z prázdných seznamů - if , pak:
levá strana podle definice zřetězení: , pravá strana podle definice konvoluce:a pokud seznam není prázdný a začíná prvkem , pak:
levá strana, podle definic zřetězení a skládání: , pravá strana, podle definice konvoluce a předpokladu indukce: .Indukční hypotéza je založena na pravdivosti tvrzení pro a inkluze .
V teorii grafů se strukturální indukce často používá k dokazování tvrzení o vícedílných grafech (pomocí přechodu z -partite na -partite), ve větách o amalgamaci grafů , vlastnostech stromů a lesů [23] . Dalšími strukturami v matematice, pro které se uplatňuje strukturální indukce, jsou permutace , matice a jejich tenzorové produkty , konstrukce z geometrických útvarů v kombinatorické geometrii .
Typickou aplikací v matematické logice a univerzální algebře je strukturální indukce na konstrukci vzorců z atomárních členů, například se ukazuje, že splnění požadované vlastnosti pro členy a implikuje , , a tak dále. Také, mnoho strukturální-induktivní důkazy v teorii automatů , matematická lingvistika pracuje na konstrukci rovnic; k prokázání syntaktické správnosti počítačových programů se hojně používá strukturální indukce na BNF definici jazyka (někdy dokonce vystupuje jako samostatný podtyp - BNF indukce [24] ).