Sistema di tipi basato sulla teoria degli insiemi ingenui


11

A quanto ho capito, in informatica i tipi di dati non sono basati sulla teoria degli insiemi a causa di cose come il paradosso di Russell, ma come nei linguaggi di programmazione del mondo reale non possiamo esprimere tipi di dati così complessi come "insieme che non contiene se stesso", possiamo dire che in pratica il tipo è un insieme infinito dei suoi membri in cui l'appartenenza all'istanza è definita da un numero di caratteristiche intrinseche a questo tipo / insieme (esistenza di determinate proprietà, metodi)? Se no quale sarebbe il controesempio?


1
Il paradosso di Russell non ha nulla a che fare con esso direttamente.
Andrej Bauer,

Risposte:


11

Il motivo principale per evitare insiemi nella semantica dei tipi è che un tipico linguaggio di programmazione ci consente di definire funzioni ricorsive arbitrarie. Pertanto, qualunque sia il significato di un tipo, deve avere la proprietà a virgola fissa. L'unico set con tale proprietà è il set singleton.

Per essere più precisi, un valore definito ricorsivamente di tipo (dove tipicamente è un tipo di funzione) è definito da un'equazione a virgola fissa dove può essere qualsiasi programma. Se viene interpretato come l'insieme ci aspetteremmo che ogni abbia un punto fisso. Ma l'unico set con questa proprietà è il singleton.vττv=Φ(v)Φ:τττTf:TTT

Naturalmente, potresti anche capire che il colpevole è la logica classica. Se lavori con la teoria degli insiemi intuizionisti, è coerente supporre che ci siano molti insiemi con proprietà a virgola fissa. In effetti, questo è stato usato per dare semantica al linguaggio di programmazione, vedi ad esempio

Alex Simpson, Adeguatezza computazionale per tipi ricorsivi in ​​modelli di teoria intuitiva dei set , In Annals of Pure and Applied Logic, 130: 207-275, 2004.


7

Il sottotipo semantico si basa su un'interpretazione teorica di tipi sottostante, in cui il sottotipo è un sottoinsieme. Il lavoro originale , credo, è di Castagna nel contesto del linguaggio di elaborazione XML CDuce. I tipi corrispondono a gruppi di documenti XML. Da allora le idee sono state riapplicate al calcolo e agli oggetti e alle classi di un calcolo .π


1
Ci sono precursori di Castagna. Molto tempo fa le persone utilizzavano già la relazione del sottoinsieme per modellare il sottotipo nei modelli PER. Lì un tipo corrisponde a una relazione di equivalenza parziale (PER) e il sottotipo è solo l'inclusione di tali relazioni.
Andrej Bauer,

4

Con alcune eccezioni (una che cita Dave Clarke), è difficile usare una semantica di tipo set-teorica. Il motivo è che l'astrazione dei dati non gioca molto bene con la semantica set-teorica.

α.ααU

[[α.αα]]=ΠXU.XX

UUXXXUα

α.αα


Neel, non credo che questa risposta abbia senso. Se la semantica del linguaggio è la semantica standard di tipo F, un compilatore potrebbe eseguire l'ottimizzazione in modo corretto, in base al sistema di tipi. Se la semantica è la semantica set-teorica, allora l'ottimizzazione non sarebbe corretta. Quale modello usi per i tipi non vi entra.
Sam Tobin-Hochstadt,

Sam, non capisco il tuo punto: sembra che tu sia completamente d'accordo con me! La semantica teorica set standard non può dimostrare che l'unico abitante di quel tipo sia l'identità, quindi è necessaria una semantica diversa.
Neel Krishnaswami,

1
@Neel: il problema che descrivi persiste anche quando ci allontaniamo dai set. La soluzione non è quella di cambiare la categoria di insiemi con qualcos'altro, ma di modellare la parametricità in modo diverso. Vale a dire, si deve usare la parametricità relazionale , come sono sicuro che tu sappia. Ma poi le cose vanno bene anche in set, se non sbaglio. L'unico "problema" con gli insiemi è la mancanza di punti fissi (sia a livello di valori ricorsivi che di tipi ricorsivi).
Andrej Bauer,

1
Ah, penso di capire perché sto confondendo te e Sam! Certamente non intendo implicare che non sia giusto usare un modello ingenuo di teoria degli insiemi, solo che questo modello spesso dà risposte inutili - ecco perché ho detto "difficile da usare" e non "sbagliato". Ovviamente puoi usare gli insiemi per costruire un modello utile (cioè, relazionalmente), ma poi non stiamo più interpretando i tipi come insiemi nel modo suggerito nella domanda. (Inoltre, come sapete, con il polimorfismo impredicativo non esiste un modello ingenuo, ma la parametricità è ancora significativa in senso predicativo.)
Neel Krishnaswami,

1
Penso che il tuo punto sia sulla corrispondenza tra la semantica: una semantica teorica impostata non è adatta al polimorfismo di tipo F del sistema F, perché ha abitanti inesprimibili. Ma questo non è un punto contro la semantica set-teorica, ma solo un'affermazione che la nostra semantica dovrebbe essere d'accordo. Se il nostro linguaggio ci permette di esprimere le funzioni di cui stai parlando (come fa Typed Racket, per esempio), allora potremmo volere la semantica teorica set.
Sam Tobin-Hochstadt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.