O usłudze
PrzetłumaczoneJestem inżynierem dowodów i specjalizuję się w interaktywnym systemie dowodzenia twierdzeń Coq oraz jego języku specyfikacji Gallina. Moim zadaniem jest usunięcie frazy "prawdopodobnie działa" z twojego kodu i zastąpienie jej dowodem, który samodzielnie sprawdza maszyna. Mając algorytm, protokół lub stwierdzenie matematyczne, piszę jego specyfikację w Gallina, a następnie interaktywnie buduję dowód, że implementacja się z nim zgadza, obejmując wszystkie przypadki bez wyjątku. Nic nie jest brane na wiarę: każdy lemma jest wyprowadzana i ponownie sprawdzana przez kompilator coqc przy każdym budowaniu. Zwykle kontaktują się ze mną, aby formalnie udowodnić inwarianty struktur danych, uzasadnić zakończenie i poprawność funkcjonalną funkcji rekurencyjnych, zmechanizować twierdzenia z kombinatoryki, algebry lub logiki oraz modelować automaty skończone dla właściwości współbieżności i bezpieczeństwa. Biegle posługuję się językami taktycznymi Ltac i Ltac2, dyscypliną SSReflect wraz z biblioteką Mathematical Components, typami zależnymi, rekurencją dobrze ugruntowaną i predykatami indukcyjnymi. Gdy dowody się zbieżają, używam mechanizmu ekstrakcji Coq, aby uzyskać czysty kod wykonywalny w OCaml, który przenosi gwarancje dowodowe do produkcji; w razie potrzeby przygotowuję ekstrakcję do Haskella lub Schemy. Otrzymujesz udokumentowany rozwój Coq, który kompiluje się bez admit i zbędnych aksjomatów, czytelną specyfikację, wyodrębnione i przetestowane moduły oraz krótki raport na temat tego, co obiecują twierdzenia i gdzie leżą ich granice. Zmechanizowałem przejścia kompilatora, zweryfikowałem prymitywy arytmetyczne i kryptograficzne oraz przywróciłem skrypty dowodowe uszkodzone przez aktualizacje bibliotek. Jeśli potrzebujesz nie tylko próbki testowej, ale pewności, dostarczę ci wynik, który jest prawdziwy z definicji i pozostaje prawdziwy w miarę ewolucji kodu.