• Non ci sono risultati.

Informatica

N/A
N/A
Protected

Academic year: 2022

Condividi "Informatica"

Copied!
5
0
0

Testo completo

(1)

Informatica — 2016-01-20

Nota: Scrivete su tutti i fogli nome e matricola.

Esercizio 1. Si dimostri la monotonia di ˆR.

Esercizio 2. Si consideri il predicato/relazione ternaria R ∈ P(N×N×N) induttivamente definito da

R(0, m, m)[R0] R(n, (n + 1) · m, r) R(n + 1, m, r) [R1]

1. [10%] Per ogni naturale 0 ≤ n ≤ 4, si trovi un valore r ∈ N tale che valga R(n, 1, r).

2. [20%] Definire una funzione f (n) tale per cui R(n, 1, f (n)) valga per ogni n ∈ N (non si chiede di dimostrarlo). Dopo, si generalizzi tale risultato definendo una funzione g(n, m) tale per cui R(n, m, g(n, m)) valga per ogni n, m ∈ N (non si chiede di dimostrarlo).

3. [70%] Usando la g precedentemente definita, si dimostri che

∀n, m, r ∈ N. R(n, m, r) =⇒ r = g(n, m)

procedendo per induzione su R(n, m, r), e menzionando esplicitamen- te i risultati teorici che si applicano nel ragionamento.

Soluzione (bozza).

Parte 1 Si ha R(0, 1, 1), R(1, 1, 1), R(2, 1, 2), R(3, 1, 6), R(4, 1, 24).

Parte 2 Basta prendere f (n) = n! e g(n, m) = n! · m.

Parte 3 Consideriamo la propriet`a / relazione p(n, m, r) = “r = g(n, m)00. L’enunciato da dimostrare si riscrive quindi come R ⊆ p. Si ha che R, per definizione, `e il minimo punto fisso di ˆR (dove R sono le regole forni- te). Quindi, per il principio di induzione, per potere avere R ⊆ p basta dimostrare che ˆR(p) ⊆ p, cio`e che p `e preservata da ogni regola di R.

Caso [R0]. Dobbiamo dimostrare p(0, m, m), cio`e che g(0, m) = m, e infatti 0! · m = 1 · m = m.

Caso [R1]. Per ipotesi induttiva, assumiamo p(n, (n + 1) · m, r), cio`e che r = g(n, (n + 1) · m) = n! · (n + 1) · m. Dobbiamo fare vedere che p(n + 1, m, r), cio`e che r = g(n + 1, m) = (n + 1)! · m. Ma questo segue dall’ipotesi induttiva siccome (n + 1)! = n! · (n + 1).

(2)

Esercizio 3. Si estenda IMP con il comando (dove 1 ≤ n ∈ N) select e in (e1, e01) → c1 , (e2, e02) → c2 , · · · , (en, e0n) → cn

avente la seguente semantica intuitiva. All’inizio si valutano tutte le espres- sioni e, ei, e0i. Se esiste un j ∈ {1 . . . n} tale per cui il valore di e si trova nell’intervallo [ej, e0j] si esegue il comando cj, dove j `e il minimo siffatto indice, e poi si riesegue tutto il select da capo. Se non esiste nessun j, il comando select non ha effetto.

1. [50%] Si formalizzi la semantica big-step →b del select con opportune regole di inferenza. (Sopra le regole, potete usare i puntini · · · per indicare una sequenza o insieme di elementi analoghi)

2. [30%] Si traduca il generico select di sopra in un comando equivalente in IMP non esteso. Potete supporre che i ci siano comandi di IMP, e che si possano usare condizioni complesse φ nel while e if (e non solo quelle della forma e 6= 0). Giustificate informalmente la traduzione.

3. [20%] Si definisca una o pi`u regole da aggiungere al sistema deduttivo per le triple di Hoare per il select, che ne preservi la correttezza. Se ne dia una descrizione breve ed informale.

Soluzione (bozza).

Parte 1

Sotto, sia s = (select e in (e1, e01) → c1 , · · · , (en, e0n) → cn).

he, σi →e v

he1, σi →e v1 he01, σi →e v10

· · ·

hen, σi →e vn he0n, σi →e vn0 v /∈ [v1, v10] · · · v /∈ [vn, vn0]

hs, σi →b σ [S − F alse]

he, σi →e v

he1, σi →e v1 he01, σi →e v10

· · ·

hen, σi →e vn he0n, σi →e vn0

v /∈ [v1, v10] · · · v /∈ [vj−1, v0j−1] v ∈ [vj, vj0] hcj; s, σi →b σ0

hs, σi →b σ0 [S − T rue]

2

(3)

Parte 2

Una possibile soluzione `e:

while (e1 ≤ e ∧ e ≤ e01) ∨ · · · ∨ (en ≤ e ∧ e ≤ e0n) do if (e1 ≤ e ∧ e ≤ e01) then c1

else if (e2 ≤ e ∧ e ≤ e02) then c2

. . .

else if (en ≤ e ∧ e ≤ e0n) then cn else skip

Parte 3

Sotto, sia s = (select e in (e1, e01) → c1 , · · · , (en, e0n) → cn).

{P ∧ e1 ≤ e ≤ e01} c1 {P }

{P ∧ ¬(e1 ≤ e ≤ e01) ∧ e2 ≤ e ≤ e02} c2 {P } . . .

{P ∧ (@j ∈ [1 . . . n − 1]. ej ≤ e ≤ e0j) ∧ en ≤ e ≤ e0n} cn {P } {P } s {P ∧ @j ∈ [1 . . . n]. ej ≤ e ≤ e0j}

La regola sopra pu`o essere vista come un adattamento delle regole dell’if e del while alla traduzione del select data sopra.

3

(4)

Nome Matricola

Esercizio 4. Si dimostri formalmente la validit`a della tripla di Hoare seguente riempiendo le linee sottostanti con opportune asserzioni.

{x = 5 ∧ y = 7}

while n > 0 do

x := x + 1;

y := y ∗ 2 + n;

n := n − 1

{x < y}

Giustificare qui sotto eventuali usi della regola P reP ost.

(5)

Soluzione (bozza).

{x = 5 ∧ y = 7}

{IN V : 0 ≤ x < y} (1) while n > 0 do

{0 ≤ x < y ∧ n > 0}

{0 ≤ x + 1 < 2y + n} (2) x := x + 1;

{0 ≤ x < 2y + n}

y := y ∗ 2 + n;

{0 ≤ x < y}

n := n − 1 {0 ≤ x < y ∧ n ≤ 0}

{x < y} (3) Per le PrePost:

La (1) `e immediata.

Per la (2), 0 ≤ x + 1 segue da 0 ≤ x. Inoltre, dalle ipotesi si ha 0 < y quindi 1 ≤ y e quindi x + 1 ≤ x + y < y + y < 2y + n, usando anche n > 0.

La (3) `e immediata: la tesi `e parte dell’ipotesi.

Riferimenti

Documenti correlati

attacco con acidi ed alcali, 4 caratteristiche degli idrossidi, 4 comportamento redox, 3 formazione di complessi, 4 reazioni analitiche, 4 sali poco solubili, 4 usi, 5.

Dobbiamo salvare gli scambi effettuati su A, per poterli applicare anche al termine noto in un secondo momento. Utilizziamo un’altra matrice P, inizialmente uguale

Quindi le funzioni di una variabile hanno grafico in R 2 (e nella II parte di questo corso abbiamo imparato a trovare il grafico di tali funzioni), le funzioni di due variabili

Se invece il gradiente secondo `e definito, ad esempio positivo, (e anche qui si riveda la definizione del termine) in tutte le direzioni i valori della funzione aumentano e pertanto

Esempio: la formula inserita in \lefteqn comincia alla pun- ta della freccia orientata verso destra → FORMULA ← e finisce alla punta della freccia orientata verso sinistra...

quando si vuole far visualizzare il nome del prodotto meno caro, e non il prezzo del prodotto meno caro, si usa una query annidata(la query interna serve per

Per un sistema omogeneo la prima alternativa non si realizza mai, dunque o esiste un’unica soluzione, la banale, o esistono infi- nite soluzioni.. Come conseguenza del teorema di

Nella parte relativa alle serie di funzioni, abbiamo visto che possi- amo sviluppare in serie di Taylor una funzione, se la funzione ammette derivate di tutti gli ordini in un punto