Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Verificación formal de programas: Principio de inducción noetheriana - Prof. Paredes, Apuntes de Ingeniería del Software

El principio de inducción noetheriana y cómo se utiliza para verificar la corrección de funciones recursivas. El principio de inducción noetheriana es una herramienta matemática para demostrar que una función es correcta en todos los casos recursivos. El documento detalla la definición del principio, cómo demostrar que una función cumple las condiciones y cómo verificar la completitud de la función.

Tipo: Apuntes

2012/2013

Subido el 12/10/2013

blueeyes3334
blueeyes3334 🇪🇸

3.9

(40)

24 documentos

1 / 18

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
TEMA 2
VERIFICACIÓN FORMAL DE
PROGRAMAS
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12

Vista previa parcial del texto

¡Descarga Verificación formal de programas: Principio de inducción noetheriana - Prof. Paredes y más Apuntes en PDF de Ingeniería del Software solo en Docsity!

TEMA 2

VERIFICACIÓN FORMAL DE

PROGRAMAS

Contenido

VERIFICACIÓN FORMAL

Inducción noetheriana Verificación de programas recursivos.

•^

Dado un conjunto D, una relación binaria en D,

= se dice que es

Preorden

D,

=), si tiene propiedades reflexiva y transitiva

•^

Dado un preorden (

D,

=), definimos la relación

, que

llamamos

preorden estricto

D,

), si ocurre:

x^

y

cuando

x

y

( y

x)

•^

Dado un preorden (

D,

), se dice que un elemento

m

es

minimal

en D si no tiene predecesores estrictos

x

D

x

m

PREORDEN BIEN FUNDADO

(pbf)

•^

Un preorden (

D,

=) se dice que es bien fundado (abreviado pbf)s

si no existe en D sucesiones infinitas estrictamente decrecientes(SIEED), es decir no existe:

SIEED

x^ i

i^ ∈

N

tal que

i^

N

x

i+

x

i

Definición de pbf

PREORDEN BIEN FUNDADO

(pbf)

Principio de Inducción

Noetheriana

•^

Definición formal del principio de inducción Noetheriana

a

P

D

a

a P b P a b D b D a

•^

( D,

=) es un

pbf

P(x) x

D

pbf

P

reorden B

ien F

undado

•^

Suponiendo que

b

D

. b

a

se cumple

P

( b

•^

Si se demuestra que se cumple

P

( a

), entonces se cumple que

a

D

se cumple

P

( a

Principio de Inducción Noetheriana

•^

Base de la inducción

Demostrar

P

( m

)^

m

que sea un

minimal

en (

D,

•^

Hipótesis de la inducción

HI)

Dado un

a

no minimal suponer que

b

a

P

( b

•^

Paso de inducción

Demostrar que se cumple

P

( a

DEMOSTRACCIÓN POR INDUCCIÓN

 







Verificar la validez del predicado

siendo

Demostrar que la función está bien definida

Demostrar que cada vez que se invoca a lafunción, se hace en un estado que satisface laprecondición

La llamada interna a

f^

se hace con parámetros

estrictamente más pequeños

que los actuales

t: D

f^

N;

Por comodidad

t: D

T

Z

Los elementos minimales de (D

,^ f

=

) están

incluidos en el caso trivial de

f

1 Se demuestra porinducción en base al principio de inducciónnoetheriana 5 No hace faltademostrarlo si lo están1 y 4. Introducci

ó

n a la

VerificaciónFormal fun.recursivas

dev

fun

2

y,

x

R

T

y

T

x

x f

Q

1

)) (

(

.^

x , f x R D

x

f

∈ ∀

(^

x B x B x Q

nt

t^

(^

x s Q x B x Q

nt

x x s x B x Q

nt

 ) ( ) ( )

(^



∧ 0 ) (

) (^



x t

x Q

) (

))

(s(

) (

) (^

x t x t x B x Q

nt^

<



) (

) (^

x B

x Q

t

) ( xs

x



)} ( .

{

1

x Q

D

x

D

T

f^

VERIFICACIÓN DE

PROGRAMAS RECURSIVOS

¿Es correcta la función?{

Q(x)}

fun

f(x:T

1

)^

dev

(y:T

2

caso

B

(x)t

triv(x)

[]

B

nt

(x)

c(f(s(x)),x)

fcaso

ffun {R(x,y)}

VERIFICACIÓN DE

PROGRAMAS RECURSIVOS

2) Satisfacción de la precondición por la

llamada interna.

los parámetros de las llamada recursivas

satisfacen la precondición

Q(x)

B

nt

(x)

Q(s(x))

{ Q(x)} fun

f(x:T

) 1 dev

(y:T

) 2

caso

B

(x)t



triv(x)

[] B

(x)nt



c(f(s(x)),x)

fcaso

ffun {R(x,y)}

VERIFICACIÓN DE

PROGRAMAS RECURSIVOS

3) Base de inducción.Comprobar que la solución que devuelve en el

caso(s) trivial cumple la postcondición(cumpliendo los argumentos laprecondición)

Q(x)

B

(x)t

R(x, triv(x))

{ Q(x)} fun

f(x:T

) 1 dev

(y:T

) 2

caso

B

(x)t



triv(x)

[] B

(x)nt



c(f(s(x)),x)

fcaso

ffun {R(x,y)}

VERIFICACIÓN DE

PROGRAMAS RECURSIVOS

5) Establecer una estructura de preorden bienfundado (p.b.f).Encontrar una función h:D

TI

Z ,, Q(x)

h(x)

Una función que a cada parámetro de entrada asocieun entero no negativo. Se suele establecer unaaplicación con los naturales.

{ Q(x)} fun

f(x:T

) 1 dev

(y:T

) 2

caso

B

(x)t



triv(x)

[] B

(x)nt



c(f(s(x)),x)

fcaso

ffun {R(x,y)}

VERIFICACIÓN DE

PROGRAMAS RECURSIVOS

6) El tamaño del problema decrece estrictamente.En cada llamada recursiva los datos decrecenestrictamente en relación al pbf del paso 5) (el valorque devuelve h ha de ser menor).Q(x)

B

nt

(x)

h(s(x)) < h(x)

Probamos la función s.

{ Q(x)} fun

f(x:T

) 1 dev

(y:T

) 2

caso

B

(x)t



triv(x)

[] B

(x)nt



c(f(s(x)),x)

fcaso

ffun {R(x,y)}