W przypadku kalkulatorów maszynowych, jeśli weźmiesz pod uwagę typy ujemne ( , × , → ), możesz włączać i wyłączać reguły eta praktycznie w dowolnym momencie, bez wpływu na zbieżność.1×→
W przypadku typów dodatnich (sum i par z eliminacją dopasowania do wzorca) sytuacja jest znacznie bardziej chaotyczna. Zasadniczo pytanie brzmi, czy termin ma formę eliminacji o zamkniętym zakresie, która pozwala kontekstom na interakcję w skomplikowany sposób z rozszerzeniem eta. Na przykład, jeśli ma typ A × B , to jego eta-ekspansja jest l e teA×B . Ale aby uzyskać teorię równań, której oczekiwałby teoretyk kategorii, należy wziąć pod uwagę konteksty C [ - ] i uogólnić równanie na C [ e ] ≡ l e tlet(a,b)=ein(a,b)C[−] (z oczekiwanymi ograniczeniami zakresu).C[e]≡let(a,b)=einC[(a,b)]
Myślę, że nadal możesz udowodnić wynik zbiegu, jeśli nie zezwolisz na konwersję dojazdów do pracy. Ale to jest pogłoska - sam nigdy tego nie próbowałem ani nie przeglądałem dokumentów dokumentujących to.
Ale tak naprawdę nie wiem nic o nietypowym rachunku lambda.
EDYCJA: Charles pyta o eta-redukcje. Jest to obiecujące dla tego rodzaju przykładu, którego szuka, ponieważ myślę, że ogólnie nie będą one wystarczająco silne, aby modelować pełną teorię równości, którą zilustruję prostym przykładem obejmującym booleany. Ekspansja eta dla booleanów to . (Redukcja eta jest oczywiście w innym kierunku).C[e]↦if(e,C[true],C[false])
Teraz rozważmy termin . Wskazując, że termin ten jest równoważny z i f ( e , fif(e,f,g)if(e,x,y) musi przejść przez eta spieniania, ponieważ trzeba wymienić e w jednym z jeżeli-to-elses połączeniu z t r ù e and f danego ł s e w celu doprowadzenia do p -redukcja. if(e,fx,gy)etruefalseβ
Według Johna C. Mitchella w Foundations of Programming Languages, zarówno w STLC, jak i w niepisanym rachunku lambda, reguła redukcji
pair (proj₁ P, proj₂ P) → P
przerywa konfluencję w połączeniu zfix
redukcją (lub, jak przypuszczam, patrząc na dowód), bez takich warunków dla nietypowego przypadku. To jest twierdzenie 4.4.19 (strona 272).źródło