Domanda

Il mio problema è: Definire una costruzione "ripeti fino" in termini di semantica denotazionale. Ho fatto un tentativo e ora ho bisogno di sapere se l'ho fatto bene.

Le condizioni sono: Ho usato la lingua "mentre" come specificato in "semantica con applicazioni" di Nielson & Nielson (1992) (PDF) (Worldcat). Non voglio usare l'aiuto della costruzione while.

Nella semantica denotazionale, siamo interessati all'effetto di un programma, piuttosto che a "come" viene eseguito. Ecco perché le funzioni semantiche sono definite in modo compositivo. Le definizioni corrispondenti per la semantica denotazionale (o "semantica in stile diretto") sono disponibili a pagina 86 nel libro di Nielson & Nielson (lo hanno reso disponibile su Internet).

Il mio approccio è: $$ mathcal {s} _ { text {ds}} lbrack lbrack text {ripetizione} s text {fino a} b rbrack rbrack = text {fix} f text {dove} F g = mathcal {s} _ { text {ds}} lbrack lbrack s rbrack rbrack circ text {cond} ( mathcal {b} lbrack lbrack b rbrack rbrack, rbrack, rbrack, rbrack, rbrack, rbrack, rbrack, MathCal {S} _ { text {ds}} lbrack lbrack s rbrack rbrack cirr g, id) $$

Come potresti vedere, il mio approccio è abbastanza simile alla definizione di whili, ma non riesco a vedere un errore in esso.

post scriptum: Bounty Dato e Second Edit: Sì, intendevo $$ mathcal {s} _ { text {ds}} lbrack lbrack text {ripetizione} s text {fino a} b rbrack rbrack $$. . errori di battitura corretto.

Nessuna soluzione corretta

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