con slajdów

Transkrypt

con slajdów
Analiza programów komputerowych
Lista zadań nr 2
1. Na wykładzie (slajd 67) użyliśmy następującej definicji połączenia Galois: połączeniem
Galois nazywamy taką czwórkę hL, α, γ, M i, że hL, ⊑i i hM, ⊑i są kratami zupełnymi
oraz α : L → M i γ : M → L są funkcjami monotonicznymi spełniającymi warunek
α(l) ⊑ m ⇔ l ⊑ γ(m) dla wszystkich l ∈ L oraz m ∈ M .
Udowodnij, że hL, α, γ, M i jest połączeniem Galois wtedy i tylko wtedy, gdy hL, ⊑i
i hM, ⊑i są kratami zupełnymi oraz α : L → M i γ : M → L są funkcjami monotonicznymi spełniającymi warunki
γ ◦ α ⊒ λl.l
α ◦ γ ⊑ λm.m
tzn. dla wszystkich l ∈ L zachodzi γ(α(l)) ⊒ l oraz dla wszystkich m ∈ M zachodzi
α(γ(m)) ⊑ m.
2. Udowodnij, że funkcje i kraty zdefiniowane na wykładzie (slajd 69), tzn.
L = P(Trace)
M
= P(Var × Lab)
α(X) = SRD(X)
γ(Y ) = {trace | SRD(trace ) ⊆ Y }
tworzą połączenie Galois. Udowodnij, że α ◦ γ = λm.m. Czy γ ◦ α = λl.l?
3. Rozważmy dowolne połączenie Galois hL, α, γ, M i.
(a) Udowodnij, że α determinuje γ, tzn., że jeśli hL, α, γ ′ , M i jest połączeniem Galois,
to γ = γ ′ .
(b) Udowodnij, że γ determinuje α.
4. Podaj możliwie prosty przykład połączenia Galois, w którym α ◦ γ 6= λm.m
5. Rozważmy nastepujący (por. zadanie 1 z poprzedniej listy) program.
z:=1; while y>1 do z:=z*x; y:=y-1 od
Przeprowadź dla tego programu analizę osiągalności zmiennych w systemie annotated
base types (slajdy 74–77).
6. Przeprowadź analizę osiągalności zmiennych dla programu z poprzedniego zadania w systemie annotated type constructors (slajdy 81–83).
7. Udowodnij poprawność analizy osiągalności zmiennych w systemie annotated type constructors, tzn. udowodnij następujące twierdzenie.
Niech S będzie dowolnym programem języka While zdefiniowanego na wykładzie (slajd
X
73). Załóżmy, że osąd S : Σ −−→ Σ jest dowodliwy w systemie annotated type construcRD
tors. Wtedy dla dowolnej ścieżki obliczeń π postaci
hS0 , σ0 i −→ hS1 , σ1 i −→∗ hSn , σn i −→ σ
gdzie S = S0 , Si jest programem pozostałym do wykonania a σi jest stanem pamięci
po wykonaniu i kroków obliczeń, oraz Sn jest instrukcją końcową, zachodzą następujące
własności
• jeśli x ∈ X to zmienna x jest definiowana na ścieżce π, tzn. dla pewnego i program
Si zaczyna się instrukcją podstawienia pod x, oraz
• jeśli definicja hx, ℓi osiąga koniec ścieżki π (tzn. ostatnie podstawienie pod x na
ścieżce π jest postaci [x := a]ℓ ), to hx, ℓi ∈ RD.