especificación de tipos abstractos - umajmmb/ttaadd/temaiii.pdf · 2013. 11. 5. · valores...

63
Especificación de Tipos Abstractos de Datos Método algebraico: Los universos de datos como dominios de un álgebra

Upload: others

Post on 30-Jan-2021

9 views

Category:

Documents


0 download

TRANSCRIPT

  • Especificación de Tipos Abstractos de Datos

    Método algebraico:Los universos de datos como dominios de un álgebra

  • Especificaciones Algebraicas 2

    Introducción

    Lenguajes de programaciónSignatura básica: operaciones y propiedadesRepresentación dada

    Diseño descendenteSignatura propia del dominio del problemaEspecificación y representación

    Modelo de datos: Álgebras multidominioEspecificación de álgebras: Lógica ecuacional

  • Especificaciones Algebraicas 3

    Especificación de álgebras

    Declaración de dominiosDeclaración de operacionesAxiomas para las operaciones:

    Relaciones de igualdadRelaciones de pertenenciaFórmulas condicionadas:

    stswmjvunittswmjvuni

    jjii

    jjii

    :):]..1[()]..1[('):]..1[()]..1[(

    ⇒⋅∈∀∧=⋅∈∀

    =⇒⋅∈∀∧=⋅∈∀

  • Especificaciones Algebraicas 4

    Valores lógicos (I)Universo : BoolFunciones:v : -> Boolf : -> Boolnot_ : Bool -> Bool_and_: Bool Bool -> Bool_or_ : Bool Bool -> BoolAxiomas:not v = fnot f = vX : Bool => not(not X) = X

    X : Bool => X and v = X

    X : Bool => X and f = f

    X Y : Bool => X and Y = Y and X

    X Y Z : Bool =>

    (X and Y) and Z = X and (Y and Z)

    X : Bool => X or v = v

    X : Bool => X or f = X

    X Y : Bool => X or Y = Y or X

    X Y Z : Bool =>

    (X or Y) or Z = X or (Y or Z)

    X Y Z : Bool =>

    X and (Y or Z) = (X and Y) or (X and Z)

    X Y Z : Bool =>

    X or (Y and Z) = (X or Y) and (X or Z)

    ...

  • Especificaciones Algebraicas 5

    Significado de una especificación

    Modelo: Cualquier álgebra que cumpla los axiomas

    Modelo generados por términos: Cada elemento del álgebra está representado por algún término de la especificación

    Modelo inicial: Modelo generado por términos con el mayor número de elementos

  • Especificaciones Algebraicas 6

    Reglas de cálculo para la igualdad y la pertenencia

    stswmjvuni

    stswmjvunitt

    swmjvunittswmjvuni

    ttfttftttt

    tttttt

    tttttt

    jjii

    jjii

    jjii

    jjii

    nn

    nn

    :|:]..1[|;]..1[|

    :):]..1[()]..1[( : defórmula cada Para '|

    :]..1[|;]..1[|'):]..1[()]..1[( : defórmula cada Para

    )',,'(),,(|'|;;'|

    ''|'''|;'|

    '|'|

    |

    11

    11

    σσσσ

    σσσσσ

    −Γ⋅∈∀−Γ=⋅∈∀−Γ

    ⇒⋅∈∀∧=⋅∈∀Γ=−Γ

    ⋅∈∀−Γ=⋅∈∀−Γ

    =⇒⋅∈∀∧=⋅∈∀Γ=−Γ

    =−Γ=−Γ=−Γ

    =−Γ=−Γ=−Γ=−Γ=−Γ

  • Especificaciones Algebraicas 7

    Regla de inducción estructural

    Aplicable a modelos generados por términos

    tttt def de propio subtérmino'' ⇔≺

    )(|))())'('('(|

    ,

    ,,

    tPTttPtPttTtTt

    s

    ss

    ⋅∈∀−Γ⇒⇒⋅∈∀⋅∈∀−Γ

    Σ

    ΣΣ ≺

  • Especificaciones Algebraicas 8

    Regla de inducción estructural

    Forma de aplicación:Demostrar la propiedad P(t) para los términos t que no tienen subtérminos del mismo tipo.Demostrar la propiedad P(t) para los términos t con subtérminos del mismo tipo asumiendo como hipótesis de inducción que la propiedad se cumple para dichos subtérminos.

  • Especificaciones Algebraicas 9

    Valores lógicos (II)

    Universo : BoolFunciones:

    v : -> Boolf : -> Bool

    not_ : Bool -> Bool_and_: Bool Bool -> Bool_or_ : Bool Bool -> Bool

    Axiomas:not v = f not f = vX : Bool => X and v = X

    X : Bool => X and f = f

    X : Bool => X or v = v

    X : Bool => X or f = X

  • Especificaciones Algebraicas 10

    Valores lógicos (III)

    Demostrar para la especificación anterior:1. Que para todo término t:Bool, t=v ó t=f2. Que para todo término t:Bool, not(not t) = t3. Que para X Y : Bool, X and Y = Y and X

  • Estilo Constructivo

  • Especificaciones Algebraicas 12

    Construcción de Especificaciones: Estilo Constructivo

    Para cada universo s :Seleccionar una familia libre de generadoras Gs, o conjunto mínimo de operaciones constructoras tal que:

    cada valor del correspondiente dominio As del álgebra que se quiere especificar se pueda expresar mediante un único término construido con operaciones de Gs.

    Definir las demás operaciones actuando sobre términos construidos con operaciones de Gs.

  • Especificaciones Algebraicas 13

    Construcción de Especificaciones: Ejemplo del Estilo Constructivo

    Valores LógicosUniverso: BooleanosGeneradores:

    v : -> Booleanosf : -> Booleanos

    Términos generados:{v,f}

    Números NaturalesUniverso: NatGeneradores:

    0 : -> Nats : Nat -> Nat

    Términos generados:{0, s(0), s(s(0)), s(s(s(0))),

    ... }

  • Especificaciones Algebraicas 14

    Construcción de Especificaciones:Definición de operaciones

    FormasUna única ecuación en cuya parte izquierda aparece la operación con variables en sus argumentos.

    Varias ecuaciones en cuyas partes izquierdas aparece la operación, controladas por patrones en alguno de sus argumentos o por condiciones para establecer un análisis de casos exhaustivo.

  • Especificaciones Algebraicas 15

    Álgebra de valores lógicos:

    Universo Booleanos .Funciones

    v : -> Booleanos .f : -> Booleanos .not_ : Booleanos -> Booleanos ._and_ : Booleanos Booleanos -> Booleanos ._or_ : Booleanos Booleanos -> Booleanos .

    Axiomasnot v = f . not f = v .X: Booleanos => X and v = X .X: Booleanos => X and f = f .X: Booleanos => X or v = v .X: Booleanos => X or f = X .

  • Especificaciones Algebraicas 16

    Álgebra de números naturales

    Universo Nat .Funciones

    0 : -> Nat .s : Nat -> Nat ._+_ : Nat Nat -> Nat ._*_ : Nat Nat -> Nat .

    AxiomasN : Nat => 0+N = N .N M : Nat => s(M) + N = s(M+N) .N : Nat => 0*N = 0 .N M : Nat => s(M) * N = (M*N)+N .

  • Especificaciones Algebraicas 17

    Álgebra de números naturales con valores lógicos (I)

    Universos Booleanos Nat .Funciones

    v : -> Booleanos .f : -> Booleanos .0 : -> Nat .s : Nat -> Nat ._+_ : Nat Nat -> Nat ._*_ : Nat Nat -> Nat . _= Booleanos .

  • Especificaciones Algebraicas 18

    Álgebra de números naturales con valores lógicos (II)

    AxiomasN : Nat => 0+N = N .N M : Nat => s(M) + N = s(M+N) .N : Nat => 0*N = 0 .N M : Nat => s(M) * N = (M*N)+N .N : Nat => 0 =< N = v .N : Nat => s(N) =< 0 = f .N M : Nat => s(M) =< s(N) = M =< N .

  • Especificaciones Algebraicas 19

    Construcción de Especificaciones:Definición de operaciones parciales

    Reducción del dominio:Se introduce un subuniverso del dominioSe buscan generadores para este subuniversos : Nat -> NatNz .P : NatNz => P : Nat ._div_ : Nat NatNz -> Nat .

    Ampliación del recorrido:Se introduce un superuniverso para el recorridoTodos los resultados pertenecen al superuniversoSe indica cuándo es correcto un resultadoN : Nat => N : Nat? ._-_ : Nat Nat -> Nat? .M N : Nat, (N =< M) = v => M - N : Nat .

  • Especificaciones Algebraicas 20

    Álgebra de números naturales con valores lógicos (III)

    Universos Booleanos Nat NatNz Nat? .Funciones

    ...s : Nat -> NatNz ...._-_ : Nat Nat -> Nat? . _div_ : Nat NatNz -> Nat .

    Axiomas...P : NatNz => P : Nat . N : Nat => N : Nat? .M N : Nat, N= M - N : Nat .N : Nat => N - 0 = N .M N : Nat => s(M) - s(N) = M - N .M : Nat, N : NatNz, N= M div N = 0 .M : Nat, N : NatNz, N= M div N = s((M - N) div N).

  • Especificaciones Algebraicas 21

    Construcción de Especificaciones:Operaciones inmersoras

    Operaciones auxiliares en la definición de otras operaciones.

    Son más generales (tienen más parámetros).Son más simples de definir.Bajo ciertas condiciones realizan el mismo cálculo.

  • Especificaciones Algebraicas 22

    Técnicas de inmersión:Debilitamiento de la postcondición

    Buscar una función tal querealice un cálculo más simple,en algún caso extremo el cálculo sea directo,en general, los resultados de llamadas recursivas más simples faciliten el cálculo original.

    Se procede debilitando la postcondiciónparametrizando alguna subexpresión que sirva para controlar el grado de aproximación al cálculo buscado,incorporando esta subexpresión como argumento a la función inmersora y sus condiciones de dominio a la precondición.

  • Especificaciones Algebraicas 23

    Técnicas de inmersión:Debilitamiento de la postcondición

    Raíz cuadrada por defecto:Función inicial:

    Postcondición: margen de error como parámetro

    Función inmersora:

    Relación entre ambas:

    )}1)(1(,*{)(}:{ ++

  • Especificaciones Algebraicas 24

    Técnicas de inmersión:Debilitamiento de la postcondición

    Definición de rz(N,A):Para márgenes de error suficientemente grandes, 0 es una raíz válida.

    N:Nat, A:NatNz, A*A= rz(N,A) = 0 .Se puede obtener una raíz con un margen de error A a partir de otra con margen A+A.

    N:Nat, A:NatNz, (rz(N,A+A)+A)*(rz(N,A+A)+A)=rz(N,A) = rz(N,A+A) + A .

    N:Nat, A:NatNz, (rz(N,A+A)+A)*(rz(N,A+A)+A)=

  • Especificaciones Algebraicas 25

    Técnicas de inmersión:Refuerzo de la precondición

    Buscar una función tal queRealice el mismo cálculo con información adicional dada mediante algún parámetro.En algún caso extremo la información del parámetro sea suficiente para obtener el resultado.En los demás casos se pueda delegar el cálculo en alguna llamadarecursiva mejorando la información del parámetro.

    Se procede incorporando algún parámetro que represen-te un cálculo parcial o una aproximación del resultado

    Este parámetro de obtiene de la postcondición a partir de alguna expresión relacionada con el resultado.La postcondición se separa en una conjunción de dos fórmulas, una pasa a la precondición y la otra a controlar el caso base.

  • Especificaciones Algebraicas 26

    Técnicas de inmersión:Refuerzo de la precondición

    Raíz cuadrada por defecto:Función inicial:

    Postcondición: el resultado como parámetro

    Función inmersora:

    Relación entre ambas:

    )}1)(1(,*{)(}:{ ++

  • Especificaciones Algebraicas 27

    Técnicas de inmersión:Refuerzo de la precondición

    Definición de rz’(N,A):Para controlar el caso trivial: N

  • Especificaciones Algebraicas 28

    Ventajas del estilo constructivo

    Los valores de cada universo se pueden representar de forma única como términos con las generadoras.Las ecuaciones reducen las aplicaciones de las opera-ciones a términos con las generadoras.Ejecución simbólica de expresiones aplicando las ecuaciones como reglas de reescritura.Consistencia y completitud controlables sintácticamente.Razonamiento por inducción estructural reducible a términos con las generadoras.

  • Especificaciones Algebraicas 29

    Simplificaciones sintácticas

    Ordenación de universos:T X:T’

    Declaración de variables: VAR X ... Z : TFunciones con el mismo perfil:

    f g : T1 ... Tk -> TEcuaciones sobre términos booleanos:e, en lugar de, e = v y not e, en lugar de, e = fConstrucción alternativa:

    C => t = si c entonces a si no b fin, en lugar de, C c = v => t = a

    C c = f => t = b

  • Estilo Semiconstructivo

  • Especificaciones Algebraicas 31

    Construcción de Especificaciones:Estilo Semiconstructivo

    Para cada universo s :Una familia mínima Gs de generadoras, tal que cada valor del dominio As se pueda expresar mediante uno o varios términos construidos con operaciones de Gs.Una equivalencia entre representaciones distintas de un mismo valor. Los valores serán las clases de equivalencia de términos construidos con las generadoras.Las demás operaciones se definen actuando sobre términos construidos con operaciones de Gs., de manera que a representaciones equivalentes les correspondan resultados equivalentes.

  • Especificaciones Algebraicas 32

    Construcción de Especificaciones: Ejemplo del Estilo Semiconstructivo

    Números EnterosUniverso: Ent Generadores:

    0 : -> Ents : Ent -> Entp: Ent -> Ent

    Ecuaciones:VAR X:Ent s(p(X)) = Xp(s(X)) = X

    Términos:0, s(0), s(s(0)), ... p(0), p(p(0)), ... s(p(0)), s(p(p(0))), ...

    Clases de equivalencia:{0, s(p(0)), p(s(0)), ... }{s(0), s(s(p(0)), s(p(s(0))),...}{p(0), p(s(p(0)), p(p(s(0))),...}

  • Especificaciones Algebraicas 33

    Especificación de los Números Enteros. Términos

    s(s(s(0)))s(s(0))

    p(s(s(0))s(0)

    s(p(s(0)))p(s(0))

    p(p(s(0)))0

    s(s(p(0)))s(p(0))

    p(s(p(0)))p(0)

    p(p(0))

    Cam

    inos

    en

    un á

    rbol

    bin

    ario

  • Especificaciones Algebraicas 34

    Especificación de los Números Enteros. Clases de eq.

    s(s(s(0)))

    s(s(0))

    s(0) {p(s(s(0)), s(p(s(0))), s(s(p(0)))}

    0 {p(s(0)), s(p(0))}

    p(0) {p(p(s(0))), p(s(p(0))), s(p(p(0)))}

    p(p(0))

    p(p(p(0)))

  • Especificaciones Algebraicas 35

    Especificación de los Números Enteros. Operaciones

    _+_ _-_ _*_ : Ent Ent -> EntVAR Z Z’ : Ent

    0 + Z = Zs(Z’) + Z = s(Z’ + Z)p(Z’) + Z = p(Z’ + Z)

    Z - 0 = ZZ - s(Z’) = p(Z - Z’)Z - p(Z’) = s(Z - Z’)

    0 * Z = Zs(Z’) * Z = (Z’ * Z) + Zp(Z’) * Z = (Z’ * Z) - Z

  • Especificaciones Algebraicas 36

    Especificación de los Números Enteros. Relaciones

    Neg < Ent Pos < Entp(0) : Neg s(0) : Pos

    Z : Neg => p(Z) : Neg Z : Pos => s(Z) : Pos

    _ Booleanos

    VAR Z Z’ : Ent

    Z’ - Z : Pos => Z < Z’ = v

    Z’ - Z : Neg => Z < Z’ = f

    Z’ - Z = 0 => Z < Z’ = f

    Demostrar que |- Z : Ent => (Z = 0) ∨ (Z : Pos) ∨ (Z : Neg)

  • Patrones para construir tipos abstractos de datos

  • Especificaciones Algebraicas 38

    Enumeración

    Para especificar universos con un número muy reducido de valores

    Universo T

    Generadorasv1 : -> T...vk : -> T

    Ejemplos: Valores lógicos, Notas musicales, ...

  • Especificaciones Algebraicas 39

    Suma directa

    Para especificar universos T que se puedan con-siderar la unión disjunta de otros T1, ..., TnUniversos

    T T1 ... TnT1 < T... Tn < T

    Generadoras-- las de cada universo T1, ..., Tn

  • Especificaciones Algebraicas 40

    Producto Cartesiano

    Para especificar universos T que se puedan con-siderar productos cartesianos de otros T1, ..., Tn

    UniversosT T1 ... Tn

    Generadoras(_,...,_) : T1 ... Tn -> T-- Todas las de T1 ... Tn

    Operacionespr1 : T -> T1...prn : T -> Tn...

    Ejemplos: Vectores y Puntos del plano con coor-denadas enteras

    Axiomas VAR t1 : T1 ... VAR tn : Tn

    pr1(t1,...,tn) = t1...prn(t1,...,tn) = tn...

  • Especificaciones Algebraicas 41

    Cociente

    Para especificar universos T cuyos valores se puedan identificar con las clases de valores de otro universo T’ respecto a una cierta relación de equivalenciaUniverso

    T Generadoras-- las de T’ como generadoras de T

    Axiomas-- ecuaciones entre términos con las generadoras

    Ejemplos: Números Racionales, Rectas del plano Ent2

  • Especificaciones Algebraicas 42

    Recursión

    Los patrones recursivos aparecen cuando un universo T se puede considerar suma directa de otros universos en cuyas definiciones aparece T.Ejemplos:ListaNatNv = Nat | (Nat x ListaNatNv)ArbolHNat = Nat | (ArbolHNat x ArbolHNat)

    ArbolGNat = Nat x BosqueNatBosqueNat = Nil | (ArbolGNat x BosqueNat)

  • Especificaciones Algebraicas 43

    Especificaciones jerarquizadas I

    Mecanismo para especificar álgebras complejas con varios dominios. Consiste en:

    Dar especificaciones individuales de los dominios independientes.Especificar los dominios dependientes de otros apoyándose en las especificaciones de los otros.

    Condiciones:Las especificaciones de los dominios dependientes no deben ampliar ni reducir los conjuntos de valores de los dominios en los que se apoyan.

  • Especificaciones Algebraicas 44

    Especificaciones jerarquizadas II

    Requiere:Una noción de módulo que permita individualizar especificaciones y mantener bibliotecas de especificaciones.Un mecanismo de importación de unos módulos dentro de otros que permita utilizar especificaciones dadas sin tener que repetirlas.No establecer dependencias circulares entre módulos de una biblioteca.

  • Especificaciones Algebraicas 45

    Especificaciones genéricas

    Mecanismo para construir patrones de especificaciones jerarquizadas.Consiste en:

    Especificaciones jerarquizadas parametrizadas en algún/os módulo/s importado/s, junto con

    Especificaciones débiles del/los parámetro/s.Requieren:

    Un mecanismo de instanciación de parámetros.

  • Introducción a MAUDEIntroducción a MAUDE

  • Especificaciones Algebraicas 47

    Introducción a Maude

    Maude es un lenguaje de especificación algebraica de tipos abstractos de datos con construcciones modulares para:

    especificaciones jerarquizadas;especificaciones de parámetros;especificaciones genéricas;instanciaciones de parámetros.

    Que permite la ejecución/reducción simbólica de expresiones de una especificación.

  • Especificaciones Algebraicas 48

    Especificaciones Jerarquizadas

    Módulo: Cuerpo:fmod nombre is (decl. de importaciones)*

    cuerpo (decl. de universos)*endfm (decl. de subuniversos)*

    (decl. de operaciones)*(decl. de variables)*(decl. de axiomas)*

    Nota: Todas las declaraciones terminan con espacio y punto

  • Especificaciones Algebraicas 49

    Cuerpo de un módulo

    Declaración de importaciones:including M .protecting M .

    Declaración de universos:sort S .sorts S1 S2 S3 .

    Declaración de subuniversos:subsort S1 < S2 .

    subsorts S1 < S2 < S3 .subsorts S1 < S2 S3 < S4 .

    Declaración de variables:var X : S .vars X Y : S .

    Declaración de operaciones:op p : -> S [ctor] .op p : S1 S2 -> S .op _p_ : S1 S2 -> S .ops p q : S1 S2 -> S .

    Declaración de ecuaciones: eq t1 = t2 .ceq t1 = t2 if b .

    Declaración de pertenencias:mb t : S .cmb t : S if b .

    (b booleano con ==,=/=, : )

  • Especificaciones Algebraicas 50

    Valores lógicos

    fmod BOOL issort Bool .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

  • Especificaciones Algebraicas 51

    Números Naturales I

    fmod NAT issorts NatNz Nat Nat? .subsorts NatNz < Nat < Nat? .op z : -> Nat [ctor] .op s_ : Nat -> NatNz [ctor] .ops _+_ _*_ : Nat Nat -> Nat .op _-_ : Nat Nat -> Nat? .ops _div_ _mod_ : Nat NatNz -> Nat .op mcd : Nat Nat -> Nat? .op raiz : Nat -> Nat .op rz : Nat Nat -> Nat? .ops _ Nat .

  • Especificaciones Algebraicas 52

    Números Naturales II

    vars M N : Nat . var P : NatNz .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

  • Especificaciones Algebraicas 53

    Números Naturales III

    eq raiz(N) = rz(N, z) .cmb rz(N, M) : Nat if (M * M)

  • Especificaciones Algebraicas 54

    Números Enteros I

    fmod ENT issorts Ent Pos PosNz .subsorts PosNz < Pos < Ent .

    op z : -> Pos [ctor] .ops s_ p_ : Ent -> Ent [ctor] .

    ops _+_ _-_ _*_ : Ent Ent -> Ent .op abs : Ent -> Pos .op _div_ : Pos PosNz -> Pos .op mcd : Pos Pos -> Pos .ops _

  • Especificaciones Algebraicas 55

    Números Enteros II

    mb s Pz : PosNz .

    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 .

  • Especificaciones Algebraicas 56

    Números Enteros III

    eq abs(Pz) = Pz .eq abs(E) = abs(z - E) .ceq Pz div P = z if Pz < P .ceq Pz div P = s ((Pz - P) div P) if P

  • Especificaciones Algebraicas 57

    Ejercicios

    Especificar un módulo para el tipo DiaSemana.

    Construir una especificación jerárquica para una geometría vectorial del plano con puntos, vectores y rectas con coordenadas enteras.

    Construir una especificación jerárquica para los números racionales.

  • Especificaciones Algebraicas 58

    Módulos predefinidos I

    fmod BOOL is sort Bool .op true : -> Bool [ctor] .op false : -> Bool [ctor].op _and_ : Bool Bool -> Bool [... prec 55] .op _or_ : Bool Bool -> Bool [... prec 59] .op _xor_ : Bool Bool -> Bool [... prec 57] .op not_ : Bool -> Bool [... prec 53] .op _implies_ : Bool Bool -> Bool [... prec 61] ....

    endfm

  • Especificaciones Algebraicas 59

    Módulos predefinidos II

    fmod MACHINE-INT is sorts MachineInt NzMachineInt .subsort NzMachineInt < MachineInt .

    ...op -_ : MachineInt -> MachineInt [... prec 15] .ops _+_ _-_ : MachineInt MachineInt -> MachineInt [... prec 33] .op _*_ : MachineInt MachineInt -> MachineInt [... prec 31] .ops _/_ _%_ : MachineInt NzMachineInt -> MachineInt [... prec 31] ....ops __ _>=_ : MachineInt MachineInt -> Bool [... prec 37] ....

    endfm

  • Especificaciones Algebraicas 60

    Especificaciones de Parámetros

    Teoría:fth nombre is cuerpo endth

    Ejemplos:fth TRIV is fth TOTSET issort Elt . sort Elt .

    endth op _ 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

  • Especificaciones Algebraicas 61

    Especificaciones Genéricas

    fmod nombre [X :: ] isprotecting .sort S[X] .subsort S.X < S[X] .

    ...

    ...endfm

  • Especificaciones Algebraicas 62

    Instanciaciones de Parámetros

    Enfoques de módulos como casos particulares de teorías:

    view nombre from to issort to ....op to ....

    endv

  • Especificaciones Algebraicas 63

    Instanciación de una especificación genérica

    Obtención del módulo resultante de una instaciaciónfmod nombre is

    protecting [n. de enfoque]endfm

    Esta instanciación se puede realizar dentro de cualquier módulo a la vez que se realiza su importación.

    Especificación de Tipos Abstractos de DatosIntroducciónEspecificación de álgebrasValores lógicos (I)Significado de una especificaciónReglas de cálculo para la igualdad y la pertenenciaRegla de inducción estructuralRegla de inducción estructuralValores lógicos (II)Valores lógicos (III)Construcción de Especificaciones: Estilo ConstructivoConstrucción de Especificaciones: Ejemplo del Estilo ConstructivoConstrucción de Especificaciones:Definición de operacionesÁlgebra de valores lógicos:Álgebra de números naturalesÁlgebra de números naturales con valores lógicos (I)Álgebra de números naturales con valores lógicos (II)Construcción de Especificaciones:Definición de operaciones parcialesÁlgebra de números naturales con valores lógicos (III)Construcción de Especificaciones:Operaciones inmersorasTécnicas de inmersión:Debilitamiento de la postcondiciónTécnicas de inmersión:Debilitamiento de la postcondiciónTécnicas de inmersión:Debilitamiento de la postcondiciónTécnicas de inmersión:Refuerzo de la precondiciónTécnicas de inmersión:Refuerzo de la precondiciónTécnicas de inmersión:Refuerzo de la precondiciónVentajas del estilo constructivoSimplificaciones sintácticasConstrucción de Especificaciones:Estilo SemiconstructivoConstrucción de Especificaciones: Ejemplo del Estilo SemiconstructivoEspecificación de los Números Enteros. TérminosEspecificación de los Números Enteros. Clases de eq.Especificación de los Números Enteros. OperacionesEspecificación de los Números Enteros. RelacionesEnumeraciónSuma directaProducto CartesianoCocienteRecursiónEspecificaciones jerarquizadas IEspecificaciones jerarquizadas IIEspecificaciones genéricasIntroducción a MaudeEspecificaciones JerarquizadasCuerpo de un móduloValores lógicosNúmeros Naturales INúmeros Naturales IINúmeros Naturales IIINúmeros Enteros INúmeros Enteros IINúmeros Enteros IIIEjerciciosMódulos predefinidos IMódulos predefinidos IIEspecificaciones de ParámetrosEspecificaciones GenéricasInstanciaciones de ParámetrosInstanciación de una especificación genérica