27.3.2006 INF 3230 9 1 INF 3230/4230 Forelesning 9: Omskrivningslogikk Peter Ølveczky/Ingrid Yu Kapittel 5 og 6 Omskrivningslogikk Parallelle steg Formatering
27.3.2006 INF 3230 9 2 Midterm eksamen Midterm exam: Litt om hyppige feil...
27.3.2006 INF 3230 9 3 Repetisjon I Bruke omskrivningsregler for å modellere dynamisk oppførsel Underliggende funksjoner/datatyper defineres som før vha likhetsspesifikasjoner Regel-venstresidene skal være irredusible mht likningene Definerer en modell av et system, ikke bare et program! til eksamen må modellen være korrekt
27.3.2006 INF 3230 9 4 Repetisjon II Systemet ofte ikke lenger terminerende eller konfluent trenger andre slags analysekommandoer enn red Maude kommandoene rew og frew eksekverer/simulerer én mulig oppførsel av ett system dette kalles ofte prototyping Maude s search kommando analyserer alle mulige oppførsler av et system fra gitt initialtilstand kan ta meget lang tid vil ikke terminere hvis ønskede tilstander ikke kan nås kan skrive ut stien til ønsket term
27.3.2006 INF 3230 9 5 Omskrivningslogikk Logikk for å resonnere om hvorvidt systemet kan gå fra tilstand t til tilstand u (i 0 eller flere omskrivningssteg ): R t u Essensielt likhetslogikk uten symmetri
27.3.2006 INF 3230 9 6 Refleksivitet: Slutningsregler for omskrivningslogikk (I) R t t holder for enhver term t Likhet: Dersom R t t og E t = u og E t = u alle holder, så holder også R u u Kongruens: Dersom R t 1 u 1,..., R t n u n alle holder, så holder også R f(t 1,...,t n ) f(u 1,...,u n ) for ethvert funksjonssymbol f Regelinstansiering: Dersom R t 1 u 1,..., R t n u n alle holder, så holder også R t(t 1 /x 1,...,t n /x n ) u(u 1 /x 1,...,u n /x n ) for regel l : t(x 1,...,x n ) u(x 1,...,x n ) Transitivitet: Dersom både R t 1 t 2 og R t 2 t 3 holder, så holder også R t 1 t 3
27.3.2006 INF 3230 9 7 Slutningsregler for likhetslogikk (II) Ett omskrivningssteg tilsvarer bruk av ligning Derfor har vi t E u hviss...,,rules(e) t u Følgelig er det uavgjørbart hvorvidt R t t spesifikasjon holder i en
27.3.2006 INF 3230 9 8 Resonnering om parellellitet Høynivå resonnering omkring hvilke parallelle beregninger det er mulig å foreta abstrakt resonnering om hvilke beregningssteg som kan foretas parallelt antar ingenting om underliggende maskinarkitekturen og gir derfor ikke konkret parallellisering/scheduling av subprosesser til prosessorer Logikken tillater resonnering om parallelle systemer, Maude eksekverer foreløpig sekvensielt Eksempel: Får man mer parallellitet ved bruk av sjekker/giroer eller ved at alle går til banken?
27.3.2006 INF 3230 9 9 Parellelle steg (I) Definisjon: R t t er en ett-stegs parallell omskrivning dersom t t kan sluttes uten bruk av deduksjonsregelen Transitivitet (og ikke bare følger fra Refleksivitet og Likhet) Slutningsreglene Kongruens og Regelinstansiering tilsvarer hver sin type parallellitet Ett-stegs sekvensiell omskrivning: deduksjonsregelen Regelinstansiering brukt nøyaktig én gang (tilsvarer ett reduksjonssteg) Teorem: Ethvert parallelt steg kan splittes opp i en sekvens av ett-stegs (sekvensielle) steg
27.3.2006 INF 3230 9 10 Parellelle steg (II) Parallellitet tilsvarende slutningsregel Kongruens: hvordan parallellisere beregningen av 9267852381 +primtall(8333104742)? dersom t 1 u 1 og... og t n u n kan beregnes i ett steg, så kan også f(t 1,...,t n ) f(u 1,...,u n ) beregnes i ett steg
27.3.2006 INF 3230 9 11 Parallelle steg (III) Mer parallellitet tilsvarende slutningsregel Kongruens: multisett av personer sort Population. subsort Person < Population. op emptypopulation : -> Population [ctor]. op : Population Population -> Population [ctor assoc comm id: emptypopulation].
27.3.2006 INF 3230 9 12 Parallelle steg (IV) (forts.) Da kan person("peter", 36, single) person("fisk", 59, married) person("chomsky", 75, married) omskrives til person("peter", 36, engaged) person("fisk", 60, married) person("chomsky", 76, married) i ett parallelt steg (2 bursdager + 1 forlovelse samme dag!) Brukt til parallelle objekter
27.3.2006 INF 3230 9 13 Parallelle steg (V) Parallellitet svarende til slutningsregel Regelinstansiering: Eksempel: Gitt så fins det ett parallelt steg {l 1 : f(x) g(x), l 2 : a b} f(a) g(b) (og ett parallelt steg f(f(a)) g(g(b)), osv.) Fra 2003: flyet flyr fra Chicago til Arlanda i ett steg kapittel 6 av kompendiet kan skrives i ett steg da kan kapittel 6 skrives i ett steg på flyet fra Chicago til Arlanda
27.3.2006 INF 3230 9 14 Avsluttende eksempel 1: choice Choice operator? som velger ikke-deterministisk ett av to tall: mod CHOICE-INT is protecting INT. op _?_ : Int Int -> Int. vars I J : Int. rl [choose_first] : I? J => I. rl [choose_second] : I? J => J. endm (Ikke dynamisk :) hvorfor kan ikke? defineres vha. ligninger?
27.3.2006 INF 3230 9 15 Sortering av en liste ved regler: Avsluttende eksempel 2: sortering sort List. subsort Int < List. op nil : -> List [ctor]. op : List List -> List [assoc id: nil ctor]. vars I J : Int. var L : List. crl [swap] : I L J => J L I if J < I. Kjøring gir sortert liste tilbake: Maude> rew 5 1 3-5 0 5 2 23-9. result List: -9-5 0 1 2 3 5 5 23 Enda kortere regel: crl [swap] : I J => J I if J < I.
27.3.2006 INF 3230 9 16 Formatering i Maude (I) Ikke pensum Maude termer kan bli store og uoversiktlige Et funksjonssymbol kan gis farge og format ved attributtet format To parametre: fargen/formatet på funksjonssymbolet, og fargen/formatet på det som kommer etterpå op f : s -> s [format (r! o)]. betyr at f skrives med rød farge (r) og med tjukk skrift (!), og at resten av output går tilbake til original (o)
27.3.2006 INF 3230 9 17 Formatering i Maude (II) Varianter: r red g green y yellow b blue p black m magenta c cyan w white x reverse video! bold o original s space t tab f blink(?) h hidden Kan slås sammen
27.3.2006 INF 3230 9 18 Formatering i Maude (III) Eksempel: fmod FORMAT is sort Color ColorList. subsort Color < ColorList. op : ColorList ColorList -> ColorList [assoc]. op b : -> Color [format (b o)]. op r : -> Color [format (r o)]. op boldr : -> Color [format (r! o)]. op y : -> Color [format (sssy o)]. op magenta : -> Color [format (xm o)]. op f : Color -> Color [format (p o)]. endfm red b r magenta boldr f(r).
27.3.2006 INF 3230 9 19 Formattering av mix-fix-symboler (I) Hvor mange format-parametre trenger? op : s s -> s [format (...)]. 1. hvordan skal første -argumentet se ut? 2. hvordan skal andre -argumentet se ut? 3. hva skjer etterpå? Totalt 3 format-parametre: fmod format2 is protecting NAT. sort s. op : Nat Nat -> s [format (r! nox o)]. endfm red 5 4.
27.3.2006 INF 3230 9 20 Formattering av mix-fix-symboler (II) Hva med op _++_ : s s -> s [format (...)]. Trenger 4 format-parametre fmod format2 is protecting NAT. sort s. op _++_ : Nat Nat -> s [format (r! h ob o)]. endfm red 5 ++ 4.
27.3.2006 INF 3230 9 21 Mer om søk (I) Søk foregår ved bredde-først traversering av treet av mulige oppførsler fra gitt initialtilstand Maude effektivisering: lagrer alle besøkte tilstander fortsetter ikke søket fra en tilstand som er sett før Plassproblemer: alle tilstander vi har sett til nå må lagres i internminnet (Uten effektivisering: treets frontier må hele tiden lagres kan kanskje t.o.m. være verre enn Maude s versjon?) Maude meget effektivt, men problemet med antall tilstander forsvinner ikke reflekterer problemets vanskelighetsgrad
27.3.2006 INF 3230 9 22 Mer om søk (II) Internminnet kan bli oppbrukt...... og/eller søket kan ta lang tid Maude s søkekommando finner alltid den korteste stien til en (u)ønsket tilstand (hvorfor?) Antall tilstander som besøkes innen n omskrivningssteg er røft regnet x n hvis man kan fra hver tilstand kan gå til x tilstander i ett steg