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.