Przydatne może być szybkie podanie kontrprzykładu CR w kalkulacjach maszynowych za pomocą i :ηβη
t = λ x : . ( λ y: B . y ) x
I mamy
i
t → r | X T : B . y
t →βλ x : . x
t →ηλ y: B . y
Natychmiastowe jest, że jeśli , to dwa wynikowe warunki są w rzeczywistości równoważne, ale nie ma powodu, aby tak się działo, na warunkach nietypowych .αA≡Bα
W przypadku wpisywanych terminów jest całkiem jasne, że musi być równe aby wynikowy termin był dobrze wpisany. Duża trudność, która się pojawia, jest następująca:B tABt
W przypadku systemów o typie zależnym należy sprawdzić konfluencję przed zachowaniem typu!
Wynika to z faktu, że potrzebujesz właściwości -injectivity
w celu udowodnienia inwersji, która jest wymagana do udowodnienia zachowania / ograniczenia podmiotu.Π
Πx:A.B=βηΠx:A′.B′ ⇔ A=βηA′∧B=βηB′
Nie możesz więc nawet udowodnić, że zachowują typy bez zbiegu, ale zbieżność nawet nie utrzymuje niepoprawnych / źle wpisanych terminów!βη
Wyłamanie się z tego błędnego koła wymaga pewnych technicznych sztuczek, które trudno tutaj streścić, ale zapewne najprostszym do zrozumienia jest po prostu przestanie być zainteresowanym redukcjami, ale zamiast tego skoncentruj się na -expansions :r | T → r | * λ x : . t xηηt→η∗λx:A.t x
Oczywiście, musisz ograniczyć tę regułę do terminów nie stosowanych i niestosowanych, aby nawet mieć nadzieję na zakończenie, ale z tymi ograniczeniami wydaje się, że zachowanie redukujące jest znacznie lepiej zachowane, a metaororia działa bez zbyt dużo problemów. Dobrym odniesieniem wydaje się być Neil Ghani, Eta-Expansions in The Dependent Type Theory .λ
Inne, a ostatnio dość popularne podejście, opisuje Abel, Untyped Algorytmic Equality dla Martin-Löf's Logical Framework with Surjective Pairs .