UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF 3230 Formell modellering og analyse av kommuniserende systemer Eksamensdag: 8. juni 2012 Tid for eksamen: 9.00 13.00 Oppgavesettet er på 7 sider. Vedlegg: Tillatte hjelpemidler: Ingen vedlegg Alle trykte og skrevne Kontroller at oppgavesettet er komplett før du begynner å besvare spørsmålene. Oppgavene og deloppgavene kan til en stor grad løses uavhengig av hverandre. Om det er en deloppgave du ikke har løst, så kan du anta at du har løst den og kan prøve å gå videre i settet. Legg vekt på å finne enkle og elegante løsninger! Poengtallene angitt i parentes for hver oppgave er veiledende. Alle svar skal begrunnes godt! Alle hjelpefunksjoner, sorter, etc., du trenger må selvfølgelig defineres fullt ut. English! This exam is given in English after the Norwegian part, from page 5 onwards. (Fortsettes på side 2.)
Eksamen i INF 3230, 8. juni 2012 Side 2 Oppgave 1 Likhetsspesifikasjoner (68 poeng) Gitt følgende datatype for bit-sekvenser: sort Bit. ops 0 1 : -> Bit [ctor]. sort Bits. op e : -> Bits [ctor]. op : Bits Bit -> Bits [ctor]. 1a Funksjoner (9 poeng) Definér i Maude en funksjon op neg : Bits -> Bits. som snur hvert bit i en Bits (dvs. gjør om hver 0 til 1, og hver forekomst av 1 til 0 ). Eksempelvis skal neg(e 1 0 1 0 1 1) gi e 0 1 0 1 0 0. Definér så i Maude en funksjon op _xor_ : Bits Bits -> Bits. som du kan anta tar to Bits av samme lengde og slår dem sammen med en bitwise xor. Dvs, hvis bit nummer k i bits1 og i bits2 er det samme elementet, så skal bit nummer k i bits1 xor bits2 være 0, ellers skal bit nummer k i bits1 xor bits2 være 1. Eksempelvis skal (e 0 0 1 1) xor (e 0 1 0 1) være lik e 0 1 1 0. Viktig: Du skal ikke benytte noen innebygde/predefinerte funksjoner (som if_then_else_fi, _==_, etc.) for å løse deloppgave 1a. 1b lpo/mpo (8 poeng) Bruk den leksikografiske stiordningen eller multisett stiordningen til å bevise at din spesifikasjon er terminerende. (Du kan se bort fra sort-informasjon, siden spesifikasjonen din bør være terminerende selv når man ser bort fra sorter.) 1c Konfluens (6 poeng) Bevis (eller begrunn meget godt ) at din spesifikasjon er konfluent. (Du kan nok engang se bort fra sort-informasjon (eller begrunne hvorfor din spesifikasjon ikke er konfluent når man ser bort fra sort-informasjon, men konfluent når sortene tas i betraktning).) (Fortsettes på side 3.)
Eksamen i INF 3230, 8. juni 2012 Side 3 1d Likhetslogikk (11 poeng) La oss anta at vår spesifikasjon er E og at den inneholder en variabel BITS av sort Bits. Er det slik at E neg(neg(bits)) = BITS? Bevis svaret. 1e Induktive teoremer (12 poeng) Er det slik at E neg(neg(bits)) = bits for enhver konstruktør-grunnterm bits av sort Bits? Bevis svaret. 1f Sortering (9 poeng) Definér i Maude en funksjon op sort : Bits -> Bits. som sorterer en gitt liste (dvs., setter alle 0 ene først og alle 1 erne til slutt). For eksempel skal sort(e 0 1 1 0 1 1 0) være lik e 0 0 0 1 1 1 1. 1g Addere binære tall (13 poeng) Nå ser vi på et Bits-element som et binært tall på vanlig måte (dvs., e 1 0 0 1 0 representerer tallet 18, e 1 0 0 representerer tallet 4, osv.). Definér en slik funksjon op add : Bits Bits -> Bits. som adderer binære tall (muligens av ulike lengde) på vanlig måte. Eksempelvis skal add(e 1 1, e 1 1) (3+3) være lik e 1 1 0 (6), mens add(e 1 1 1 1 0 0 1 1 1, e 1 1 1 1) skal være lik e 1 1 1 1 1 0 1 1 0, osv. Med andre ord så er det greit å huske mente -bitet. Oppgave 2 Terminering (36 poeng) Vi ser på systemet S 1 = {f(h(h(x))) = f(f(h(f(h(f(x)))))), f(f(f(x))) = f(h(f(x)))}. 2a Terminering? (6 poeng) Er S 1 terminerende? Begrunn hvorfor/hvorfor ikke. (God argumentasjon er tilstrekkelig; fullt detaljert formelt bevis kreves ikke.) 2b Forenklingsordninger (5 poeng) Finnes det en forenklingsordning som kan brukes til å bevise at S 1 terminerer? (Fortsettes på side 4.)
Eksamen i INF 3230, 8. juni 2012 Side 4 2c Vekter (9 poeng) Det kunne her vært fristende å bruke en vektfunksjon w til å vise terminering, hvor vekten w(t) til en grunnterm t er paret ( antall h-nabopar i t, antall f er i t ). Er denne vektfunksjonen monoton? Her kreves et detaljert bevis; eventuell henvisning til kompendiet er ikke tilstrekkelig i denne deloppgaven. 2d Omslutning/Inneslutning (5 poeng) Vi ser nå på systemet S 2 = {f(h(h(g(x)))) = g(f(f(h(f(h(f(x))))))), f(f(f(x))) = f(h(f(x)))}. Er S 2 selv-omsluttende ( self-embedding )? 2e lpo/mpo (5 poeng) Kan lpo eller mpo brukes til å vise terminering av S 2? 2f Mer lpo (5 poeng) Kan lpo brukes til å bevise terminering av systemet S 3 = {f(h(h(g(x)))) = f(f(h(f(h(f(x)))))), f(f(f(x))) = f(h(f(x)))}? 2g Ekstraoppgave! Ta denne kun for bonuspoeng etter at du er ferdig med alle andre oppgaver: finnes det en forenklingsordning som kan bevise at S 2 terminerer? Begrunn svaret godt for endel bonuspoeng. Lykke til! Peter C. Ölveczky (Fortsettes på side 5.)
Eksamen i INF 3230, 8. juni 2012 Side 5 The Exam in English The exercises can, to a certain degree, be solved independently of each other. If you have not solved an exercise, you may assume that you have solved it and can continue with the other exercises. Emphasize simplicity and elegance in your solutions. All answers should be explained/justified. All auxiliary functions, sorts, etc., that you need must obviously be fully defined. Exercise 1: Equational Specifications (68 points) Given the following specification of sequences of bits : sort Bit. ops 0 1 : -> Bit [ctor]. sort Bits. op e : -> Bits [ctor]. op : Bits Bit -> Bits [ctor]. Exercise 1a: Functions (9 points) Define a function op neg : Bits -> Bits. in Maude that inverses each bit in a Bits (that is, changes each occurrence of 0 to 1, and each occurrence of 1 to 0 ). For example, neg(e 1 0 1 0 1 1) should equal e 0 1 0 1 0 0. Then define a function op _xor_ : Bits Bits -> Bits. in Maude that takes (what you can assume to be) two Bits of the same length and does a bitwise xor on the sequences. That is, if bit k in bits1 and in bits2 are the same element, then bit number k in bits1 xor bits2 should be 0, otherwise bit number k in bits1 xor bits2 should be 1. For example, (e 0 0 1 1) xor (e 0 1 0 1) should equal e 0 1 1 0. Important: You may not use built-in/predefined functions (such as if_then_else_fi, _==_, etc.) to solve Exercise 1a. (Fortsettes på side 6.)
Eksamen i INF 3230, 8. juni 2012 Side 6 Exercise 1b: lpo/mpo (8 points) Use the lexicographic path ordering or the multiset path ordering to prove that your specification is terminating (which it should be). (You can disregard the sort information, since also the underlying unsorted specification likely is terminating.) Exercise 1c: Confluence (6 points) Prove (or justify very well ) that your specification is confluent. (You can again ignore sort information, or explain why your specification is not confluent when ignoring sorts, but is confluent when taking sorts into account.) Exercise 1d: Equational Logic (11 points) Let s call your specification E and let s assume that it contains a variable BITS of sort Bits. Does E neg(neg(bits)) = BITS hold? Prove your answer. Exercise 1e: Inductive Theorems (12 points) Does E neg(neg(bits)) = bits hold for each constructor ground term bits of sort Bits? Prove your answer. Exercise 1f: Sorting (9 points) Define a function op sort : Bits -> Bits. in Maude that sorts a given bit sequence (i.e., moves all the zeroes to the beginning ( left ) of the sequence and all the ones towards the end). For example, sort(e 0 1 1 0 1 1 0) should equal e 0 0 0 1 1 1 1. Exercise 1g: Addition of Binary Numbers (13 points) We may consider each Bits element to represent a binary number in the usual way (e.g., e 1 0 0 1 0 represents the number 18, e 1 0 0 represents the number 4, etc.). Define a function op add : Bits Bits -> Bits. in Maude that adds two binary numbers/bits (possibly of different length) in the usual way. For example, add(e 1 1, e 1 1) (3+3) should equal e 1 1 0 (6), while add(e 1 1 1 1 0 0 1 1 1, e 1 1 1 1) should equal e 1 1 1 1 1 0 1 1 0, etc. That is, it is probably useful to remember the carry. (Fortsettes på side 7.)
Eksamen i INF 3230, 8. juni 2012 Side 7 Exercise 2: Termination (36 points) Consider the system S 1 = {f(h(h(x))) = f(f(h(f(h(f(x)))))), f(f(f(x))) = f(h(f(x)))}. Exercise 2a: Termination (6 points) Is S 1 terminating? Explain why/why not. (A good explanation is sufficient here; a full formal proof is not required.) Exercise 2b: Simplification Orderings (5 points) Is there a simplication ordering that can prove termination of S 1? Exercise 2c: Weights (9 points) It is tempting to use a weight function w to prove termination of S 1, where the weight w(t) of the ground term t is the pair ( number of adjacent pairs of h in t, number of fs in t ). Is this weight function monotonic? A detailed proof is required here; referring to the lecture notes is not sufficient in this exercise. Exercise 2d: Embeddings (5 points) Let us now consider the system S 2 = {f(h(h(g(x)))) = g(f(f(h(f(h(f(x))))))), f(f(f(x))) = f(h(f(x)))}. Is the system self-embedding? Exercise 2e: lpo/mpo (6 points) Can we use lpo or mpo to prove that S 2 is terminating? Exercise 2f: More lpo (5 points) Can we use lpo to prove that the system S 3 = {f(h(h(g(x)))) = f(f(h(f(h(f(x)))))), f(f(f(x))) = f(h(f(x)))} is terminating? Exercise 2g: Bonus Exercise! Only do the following exercise for a bunch of bonus points after you are done with all the other exercises: Is there a simplification ordering that can be used to prove that S 2 is terminating? Prove/justify your answer well for a bunch of bonus points. Good luck! Peter C. Ölveczky