Está en la página 1de 10

3-64

CAP ITULO 3. METODO ALGEBRAICO DE ESPECIFICACION.

3.6

Introducci on a Maude

Maude es un lenguaje que permite la ejecuci on simb olica de especicaciones algebraicas dadas mediante ecuaciones y pertenencias, es modular y admite la denici on de m odulos parametrizados as como su instanciaci on. A continuaci on veremos, de manera sucinta, sus caracter sticas sint acticas2 .

3.6.1

Especicaci on de m odulos

La especicaci on de un m odulo (funcional) en Maude tiene el aspecto siguiente: fmod <nombre del modulo> is <cuerpo del modulo> endfm y en el cuerpo de un m odulo pueden aparecer las siguientes declaraciones con los formatos que se enuncian en los ejemplos: Declaraciones de universos y de subuniversos (pueden repetirse): sort S . sorts S1 S2 S3 S4 . subsort S1 < S2 . subsorts S1 < S2 < S3 . subsorts S1 < S2 S4 < S3 . En el u ltimo caso, los universos S2 y S4 no est an relacionados aunque ambos contienen a S1 y est an contenidos en S3. Declaraciones de operaciones: op p : -> S1 . op p : S1 S2 -> S3 . ops p q : S1 S2 -> S3 . Estas declaraciones pueden etiquetarse con [ctor] para indicar que se trata de una operaci on generadora del tipo del resultado. Las operaciones pueden declararse injas mediante guiones de subrayado en los lugares donde deban aparecer los argumentos. Declaraciones de variables:
Para una descripci on m as completa de la sintaxis de Maude v ease Maude: Specication and Programming in Rewriting Logic y A Maude Tutorial, ambos documentos disponibles en la direcci on http://maude.cls.sri.com.
2

A MAUDE 3.6. INTRODUCCION var X : S . vars X Y : S .

3-65

Declaraciones de axiomas: ecuaciones y pertenencias. Ambos tipos pueden aparecer condicionados, pero las condiciones se reducen siempre a un t ermino b de tipo booleano obtenido a partir de expresiones construidas con las operaciones predenidas _==_ y _=/=_ correspondientes al test de igualdad sem antica y su fallo, y con _:_ o test de pertenencia, denidos para todos los universos. Declaraciones de ecuaciones: eq t1 = t2 . ceq t1 = t2 if b . Declaraciones de pertenencias: mb t : S . cmb t : S if b . Declaraciones de importaci on de m odulos (pueden repetirse): including <nombre de modulo> . protecting <nombre de modulo> . La primera indica una importaci on sin restricciones sem anticas y se utiliza para especicaciones no acabadas en las que se pueden producir ampliaciones o reducciones de los conjuntos de valores. En cambio, la segunda indica que se va a respetar la especicaci on importada a nadiendo, a lo m as, alguna funci on nueva que no afecta a los conjuntos de valores establecidos. Las declaraciones de importaci on se escriben al principio del cuerpo del m odulo, despu es aparecer an las declaraciones de universos y de subuniversos, las operaciones, las variables y los axiomas (aunque este orden puede alterarse). Todas las variables que se utilicen en los axiomas deben estar declaradas y en las expresiones puede utilizarse cualquier operaci on declarada en el m odulo o importada de otro m odulo.

3.6.2

Ejemplos

Veamos c omo se escribir an en Maude los m odulos correspondientes a algunas de las especicaciones que se han estudiado en los apartados anteriores. Un m odulo para la especicaci on del universo de los booleanos quedar a:

3-66 fmod BOOL is sort Bool .

CAP ITULO 3. METODO ALGEBRAICO DE ESPECIFICACION.

ops true false : -> Bool [ctor] . op not_ : Bool -> Bool . ops _and_ _or_ : Bool Bool -> Bool . var X : bool . eq not true = false . eq not false = true . eq X and true = X . eq X and false = false . eq X or true = true . eq X or false = X . endfm Un m odulo como este (con algunas operaciones m as) est a predenido en Maude y se importa de forma autom atica en cada m odulo que se dena, por lo que los valores las operaciones l ogicas siempre est an disponibles sin que necesaria su importaci on expl cita. El m odulo para la especicaci on de n umeros naturales que aparece en el Ejemplo 3.7, con algunas operaciones de ejemplos posteriores, queda fmod NAT is sorts NatNz Nat Nat? . subsorts NatNz < Nat < Nat? . op z : -> Nat [ctor] . op s_ : Nat -> NatNz [ctor] . ops _+_ _*_ : Nat Nat -> Nat . op _-_ : Nat Nat -> Nat? . op _/_ : Nat NatNz -> Nat . op _mod_ : Nat NatNz -> Nat . op mcd : Nat Nat -> Nat? . op raiz : Nat -> Nat . op rz : Nat Nat -> Nat? . *** op. auxiliar *** op _<=_ : Nat Nat -> Bool . op _<_ : Nat Nat -> Bool . vars M N : Nat . var P : NatNz .

A MAUDE 3.6. INTRODUCCION eq z + N = N . eq (s M) + N = s (M + N) . eq z * N = z . eq (s M) * N = (M * N) + N . cmb M - N : Nat if N <= M . eq M - z = M . eq (s M) - (s N) = M - N . ceq ceq M / P = z if M < P . M / P = s ((M - P) / P) if P <= M .

3-67

ceq M mod P = M if M < P . ceq M mod P = (M - P) mod P if P <= M . cmb mcd(M, N) : Nat if (M =/= z) or (N =/= z) . eq mcd(P, z) = P . ceq mcd(M, N) = mcd(N, M) if M < N . ceq mcd(M, P) = mcd(M - P, P) if P <= M . eq raiz(N) = cmb rz(N, M) ceq rz(N, M) ceq rz(N, M) rz(N, z) . : Nat if (M * M) <= N . = M if ((M * M) <= N) and (N < ((s M) * (s M))) . = rz(N, s M) if ((s M) * (s M)) <= N .

eq z <= N = true . eq (s M) <= z = false . eq (s N) <= (s M) = N <= M . eq M < z = false . eq z < (s N) = true . eq (s M) < (s N) = M < N . endfm donde, por lo que se ha dicho m as arriba, ya no es necesario declarar ni importar expl citamente los valores l ogicos. Un m odulo para los n umeros enteros, donde se utilizan los subuniversos Pos y Neg correspondientes a los n umeros positivos y a los n umeros negativos, queda fmod ENT is

3-68

CAP ITULO 3. METODO ALGEBRAICO DE ESPECIFICACION.

sorts Ent Nat Pos Neg . subsorts Pos < Nat < Ent . subsort Neg < Ent . op z : -> Nat [ctor] . ops s_ p_ : Ent -> Ent [ctor] . ops _+_ _-_ _*_ : Ent Ent -> Ent . op abs : Ent -> Nat . op _div_ : Nat Pos -> Nat . op mcd : Nat Nat -> Nat . ops _<=_ _<_ : Ent Ent -> Bool . vars E E1 E2 : Ent . var N N1 N2 : Nat . mb s N : Pos . mb p z : Neg . mb p Q : Neg . eq s (p E) = E . eq p (s E) = E . eq z + E2 = E2 . eq (s E1) + E2 = s (E1 + E2) . eq (p E1) + E2 = p (E1 + E2) . eq E1 - z = E1 . eq E1 - (s E2) = p (E1 - E2) . eq E1 - (p E2) = s (E1 - E2) . eq z * E2 = z . eq (s E1) * E2 = (E1 * E2) + E2 . eq (p E1) * E2 = (E1 * E2) - E2 . eq abs(N) = N . eq abs(Q) = z - Q . ceq N div P = z if N < P .

var P : Pos .

var Q : Neg .

A MAUDE 3.6. INTRODUCCION ceq N div P = s ((N - P) div P) if P <= N . eq mcd(N, z) = N . ceq mcd(N1, N2) = mcd(N1 - N2, N2) if N2 <= N1 . ceq mcd(N1, N2) = mcd(N2, N1) if N1 < N2 . ceq E1 <= E2 = true if E2 - E1 : Nat . ceq E1 <= E2 = false if E1 - E2 : Pos . ceq E1 < E2 = true if E2 - E1 : Pos . ceq E1 < E2 = false if E1 - E2 : Nat . endfm

3-69

Y un m odulo para los n umeros racionales representados mediante pares formados por un n umero entero (numerador) y un entero positivo (denominador) queda: fmod RAC is protecting ENT . sorts RacNz Rac . subsort Ent < Rac . subsort Pos Neg < RacNz < Rac . op _/_ : Ent Pos -> Rac [ctor] . op a-ent : Rac -> Rac . ops _+._ _-._ _*._ : Rac Rac -> Rac . op _/._ : Rac RacNz -> Rac . ops _<._ _<=._ : Rac Rac -> Bool . vars e e1 e2 : Ent . vars p p1 p2 : Pos . cmb e / p : RacNz if e =/= z . var n : Neg .

*** simplificacion de racionales *** ceq p1 / p = (p1 div mcd(p1, p)) / (p div mcd(p1, p)) if (s z) < mcd(p1, p) . ceq n / p = (z - (abs(n) div mcd(abs(n), p))) / (p div mcd(abs(n), p)) if (s z) < mcd(abs(n), p) . eq z / p = z . eq e1 / s z = e1 . *** operaciones ***

3-70 eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq eq

CAP ITULO 3. METODO ALGEBRAICO DE ESPECIFICACION. e1 +. e2 = e1 + e2 . e +. (e2 / p2) = ((e * p2) + e2) / p2 . (e1 / p1) +. e = (e1 + (e * p1)) / p1 . (e1 / p1) +. (e2 / p2) = ((e1 * p2) + (e2 * p1)) / (p1 * p2) . e1 -. e2 = e1 - e2 . e -. (e2 / p2) = ((e * p2) - e2) / p2 . (e1 / p1) -. e = (e1 - (e * p1)) / p1 . (e1 / p1) -. (e2 / p2) = ((e1 * p2) - (e2 * p1)) / (p1 * p2) . e1 *. e2 = e1 * e2 . e *. (e2 / p2) = (e * e2) / p2 . (e1 / p1) *. e = (e1 * e) / p1 . (e1 / p1) *. (e2 / p2) = (e1 * e2) / (p1 * p2) . e /. p = e / p . e /. n = (z - e) / (z - n) . e /. (p1 / p) = (e * p) / p1 . e /. (n / p) = (z - (e * p)) / (z - n) . (e1 / p1) /. p = e1 / (p1 * p) . (e1 / p1) /. n = (z - e1) / (z - (p1 * n)) . (e1 / p1) /. (p / p2) = (e1 * p2) / (p * p1) . (e1 / p1) /. (n / p2) = (z - (e1 * p2)) / (z - (n * p1)) .

eq e <. (e1 / p) = (e * p) < e1 . eq (e1 / p) <. e = e1 < (p * e) . eq (e1 / p1) <. (e2 / p2) = (e1 * p2) < (e2 * p1) . eq e <=. (e1 / p) = (e * p) <= e1 . eq (e1 / p) <=. e = e1 <= (p * e) . eq (e1 / p1) <=. (e2 / p2) = (e1 * p2) <= (e2 * p1) . endfm donde los n umeros enteros se consideran parte de los racionales y se establecen ecuaciones de simplicaci on para las representaciones de racionales que pueden llegar a producir un n umero entero.

3.6.3

Especicaciones gen ericas

Las especicaciones gen ericas en Maude implican cuatro tipos de construcciones: la especicaci on de par ametros o teor as, la especicaci on de m odulos parametrizados, la

A MAUDE 3.6. INTRODUCCION

3-71

instanciaci on de par ametros o especicaci on de enfoques de teor as y la particularizaci on de m odulos parametrizados. Una especicaci on de par ametro o teor a se enuncia de manera parecida a un m odulo, salvo por los delimitadores, fth <nombre del parametro> is <cuerpo> endfth con la u nica diferencia de que no pueden aparecer operaciones constructoras y las ecuaciones no son necesariamente reglas de reescritura (pueden aparecer variables nuevas a la derecha) y se interpretan como teoremas que deben satisfacerse en los m odulos que sustituyan a dicho par ametro. Una especicaci on de par ametro denota a cualquier algebra que cumpla sus axiomas (no necesariamente al algebra inicial) y sirve para jar los requisitos que debe cumplir un m odulo para que pueda sustituir a un par ametro. Algunos ejemplos de teor as son: la teor a trivial TRIV, fth TRIV is sort Elt . endth que u nicamente impone como requisito la existencia de un dominio de valores; la teor a ORDTOT, fth ORDTOT is sort Elt . op _<_ : Elt Elt -> Bool . vars E1 E2 E3 : Elt . eq E1 < E1 = false . ceq E1 < E2 = true if E1 < E3 and E3 < E2 . ceq E1 < E2 or E2 < E1 = true if E1 =/= E2 . endth que exige la existencia de un dominio con una relaci on de orden total; y la teor a COTA, fth COTA is protecting NAT . tmax : -> NatNz . endth que impone como requisito la existencia de un valor natural no nulo.

3-72

CAP ITULO 3. METODO ALGEBRAICO DE ESPECIFICACION.

Un m odulo parametrizado se declara de manera parecida a como se declara un m odulo con las diferencias siguientes: junto al nombre del m odulo debe aparecer una lista con los nombres de los par ametros y sus correspondientes teor as, estos par ametros se utilizan como si se tratase de importaciones con la salvedad de que los universos declarados en las teor as de los par ametros, cuando se utilicen, deben etiquetarse de manera postja con los nombres de los par ametros correspondientes (para evitar ambig uedades cuando se empleen varios par ametros caracterizados por la misma teor a), y los universos que se denan en el m odulo parametrizado deber an aparecer parametrizados en los mismos par ametros que el m odulo. fmod <nombre del modulo> [X :: <nombre de teoria>] is protecting <nombre de modulo> . sort S[X] . subsort S.X < S[X] . ... ... endfm Una instancia o un enfoque de una teor a es una forma de ver un m odulo concreto como un caso particular de la teor a; para jar dicho enfoque es necesario establecer una serie de identicaciones entre elementos del m odulo y sus correspondientes elementos en la teor a. Esto se hace en Maude con la construcci on siguiente view <nom. enfoque> form <nom. teoria> to <nom. modulo> is sort <sort de la teoria> to <sort del modulo> . ... op <op. de la teoria> to <op. del modulo> . ... endv Una particularizaci on de un m odulo parametrizado se obtiene importando, de forma protegida, dentro de un m odulo el nombre del m odulo parametrizado con los par ametros sustituidos por enfoques. fmod <nombre instancia> is protecting <nom. modulo parametrizado>[nom enfoque] endfm

A MAUDE 3.6. INTRODUCCION

3-73

Ejemplos de especicaciones gen ericas o m odulos parametrizados, as como de instanciaciones de dichos m odulos, se ir an viendo en los cap tulos siguientes donde tambi en se ir an introduciendo algunas particularidades sobre la notaci on.