Chcę tylko wyjaśnić, dlaczego typy przecięć są odpowiednie do scharakteryzowania klas normalizacji (silna, głowa lub słaba), podczas gdy inne systemy typów nie mogą. (prosty typ lub system F).
Kluczową różnicą jest to, że musisz powiedzieć: „jeśli mogę wpisać i M 1 → M 2, to mogę wpisać M 1 ”. Często nie jest to prawdą w typach nie przecinających się, ponieważ termin można powielić:M.2)M.1→ M2)M.1
( λ x . Mx x ) N→ MN.N.
a następnie wpisanie oznacza, że możesz wpisać oba wystąpienia N, ale nie tego samego typu, na przykład
M : T 1 → T 2 → T 3M.N.N.N.
Za pomocą typów skrzyżowań możesz przekształcić to w:
M : T 1 ∧ T 2 → T 1 ∧ T 2 → T 3
M.: T1→ T.2)→ T.3)N.: T1N.: T2)
a następnie kluczowy krok jest teraz naprawdę łatwy:
( λ x . M x x ) : T 1 ∧ T 2 → T 3M.: T1∧ T2)→ T.1∧ T2)→ T.3)N.: T1∧ T2)
so
( λ x . M x x ) N można wpisywać za pomocą typów przecięć.
( λ x . Mx x ) : T1∧ T2)→ T.3)N.: T1∧ T2)
( λ x . Mx x ) N
Teraz o typach związków: załóżmy, że możesz wpisać pomocą jakiegoś typu związku, a następnie możesz także wpisać λ x . x x, a następnie pobierz dla niektórych typów S , T 1 , … x : T 1 ∨ T 2 ∨ ⋯ ∨ T n ⊢ x x : S Ale wciąż musisz to udowodnić dla każdego i , x : T( λ x . x x ) ( λ y. y)λ x . x xS., T1, …
x : T1∨ T2)∨ ⋯ ∨ Tn⊢ x x : S
ja co wydaje się niemożliwe, nawet jeśli
S jest rodzajem związku.
x : Tja⊢ x x : SS.
Dlatego nie sądzę, aby można było łatwo scharakteryzować normalizację typów związków.