Modellazione di oggetti (OOP) nella teoria dei tipi dipendenti


13

Sono interessato alla modellazione di oggetti, dalla programmazione orientata agli oggetti, alla teoria dei tipi dipendenti. Come possibile applicazione, vorrei avere un modello in cui posso descrivere diverse caratteristiche dei linguaggi di programmazione imperativa.

Ho trovato un solo documento sulla modellazione di oggetti nella teoria dei tipi dipendenti, ovvero:
Programmazione orientata agli oggetti nella teoria dei tipi dipendenti di A. Setzer (2006)

Ci sono ulteriori riferimenti sull'argomento che mi sono perso e forse ci sono più recenti?

Esiste forse un'implementazione (cioè una prova) disponibile per un prover del teorema, come Coq o Agda?

Risposte:


6

Alcuni dei primi (?) Lavori svolti in quest'area furono di Bart Jacobs (Nimega) e Marieke Huisman. Il loro lavoro si basa sullo strumento PVS e si basava su una codifica coalgebraica delle classi (se ricordo bene). Guarda la pagina di pubblicazione di Marieke per i lavori nel 2000 e la sua tesi di dottorato nel 2001. Guarda anche i lavori di Bart Jacobs citati nel documento di A Setzer che menzioni.

A quei tempi, avevano qualcosa chiamato lo strumento LOOP, ma sembra essere svanito dalle internet.

Esiste una serie di seminari nota come FTfJP (tecniche formali per programmi simili a Java) che si occupa della verifica formale dei programmi OO. Indubbiamente parte del lavoro utilizza la teoria dei tipi dipendenti / la logica di ordine superiore. La serie di seminari dura da 14 anni.




2

Perché stai guardando la teoria dei tipi dipendenti per rappresentare OOP? Non possiamo modellare OOP in modo soddisfacente con calcoli non dipendenti? Ho un modello informale di come appare OOP, diciamo, quando tradotto in Sistema F (o Fω se si desidera supportare i generici), e non vedo dove entrerebbe in gioco la dipendenza tipo-valore.

I tipi dipendenti possono essere utilizzati, ad esempio, per dare un significato di livello inferiore ai tipi di dati algebrici. Probabilmente potresti fare una codifica di così basso livello delle funzionalità OO, ma non sono sicuro che sia meglio che aggiungere tipi di dati algebrici al tuo linguaggio di modellazione.

Forse vuoi dare una semantica statica più fine ai costrutti OOP attualmente non tipizzati, come instance_ofseguito da a cast. Vedo che la pirateria informatica di tipo dipendente è utile per ragionare staticamente su tali programmi; ma non sono sicuro che "modellerebbe" quelle operazioni che si concentrano sull'angolo dinamico, è qualcosa di più.


Questa non è una risposta alla domanda. Questo non è un forum di discussione.
Dave Clarke,
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.