Domanda

Molti libri di testo coprono intersezione tipi nella lambda-calcolo. Le regole di battitura di intersezione possono essere definiti come segue (in cima al lambda-calcolo semplicemente digitato con sottotipizzazione):

$$ \ Dfrac {\ Gamma \ vdash M: T_1 \ quad \ Gamma \ vdash M: T_2} {\ Gamma \ vdash M: T_1 \ wedge T_2} (\ Cuneo I) \ Qquad \ qquad \ Dfrac {} {\ Gamma \ vdash M: \ top} (\ I top) $$

I tipi intersezione hanno proprietà interessanti per quanto riguarda la normalizzazione:

  • Un lambda-termine può essere digitato senza utilizzare il $ \ cima ho $ regola se e solo se è fortemente normalizzante.
  • Un lambda-termine ammette un tipo che non contiene $ \ top $ se e solo se ha una forma normale.

Che cosa succede se invece di aggiungere intersezioni, aggiungiamo i sindacati?

$$ \ Dfrac {\ Gamma \ vdash M: T_1} {\ Gamma \ vdash M: T_1 \ vee T_2} (\ Vee I_1) \ Qquad \ qquad \ Dfrac {\ Gamma \ vdash M: T_2} {\ Gamma \ vdash M: T_1 \ vee T_2} (\ Vee I_2) $$

fa il lambda calcolo con tipi semplici, sottotipizzazione e sindacati hanno alcuna proprietà simili interessante? Come possono i termini tipizzabili con l'unione essere caratterizzato?

È stato utile?

Soluzione

Nel primo sistema quello che si chiama sottotipizzazione sono queste due regole:

$$ \ dfrac {y, x: T_1 \ vdash M: S} {y, x: T_1 ? T_2 \ vdash M: S} (?E_1) \ quad \ dfrac {G, x: T_2 \ vdash M : S} {G, x: T_1 ? T_2 \ vdash M: S} (?E_2) $$

Essi corrispondono alle regole di eliminazione per $ ? $; senza di loro il $ connettivo ? $ è più o meno inutile.

Nel secondo sistema (con connettivi $ ? $ e $ ? $, ??a cui si potrebbe aggiungere anche un $ ? $), quanto sopra le regole di sottotipo sono irrilevanti, e credo che le regole di accompagnamento che avevi in ??mente sono le seguenti :

$$ \ dfrac {G, x: T_1 \ vdash M: S \ quad G, x: T_2 \ vdash M: S} {y, x: T_1 ? T_2 \ vdash M: S} (?E) \ quad \ dfrac {} {G, x: {?} \ vdash M: S} ({} ? E) $$

Per quel che vale, questo sistema permette di digitare $ O (?x I.): A ? A $ (utilizzando il $ {?} E $ regola), che non può essere digitato con solo tipi semplici, che ha una normale forma, ma non è fortemente normalizzante.


Pensieri casuali: (forse questa è la pena chiedere il TCS)

Questo mi porta a congetture che le proprietà relative sono qualcosa come:

  • un ?-termine $ M $ ammette un tipo che non contiene $ ? $ se e solo se $ MN $ ha una forma normale per tutti i $ N $, che ha una forma normale. ($ ? $ fallisce entrambi i test, ma quanto sopra ? termine passarli)
  • un ?-termine $ M $ può essere digitato senza utilizzare il $ {} ? E $ regola se e solo se $ MN $ è fortemente normalizzante per tutti fortemente normalizzante $ N $.

Esercizio:. dimostrare il torto

Inoltre sembra essere un caso degenerato, forse dovremmo considerare l'aggiunta di questo ragazzo nella foto. Per quanto mi ricordo, permetterebbe di ottenere $ A ? (A ? {?}) $?

Altri suggerimenti

voglio solo spiegare perché tipi intersezione sono ben adattato per caratterizzare classi di normalizzazione (forte, testa o debole), mentre altri sistemi di tipo non possono. (Semplicemente digitato o il sistema F).

La differenza chiave è che hai da dire: "Se posso digitare $ M_2 $ e $ M_1 ? M_2 $ allora posso digitare $ M_1 $". Questo spesso non è vero in tipi non-intersezione perché il termine può essere duplicato:

$$ (\ lambda x.Mxx) N ? MNN $$

e quindi digitando $ MNN $ significa che è possibile digitare entrambe le occorrenze di $ N $, ma non con lo stesso tipo, ad esempio, $$ M: T_1 ? ? T_2 T_3 \ qquad N: T_1 \ qquad N: T_2 $$ Con i tipi di intersezione è possibile trasformare questo in: $$ M: T_1 \ wedge T_2 ? T_1 \ cuneo T_2 ? T_3 \ qquad N: T_1 \ wedge T_2 $$ e poi il passo cruciale ora è davvero facile: $$ (\ lambda x.Mxx): T_1 \ wedge T_2 ? T_3 \ qquad N: T_1 \ wedge T_2 $$ quindi $ (\ lambda x.Mxx) N $ può da tipizzato con i tipi intersezione.

Ora sui tipi di unione: supponiamo che è possibile digitare $ (\ lambda x.xx) (\ lambda aa) $ con un certo tipo unione, allora si può anche digitare $ \ lambda $ x.xx e quindi ottenere per alcuni tipi $ S, T_1, \ dots $ $$ x: T_1 \ vee T_2 \ vee \ dots \ vee T_n ?xx: S $$ Ma si devono ancora dimostrare che per ogni $ i $, $ x: T_i?xx: S $ che sembra impossibile anche è di $ S $ è un tipo di unione.

Questo è il motivo per cui non credo che ci sia una caratterizzazione facile sulla normalizzazione per i tipi di unione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top