especificación de tipos abstractos - umajmmb/ttaadd/temaiii.pdf · 2013. 11. 5. · valores...
Post on 30-Jan-2021
1 Views
Preview:
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
top related