Domanda

Ho fatto una domanda prima, Il salvataggio nel Database, che era molto generale e sui requisiti per una prova quando si passa attraverso molti strati di non verificati, quali sistemi di rete e database.

In questa domanda che mi sto chiedendo un medio livello di prova, questa volta su come trasformare un oggetto $f :A o B$ con effetto collaterale $C$.Dire che ho come input una stringa $A$, e come output un Albero Di Sintassi Astratta (AST) $B$.Tutto questo accade in memoria con una piccola stringa di dire qualche KB.Ora, ignorando tutti i dettagli dell'implementazione hardware e tutti i dettagli di una particolare lingua.

Mi chiedo a un livello elevato di quello che ci vuole per provare qualcosa di simile a questo.In particolare ho voluto mettere a fuoco effetti collaterali in questa domanda.Dire durante il processo di analisi, si crea una globale tabella dei simboli per memorizzare le classi.Quindi, come siamo, di analisi attraverso il codice e ci incontriamo con la classe, si aggiunge alla tabella dei simboli.Così, invece di $f :A o B$, avremo:

\begin{align} f :A & o B\\ &\downarrow\\ &C \end{align}

Che è per la tabella dei simboli $C$ e AST di uscita di $B$.Da qualche parte nella funzione $f$ attuazione c'è un'altra funzione $g :\{C,c\} o C'$, che aggiunge il nuovo simbolo $c$ a $C$.

Quello che vorrei provare (in questa domanda, solo a un livello elevato, alcuni punti chiave) è che la funzione genera la tabella dei simboli $C$, anche se il uscita della funzione è l'AST $B$.In teoria di tipo, la prova di AST $B$ potrebbe eventualmente essere solo la sequenza di definizioni di tipo e trasformazioni, simile alla Logica di Hoare.Ma per dimostrare che la funzione $f$ ha effetti collaterali $C$ sembra molto difficile/complicato.

Sembra che devi andare e il passaggio attraverso l'algoritmo di un passo alla volta, e (supponendo che tutto è fortemente tipizzato), capire qual è lo "stato attuale", ecco come sarebbe a quel punto (di tutto il programma).Poi vuoi confrontare il tuo modello (l'affermazione del post-condizione se fosse la Logica di Hoare) con lo stato corrente del programma, a quel punto, per vedere se c'è una corrispondenza.E vedere se è rimasto fedele fino alla fine della funzione/algoritmo.Ma questa sorta di come sembra diventare Il Controllo Del Modello, che so solo le basi, non so se è corretto pensare.Inoltre, questa one-step-a-un-tempo di fare un passo attraverso l'algoritmo sembra programma simulazione, così chiedo se è vero o meno, o se la simulazione ha un ruolo qui.

Quindi mi chiedo, a un livello elevato, che è tenuto a dimostrare che la funzione $f$ genera un effetto collaterale $C$.Come specifica, mi permetto di scrivere "$f$ genera la tabella dei simboli $C$".

Nessuna soluzione corretta

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