Co sprawia, że ​​język (i jego system typów) jest w stanie udowodnić twierdzenia o swoich terminach?


12

Niedawno próbowałem zaimplementować Cedille-Core Aarona , minimalistyczny język programowania zdolny do udowodnienia twierdzeń matematycznych na temat własnych terminów. Udowodniłem również indukcję dla typów danych zakodowanych na λ, co wyjaśniło, dlaczego jego rozszerzenia byłyby konieczne.

Nie mówiąc już o tym, wciąż zastanawiam się, skąd pochodzą te rozszerzenia. Dlaczego są tacy, jacy są? Co je usprawiedliwia? Wiem na przykład, że niektóre rozszerzenia, takie jak rekurencja, rujnują język jako system dowodów. Gdybym zdecydował się rozszerzyć CoC na inne prymitywy, jak mam to uzasadnić? Rozumiem, że dowód normalizacji jest konieczny, ale to nie dowodzi, że te prymitywne „mają sens”.

Krótko mówiąc, co konkretnie kwalifikuje język (i jego system typów) jako system zdolny do udowodnienia twierdzeń o własnych terminach?


Czytam blog, który był powiązany z tym pytaniem, ale nie mogę go teraz znaleźć :( Zawierał zdanie „System T wystarczy!” Lub coś w tym stylu i mówił o systemach typu zależnego.
Labbekak

2
Znalazłem: queuea9.wordpress.com/2010/01/17/… W rzeczywistości napisał to Aaron Stump, więc możesz już o tym wiedzieć.
Labbekak

Niestrzeżona rekurencja „rujnuje” język jako system dowodowy, a strzeżona rekurencja nie. Aby udowodnić, że prymitywy mają sens, powiedziałbym, że budujesz model. Aby udowodnić twierdzenia na temat własnych terminów, potrzebuje swego rodzaju izomorfizmu Curry'ego-Howarda i typu zależnego, aby rzeczy, które udowodnisz (typy), mogły mówić o twoich terminach.
xavierm02

Odpowiedzi:


5

[Następuje autoreklama, ale myślę, że jest to istotne.]

tututuv,(λx.x)vv

Oczywiście można również założyć równoważności, a istnieje kilka różnych form kwantyfikatorów (typowane / nietypowe, uniwersalne / egzystencjalne). Tego mechanizmu można użyć do uzasadnienia dowolnego programu (nie trzeba ich potwierdzać, że kończą, a nawet pisać). Jedynym ograniczeniem jest to, że programy używane jako dowody muszą zostać udowodnione przez system (arbitralna rekurencja ogólna prowadzi do niespójności).

Oto kilka referencji, jeśli chcesz to sprawdzić:

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.