UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF 3230 Formell modellering og analyse av kommuniserende systemer Eksamensdag: 4. april 2008 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 7 sider. Vedlegg: Ingen Tillatte hjelpemidler: Alle trykte og skrevne Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. Legg vekt på å finne enkle og elegante løsninger! Poengtallene angitt i parentes for hver oppgave er veiledende. Alle svar skal begrunnes godt! English! This exam is given in English after the Norwegian part, from page 5 onwards. (Fortsettes på side 2.)
Eksamen i INF 3230, 4. april 2008 Side 2 Oppgave 1 Konfluens++ (10 poeng) Gitt følgende spesifikasjon: { f (x,x) = a, g(x) = f (x,g(x)), b = g(b)} 1. Har spesifikasjonen noen ikke-trivielle kritiske par? 2. Holder g(b) a i denne spesifikasjonen? 3. Holder g(b) g(a) i denne spesifikasjonen? 4. Er spesifikasjonen konfluent? Husk at alle svar skal bevises eller begrunnes godt! Oppgave 2 Innstikk-sortering ( Insertion Sort ) (14 poeng) I denne oppgaven skal vi definere den meget velkjente innstikk-sorterings-algoritmen ( insertion sort ) til å sortere en liste av heltall. Innstikk-sortering foregår som når du sorterer spillekort: (1) Du tar først ut det første kortet/elementet fra den usorterte listen og legger til den sorterte (og foreløpig tomme) listen; (2) deretter tar du ut neste kort/element (dvs., det kortet som nå er det første) fra den usorterte listen og legger på riktig plass i den sorterte listen; (3,...) så fortsetter denne prosedyren ved at du hele tiden fjerner det første kortet fra de gjenværende usorterte kortene og legger det inn på riktig plass i den sorterte listen, helt til det ikke er flere kort igjen i den sorterte listen. Vi bruker som vanlig følgende konstruktører for lister: sorts List NeList. subsorts Int < NeList < List. *** Constructors op nil : -> List [ctor]. op : List List -> List [assoc id: nil ctor]. op : NeList NeList -> NeList [assoc id: nil ctor]. I denne oppgaven skal du rett og slett definere en Maude funksjon op insertionsort : List -> List. som sorterer en liste ved bruk av algoritmen over. (Du skal følgelig ikke sortere på nytt de (del)listene som allerede er sortert.) (Fortsettes på side 3.)
Eksamen i INF 3230, 4. april 2008 Side 3 Oppgave 3 Akkumulert sum i en liste (5 poeng) Gitt liste-definisjonen i Oppgave 2, definér en funksjon op accsum : List -> List. hvor det i te elementet i den nye listen er lik summen av de i første elementene i den opprinnelige listen. For eksempel, accsum(1 6 3 1) skal returnere listen 1 7 10 11, mens accsum(9-2 5) skal returnere listen 9 7 12, og så videre. Oppgave 4 Likhetslogikk og induktive teoremer (9 poeng) 1. Er det generelt avgjørbart eller uavgjørbart hvorvidt E t(u 1,...,u n ) = t (u 1,...,u n ) holder for enhver sekvens u 1,...,u n av konstruktør-grunntermer i spesifikasjonen? (Her er t og t termer som kan inneholde forekomster av u i.) Dvs., t(u 1,...,u n ) = t (u 1,...,u n ) er et induktivt teorem i E. Bevis eller begrunn godt ditt svar. 2. Gitt spesifikasjonen fmod B is sort S. ops a b : -> S [ctor]. vars X Y : S. eq a = b. (a) Holder B X = Y? (b) Holder B x = y for ethvert par x,y av grunntermer? (Dvs., er x = y et induktivt teorem i B?) 3. Gitt spesifikasjonen fmod C is sort S. op a : -> S [ctor]. op f : S -> S [ctor]. op b : -> S. ops g h : S -> S. var X : S. eq f(g(x)) = f(h(x)). eq g(x) = h(x). eq f(g(a)) = h(b). eq f(g(f(x))) = g(x). eq h(x) = X. (a) Er f(g(x)) = g(f(x)) et induktivt teorem for C? Dvs., gjelder C f(g(x)) = g(f(x)) for enhver konstruktør-grunnterm x? (Fortsettes på side 4.)
Eksamen i INF 3230, 4. april 2008 Side 4 Lykke til! Peter C. Ölveczky (Fortsettes på side 5.)
Eksamen i INF 3230, 4. april 2008 Side 5 The Exam in English The following pages present the (same!) exam exercises in English. Emphasize simplicity and elegance in your solutions. All answers should be explained/justified. Exercise 1 Confluence, etc. (10 points) Given the following specification: { f (x,x) = a, g(x) = f (x,g(x)), b = g(b)} 1. Does the specification have non-trivial critical pairs? 2. Does g(b) a hold in the specification? 3. Does g(b) g(a) hold in the specification? 4. Is the specification confluent? Remember to prove/justify all your answers. Exercise 2 Insertion Sort (14 points) In this exercise you should define the well known insertion sort algorithm for sorting lists. Insertion sort works as when you get some cards and have to sort them: you take the (unsorted) cards one by one, and put them into the right place in your hand, which always remains sorted. That is, insertion sort works as follows: (1) You take the first card/element from the unsorted list and put it into the (so far empty) sorted list; (2) you then take the next card/element from the unsorted list and put it in the right place in the sorted list; (3) you then take the next element from the unsorted list and put it into the right place in the sorted list; (4,...) and so on, until there is no more element left to sort. We use, as usual, the following data type for defining lists: sorts List NeList. subsorts Int < NeList < List. *** Constructors op nil : -> List [ctor]. op : List List -> List [assoc id: nil ctor]. op : NeList NeList -> NeList [assoc id: nil ctor]. (Fortsettes på side 6.)
Eksamen i INF 3230, 4. april 2008 Side 6 In this exercise, you are just supposed to define a function op insertionsort : List -> List. that sorts a list using the insertion sort algorithm described above. (This implies that you should not sort once more a (sub)list that has already been sorted.) Exercise 3 Accumulated Sum in a List (5 points) Given the definition of the sort List in Exercise 2, in this exercise you should define in Maude a function op accsum : List -> List. which returns a new list of the same length as its argument, and where the ith element in the new list equals the sum of the first i elements of the original list. For example, accsum(1 6 3 1) should equal/return the list 1 7 10 11, while accsum(9-2 5) should return the list 9 7 12, and so on. Exercise 4 Equational Logic and Inductive Theorems (9 points) 1. Is it in general decidable whether or not E t(u 1,...,u n ) = t (u 1,...,u n ) holds for each list u 1,...,u n of constructor ground terms? (Here, t and t are terms that may contain occurrences of u i.) That is, t(u 1,...,u n ) = t (u 1,...,u n ) is an inductive theorem in E. Prove or justify your answer well. 2. Given the specification fmod B is sort S. ops a b : -> S [ctor]. vars X Y : S. eq a = b. (a) Does B X = Y hold? (b) Does B x = y hold for each pair x,y of ground terms? (That is, is x = y an inductive theorem in B?) 3. Given the specification fmod C is sort S. op a : -> S [ctor]. op f : S -> S [ctor]. op b : -> S. ops g h : S -> S. (Fortsettes på side 7.)
Eksamen i INF 3230, 4. april 2008 Side 7 var X : S. eq f(g(x)) = f(h(x)). eq g(x) = h(x). eq f(g(a)) = h(b). eq f(g(f(x))) = g(x). eq h(x) = X. (a) Is f(g(x)) = g(f(x)) an inductive theorem for C? That is, does C f(g(x)) = g(f(x)) hold for each constructor ground term x? Good luck! Peter C. Ölveczky