Falujący

W informatyce , w szczególności w zautomatyzowanym dowodzeniu twierdzeń , falowanie odnosi się do grupy heurystyk metapoziomowych , opracowanych głównie w Grupie Rozumowania Matematycznego w Szkole Informatyki na Uniwersytecie w Edynburgu i najczęściej używanej do prowadzenia dowodów indukcyjnych w zautomatyzowanych systemy dowodzenia twierdzeń . Falowanie można postrzegać jako ograniczoną formę systemu przepisywania , gdzie stosowane są specjalne adnotacje na poziomie obiektu, aby zapewnić zapłodnienie po zakończeniu przepisywania, z wymogiem zmniejszającym miarę zapewniającym zakończenie dowolnego zestawu reguł i wyrażeń przepisywania.

Historia

Raymond Aubin był pierwszą osobą, która użyła terminu „falowanie” podczas pracy nad swoją rozprawą doktorską z 1976 roku na Uniwersytecie w Edynburgu. Rozpoznał powszechny wzorzec ruchu na etapie przepisywania dowodów indukcyjnych. Alan Bundy wywrócił później tę koncepcję do góry nogami, definiując falowanie jako wzorzec ruchu, a nie efekt uboczny. [ potrzebne źródło ]

Od tego czasu ukuto określenia „falowanie na boki”, „falowanie w” i „falowanie przeszłości”, więc termin ten uogólniono na falowanie. [ potrzebne źródło ] Od 2007 roku Rippling jest nadal rozwijany w Edynburgu i gdzie indziej.

Falowanie zastosowano do wielu problemów tradycyjnie postrzeganych jako trudne w środowisku dowodzącym twierdzeń indukcyjnych, w tym do twierdzeń granicznych Bledsoe’a [ potrzebne źródło ] i dowodu działania mikroprocesora Gordona, [ potrzebne źródło ] miniaturowego komputera opracowanego przez Michaela JC Gordona i jego zespół w Cambridge.

Przegląd

Bardzo często, próbując udowodnić twierdzenie, otrzymujemy wyrażenie źródłowe i wyrażenie docelowe, które różnią się jedynie dodatkiem kilku dodatkowych elementów składniowych.

Jest to szczególnie prawdziwe w dowodach indukcyjnych , gdzie dane wyrażenie przyjmuje się za hipotezę indukcyjną , a wyrażenie docelowe za wniosek indukcyjny. Zwykle różnice między hipotezą a wnioskiem są jedynie niewielkie i mogą obejmować włączenie funkcji następczej (np. +1) wokół zmiennej indukcyjnej.

Na początku falowania identyfikowane są różnice między tymi dwoma wyrażeniami, zwane w języku falującym frontami fal. Zazwyczaj różnice te uniemożliwiają ukończenie dowodu i należy je „odsunąć”. Do docelowego wyrażenia dodano adnotację, aby rozróżnić fronty falowe (różnice) i szkielet (wspólną strukturę) pomiędzy dwoma wyrażeniami. Specjalne reguły, zwane regułami falowymi, mogą być następnie użyte w kończący do manipulowania wyrażeniem docelowym, dopóki wyrażenie źródłowe nie będzie mogło zostać użyte do zakończenia dowodu.

Przykład

Naszym celem jest pokazanie, że dodawanie liczb naturalnych jest przemienne . Jest to własność elementarna i dowód przeprowadza się za pomocą indukcji rutynowej. Niemniej jednak przestrzeń poszukiwań takiego dowodu może być dość duża.

Zazwyczaj podstawowy przypadek dowolnego dowodu indukcyjnego rozwiązuje się metodami innymi niż falowanie. Z tego powodu skupimy się na przypadku krokowym. Nasz przypadek krokowy ma następującą postać, w której zdecydowaliśmy się użyć x jako zmiennej indukcyjnej:

Rippling step case.png

Możemy także posiadać kilka reguł przepisywania, zaczerpniętych z lematów, definicji indukcyjnych lub innych źródeł, które można wykorzystać do utworzenia reguł falowych. Załóżmy, że mamy następujące trzy reguły przepisywania:

Rippling rewrite rules.png

następnie można je opatrzyć adnotacjami, tworząc:

Rippling wave rules.png

Zauważ, że wszystkie te reguły z adnotacjami zachowują szkielet (x + y = y + x w pierwszym przypadku i x + y w drugim/trzecim). Teraz, opisując przypadek kroku indukcyjnego, otrzymujemy:

Rippling annotated step case.png

I jesteśmy gotowi do wykonania falowania:

Rippling ripple.png

Należy zauważyć, że ostateczne przepisanie powoduje zniknięcie wszystkich frontów fal i możemy teraz zastosować zapłodnienie, czyli zastosowanie hipotez indukcyjnych, aby zakończyć dowód.

Dalsza lektura