POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta...

123
UNIVEXSiDAD AüiOMOXA WETROPOLITANA UNIDAD IZTAPALAPA POYECTO DE I NVESTI GACI 6N /' VERIFICACION FORMAL DE ALGORITMOS Asesor3 Roberto Solis Ob. Realizado pro: Jorge AibrtoCEc_cheverry -a. Matricula X 84227714, I hxico D. F., 22 & junio d9 f984.

Transcript of POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta...

Page 1: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

UNIVEXSiDAD AüiOMOXA WETROPOLITANA

UNIDAD IZTAPALAPA

POYECTO DE I NVESTI GACI 6N

/' VERIFICACION FORMAL DE ALGORITMOS

Asesor3 Roberto Solis O b .

Realizado pro: Jorge AibrtoCEc_cheverry -a.

Matricula X 84227714,

I

h x i c o D. F., 22 & junio d9 f984.

Page 2: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

El objetivo

herramientas que

al gori tnor .

de este proyecto 85 desarrollar

ayuden a la verificación formal de

. . ... “ -,. .

Page 3: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

I

!

E l computador es una herramienta poderosa, que pormite

rea l i z a r con f a c i l i d a d un gran nhraro de tareas, que de

o t ro modo ser ían tediosas o d i f i c i l e s de r ea l i z a r . La

elaboracidn de los algoritmos que permiten a los usuarios de

computadores ayudar a resolver sus problemas; es una tarea

rea l izada por l o s diseñadores de software.

De fundamental importancia et que el software

desarro l lado para l a solucibn de una tarea no tenga errores,

es decir que cualquier instancia del problema debe ser

resue l ta por el software y por consiguiente l a s soluciones

emitidos por este deben ser siempre correctas.

- - Actualmente para probar un algoritmo l o que normalmente

se hace es dar un conjunto de entradas a l programa y

vierificar que su comportamiento sea el esperadoresto da a l

disoflador c i e r t a confianza en 'su producto, poro de ninguna

manera p u d e afirmar que su programa es correcto, porque p u d e existir un caso de entrada no probado por el, para el cual el algoritmo no da la respuesta deseada.

En la mayor parte de las ocasiones el nilnaero de

instancias de un problema en part icu lar es demasiado grande,

dm tal manera que el disgPTador no puede probar con cada una

do estas como entrada a su programa, y a s í dospub de probar solaniante algunos casos, si en todos ellos el

programa llegó a l a solucibn, supone quo su producto os

correcto y l o hace llogar a los usuarios.

1

Page 4: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programas probados de esta forma son poco confiables y

con relatiuva frecuencia los usuarios detectan fa l las en el

programa, es decir descubren que este no se comporta en l a

manera esperada. En algunas ocasiones l a respuesta a l a

instancia del problema no es la. deseada y en algunas otras

simplemente el programa no l lega a ninguna solución pues

entra en un c ic lo del cual no puede sa l i r .

Surge entonces l a necesidad de contar con un metodo

formal que pueda decidir s i si programa creado cumple o no

con las especificaciones pedidas por al usuario. Y mejor que

eso ser ía contar con un metodo de diseño que permita l a

construcción de programas correctos.

Algunos investigadores, especialmente HOARE y DIJKSTRA, han estudiado este problema, y han propuesto &todos para

que dado un algoritmo, las especificaciones de entrada bajo

l as cuales el algoritmo implementado ejecutará y l a

especi f i caci ón de 1 a sal i da esperada par a cual qui er

instancia del problema de entrada, sea posible decidir s i

tal algoritmo puede siempre dar l a solución correcta o no.

En este momento es importante mencionar que demostrar

la corrección do un algoritmo involucra: demostrar que para

cualquier entrada valida,. el algoritmo terminará su

ejecución en tiempo finito. Este problema se sabe es

IWDECIDIBLE, por tanto los métodos de HOARE y DIJKSTRA trabajan bajo l a suposición do que el algoritmo quo está

analizándose terminará en tiempo f i n i t o siempre. Se dice

entonces que los métodos de HOARE ó DIJKSTRA solo pueden

probar l a correccibn parcial de un algoritmo, esta es que

para cualquier entrada valida, l a salida es l a correcta>.

Page 5: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

I

cona0 decidir si un algoritmo termina en un tiempo finito

es un problema sin solución algorltmica, entonces no se

puede demostrar que un programa es totalmente correcto, por

io que en ci pi-wsenta proyecto nos encargaremos de dar-- algunas herramientas para l a ayuda a l a VERIFICACIW FORHAL

DE UN PROGRAMA Cverificación parcial de estd.

3

Page 6: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

DESARROLLO TEORICO

VERIFICACIóW FORJrUL DE UN ALGORiTMO

Para l a ver i f i cac ión de los programas simples, que

u t i l i z an las estructuras de control t a l e s como:

seleccidn, iteracibn condicional y secuenciación,

se usan dos thcnicas básicas. una .usa regias de inferencia

del cá lcu lo proposicianal desarro l lada por d. d. d. 3emm.e. y

l a otra usa transformaciones de predicados deducida por 8.

W. ;DC,j&Wm. Presentaremos a continuación los fundamentos de

estas t k n i cas, haci endo 4nf asi c; en el si sterna axiomáti to de

Hoar e.

COKEPTOS BASICOS:

Primero se introduciran algunos conceptos que se usaran

en 1 os párra fos si gui entes :

Llamaremos Precondicíón a l estado de un programa antes

de ejecutar una propoficih.

Usaremos el tórmino d e pottcondicibn a l estado de un

programa d e s p u b d e e3ecut.u una proposición.

La notacih iP)SiQ): expresa l a CORRECTEZ condicional

de S con respecto a l a precondición P y postcondición Q,

asumiendo que l a precondición P garantiza l a t e rminac ih de

S.

R i m e r o consideremos las precondiciones deb i l e s de S con

respecto a Q, denotadas por WPCS,Q>; esto es el predicado

que dcscribe todos los estados i n í c i a l e s para l a ejecución

4

. . . _.......-- "-,. ". _...__l/.. , . , _,_". Ll.." .._+_ . . , ___I_LI_... . ". _._ ... 1_-1 I,..... ".... .

Page 7: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

de S, que garantizan que termina sat is factoriamente en un

estado de Q.

Aquí se pueden ver 2 casos que se presentan para

confusión:

a. Cuando l a proposición de S garant iza de antemano que se

l lega a cualquier estado f i n a l de l a postcondición Q

satisfactoriamente s i n importar WPCS,Q>: Por ejemplo:

WPCi:=O,i=O> = Verdad.

b. E l caso contrar io cuando la ejecución de l a proposición

S implica que nunca se va a Larminar satisfactoriamente

en un estado f i n a l de í3 s i n i m p o r t a r WPCS,Q>: Por e j empl o

WPCi: =O,i=13 = Falso.

REGLAS DE CONSECUENCIA: Son llamadas así a las reglas de

y SB deducen a partir de l a estructura del programa.

Asumimos que CP)SCQ) es vá l ido . Primero consideremos una

postcondici6n Q' mis dtbbil que .La postcondicidn Q Cporque Q'

contiene a Q y otros estados>. Si P garantiza a l terminar S

que el estado S satisface Q. Claramente a l terminar S, el

estado S satisface Q ' ; porque todo estado de Q es estado de

€2'.

Ahora consideremos una precondición P'más ftnrte quo la precondici6n P Cporque P' ccuitiene -nos estados que P9.

Cualquier estado que satisface P' s a t i s f a c e P. Entonces

cualquier estado S qum garantiza l a postcondicibn Q y

satisface P' ; también satisface P.

Page 8: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

P 2 Q Q > R CCD s C R ) CP> 5 CQ3

CP) s <a C P ) s C R )

Condiciones d e 2MJblrUL: Estudia l a combinación entre

las constantes l óg i cas FALSO, Y VERDRD y los operadores

ldgicos Y ó O. Para esto primero redefiniremos WPCS,FALSO3; esto descr ibe ningún estado en l a postcondición; y

WPCS,V€RDAD3 , describe todos los estados de l a

postcondi ci án.

UPC S . FALSO3 < => FALSO WPCS,VERDAD3 < => VERDAD.

Tambi Bn 1 a precondi c i ón debi 1 cumple 1 as s igu i entes

propi edades :

a. WPCS,Q & B <=> WPCS,Q3 & WP CS.R3.

b. WPCS,Q ó R3 <=> WPCS,Q3 ó WPCS,R3.

c. WPCS,NO Q3 <=> NO WP C S , D .

SISTEMA AXIOMATIC0 HOARE

Ahora empezaremos nuestro estudio con los tipos de

programa más s en c i l l o s que son los programas s i n c i c l o s .

Veremos las reglas que hay entre l a precondici&nr l a

proposici6n y l a postcondici&n.

AXZOMA DG ASIGNACI6N: Consideremos l a ai ignacibn x: =e?

y l a postcondición QCxJ Nosotros queremos garantizar QCx>

dmspu- do asignar a x: =s. Esto l o hace WPCx: =e, QCx3í.

--

wPcx:=e,Qcx33 <=> Qce3.

La pruondicit5n debo garantizar que l a expresión "e"

está bion dof in ida . Por ejemplo i/j* no está b ien def in ida on

el caso J'*; ó. aiii tampoco está b ien de f in ida en el caso

en quo i est+ fue ra do l a dimmnsión do a.

Page 9: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Los tipos de x y e deben ser i gua les ; porque no es

permitido l a asignación de un entero a un booleano 6

elsmontos de d i f e r en te tipo.

C o M p o m C I - SECUENCIAL: consideremos a Si; 52 que

garantizan un estado s a t i s f a c t o r i o para Q. Notemos que l a

precondición WPCS2,C;n garantiza un estado s a t i s f a c t o r i o para

Q, y como WPCS2,Q> es l a postcondición de la proposición Si,

entonces un estado Sa t i s f ac to r i o s debe sa t i s f ace r WP

-

c s1; 52, Q3.

wPcs1;s2,w <=> wpCS?,WCcXt:.S33. Para un predicado

arbi t.rario Q.

REGLA LA COMPC6iCION SECüENCIAL: Suoniendo que l a

ejecución de S I con l a precondición P garant iza l a

postcondición R; y ejecutando S2 con l a precondición R garantiza l a postcondición Q; entonces Si; 52 con l a

precondición P garant iza l a postcondición Q.

Aplicando l a Reelor Sectwncial sobre l a última

proposicibti 5 , luego al penúltimo y así sucesivamente

Fade= obtener proposiciones de l a forma C s )

Si;S2;53;. . . ;Sr iQ).

SGLECCZON: S ~ ~ O ~ ~ J I I O S que Q es una postcondición de B ENTONCES S1 OTRO S2. Donde B BE una expresi6n Booleana que

-garant iza Q d e s p u b de ejecutar S I 6 52. Sí se eJecuta S I el

estado de las variables del programa antes d e eJecutarse B debe desc r i b i r s e por WPCSI,Q>, l a p rocond i c i h debo

garantizar Q.

Page 10: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

B => WPCSZ,Q>.

Ahora supongamos que es ejecutado 52. Esta debe

garantizar el estado satisfactorio de Q y el estado de las

variables del programa debe satisfacer WPCS2,Gu.

NO B => WPCS2,Q).

Entonces uniendo las 2 ecuaciones tenemos:

. WPCS1 B ENTONCES S1 OTRO S2,GD

<=>CB => WPCSl,Q>> Y CNO B => WCS2,Q33.

Tambih se puede e s c r i b i r :

WPCSI B ENTONCES Si OTRO S2,D

<=> CB Y WPCS1,Q)í ó CNO B Y WPCS2,mí.

REGLA SELECCIm-: - Las 2 reglas que describen l a

se lecc ión son las s iguientes:

Si podemos probar: P y B describen los estados antes de

eljecutar S1, y Q descr ibe el estado despub de e j ecu ta r l o y

t - h i + n , si P y NO B descr ibe los estados antes de e jecutar

S2, y Q describe el estado despub de ejecutar 52. Entonces

podemos deducir que si P descr ibo el estado antes de

e jecutar B EEJrobJ CES S1 OTRO 52, entonces Q describe el

estado despuós de e jecutar lo .

cs Y Q3 s1 im. iP Y CNO B 33 52 CQ3

<P) B ENTONCES 51 OTRO 52 i C D

Si podemos probar que: Si P Y 8 describen los estados

antes de eljecutar S, y Q descr ibe el estado después d e

eJecutar10. y si P y NO B implican Q. Entonces podemos

c

Page 11: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

decir : Si P y B describen 104 estados antes de ejecutar SI: B ENTONCES S, Q descr ibe el estado dospues de e jecutar lo .

CP Y 83 S CQ)

P Y CNO 83 => Q

C P ) B ENTONCES iQ>

b a aquí podemos deducir el s iguiente teorema:

P denota CB => WPCSl,Q>3 Y <NO B => WPCSs,Q33 Entonces:

a. CP> B ENTONCES S1 OTRO 52 CQ>. b. Si Sí y 52 siempre terminan entonces:

<R) L) ENTONCES Sí OTRO S2 CQ) IMPLICA R => Q.

Ahora analizaremos los programas con c i c l o s , para estos

se cumple una condición que explicaremos en el s iguiente

parrafo, que ea muy importante en l a ver i f i cac ión del c i c l o .

INVARIANTES E INDUCCI6& El rezonamiento sobre l a - induccibn se hace a base de conjeturas a pa r t i r de un número lid tado de observaciones experimentales; para hacer l a s

domostr aci ones.

IWARIANTE es el su je to que 8s materia de l a sugestibn,

que no cambia;’ parad6jicamente cosas sommjante siempre

cambian rápidameente. Para el humano las cosas XNVARI-

so conocen como PAIIONXS; y algunas pruebas de inte l igencia

t ratan esto. Ejemplo: s:d ;

PARA i : = 1 HASiA La XNVARIAN~ de

I elementos a t i I ,at23,.

n HAGA E: s + a t í l ;

la proposición, s es la suma de los . a r i l antes de incrementar i .

Razonamiento Inductivo: Este proceso por el cual

inferimos una propiedad invariante de un conjunto de I

Page 12: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

obfervaciones. E l razonamiento inductivo procede de l a

conjetura a l a observaci6n y a l a demostraci6n. Por ejemplo

observamos que 1 +3=4, 1 +3+5=9, I +3+5+7=18; reconocemos el

FATR6N y hacemos l a conjetura 1+3+5+. . . +CSm-l3=m‘.

Domostración p o ~ Inducci6n: - Para demostrar las

conjeturas nmtenzdticas existe el p r inc ip io d e inducción

matemática. Esta normalmente nnvolucra un PREDICIOO PCn3,

con un número natural n.

E j empl o:

FYn3: 0+1+2+3+4+. . . +n = nCn+l)/% es un PREDICADO.

La esencia del p r inc ip io de induccidn matemática

Csimple3 es que PCn> es VERDADERO para todos los naturales ,

si es posible probar:

a. K O > es VERDADERO. Cbase de l a demostraci6n3

b. Si PCn3 es V ~ D A D U O entonces P Cn+l3 es VPIDADERO.

Cpaso de i nducci ón3.

Intuitivamente el pr inc ip io de inducción es simple,

dertpués dm tener estab lec ido el paso de induccidn conocemos

en part icu lar que:

K O 3 => PC13 por el jxso inductivo

Pc 03

PC13 por Modus poneni

PCI3 => FK23 por el paso inductivo

PC13

Pc23 por Modus ponens

Con esto pudo ver íntuiti-mente que todos los KO>, XI>, PC23,. - . son ~ D A D S R O I E .

El pr inc ip io tambih l o puedo usar cuando m I n l p

entonces se debe probar. a. Pía es ~ D A D ~ O . base del principio3

10

Page 13: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

b. Si m I n < p y PCn3 es VLIIDADERO entonces pCn+í3 es

~ D A D E R O para m I n I p.

Una variación si gni f í cati va en el p r inc ip io de i nducci ón

matemática es 11 amada PRIACí ?IO DE INDUCCION FWERiE. Cuando

usamos este p r inc ip io en el paso inductivo asumimos PCk3

para toda kln. E l p r inc ip io dice:

Si tenemor un predicado PCn3 sobre todos los naturales

entonces.

a. PCO3 es VLRDADLRO.

b. Asumiendo que PCO3, PCl3, PC23,. . . , PCn3 son V ~ D A D E R O S

entonces P Cn+li es YSRDADERO.

Recordemos ahora 2 def in ic iones importantes acerca C P ) S

C C D y de la precondición más débi l WPCS,CD: CP,SCQ) si

ejecutamos S apartir de un estado i n i c i a l P y si S termina

entonces draspuds de e jecutar S se satisface el estado Q.

wpCS,GD es el conjunto de todos los estados i n i c i a l e s

que garantizan la torminacidn de S en un estado que

satisface Q.

Cuando decimos que l a demostración de C P ) S €Q) es una

demostración de l a CORRlCCCION CONDfcIONAL, OT d w i r en l a

domostración S encuentra l a especificación, asumiendo su

trrminacibn; mientras quo l a demostración de P=>lypcS,dD es

l a dmmostración d e l a COIIRRCCION do S, es decir en l a

domostración S, encuentra l a espoci f icac i6n y sisntpre

tmrmina.

EJ. c r i t e r i o para terminar es l a base de una formulación

inductiva

w m A S , para l a precondicibn más deb i l en l a proposición

para programas con ciclos.

11

Page 14: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Ahora profundizaremos un poco con los programas con

ciclos Cque usan l a estructura de control MIFATRAS B HAGA

=.Para los programas s i n c i c l o s cuando se d e f i n i d WCS,Qi

asumíamos que S terminaba. Ahora para de f i n i r MIENTRAS WPCS,@ tenemos que garantizar que S va a terminar; cuando

demostramos para el c i c l o MIENTRAS P => WPCS,CD demostramos

l a commrccxoN de S , cuando S encuentra su especi f icac ión y

siempre termina.

Vamos a llamar a l a proposición MIENTRAS W y al cuerpo

del c i c l o S. Entonces si W va a terminar entonces S se

ejecuta un niimero f i n i t o de veces 0,1,2,3 veces etc. Vamos a

usar a K para contar el nirmero de i teraciones del cuerpo del

c i c l o antes que termine con un razonamiento inductivo.

Analicemos l a regla con un ejemplo concreto Consideremos

l a proposición MiEJ4iRAS I<>N HAGA EMPIEZA x=r+i ; s=s+r 'IERMINA con respecto a l a postcondición s=N(N+~>/z.

CO> Si lcro entonces i= N y l a postcondición Q debe ser sat is fecha automáticamente. La precondición es:

PtO> => íI=N> Y (8=N(N+i>/2>

C l > Si k=i entonces ejecutar W es equivalente a e jecutar S

dml estado en el cual ION. La postcondición es Q U

(s=N>, s nunca es ejecutada despues, que nosotros

u b s e r ~ m o s para sor PCOL

pU2 => QON> Y WPC se PCO>>. => UON> Y €ISN-f> Y <O+f*i=N(N+á>/Z).

=> (1zN-D Y íI=:(N-í>N/t>.

C 2 3 Si K* entonces ejecutar W es equivalente a eJecutar S 2

-os. El estado i n i c i a l dmbe sat is facwr iaa condicionos:

a.- ION

b. -Wpu&s de una ejecuci6n de 5, ION.

c . - EkspueS de 2 ejecuciones de S, X=N, s=N(W+í>/t.

Ahora vlmndo cuidadosamente sobro C l > uno nota que a , b

12

Page 15: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

pueden ser combinadas dentro d e una condición despues de

e jecutar una vez l a condici6n P w t iene . Pa> => ( I O N > Y WPCS,Pí3

=> <ION> Y <f=N-Z> Y <S=<N-t><N-á>/2>

=> íi=N-2> Y <S=(N-2>C N-í>/2>.

Ck3 E l patr6n ahora es claro para l a condición P<k>.

P<K> => <I=N-K) Y íS=(N-KWN-K->/1D.

=> (1SN-K) Y <S=f<I+l>/Z>.

Pero PCK) es l a condicidn con l a cual nosotros garantizamos Q despues de e jecutar exactamente k veces S.

Par a genet al i zar :

WPC w, S=N<N+l>/Z> => EC K: KZO: <I=N-K>> Y (S=N<N+í>/Z>.

Consideremos a MfENTRAS 13 HAGAS con respecto a l a

postcondi ci 6n Q.

Entonces nosotros podemos ca lcu la r las siguientes

precondi ci ones.

P(o> => CNO í33 Y Q.

Pci> => 8 y WPC S , Pto>3.

Pcu => 8 Y WPCS,Pw3.

P<K) => B Y cs,PUC-i>>.

Ahora aparenta ser que l a WPCW,CD puede ser explicada

por 2 predicados.

r.-Una condición para terminar con 01 c i c l o .

b. -Una condi ci ón i nvar i ante.

La condición para quo l a procondición garant ice l a

terminación do S on cualquier estado para el caso en que s

s u os WPCS,V~~~~AD>; y esto es ident ic0 a WPCW,NO B 3 ; porque

W termina

Cuando decimos I es invar ianate de MiENiRAS B HAGA S es

que S es ejecutado con precondicion I al terminar S entonces

i dobo sor l a portcondici6n garantizada. Poro WPCS,I>

1 3

Page 16: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

garantizará l a postcondición I.

1 Y B Y WPCS,VERDAD~ => WPCS,i>

Como antes def in id <P)SCQ) corm l a demostración de l a

comrcctoN de S con respecto a P y Q asumiendo su

tormi naci 6n ; Formal niente:

iP)SCQ) <=> CP Y WPCS,VERDAD> => WPCS,Q3>.

Entonces si I no cambia por l a ejecución de MIENTRAS B HAGA 5 , La r e g l a l a podemos formular de l a siguienteforma:

C i Y B ) S < I 3

€1) MIJZNTRAS B HAGA S C I Y CNO B>> iECREMA: Supongamos quo i y WPCS,vrro~so> => W P C S , I 3 entonces

i y WPCW.1 yCN0 B3í. La demostracibn es por induccci6n sobre el nQmero de

voces que se ejecuta el c ic lo . Se demuestra: *

f y p<ICXVmDAD> => PcK>cI Y CNO mD

donde P(oKQ3 <=> Q Y C N O B 3 ;

Pck>CQ)<=> B Y WPCS,P<k-I>C(;U.

a. k m PCO> <VIIDAD> <=> 1 Y VÍRDAD Y CNO B>

<=> CNO L?3 Y I Y CNO B3

<=> PtoKf Y CNO f33

b. Por H.1.se cumple para k.

P&XV&=> PfkK1 Y CNO B)> c-Por demostrar para KM:

f Y PCK+i> < => I Y 8 Y WPC SS P<KnVrrDAD>>

<=>B Y f Y B Y WFKS,Pa> t v r n ~ m 0 3

<=>8 Y f Y B Y W P C S , V ~ ~ A D > Y WPCS,Pac>>

+ B Y wpCS,I> Y WPCS,P<K> (V=DAD>>

<=> B Y WPCS, I Y PCKXV~LRDAD>~ =>B Y wpCS,I Y CNO B33

Entoncos I Y WPCW, VUDAD> < => I Y 3Cw.rtLO: P<)rxvera>

<=> 3CtcrLO: I Y P<KHV~RDAD>~

=> Xmc>O:p(~> C I Y CNO B33

<=> wpCW,I Y CNO 83)

14

Page 17: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Cuando nosotros preguntamos por l a CORRECCXON de un

algoritmo, queremos hacer l a demostración paso por paso?

definimos l o que es l a tabla de demostración: es una

secuencia ytermina con una aserción. La tabla es válida s i :

9.- Siempre que ocurre las aserciones CP)SCQ> enla Labla SE

una pr oposi ci ón VERDADICPLA.

b.- Siempre que Ocurre el par <F)CQ> en l a tabla l a aserción

P implica l a aserci6n Q.

Según l a definicibn de l a tabla esta puede variar mucho

dependiendo del detalle que p r o d . una tabla en l a cual

solamente hay assrcionss al inicio y a l final del programa

es s i mpl eniente una proposi ci 6n condi ci onal de 1 a CORRECCION

del código que contiene. El otro extremo es una tabla donde

este totalmente intercalada cada proposicibn con

aserciones.El intermedio de estos extremos es una tabla con

aserciones en los puntos importantes, por ejemplo.

<O<K Y I C Y , 5 , K > > : I C Y ? B ? K > <4 C raKI xN > SJ: P M K 3 ENTONCES EMPIEZA :9anCK3 <-> 2- para n 6i IN

<p&k> y O<K Y I c Y , 5 , K > >

Y=K/2

KPY-I

Cuando el programa contiene cilos es importante anotar

on cada ciclo l a propiedad invariante de este, en otro caso

Page 18: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

so requ ie re mucho ingenio para verificar el algoritmo . €1: Proporicion invariante)

Mientras B Haaa

<I y B)

S

€13

<I Y NO B) Una demostración completa es muy grande e innecesaria en

el nive l de d e t a l l e que proved.

Consideremos un segmento de programa S con precondición

P y postcondición Q, respectivamente. Una precondición

PRECS,Q> y dos conjuntos condicionales de ver i f i cac ión

V'CS,GD y VCP,S,@ que son construidos a partir de P,S,Q. en

l a s igu iente forma:

o.- Si 5 es l a asignacibn %=e entonces PRECS,CD y

V'CS,rn SOX1 WKS,#.

b.-Si S tienen l a forma Si, S2 entonces PRECS,@ es

PRECSl,PREC52,Gn> y V'CS,Q es l a unidn de V'CSl,PRECSl,CD3 y

V'CS1 ,Q>.

c.-Si S toma l a forma 8 ENTONCES Sí OTRO 52 entonces

PRECS,Q> of CB y PRECSl,CD> o CNO B y PRECS2,GDD y V'CS,#

os Ir union VsCSl,Gn y VsCS2,GD.

d . -S S t i en e l a forma MiENTaAs B HAGA Sl e I es l a

propiedad invar iante del ciclo entonces PRECS,GD es 1 y V'CS,Q) es la uni&n d e VCi y B,SI ,a3 y l a condici&n C f y

NO B) => Q.

e.-& todos los casos VCP,S,GD os l a union de V'CS,Q) y

l a condición P=> PRECS,43.

Las funciones PRECS,D,V'CS,GD y VCP,S,Cü son descr i tas

por los s iguientes predicados:

C p I 3 . Si todas las condiciones do verification en elconjunto

18

Page 19: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

V' CS, dl) son val idas entonces S es condicional mente

correcto con respecto a l a precondicion PRECS,@.

CP23. Si todas las condiciones de ver i f i cac ion del conjunto

VCP,S,GD son va l idas entoncos S es condicionalniente

correcto con respecto a l a precondicion P y

postcondi c i on Q.

Page 20: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

REDUCCION DE EXPRESIONES

GRAFICAS ACICLICAS DIRIGIDAS CD. A. G. ir Es una estructura de datos ut i l i zadapor los compiladores

para eliminar codigo redundante, un D . A . G . a d i fe renc ia de

un a r b 1 puede tener nodos internos o externos apuntados

otros nodos.

Un D. A. G. se construye dependiendo de l o s requerimientos

del problema, el D . A . G . de optimización u t i l i z ado por los

compiladores es diferente a l D. A.G.que se u t i l i z a para hacer

oliminacón de expresiones, porque l o s objetivoss del

problema son d i fe rentes .

Un D. A. G. tiene l a f a c i l i d ad do poder sor construida en

una tabla de memoria, en l a quo podemos hacer una gran

variedad de recorr idos por ejemplo: r eco r r i do secuencial,

previo, por nive les .

En el s igu iente elemplo se mostrara gráficamente como

esta construido un D.A.G. y cual es su representación en l a

tab1 a.

Page 21: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

8

Expresión en el árbol binario

Expresí6n en el D. A. G.

I I a & 2

B

5

Q I--:- O O

- - <

+ 6 7

I O I O I ' I O I o b

D. A. G almacenado en l a tabla.

Page 22: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Se u t i l i z a r á el D.A.G. para deteciar y eliminar

subexpresi on- comunes medí ante un algor i t m o de r educci 6n

a r i t d t i c a y l óg i ca haciendo un recor r ido simetrico del

D. A. G. , el cual se f a c i l i t a si el D. A. G. es almacenado en un

tab1 a.

REDWCION DE iPfPLiCACIONES DE L A FORMA OBTENIDA EN LAS

COUDl GI ONES DE VERI Ff CACi O.

Di señamos un a l gori t m o par a si mpl i f i car i mpl i caci ones

al cual denominamos REDuIL;CION DE CONSECUENTE.

Esto es un motodo ORIGIMAL desarro l lado para l a

demostracibn de las formulas del tipo C A 4 B3, esta tíacnica

consiste en ap l i ca r repetidamente el s iguiente teorema:

CCA & B3 -> CE F’33 <+ C C A & B3 > F > & C A -> E3

El teorema anterior es apl icado si tanto el antecedente

como consecuente son l a conjunción de var ios terminos.

1\1&&&h& . . . & A n -’ ’í&T2& .... 81Tn.

Para poder domostrar l a i m p l i c a c i h se toma cada

c láusula de l a izquierda y se revisa quo cláusulas del

consicuente son implicadas por ellas, esas cláusulas son

eliminadas dol consecuente.

Si el antecedente es ladisyunción de 2 o más terminos.

X i Y‘ X t V XO v . . . ’ Y X n

ESntoncos el teorema se debe aplicar a l a conjucibn de

cada uno do =tor subterminos C X U con los terminos

dol consocuonte, esto so j u s t i f i c a pot el s iguiente toorema:

Page 23: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

A & CB v C> < \ C A P B> v C A & C3

RELACION CON LA VERiFiCACfON:

En l a verificacibn de programas, como ya vimos

anteriormente se presentan ciertas condiciones de

verificacihn que son un poco gran cuales se trataran

de demostrar en total o parcial ma autanatica, y

asi dar al usuario más herramie ayuden en l a

tarea de verificar un algoritmo.

E l D. A. G. proporciona l a vent que si guardamos una

expresión en esta estructura 1 gules no se

repiten, por l o que es relati l o detectarlas y

hacer reducciones de tipo a algunos casos de

tipo logico. Este trabajo se

ventajas que da el guardar el D.A. en una tabla. por l o

que seria de mucha importacnc

estrtuctura y asi reducirla.

El metodo de REDUCCIOEI DE C CUENi€ t iene l a gran

ventaja que se p u d e demostra te una implicación

y psi si l a comprobaci6n no domostración.

Es muy importante aplicar l a CiON DE COEECUENiE para 1a VERIFICACION FORMAL DE AL porque las

condiciones de vmrificaci6n que son la forma: A -> B

y tione l a paricularidad quo frecune te el antecedente y

01 consecuontm son l a conjun

que so puede demostrar l a condición o dejar al usuario que

l a demuestre ya bastante reducida.

Page 24: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

A continuaci6n se da l a sintáxit de los algoritmos

aceptados por 01 VIEIU~~~CADOR.

<di gi to>: : =l U\3\4\5\8\7\8UW

(Qetra)): : =a%-\. . . h\ykL%\c\. . . kc\yW

<al f rnuaiór i co>x : =<a otr a>>\<di gi to>>\<al f a n u d r i co>>

<Cv;zri ab1 e si mpl o>>: : =<Q etr a>X<el f anudri cos3

cmombr e»: : =<a et r a>X <el f a n ud r i COS>

<eigne)): : =+\- <edici6n>k : =+\-\OR

<and ti pl i cador >>: : =*\/WND cooper odor r enaci onal >: : =< \< =\=V \< > (4rnterow: : w a g i to>X<úentero>>>

cm6mw-o entero»: : =<cantero>>\<csigno>> <ú.ntero»

<QiCaaoros>>: : =caiicniero entero>>

<war i abl e>x : =<war i ab1 o si mpl o>% <caxpr esi ón si mpl o>>]

<ei dsnti f i cador >>: : =<antwo%\<amri ab1 e>> c a l ommto>x : =& denti f i cador >>U <caxpr eri ón»í <@actor si mpl e>>: : =<al einento>>\<csi gno>> <al emento>>

<@actor>. : =<(factor simplo>>WOc~actor simplo>>

<&ormino»: : YcfactorMmul tipicadors <&actor>>>

cmxpr esi ón si mpl e)): : =<&ormi nolX <cadi ci -> <&er m i no>>> <axptosi ón»: : M-resi ón si -1 e>>

t GQprr adw r 01 aci onal %é*xpr osi ón si -1 r>>l

-si gnaci un si m p l e»: : m r i abi o>)iccaxpresi bri»

(6.1 occi : a <axprmsi ón>> B"-*oposi ci o m s U i R O C ~ o p o s i c i o n w ~ N ~

~<mxprwsir5lm m-oposi ci onos»FI NS

atmrrcic5n condicional»: : = ' M i ~ ~ x p r e s i o n »

22

Page 25: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD
Page 26: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

DESARROLLO EXPERiMENiAL

CroacióE Prourrma para Ver i f i ca r Parcialmente

unAlrioritmo:. -

Una vez rea l izada l a investigación teórica y def inida

l a ostructura s intáct ica del lenguaje que vamos a usar

Cestructura en BNF3, el s iguiente paso que realizamos fué determinar los axiomas, reg las y propiedades de l a

precondición más debí1 para poder ve r i f i c a r l a corrmctez

de un algoritmo a par t i r de una postcondición proporcionada

por el usuario.

ANALI Si S Si N T A m CO:

ET primer paso para l a automatización fué crear un

programa que h ic ie ra el análisis: s intáct ico del algoritmo,

esta program se div ide en 2 partes:

ANAL I Sí S L €XI CCGRAFI CU:

En l a primera parto se lem cada renglc5n on un buffer y

so anal iza caractor de izquierda a derecha identi f icando

cada t o b n del algoritmo fuonte que pueden ser :

ident i f icador , palabra r e i e rv lda ,nómero ,opador relaciona1

C<c =, C<, =, >># >)Q, <O>3 , operador aritmético C -, +. *, 4 bl anco,

punto y camP,corchote izquierdo, corchete derecho, error , f i n , commtario, paréntesis, izquierdo y paréntesis derecho.

Si en el anPilisit lexicográfíco se encuentra un error osto os almsircmrdo guardando l a posicibn Crenglónr columna>,

so interrumpe el aná l i s i s y so borra l a t ab l a de l i s t a s

l igadas pormitiendo a l usuario c o r r e g i r l o y volver a

oinprzar. Si estea aná l i s i s no detecta ningún error da como

24

Page 27: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

resultado un apuntador a l f i n a l de l a t a b l a para que en l a

s iguiente par te del programa se f a c i l i t e l a verifi 'cación.

ANALISiS SIWACTICQ:

En l a segunda parte identi f icando el token se v e r i f i c a

que l a proposición sea estructuralmente correcta de acuerdo

con l a s in tax i s def in ida en BNF. Sí l a proposición no t iene

error se guarda en una tab la de l i s t a s l i gadas de acuerdo a l

t i p o de proposición: Si es una asignacibn guardamos l a

var iab le y l a expresión que se l e asigna a l a var iab le . s i es

una selección guardamos l a condición, un apuntador a l a

proposicidn CS í> cuando se cumple l a condición, un apuntador

a l a proposicic5n C-523 cuando no se cumple l a condicicjn y una

var iab le booleana que nos indica si l a proposición pertenece

a 51 6 S2;cuando l a proposición es un c i c l o guardamos l a

condición y un apunt.ador a 3 a proposición dentro del

cic1o;todas las proposiciones tienen un apuntador a l a

proposición s iguiente más externa, a l a anter io r , a l a

posterior y una va r i ab l e booleana que indica cuando l a

proposición está dentro de una seleccibn y está en l a parte

del otro.

ESTRCACTWRA DE DATOS:

los datos en esta parte de1,programa son almacenados de la s iguisnto forma:

1- El programa fuonte so ericuontro en un archivo tipo texto

do disco, es l e i d o por renglones CSTRING í8013 para

hacer o1 anal i a i s 1 oxi cograf i co.

2- En l a parte del a n a l i s i s s intact ico so genera una tabla

de listas ligadas donde hay 3 tipor: d f e nodos dependiendo

d m l l a p r w i c i t 5 n que se va almacenar:

a. Asignaci6n: t iono 2 cadenas para almacenar las

var iab le y l a expresit5n.

Page 28: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

b.. Selección: consta d e una cadena para almacenar l a

condición; 2 apuntadores, uno a l a ultima proposición

cuando se cumple l a condición y otro tambien a l a

ultima proposici6n pero de l a parte del OTRO.

c . Cic lo : t i en e una cadena para guardar f a condición y

un apuntador a l a ultima proposición del cuerpo.

Todos los nodos t i ene 3 apuntadore: a l papa si son

parte del cuerpo de una proposición A s experna, al

hermano y al anter ior que son las proposiciones anterior

y posterior dentro del mismo nivel de profundidad.

\

Page 29: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

-1 FI CACI ON:

RELACiON CON EL PROGRAMA De5 ANALiSiS STJ4TACTiCO:

l a re lac ión entre l a ver i f icac ión y el programa que hace

el ano l i s i s s intact ico esta en la tab la que almacena el

programa fuente puerto que es ta esta diseñada para

f a c i l i t a r el recorr ido da atraz hacia adelante necesario

para l a ver i f icac ión.

DISLÑO DEL PRotRAHA DE VERIFICACION: El siguiente paso f u e r ea l i z a r un programa que a pa r t i r

de una postcondi c i ón encontrará una pr econdi c i ón par a cada

proposici6n de un algoritmo para esto este programa debe

recorrer el alogoritmo de abajo hacia a r r i ba ut i l i zando l a

t ab l a generada en l a parte del aná l i s i s s intáctico. En cada

proposici6n dependiendo del tipo de es ta , encuentra l a

este tenga l a oportunidad de detener l a ver i f icac i6n si

precondicj 6n JI&S débil desplegandola a l usuario para que

encuentra algún e r ror ; cuando l a proposición 8s un c i c l o de

la siguiente forma:

c 13

Mientras B hoar Si

CQ)

Donde I es l a condici6n invariant- proporcionada por el

usuario; se necesita determinar el valor de VCSDAD de l a s iguiente condici6n da vorificoici6n:

i Y CNO ED => Q.

Cuando encuentra l a precondición de l o proposición

in te rn i del c i c l o .

i I 3

Hirntroi B haga C m 3 Si

av

Page 30: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

S, necesita determinar el valor de VUDAD de l a

siguiente condición de verificación:

1 Y B => PI.

Debido a que se necesita una mayor interacción entre el

programa verificador y el usuario se l e integra al program

do verf icacih un editor que en l a primera parte se usará

para editar los algoritmos a verificar.

Cuando el usuar i o deter m i na cancel ar 1 a veri f i caci ón

esto implica que el programa qua verifLra hace eJecutar a l

oditor permitiendo la edición del programa para que su

modi f i caci ón sea i nmdi ata.

ESTRETURR DE DATOS:

Este programa esta solo requiere de l a tabla generada en

l a parte del anal.isis sintactico, solamente introduce las cadenas donde sa almacenan los conjuntos de verificación.

Page 31: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

A continuación so da l a s in tax i s do las condiciones do

vvri f i c a d ón.

<di gi to>>: : =l ~ K 3 W ~ N U h O

<dotra>): : =a*k\. . . b\y'uk\*b\c\. . . 'uc\y\z c o l f anuuhr i CO>X : =<U etr a»\<Idi g i to>>\<ul f a n u d r i co>>

cWari ab1 e si nip1 ~ > k : =<U etr a>X<(irl f anumér i co>>> cmombr o>): : =<a ot r a>X <al f anum6r i COX+>

<esigno>): : =+\- <*dicid->: : =+\-\OR

<ouL ti pi i cador»: : =*- <doper ador r enaci onal >): : =< \< =\=V \< > <*ntor o>>: : =<di gi toM cantor o>>> cmúrnmr o entor o>): : qrritor o»>\<ei gnos <Ienter o>>

<múmrr os»: : =<(húmBr o enter o»

<War i ab1 o>>: : =<war i ob1 e si mpl e>X <cirxpr eoi 6n si nip1 es3

<cl dentí f i cador >X : =<6antoro>>\<cvar i ab1 o>>

c w p o c i al >>: : =TODOC <eMr i ab1 e si mpl e>> : <Qexpr esi on si mpl e>>

<-ridor r el aci onal >> <*xpr esi on si mpl o»

<* ador r el aci onail>> <*xpr m s i on si mpl e>> :

<*qx sobi on>>\ QCISIE<War i ab1 o si mpl o>> : <Qmpr eri on si mpl o>>

<QDpvrador r vl rci mal >> <Qipxpr esi on si mpl e>>

c4opor ador r el aci anal>> <Qnq# msi on si mpl e>> :

<dmprsosions\

~c~rr iablo simplo>% =SüWU<cvariablv simples :

a x p r mi on si mpl e>> <- ador r m1 aci onai >> C 0 X p r - i an si mpl ri>> <*per ador r el aci -1s

caxprvsion simplo>> :

Caxpr sosi on si mpi a» %

<al emonto)): : =<d denti f i cador >>U <~incpr eri <dPactor si mpl : -al ollwnto>>\<aigne> <o1 eaientm> <&actor»: : =<Cfactor si mplo»>WOc~actor si- e>>

\<-ped al >>

Page 32: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

<&et- mi no>>: : =<(fat tor >Xmul ti pi cador >> Wac tor >>> c-xpr esi 6n si mpl e>>: : =<&tar mi no>C <&di ci ón>> <cter mi no>>> <-esi ón»: : =<cexpr esi bn s i mpl e>>

C enper ador r el aci onal >Xaaxpr esi 6n si mpl e>>]

Page 33: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

REDUCCIQN DE CONDXCION DE VERXFXCACION:

Comm ya se nuonciono l a importancia de ve r i f i c a r 6

reducir l a s condiciones de ver i f icac ión, SSP van a diseñar 3

programas para este f i n :

Primero se de f in io l a s intax i s para l a s expresiones,

esta es basicamente l a misma que la def in ida para l a s

expresiones que se permiten en el algoritmo; solamente se

le introdujo cuantif icadores CUniversal , existencia13 y

expresiones de sumatorias C Definición en BNF 3.

PROGRAMA PARA LA GENERACiON DEL D . A . G . :

€l programa que hace el ana l i s i s s intact ico de l a

expresión u t i l i z a recursos ya croados como os el progarma

quo hace el an a l i s i s l ex icogra f i co ; para lograr l a

compatibilidad f u é necesario almacenar l a expresión en un

arroglo de cadenas de caracteres y as i solamente introducir

una parte en l a lectura del renglon CBUFFEB y una rut ina de

codi f i caci ón del token.

EL programa que hace el ana l i s i s s intact ico guarda l a

expresión en un D. A. G. Cuando el termino es una eicprasibn de

cuntiflcadoroms o smmtoria, se hace un llamado recursivo y

as1 generar el O. A.G. de esta parte para luego hacer l as

reducciones arimetica Creductor3 y finalmonte pasar lo a otro D. A. G. auxiliar donde so guardan cada una de l a s siguientes expresiones: expresión de los limites, l a expresibn

control C expresión que esta en d i o de l o s limited y l a

expr esi ón control ada.

3l

Page 34: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Para mayor f a c i l i d a d y eliminación de codigo redundante

se eliminan las operaciones de > y 2 por que estas pueden

SOT sust i tu idas por las operaciones de <, I, y =. Cuando el

operando es una R e s t a ó un NO l og ic0 se trata de eliminar

aplicando los s iguientes teoremas de las matematicas:

a. -C-A3 = A;

b. -CA + E3 = C - A 3 + C-B3

C. <A * B3 = C - A 3 * B d. -CA B3 = C - A 3 / B

l o mismo sucede con l a negacíc5n logica CNO3:

,

a. NOC A & B3 <-> NOCA3 Y NOCA3

b. NOC A Y B3 <-> NOCA3 & NOCB3

C. NOC A = B3 <-> CA <> B3; NCKA <>B3 <-> CA = B> d. NOC A < E> <+ CB I e. NOC A I B3 <-> CB < A3

Con esta p o l i t i c a so disminuye un poco el trabajo

de l a reducción; para poder toner las nogaciones se

introduce un campo más en e D. A. G. quo nos indique el estado de l a hoja.

PlBoGRAEIA REDCACTOR:

War voz generado el D.A.C. so pasa un apuntador de l a cabeza del D. A. G. a l reductor para que este baJe sobre

el mismo y haga reducciones basicas do 3 tipos:

1. Atitmaticat: a+O, a-, a%í* a/a, a-a; Apl ica l a l e y

asociativa para l a s u m C+,-3

y r e a l i z a todas las operaciones numoricas con 2 nodos y para l a m u l t i p l i c a c i h ;

hojas del mismo padre.

Page 35: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

2. Relacionales: Reduce a un valor de vierdad si puede

determinar el valor de l a re lación: C a < a+-, C a > a d , donde x es cualquier numero y el operador puede ser

<, I , =, que son los que genera el s intact ico do esta

par to.

3. Las reducciones logicas en l a parte del reductor

solamonte se hacen con los operadores 'Logiccis

C 8 x Y 3 , :COD> y son basicamento para eliminar l a

redundaaciaaplicando los siguientes teoremas:

a. C A & M <+ A

b. CA N <-> A

C . C A 8r VERDAD) <- > A d. C A & FALSO> <-> FALSO

8. CA VERDAD3 <-> VERDAD

e. C A ! FALSO> <-> FALSO

f. CA&NOCCU> <4 FALSO

g. CA : N=N> <-> VERDAD

Debido a las r 'ostriccioner do memoria y como el reductor

en las operaciones que r e a l i z a genera y borra nodos,

entonces 'el nodo limpio dentro del D. A. G. se marca en campo

dol tipo; cuando se t ieno que recorrer secuencialniente l a

tabla para buscar un nodo part icu lar entonces se marca el

prinmr nodo libre para cuando si0 necesita un nodo nuovo.

Una vez hecha l a r d u c c i o n aritmetíca el D. A. G. es

compactado y se actual izan los apuntadores, esto para que

quede su f ic iente espacio a l a hora de reducir l a otra

oxprosión quo so hace d o ' l a mis- forma.

Cuando termina do reducir l a segunda oxpresicin antes de

conpactar el D . A . G . se debe -dar con el primer D.A .G . s i n

perder los apuntadores a1 i n i c i o de cada D. A. G. Esto 85 muy

33

-

Page 36: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Y 1 u-

importante para poder u t i l i z a r el &todo de EI.IMiNACION JX

-CIJENiE a l a hora de v e r i f i c a r l a implicacihn.

Lrr funci6n mas importante del programa reductor es hacer

las reducciones básicas mencionadas antes y hacer l a s

modificaciones del D. A. G. s i n a l t e r a r 5u consistencia.

PROGRAMA QUE DEMUESTRA LA IMPLICACION: Bgte programa se diseño para que, ut i l i zando el m&todo

o r i g ina l de REDUCCiON DE CONCECUEHTE, demuestre la condici6n

de ver i f i cac ión ; para lograr este fin r ec i be a l a entrada

los apuntadores a l i n i c i o de cada D.A.G.Cantecedente, y

consecuente>, el D. A. G. auxiliar y l a matriz de apuntadores

a este D. A. G.

Este programa esta diseñado para domostraciones de l a s

si gui entes for mas.

A & B V C ) - \ D

Donde A,B,C,D pueden s e r l a conjucihn de muchos t6rminos.

La priniera parte do domottraci6n es l a s iguiente

i m p l i c a c i h : .

Si esta demostración es completa entonces regresa un vaior de -dad, si l a domostracihn f u 6 parc ia l entonces so

guarda en un s t r i n g l a implicación reducida.

A' 4 D'

34

--- _x_ I

Page 37: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

y se procede de l a misma forma para demostrk que:

B 4 D

C ---> D

Para cada una de estas reducciones se aplica el método

de l a misma forma, solaniente canbia el c r i t e r i o cuando l a

implicacibn es completa porque esto no demuestra C13

entonces simplemente esta parte no se pone en el resultado

f i n a l que es una cadena de caracteres para que el usuario

t r a t e de hacer l a demostracibn.

CA'-.>D'3 V CCB'->D'3 A CC'->D'33.

Ahora explicamos como hace el programa para demostrar

las implicaciones de l a forma:

Conro mencionamos anteriormente A y B son l a conjunción

de varios terminos:

CTI A TZ A To A . . . .Tn>-> CXS A X2 A . . . A Xm3

Entoncms el primer paso es hacer un conjunto Cno

ordenado> para el antecedente y otro para el consecuente. ,

Cada término so c l a s i f i c a dependiendo de l a re lac i6n de los

subt+rminoa; Cai3 de l a s iguiente forma:

-?.=u - a a I a2

- - € a 2

- VCpara todo>, 3 Cexiste3, Z CSUM>

ti estos términos no so divid-n en subtérminos.

luogo tomamos el conjunto del antocedente y l o dividimos

on los siguienter; conjuntos: $$,

Page 38: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

- Conjunto de equivalencias de igualdades Cno ordenados>.

- Conjunto de equivalencias do menores C < í Cordenado3.

- Conjunto de equivalencia de menores i gua l e s Cordenado).

- Conjunto de especia les : en este conjunto se guardan los

tdrminos que son cuantif icadores o sumatorias. Todos estos conjuntos son DISYUNTOS.

Cada uno de los conjuntos de equivalencias son conjuntos

de conjuntos; y en cada conjunto Celemento> so guarda l a

re lac ión interna entre los subt6rminos. De esta form se

pudo crear una re lac i6n d i recta entre dos subtérminos que no

sean de l a misma rama, tambidn de esta forma se eliminan l o s

ter m i nos r edundantes.

Esta es l a estructura de datos necesarios para poder

ralizar l a demostración.

Luego SB toma cada elemento del cconjunto del

consecuente y depondiendo de que tipo de termino es, se

opera:

A3 Si es una igualdad y si los dos subtéminos están en un

conjunto Celemonto> de igualdad el termino del

consecuente so elimina porque se tiene:

ai = aj \ai = aj

Si l o anterior no so cumple. Entonces se buscan los dos

subtérminos en a l g h conjunto Celemento> dol conjunto de

menores-igualas entonces se elimina el t6rmino del

consocuente porque se cumple.

ai I aj => ai=aj

a) Si es l a desigualdad C<> y si los dos subt9rminos

-tán on un conjunto Celomentoí del conjunto -nor o el

conjunto menor o Igua l entonces se elimina el tet-mino

dol consecuenteporque se cumple.

ai I aj => ai < aj

a i < aj => ai < aj

Page 39: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

O Si es l a desigualdad C S opora de l a misma forma pero

soiamente con el conjunto de menores iguales porque se

cumple. ai ,< aj => ai I aj

D> Si es un erpocial wste se divide en varias partes:

<@símbolo>> <Wariable» : <& I>> Cap>> <@xp ten» <bp>>.

(6 S> : <áZxpr controlada>>

Símbolo es el símbolo que identifica al especial.

Variable es l a variable de control.

L I : es el límite inferior.

L S : es el limite superior

<bp>> os un operador C < , 5 , =3.

caexpr central» : es l a expresibn que esta en medio de l o s

limites y l leva l a variable controlada.

CQSXPP. controlada»: es l a expresibn controlada.

Con esta división y utilizando el O. A. G. auxiliar se

pude revisar que cada parte sea igual s i n importar l a

variable que controla.

Si el especial no es implicado on forma total este se

pude reducir a una condición en algunos casos.

ESTRlKTuRR DE DATOS

Las estructuras fundamentales son :

Icu D.A .G que se desarrolla en una tabla con lor siguientes

campos:

- Información.

- Hijo-izquierdo.

- Hi jo-derecho.

- Tipo: C~riable,nQniero,Boleano,interno~.

- Contador: Contador do nodas quo l o apuntan.

- Estado: C P ~ i t i v o , n e g ~ t i v o - m t e ~ t i c o , n e g a t i ~ 1égico3

37

Page 40: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

- Especial : Apuntador a l a ta& la aux i l i a r dol D, A. G. do

espuci al es.

B3 D.A.G. espec ia l , está construido de l a misma forma.

O Vectordo cadena de carreteros donde se guarda cada

variable.

D Matriz-Especial: es una matriz que en cada rengl6n esta

l a informaci6n Capuntadores d s cada D.A.G.3 de cada

especi a1 i dad.

- Apuntador de vector de cadenas donde so encuentra l a

variable controlada.

- Apuntador a l a ra íz del D. A . G . CD. A . G especia l ) do la expresi dndol 11 mi te i n f e r i o r .

- Apuntador a l a r a í z del D. A. G. CD. A . G especial3 de l a

expresión del límite superior3.

- Apuntador a l a r a i z dol D.A.G. C D . A . G especial3 de l a

expr esi ón contr o1 ada.

- Operador de re lac ión del límite inf'erior.

- Oporador de re lac ión del limito superior.

- Apuntador a l a r a í z del D. A . C . CD. A . G especia13 de l a

expresión controlada.

- Apuntador al vvctor de Str ing donde está el

cuanti f icador o l a sumtor i a espocia l .

E3 Conjuntos: Cno ordenador3 donde se guarda los conjuntos

e1 consocuento, antecedente, ospedalos.

Tambíh se usan para l a parte asociativa del Rid.

Fr) Voctw de conjuntos: donde cada conjunto es un conjunto

dm mquivaiencia de igualdad.

a Matriz: dondr todo ronglón es un conjunto Cordmaado3 de

oquivalmncia Chay dos nvtricms uno para los conjuntos de

rqU ivr l rnc ia menoros y o t r a para los conjuntos de

q u i v a l r n c l a mwnoros-iguaios3.

Page 41: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

StsI1EMA COMO UNIDAD INTEGRADA

En esta parte damos el comportamionto del sistema:

El sistema parte de un menu principal donde están las

opci ones : -Archivo.

-Editar.

-Veri f i car. -Sa l i r .

- ARCHIVO:

Con esta opcic5n el usuario da el nombre del

archivo donde se encuentra el programa con el 4ue va a

trabajar.

Para introducir el nombre el usuario puede u t i l i z a r

algunas teclas de edicibn.

- BACK SPACE.

- -B , e .

- JXL.

- RRURN.

- EDITOR: Gon esta opción el usuario accesaun ed i to rde panta l la

integrado al programa.

Este editor fuo disofíado para proporcionar al usuario

una form de modificar el programa con las opciones de

d i c i 6 n del EDiTOR DE PASCAL.

Page 42: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

- VERIFICA:

Por medio de esta opción el usuario v e r i f i c a el archivo

quo ya esta seleccionado, en caso de no haberse seleccionado

con anterior idad automáticamente se da l a opción de archivo

y luego se ve r i f i c a .

El ver i f icador primero lee e.1 archivo si este no esta da

un mensaje de error al usuario.

Una vez qua el archivo es leído se l e hace un a n á l i s i s

s intáct ico y si hay un error se marca editando

posteriormente el archivo para su modificación.

Si no hay error despl iega el programa y pide al usuario

l a prrcondicibn y l a postcondición.

El usuario cuenta nuevamente con l a s opciones para l a

di ci 6n.

Con la postcondición ~1 programa encuentra l a

precondici6n y se l a desplega a l usuario permitiéndole

abordar en ese momento <e>.

Si l a proposici6n es un c i c l o el programa SO encuentra

con una condicitrn do v e r i f i c a d & que primero trata de

domostrarla, si no es pos ib l e se l e da una exprosi6si

reducida al usuario para que esta l a demuestre.

El proceso s igue do i gua l forma hasta que va a salir

del c i c l o donde se encuentra otra condición de ver i f i cac ión ,

y el program se comporta de l a misma manera que con l a

anter i or condi c i ón.

Page 43: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

l

La r'rltima condición de ver i f icac ión ocurre cuando l a

ver i f i cac ión está terminada pues l a precondición encontrada

por el programa debe implicar l o precondición dada por el

usuar i o.

En esta parte el usuario puede abordar la ver i f icac i6n

oprimiendo IESCJ y el programa da l a opción de editor para

que 01 programa fuente sea editado.

Si l a ver i f icac ión concluye satisfactoriamente el

sistema regresa u1 menú yrínci pal.

SALLkS

Esta opción es la sa l i da del sistema para ragretar a

<dos>>.

09.1207

Page 44: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

W A L DEL USUARIO

En J a ultima sección, donde se presenta a l sistema como

unidad integrada, sedescribe el funcionamiento del programa

en general , por lo que en esta sección solamente vamos a

de f in i r a l usuario cual es el lenguaje del algoritmo

permitido para v e r i f i c a r , y cual es l a s intax i s de las

condiciones de veri f icación.

DEFiNZCION LENGUAJE PERMiITDO & ALGORITMO:

ENCABEZADO DEL PROGRAHA:

E l programa debe empezar con l a palabra PROGRAMA seguida

do un nombr SC i denti f i cador > ;

Ff NAL DEL PROGRAMA.

El programa se f i n a l i z a con I r palabra FIN.

EiEMENi'Os BASíCUS DEL LEEJIGL'AJE:

tot elementos basicos del lenguje estan integrados por:

a. sZMBOLo6 BASICO: Los simbolos basicos ostan formados por: 1. Lotras: A a l a 2, a a l a z , - ,

2. Mgitos: O I 2 3 4 S B 7 8 Q

3. Simboios Especiales: + - w / = C 3 f 3 ; :

4. 13elimitadores: Blancos y f i n d e l inea .

b. PALABRAS R-VADAS: Las palabras reservadas son parte

integral del l e gua j e del algoritmo y de l a s intax i s de 1- condiciones de ver i f icación. Estas no pueden ser usadas como i denti f icadores.

42

Page 45: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

EMPIEZA, FIN, PWAMA, MIENTRAS, HAGA, S I , ENTONCES, Y ,

O, NO, MNS, FINM.

DEFINZCZON DE LOS ELEnENTos USADOS POR El. LEEfCuRJE:

El lenguaje permite usar los siguientes elementos:

a. IDENRFICADORES: Son usados para denotar las constantes

y las variables, estas se construyen con una letra

seguida de UM combinación de letras y numeros, un

ident i f icador es delimitado con la longuitud de l a l i n e a

80 caFacteres.

b. NUMEROS: Los numeros son constantes enteras que tienen un

rango de -32768 a 32768.

EX?RESIONES Las expresiones son copstruciones ari tmeticas que

especi f ican reglas para el ca lcu lo de valores; Estas

ó un valor numorico Centero3.

q r e s i o n s s pueden ser de un valor logic0 CFALSO, VERDAD>

OPERADORES: Los Operadores se dividon en las s iguientes

catcgor i as do pri ori dad.

1. monos Unaria.

2. NOs..oü~r;o.

3. Operador- dm d t i p l i c a c i b n : *,/,Y. 4. Operadores d o adición: +,-,O.

3. Operadoros de re lac i6n: =,<,<=,>,>=,O.

Para aumontrr l a pr ia r idad de las operadoros so permite

a i usuario utiliza C>.

Page 46: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

PüPOSICiONES: La parbe de l a proposiciones define l a acción que va a

ser ejecutada por el programa,como estees un secuencia de

proposiciones entonces cada una de estas especifica una

parte de l a acción.

a. ASIGNACioEl SIMPLE: Es una proposición simple, esta

proposición es l a más fundamental e importante de todas

ips proposiciones y su sintaxis es:

una Variable simple, Siguida de : = , una

expresión y se termina con ;

Ejemlpo:

JAEM : = WE * 2;

En este ejemplo JAEM es l a variable simple y WE 3) 2 es

l a expresión.

b. PROPOST CI ONES ESiRUC'NRADAS:

Ai programa que se va a verificar se l e permite usar l as

siguientes estructructuras do control :

1. SeLección Condicional: esta proposición especifica l a

proposición que va aser ejecutada solo s i l a

condicibn boleana es VrmDADmmA, si esta es FALSA,

entonces otra proposición que l e sigue a l a palabra

resevada OTRO es ejecutada. La sintaxis BIS l a

sigui ente:

Page 47: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

t

S i condicion ENTONCES proposicion i;

proposicion 2;

.. .. .. proposi c i on n;

OTRO

proposicion i;

proposicion 2;

. . . . . . proposicion m;

FINS Cuando 1 a condi ci ón bol oana es

FALSA. l a proposici6nCes3 a ejecutar es opcional y l a

s intax i s es la siguiente:

Si condicion ENTONCES proposicion i;

proposicion 2;

proposicion m;

FINS

.. .. ..

SI: i.nter<O ENiowcEs a: 4 ;

<nao b:-; FIns

2. i t e zxzc ih Condicionarl: Esta p ropw i c i bn e rpec i f i ca quw

van a so ejecutadas repetidamonte, proposiciones si

la condicic5n boleana ms VU~DADES~A; en caso contrar io

no .se e jecuta I r praposicionCms3, condici6n; La s i n t r a s es l a s iguiente:

Page 48: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

MXENTRAS ccondicion HAGA proposicion r;

proposicion 2;

. . .. . . proposicion n;

FINM

Ejemplo:

MIENTRAS b(O HAGA a: =a+l ;

FINN.

Esta son las estructuras permitidas para l a ver i f i cac ion

de un algoritmo

CoNDrcIONEs VER IFICACION

La s intax i s do l a s condiciones do verif icacibn es ia

nrisni;i 4ue la du l as expresiones del algoritmo y d i f i e r en

en que ahora.en estas expresiones se pormiton cunti f icrdores

y rurmtoriar que tienen l a siguietltaa s intax i s .

1. TOlXKvarirblo : oxprosion i oporador exprosion 2 operador

2 .EXI~Cvrr irb le : expremian i operador exptesitm 2 operador : eícpsesion d

: -exproreion I) 2

Las expresiona i . 2 , a solamentepueden saw expresiones aritamticas; La mcprmsion 2 debo i nc lu i r a l a variabie

contr o1 ;ida

Page 49: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

3. va r i b l e I : = SUMACvariable 2 : expresion operador

expresion t operador expresion :

expreri on3

Las exprosioraes permitidas aqui solamente pueden ser

expresiones aritmeticas, y l a expresion I debe i n c l u i r a l a

var i ab1 e contr 01 ado.

El caso de la sumaturia es la unica asignacion permitida

en las expresiones de l a condicidn de ver i f icac ibn.

Page 50: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

I

I

1. Con este proyecto se deaiusistra que es pos ib le crear un

sistema de SOFWARE que sea una herramienta poderosa en

la ver i f icac ión de programas.

2. Dada las l imitaciones de tiempo y l a compleji'dad del proyech se r s s t r i n g i o este en l a sintaxis del algoritmo. sin embargo no so l imit6 ii quo el proyecto

fuma continuado hasta ser un sistema -nos res t r ing ido

para el usuario.

3. Como experiencia este proyecto f u é muy importante, porque

en el SI) aplicaron muchos conceptos y herramientas

nuwas.

Page 51: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

I

BIBLi OGRAFI A

1. Ah0 A. V. Uilman 3. D., Pr i nci pl es Of Compi 1 er Desi ng . Addison Wesl ey, 1979.

2. Grieo David,

T h m Science of Programming,

Spr i nger veri ay, 1 985.

3. Backhouse C. Ronald,

Pr ogr a m Cons t r uct i on And Ver i f i cat i on,

R e t i n c e H a l l , 1988.

Page 52: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

PROGRAMA f-RINCIPfiL

FrGyecto d e investigation

Verificacicm parc ia l d e algoritmos

Jorge Alberto Echeverry matr i cu l a #E3422771 4

OGRAM Veri f i cador-Formal -1nt er act i vo;

NST SPACE = #32; BEEP = #7; REGRESA = 13; ESC = 27; L A = 75 ; RA = 7 7 ; UA = 72; DA = 80 j

.: constantes del codigo ACC í I d e .La f lechas > C Colores 3

LOR-1 = O; COLOR-L = 14; COLOR-3 = 9; CDLCIR-4 = i5; CDLOK-5 = 4; t ipo de Datos 3 W M = 1; T-fiLF = 2; T-ALNUM = 3; GRANDE = 100; V-BAJQ = 1; PE

cad-corta = stringL53; tipo-con junto = SET OF 1 , . U-GRANDE; cad-expres = STRINGC2553; ,C Longitud de una expresi 6n .I

.tipo-nom = STRINGC203; *; Cadena donde se guarda al ntsmbre del proq: dos-rec = RECORD .: Regitro de interrupcim i J

ax, b x , c x , d x , bp, si, d i , d s , es, f l a g s : INTEGER; END;

? C Var iab les u t i l i z adas por e l editcar y el programa en forma global 2 n-chars : REAL; d r i ve : CTRINGC23; : cadena donde 5e guarda l a

identi f icacion del d r ive a c t . > di rect : STRINGC643; .: cadena donde se guarda l a

nombre : tipo-nom; caracter ,opcim : CHARS dos-cal 1 : dos-rec; r en-er r x -er r y-err : INTEGER; f i n-ed , arch-mem, 1 ee, f i nal , err: BOOLEAN; { indica e1 f i n a l de l a edicion

identi f icacion del d i rector io act .>

-ocedimientos de l editor que son u t i l i z adas par el programa ver i f icador

xedimiento que lee e l nombre del programa fuente

-0cedimiento lee un caracter s i n desplegar en pantal la

ICEDURE GetChar (VAR cc : CHAR); BEG IN Read (kbd, cc 1 ; cc := UpCase ( c c ) ; END CGetChar3;

'rocedimiento que r e a l i z a 4 t ipos d e marco entran

CEDURE marco(xi,yi,xf,yf,tipD:INTEGER); )o parametors l a s esquienas 3

041207

Page 53: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

PROGRAMA PRINCIPAL

4R i : INTEGER; BEG IN I F (xi<xf )AND(yi.::yf >AND(tipo I N C1,2,3,41) THEN BEGIN Window (1,1,80,25) ; IF tipo IN f1,23 THEN BEGIN

END ELSE BEGIN

END; For i:=1 TO xf-xi DO BEGIN

TextBñckground (COLOR-1 1 ;TextColor (COLOR-4) ;

TextBachground (COLOR-4) ;TextColor (COLOR-1) ;

GotoXY(xi+i,yi); IF tipo IN fl,33 THEN Write(Chr(205)) ELSE WritetChar(í96)); GotoXY (xi+i ,yf 1 ; IF tipo IN Cl,33 THEN Write(Chr(205)) ELSE Wri te (Char (196) 1 ;

END; For i:=1 TO yf-yi DO BEGIN

GotoXY (xi, yi +i 1 j IF tipo IN il,93 THEN W~ite(Chr(lB61) ELSE Write(Char(l79)); GotoXY(x+,yi+i); IF tipo IN C1,33 THEN Write(ChrliB6)) ELSE Wr i te (Char ( 179) 1 ;

END; GotoXY(xi,yi); IF tipo IN f1,33 THEN Write(Chr(201)) ELSE Write(Char (218) ) ; GotoXY (xf ,yi j' IF tipo IN Cí,33 THEN Write(Chr(l871) ELSE Write (Char (191 1 ) ; GotoXY (xf ,yf 1; IF tipo IN fi,33 THEN Write(ChrIl88)) ELSE Write (Char (217) 1 ; GotoXY (xi ¶yf) ; I F tipo IN C1 , c i J THEN WriteiChr(20O)) ELSE Write(Char (192) 1;

END; TextBackground (COLOR-1) ;Textcolor (COLOR-4) ; END;

DCEDURE Pi deNombre; R i : INTEGER; dummy : STRINGL203;

BEG I N nombre := " ; Window(10,23,70,25) ;ClrScr; marco ( 10,23,70,25,2) 8 GotoXY (20,241 ; Write ('Nombre del archivo E ' ) ; i s=WhereXs GotoXY (i+20,24) ;Write(' 3 ' ) ; GotoXY (i ,241 ; dummyt =lee-val (20, T-ALF) ; FOR i := 1 TO Length (dummy) DO

IF dummyCi3 < > SPACE THEN nombre := nombre + UpCase (dummyCi3);

END {Pi deNombre3 ;

I

Page 54: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

PROGRAMA PRINCIPAL

E R L A Y PROCEDURE Menu; iH i :INTEGER; FUNCTION selecciona: INTEGER; VAR linea : INTEGER;

PROCEDURE cñmbiafposicion, tipo: INTEGER) ; BEG IN IF tipo=l THEN BEGIN

END ELSE BEGIN

END; CASE linea OF

Tex tColor (COLOR-4) ; textBackground (COLOR-3) ;

TextColor (COLOR-3) ; textBackground (COLOR-4) ;

1 ; BEGIN Window ( 5 , 5 , 3 5 , 7 ) ; C1rCcr;GotoXY ( 2 , 2 ) ; Write(’ Archiva ’,nombre); END;

2: BEGIN Window(45,5,75,7) ;ClrScr;GotoXY ( 2 , 2 > ; Write(’ Verificar el Programa’) j END;

’3: BEG IN Window(5, 10,35, 12) ;ClrCcr;GotoXY ( 2 , 2 ) ; Write(’ Editar el Fragrama’); END;

4: BEGIN Window(45,16,75,12) ;ClrScr;GotoXY (2,2); Write(* Salir del sistema’); END;

ELSE; END; TextColor (COLOR-2) ; textBñckground (COLOR-1) ; END;

PROCEDURE up-down-arrow; BEGIN Read (Kbd,caracter) ; cambi a ( 1 i nea, O) ; C4SE O r d (caracter 1 OF

UA: BEGIN IF linea-230 THEN linea:=linea-2 ELSE 1 i nea: =1 i nea+2; END;

IF 1 inea+2<=4 THEN 1 i nea: =1 i nea+2 ELSE 1 inea: =1 i nea-2; END!

IF linea-l>0 THEN linea:=linea-1 ELSE linea:=linea+l; END;

IF íinea+l<=4 THEN linea:=linea+l ELSE 1 i nea: =1 i nea-1 ; END;

DCIi BEGIN

LA: BEGIN

RCS: BEGIN

ELSE Write (BEEP) ; END;

cambi a (1 i nea, 1 ) ; END;

I

I

Page 55: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

BEGIN {Procedimiento selecciona 3 1 inea:=l ; cambi a ( 1 i nea , 1 1 ; REPEAT

Read(Kbd,caracter) 5 IF Ord(caracter)=ECC THEN BEGIN

IF keypressed THEN up-dawn-ai-r n w ELSE Write(EEEF1 j

END ELSE I F Ord(caracter)rSREG~ESG THEN Write(EEi?!;

UNTIL (Ord (carñcter) =REGRESA) ; selecciona:=linea; END; ;de seleciana)

3- oced i rn i en t ri menu p r i nc i pal BEGIN TextEack;ground (COLOR-1) j Window (1,1,80,25); ClrScr ; marco (2,2,78,23,1) ; TextCol or (COLOR-T> ; to::t3ackgrctund (CDLGFi-4) 5 Window(5,5,Z5,7> ;ClrScr;GotoXY (2,4); Write ( ’ Archivo ‘ ,nombre) 5 Window(5, iO,35,12) ;ClrScr;GotoXY(L,S); Write(’ Editar el Wogrñma’ 1; Window (45,5,75,7) ;ClrScr ;GotoXY (2,2) ; Write(” Ve r i f i c a r el .Frograma”); Windorr(45,10,75,12! ;CliScr;GotoXY(2,2); Write(’ S a l i r del sistema‘); marco (18,17,62,21 ir 4 ) ; TextColor (COLOR-4) ; textBackgraund (COLOR-3) ; Window ~19,18,61,20) ; ClrScr; GotoXY(S,2); Write(’U5e lac; N FLECHAS ‘S para moverse’)j GotoXY(5,3);Write(’Seleccione l a opcibn con ..X RETURN 3 ‘ ) ;

CASE 5elecciona OF 1 : opcicm:=’A7; 2: opcion:=7V”; 3: opcion:=’E’; 4: opcion:=’S’;

END; END CMenu3;

C edproyec.pas> t )

-0cedimiento Principal del programa ver i f icador 3.

IRLAY PROCEDURE Veri f -Formal ;

JST C Constantes d e l nodo 3 VALOR = 1 ; rzQ = 2; DER = 3; TIPO = 4; CONT = 5; ESTADO = 6; .: Constantes d e l t i p o de nodo 3 INTERNO = 1 ; NUMERO = 2; EOLECINA = 3; IDENTI = 4; VACIO = 5; C Constantes d e valores 3 FALSO = 0 ; VGRDAD = 1; C Constantes d e operadores Aritmeticcs 3 SUMA = 43; RESTA = 45; MULT = 42; DIVI = 47; C Constantes d e operadores d e re lac idn 3 C-MAYOR = 62; C-MENOR = 60; C-IGUAL = 61; MAY-IG = 242; MEN-IG = 247% C-DIFER = 216; NO = 126;

- 3

Page 56: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

PROGRAMA PR I NC I PhL

C Constantes d e crperadores Lcgiccíis :.

Y = 38; U = 124; < Identi f icadore especia les 3 CORCH-IZí2 = 91 ; CDRCH-DER = 93; F A - : ZC! = 4Q; PA-;iEfi =. 4 1 j PUNT-COM = 59; DOS-PUNT = 5B; .-IN = O;

Constantes d e ? a t a b l a como est ructws . d e r j a t cz :. LON-L = 6; Lord-rw = 150; MGX-ET~~ = 7 ~ 5

.: Constantes de l u s crjnjitntass -I -3

Constantes para l a dirección del SO D.A.G. 3.

: - OP-I = 6 ; E-OP-D = 7 ; E-EXPR = 8; E - AP-STR = 95

.: Constantes d e signo en rada i i G 9 ?IRITEMETICD, 3 BOOLEANO Z. POS1 = o; NEG-ARIT -= 1 ; NEG-BOL = 2 ;

MAX-CGNJ = 3 ; MAX-ELE-EBU = 10; MAX-CON-EBU = 10;

- T I P O = 1 ; E-CONTR = 2; E-EXP-I = 3 ; E-EXP-D = 4; E-EXP-II = 5 ;

1

.: Apuntador al padre si asta dentro d e otra proposicion; apuntadores a Icc proposicion s iguiente y a l a ante r iw3

padre, hno, ant : apcrnt-2;

< Si e s t a dentro de una seleccion indica si 5s zurnple

si -no : INTEGER; l a condicion 3

.:Tipo de prcposi c i ones Asignaci an, Seleccion, ¿ici o 1 Case tipo-prop :c lase OF

CVarible, expresion a l a que se i gua l a ' Q ? : ( expre,varia :cadena) ;

3

CCodicion de l a seleccion, apuntadores a ia ultima

'C': ( cond-s :cadena; proposicion de l a 5 2 partes 3

tipo-hi j o : INTEGER; hi jo-5-si , h i jo-s-no: apunt-2) ;

CCondicion del c i c l a , apuntador a la ultima

'C': cond-c z cadena; proposician del c l c l o 3

hi jo-c : apunt-2)

conjunto = SET OF 38. .255; tupla = ARRAYCi..LON-Ll OF INTEGER; ,:Henglctn de l a t a b l a "NODO"> matriz = ARRAYCi..LON-MATI OF tupla; {Definicidn d e l a t a b l a P

{Tabla aux i l i a r para almacenar d e los str ing) vect-str = ARRAYCl..MAX-STRl OF cadena; t-tab-esp= ARRAYCI..i0,1..93 OF INTEGER;

END; € Del r e g i s t r o tabla )

Page 57: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

PROGRAMA I”R1 TdC I PfiL

VST .; Loniltan.y.es d e los tcjeintas permitidas 3 OP-REL: conjuntcl =CC-MENOR. I L-PIAYOR, iIAY-IG, PlEN-.’!:C, C-DIFEF13 j OP-CUM: canjunto =CSUMA,RESTAl; 0P-HüLT:conjunta =tMULT,DIVI3; OF-AR I T : c o n j u n t o =CSUMA, RESTA, MüLT II 3 IVI 3 ; CONMUTfi: cmjunto =fSUMA, MULT ,Y ,O ,C_XGUAL ,C_D lFE~~~

3 matr-men,mat-m-ig :tipo-matr-cunj; con j-oqui :matr-con:;

ultimo,ap_prirn,uit_tab_str, i ibr-e, ap-tabla, ap-dag1 ap-dag2, x , yy , i , r7 i vei resul t : INTEGER; pal ab-auxi , control a :cadena; tab-str ; vect-str: tab i a , Oag-sspe :matriz;

tope u1 t-dag-aspe : INTEGER;

abort a , est a : POOLE&?\l;

tabla-sspe rt-tab-esp;

apuntador : apunt-2; pal abra, b u f f or : cadena; h L i f f -í?:.:pr- 5 bLl+í_3 rengi on I ap-Cer ap-i z q 1 ong i tud toquen,tipo_-in,ult_ren_Exp: INTEiiEFr; arc h-e:< Fr : vec_e.:pu-; car : CHAR;

: r a d kxpres; -

s i n t ac t i co pas: -eductcr. pas9 jemuesjtra 2 ieri f icadar . pas)

BEGIN C Procedimiento pr inc ipa l de la v e r i f i c a c i m arch-mem: =False; IF nombre=” THEN PideNombre; .:Hace 91 ana i i s i s rjintactico apuntada- : =aria1 i si 5-si n t act i co i Truei ; IF apuntador(>Nil THEN ver i f icador (apuntador) ELSE ScreenEdi tor ( ‘ E ‘ 1 ; END;

i IN {Program pr inc ipa l 3. iombre: =’ ‘ * 9

-en-err: =O; :-err:=O; /-err: =O; l i rect :=” j :in-ed: =FALSE; tEPEAT

Men u ; Window(l, 1,80,25) ;C l rScr ; CASE rrrpcion OF

.COpci ones del ed i tor E’ 9 ’ A ’ :BEGIN

TextBackground ( 0 ) j TextColar (151 ; ScrsenEditor (opcion) ; END;

3

091287

Page 58: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

PROGHAMFI FRINCIFAL

CDpcion de v e r i f i c a r un programa ' V ' : Verif-formal; 'SI : fin-ed := TRUE

END; Window (1, 1,6Q, 25) ; G l r S c r ;

UNTIL f in-ed; ID.

I

Page 59: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa de validacion de caracteres entrada

JNCTION lee-mayuscul a:CHAR; 1R carñcter :CHAR; BEGIN Read(Kbd,caracter) ; caracter: =Upcase(caracter) ; 1 ee-mayuscui a: =car act er ; END;

?OCEDURE restaura(pos,longitud: 1NTEGER;cad-leer cad-expres) ; ír x: INTEGER; BEGIN x:=WhereX; GotoXY (x-pos,WhereY) ; C1 rEol ; Write (cad-1 ee) ; GotoXY (x-p~s+l ongi tud, WhereY) ;Write ( ’ 3 ’ 1 ; GotoXY (x-1,WhereY); END;

(OCEDURE escribe(Var pos: 1NTEGER;car:CHAR;VAR cad-lee:cad-expres) j BEGIN Write(car1; Delete (cad-1 ee, pos, 1 ) ; Insert (car,cad-lee,pos) j

END ; pos: =po5+1;

OCEDURE val-esp (Var pos: INTEGER; longi tud: INTEGER; car:CHAH;

NST LA = 75; Rh = 77; DEL = 83; VAR cad-lee:cñd-expres) ;

BEG IN CASE Ord(car) OF

L A S IF pos>l THEN BEBIN Write (#SI ; pos: =pos-í ;

END ELSE Write(BEEP1; RA: IF (pos<lmgitud)AND(pos<=Length (cad-lee) )THEN BEGIN

GotoXY (WhereX+l,WhereY) ; pOciS=pO%+l;

END ELSE WritetBEEP); DEL: IF pos>l THEN BEGIN

Dt?lete(cad-lee,poe, 1 ) 3

restaura(pos,longitud,cad_lee) ; pos: =pos-í;

END ELSE WritetBEEP); ELSE Write(BEEP1;

END; END;

UCTION val-caracter ( V a r pos: INTEGER;longitud,tipor INTEGER; carrCHARg VAR cad-leeicad-expres) :BOOLEAN3

\IST BS = 8 3 RET = 131 BACKS = #83 TIP-NUM = 13 TIP-ALF = 2; T-ALNUM = 3; BEGIN val -car act er : =Fa1 se$ CASE Ord(car) OF

ES : IF pos>l THEN BEGIN posr=pos-1; Delete (cad-1 ee, pos, 1 ) ; IF pos>Length (cad-lee) THEN Wri te(EACKS,Chr (32) ,BACKS)

Page 60: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa de validacion de caracteres entrada

ELSE restaur a (pos y 1 ong i t ud cad -1 ee ; END ELSE Write(BEEP) j

RET : val-caracter:=True; ELSE COSE t i p o OF

TIP-NUN : IF Ord(car) IN C48..573 THEN escribe(pos,car,cad-lee)

ELSE Write(BEEP); TIP-ALF : I F Ord(car1 IN E32,46,65. .90,95,97.. 1221 THEN

T-ALNUM : IF Ordtcar) IN

escribe(pos,car,cad-lee) ELSE Write(BEEP1;

C32.. 126,228,231,238,242,2433 THEN

ELSE Write(EEEP1; escribe (pos,car, cad-lee)

END; END; I F pog>lohgitud THEN val-caracter:=True; END;

JCTION lee-val (longitud, tipo: INTEGER) :cad-expres; 3 dato :STRINGC23; PO5 : INTEGER; termina :BOOLEAN; c ad-1 ee : STR S NGC 2553 5

BEG IN

termina:=False; Deletefcad-lee, 1,Length (cad-lee) );

REPEAT

pos: =l;

Read (Kbd, dato[ 13 1 ; , I F Ord(datoClJ)=ESC THEN

I F Keypressed THEN BEGIN Read(Kbd,datoCZJ); val-esp (pos,longitud,datoC2l,cad~iee);

END ELSE BEGIN

Delete(cad-lee, l,Length(cad-lee) 1; pos:=l; termina: =True;

END ELSE ter m i nao =val -cat- acter (pos, 1 ongi tud , t i PO, datoi 1 3 , cad-1 ee) ;

IF tipo=T-NUN THEN cad-leeCllr=Chr (47) ELSE cad-1 ert 1 3 t =Char (32 ) ;

lee-val : =Copy (cad-1 ee, 1 , Length (cad-1 eel 1 8

UNTSL termina; IF Length (cad-lee) <O THEN

END;

I

I

I

I

Page 61: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

P r o g r a m a que hace anal i s i s s i n t a c t i c o

'uncion que compara 2 cadenas y regresa va lores de ( F , V ) 3 JNCTION comparatcadl,cad2:cadena) :BOOLEAN; i e x i to: BOOLEAN;

k: INTEGER; BEG I N k:=1; e x i to: =Fa1 se; C Compara l a s ioq i tudes I F Length (cadl)=Length (cad21 THEN BEGIN

e x i to: =True4 € Compara cada c a r a e t e r de l a s cadenas WHILE ( k<=Length (cad 1 1 1 AND (ex i t o ) DO

I F Upcase (cad 1 C k 3 ) =Upcase (cad21 k 3 1 THEN k: =k+ l ELSE e x i to: =Fa1 se;

END; compara :=ex i to; END;

nal is ier C i n t a c t i c o de l a l g o r i t m o 3 lNCT ION anal i s i s-si n t a c t i cÓ ( t o t a l : BOOLEAN) : apunt-2; IST

3 b f i n i c i o n de l a 5 constantes para c l a s i f i c a r un TOKEN MCSX I MO = 12; L I M I T E = 30; ERRO = o; D I G I T 0 = 1 ; LETRA = 2 ; AD I C I O N = 3; MULTIPLICADOR = 4; PA- IZP = 5; PA-DER = 6; MENOR = 7; IGUAL = 8 ; MCIYOR = 9 ; MEN- IGUAL = 10; MAY - I GUAL = 11;

F I N = 16; COMENTARIO = 17;

NUMERO = 20; DIFERENTE = 21;

PUNTO = 12; BLANCO = 13; PUNTO-COMCS = 14; RESERVADA = 15;

OP-RELACIONAL = 17; IPENTIFICADOR = 19;

CORCH-IZQ = 22; CORCH-DER = 23; NEGA = 245 DOC-PUNT = 25;

ar reg lo = ARRAYLl..MAXIMOI OF cadena; arch = ARRAY C l . . L I M I T E l OF cadena;

'E

IST ie f in ic ion de l a 5 palabras RESERVCIDAS en e l lenguaje del a l g o r i t m o 3

RESERVA: a r reg lo =('EMPIEZCS','FIN','PROGRAMA','M~ENTRAS?,'H~GA','S~?, 'ENTONCES', ' Y ' , " O ' , 'NO?, 'FINS', 'F INM' ) ;

va l or express ab ie r to t e x t o ap-actual , ap-hno carac ter

: INTEGER ; :cadena; :BOOLEAN; :TEXT; : apunt-2; : CHCIR;

rocedimiento que despliega e l t i p o de error s in tac t i co y genera e l corte e l ana l i s i s s i n t a c t i c o 3

PROCEDURE e r ro r (numero: integer) ; VCIR I : INTEGER; , BEGIN

T e x t B a c k g r o u n d (COLOR-5) 3 T e x t C o l o r (COLOR-4+15) ; err : =True; CASE n u m e r o OF

Page 62: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa que hace a n a l i s i s s i n t a c t i c o

O:Writeln(’*SS ERROR SS*S Espera PROGRAMA’); l :Wri te ln( ’ tSS ERROR t S t S Espera nombre del programa’); 2:Writeln(‘ tY* ERROR SSltS Espera FIN’);

4:Writeln(’StS ERROR t t S t Espera HAGA’); S :Wr i te ln ( ’ t t t ERROR %Y** Espera ENTONCES? 1; ó:Wri te ln( ’ t*S ERROR S t * S Espera Iden t i f i cador ’ ) ; 7 :Wr i te ln( ’ t tY ERROR t S t S Espera ‘I 1 l a ’ ) ;

S:Writeln(’YtS ERROR Y S Y S Toquen no de f i n ido ’ ) ; lO :Wr i te ln ( ’ t t t ERROR S t t t Espera I’ ; I t ’ ) ;

I l : W r i t e l n ( ’ t S t ERROR # % S t No encuentra e l programa’); 12 :Wr i te ln ( ’ t t t ERROR S t t t Espera EMPIEZA”); 13:Writeln(’XYX ERROR t t t t Espera Proposicion’); 14:Wr i te ln( ’St t ERROR t t t t I’ F i n ‘I I nd i ca f i n de archivo ’ ) ; lS:Wr i te ln( ”S* t ERROR l f f X Espera I’ 3 “’1; 1 6 : W r i t e l n ( ” t t t ERROR Y**% Espera “FINM”’); 17:Wr i te ln( ” tSt ERROR XSSS Espera “FINS“’); ELSE

3:Wr i te ln( ’ t tY ERROR t t t t Espera Igual I’ = ’1;

END; i termina caso> {Var iab les globale5 donde se guarda la p o s i c i m del e r ro r ren-err : =renglon; y-err : =ap-i zq; TextBaekground (COLOR-1 1 : Textcolor (COLOR-2) ; END;

i

’rocedimiento que abre e l arch ivo t e x t o > 3VERLAY PROCEDURE 1 ee-programa; JAR termina : BOOLEAN;

resu l tad0 : INTEGER; BEG I N ab i er t o: =Fa1 se; termina: =Fa1 se; REPEAT

ClrScr; W r i t e l n (nombre) ; fissi gn (texto, nombre) ; €11-3 Reset ( t ex to ) ; €SI+) resul tador= IOresul t ; I F resu l tador0 THEN BEGIN

terminar=True; abiertorrTrue; e r r I =Fa1 se; ClrScr;GotoXY(l, 1 ) 5 Wr i te ln ( ’ L is tado del programa ’1;

END ELSE BEGIN C Lee o t r a vez e l nombre del arch ivo t e x t o >

e r r o r ( 1 l ) j W r i t e l n ( ’ CSborata 1 a v e r i f i cac i bn S/N’ 1 8 Repeat Rcad(Kbd,caracter) 9 UNTIL Upcase(Caracter) IN E’S’,’N’3; I F UpCase(caracter)=’N’ THEN PideNombre ELSE terminas =True3

END : UNTIL termina;

arch-memr =Fa1 se; reng l on I =O3 END;

k r i a b l e que i n d i c a que e l programa no esta en memoria >

Yuncion lee e l s igu ien te renglcin de l arch ivo t e x t o y l o guarda en BUFFER e i n d i c a el f i n 3

Page 63: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa que hace a n a l i s i s s intact ico

3CEDURE lee-renglon; BEG I N IF Not arch-mem- THEN

IF (Not Eof (texto))AND Not err THEN BEGIN renql on : = rengl on+ 1 ; Read1 n (texto, buf fer ) ; longitud:=Lenqth(buffer); Wri t e l n (renglon, ' ' $bu f f e r ) ; IF longitud=O then lee-renglon; ap-der : =O;

END ELSE BEGIN

toquen:=f in : f i n a l :=True;

END ELSE

IF renglontul t-ren-exp THEN BEGIN rengl on: =rengl on+l ; longitud:=Length (arch-exprCrenglon3) ; buffer:=Copy(arch~exprCrenglonl,l,longitud~;

END ELSE BEGIN

toquen:=fin; f i n a l : =True;

END; END:

hrocedimiento que borre 105 blancos entre el ultimo TOKEN analizado y . siguienmte >

)ROCEDURE Borra-bl anco; BEG IN WHILE (Ord ( bu f f e r Cap-der 3 1 =32) AND (ap-der<l ongi tud) DO

ap-dar: =ap-der+l; END;

incion que compara l a palabra del ultimo TOKEN con l a s palabras reservadas3 :UNCTION pal abra-reservada: BOOLEAN3 IAR encontro :BOOLEAN;

dux i 1 i ar : cadena: i : INTEGER3

BEGIN io=l; auxi 1 i ar:=Copy ( bu f f e r , ap-itq, ap-der-ap-izq+l) ; enccmtror=False( W H S L E (i<4lCSXIMO)AND(NOTfencontro) 1 DO

IF compara(reservaCi 3 ,auxi l iar ) THEN encontro:=True ELSE it=i+l3

pal abr a-r eser vada 8 =encon tr a; IF i=2 THEN toquen:=FIN; END;

'rocedimiento que i d en t i f i c a el caracter que se ana l i za IRLCIY PROCEDURE i dent i f i c a :

BEGIN toquen: =ERRO: CASE Ord (buf fer Cap-der 3 1 OF

65. .90,97. . 122ttoquen:=LETRA; 48. .57rtoquenz=DIGITO;

124,43,45:toquens=ADICION;

3

Page 64: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa que hace analisis sintactico

94¶ 38,42,47: toquen: =MULTIPLSCADOR; 40: toquen:=PA-IZO; 41: toquen:=PA-DER; bO:toquen:=MENOR; 32: toquen:=ELANCO; 61:toquen:=IGUAL; 62: toquen:=MAYOR; 46: toquen: =PUNTO; 58: toquen:=DOS-PUNT; 59:toquen:=PUNTO_COMA; 91 : toquen: =CORCH- I ZRg 93:toquen:=CORCH_üER;

ELSE 126: toquen: =NEGA;

END;€ EL CASO3 I F longitud=O THEN toquen:=BLANCO; END; €procedimiento3

'rocedimiento que determina el TOKEN, detectando un TOKEN no definido 3 3OCEDURE 1 e x i co; 3 copia :BOOLEAN; BEG I N copi a : =Tr ueg IF lee CSND NOT err THEN BEGIN

IF (ap-der>=iongitud)AND Not (final 1 THEN lee-renglon; IF Not (final) THEN BEGIN

Delete(palabra, l,Lenqth(palabra) 1; ap-der: =ap-der+l; borra-bl anca; i dent i f i ca; ap-izq:=ap-der;

END ELSE toquen:=FIN; CASE toquen OF € Si e5 una variable o una palabra reservada 3.

LETRA :BEGIN WHILE ( (toquen=DIGITO)OR(toquen=LETRA) 1

AND ( ap-der< 1 ongi tud 1 DO BEG IN ap-der:=ap-der+l; i dent i f i c a ;

END; IF (toquen<>DIGITO)AND(toquen<>LETRA)THEN ap-der:=ap-der-1; C Si es paiabra reservada por el lenguaje 3 IF palabra-reservada THEN BEGIN

IF toquen< >FIN THEN toquen3 =RESERVADA: IF (ap-izqrap-der) THEN BEGIN

I F Upcase (buf f erfap-izql) =*YJ THEN

ELSE I F Upcase (buf f er Cap-izqJ 1 =J O' THEN toquen:=MULTIPLICADOR

toquen:=ADICION; END;

END ELSE toquen:=IDENTIFICADORs END 3

DIGIT0 :BEGIN < Si e5 numero; solamente numeros enteros

WHILE (toquen=DIGITO)AND(ap-ders ap-der:=ap-der+l; identifica;

END;

3 1 ongi tuc DO BEGI.1

I I I

I

: I

I

I I

I

I

I

j I

I

I

, I

Page 65: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa que hace anaiisis sintactico

palabra:=Copy (buf f er , ap-i zq, ap-der-ap-izq+l) ; IF toquen.: >DIGIT0 THEN ap-der: =ap-der-1; toquen: =NUMERO; END;

MENOR :BEGIN C Si e5 un operador de relacion: *<,<= , 6, 0 3

ap-derz=ap-der+l; identifica; IF toquen=IGUAL THEN tipo-sin:=MEN-IGUfiL ELSE

IF toquen=MAYOR THEN

ELSE BEGIN ti Po-si n : =DI FERENTE

ap-der: =ap-der-l; ti Po-si n : =MENOR;

END; toquen:=OP-RELACIONAL; END;

IGUAL :BEGIN < Si es el operador de re lac ion = 3.

toquen:=OP-RELACIONAL; tipo-sin:=IGUAL; END:

MAYOR :BEGIN € Si e5 el operador de relacion > 6 >= 3 ap-der: lap-der+l;

identifica; IF toquen=IGUAL THEN tipo-sin:=MAY-IGUAL ELSE BEGIN

tipo-si n: =MAYOR; ap-der : =ap-der-1

END; toquen:=OP-RELACIONfiL; END;

C Si el toquen e5 * => 'NO' "Nega~i6n~~ 3 NEGA : BEGIN

pal abra: =' NO' ; toquen:=RECERVADA; copia:=False; END;

COMENTfiRI0,BLANCO € si empieza un comentario este termina hasta terminar el renglon, si el renglon es blanco 1

- :BEGIN ap-der:=longi tud; 1 QX i co; END 8

ERRO 8 error (9) ; i el TOKEN es: C, 3 , (, 1,; ,#,/,+,-,: ,FIN,

IZQ,PUNTO-COM~,PA-DER,~OS-PUN,CORCH-IZQ,CORCH-DER, TIPLICADOR,ADICION,FINICORCH_IZQICORCH~IZQ,CORCH~DER 3

END; Cdel Caso 1 IF (ap_izq<=ap-der)AND(copia) THEN

FIN indica fin del archivo"

ELSE :

palabra:=Copy(buffer,ap_itq,ap_der-ap-der-ap-izq+l) ;

1 ee: =True;

Page 66: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

.--

Programa que hace a n a l i s i s s i n t a c t i c o

Procedimiento que r e v i s a lcc s i n t a x i s de una expresion y regresa l a

ROCEDURE ex pr eíi on ; expresion en una cadena 3

€ s i n t a x i s de l a va r iab le 3 PROCEDURE var i ab 1 e;

BEG I N expresst=Concat (express,palabra) ; lex ico; I F toquen=CORCH-IZG! THEN BEGIN

express:=Concat (express, ’ C ’ ; ex p r es i on ; lex ico; IF toquen< > CORCH-DER THEN error (15) ELSE express:=Concat (express, ’ J’ ;

END ELSE 1 ee: =Fa1 se; END;

C s i n t a x i s de l f a c t o r mantiene la misma p r i o r i d a d de operadores a: Negacion, O , 3 PROCEDURE f a c t o r ;

BEG I N 1 ex i EO; I F compara(palabra, “0’ 1 THEN BEGIN

express:=Concat (express, ’NO’ ; 1 ex i co ;

END; I F toquenrADICION THEN BEGIN

express:=Concat (express,bufferCap-derJ): 1 ex i co;

END : I F toquen=PA-IZQ THEN BEGIN

express:=Concat (express, ’ ( ’ ; expresi on ; 1 ex i co; I F toquen< X’A-DER THEN error ( 7 ) ELSE express: =Concat (express, ’ ) ’ 1 ;

END ELSE

IF toquen=IDENTíFICADOR THEN v a r i a b l e ELSE

I F toquen< ).NUMERO THEN e r r o r ( 6 ) ELSE express:=Concat (express,palabra) ;

END#

C s i n t a x i s de l termino mantiene l a misma p r i o r i d a d de operadores a: Diryuncion, *,/ 3 PROCEDURE termi no;

BEG IN factor; 1 ex i co; WHILE (toquenrMULTIPLICAD0R)AND (Not err DO BEGIN

expresstrconcat (express,bufferCap-derl) ; factor; 1 ex i co;

END: lee: =Fa1 se! END;

Page 67: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa que hace a n a l i s i s s intact ico

C s intax i s de l expresion simplemantiene l a misma prior idad de operadores a: Conjucion, +,- 3. PROCEDURE expresion-simple;

BEG IN termi no; 1 ex i eo; WHILE (toquen=ADICION) (SND (Not err 1 DO BEGIN

express:=Concat (express,bufferCap-derI) ; ter m i no; 1 e x i co;

END; 1 ee: =Fa1 se; END;

BEGIN € in i c i a procedimiento expresion3 e x pr esi on-si mp 1 e; 1 ex i co; WHILE (toquen=OP-RELACIONAL)AND(Not err 1 DO BEGIN

express:=Concat (express,palabra) ; expresion-simple; lex ico ;

END; lee : =Fa1 se; END;

brocedimiento que an l i za l a s intax i s de l a5 estructuras de control del .enguaje en que se crean l o s programas.

PROCEDURE proposicion;

C Procedimiento que t r a e del sistema un apuntador a un r eg i s t ro e i n i c i a l i z a l o s apuntadores a1 padre, hermano, anterior 1 PROCEDURE nuevo(VAR apuntador:apunt-2);

BEG 1 N New(apuntador); apuntador*.ant:=NIL; apuntador*.hnor=ap-hno; IF ap-hno<>NIL THEN ap_hno^.ant:=apuntador; apuntador*. padre: =NIL$ apuntador". si -no: =O; END 8

€ Procedimiento quo v e r i f i c a l a s intax i s de l a seleccion y actual iza el r eg i s t ro de es ta 3 PROCEDURE se1 ecc i on ; VAR ap-padre: apunt-2;

otro t BOOLEAN 8 BEG I N nuevo(ap-actua1); €da l o s valores del r e g i s t r o para i dent i f i c a r l a seleccion WITH ap-actual* DO BEGIN

tipo-propr: =S; h i jo-s-si :=Ni 1 ; h i jo-5-no: =Ni 1 ;

END; ap-hno: =Ni 1 ; ap-padre: =ap-act ual ; Delete(express, 1,Length (express) 1 ; expresion: IF Not e r r THEN BEGIN

ap-actual". cond-sr=Copy (express, 1 , Length (express) ) ;

3

Page 68: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa que hace a n a l i s i s s i n t a c t i c o

lex ico; otro:=false; I F compara(palabra, ’ENTONCES’ THEN BEGIN

ap-actual”. t i po -h i jo:=O; 1 ex i co; WHILE NOT(compara(palabra,’FINS’) )AND(NOT e r r ) UD BEGIN

1 ee: =Fa1 se; propocii c i on ; ap-actual*. padre: =ap-padre; C En e l r e g i s t r o del h i j o guarda s i esta es pr-oposicion

IF ap-padre^.tipo- h i j o = i THEN ao actual-+.si-no:=l; lexico; IF compara(palabra, ’OTRO’ THEN BEGIN C S i n¿,‘ o t r o ac tua l i za e l r e g i s t r o dando un apuntador

cuando no se cumple l a condicion 3

a l h i jo-s-s i , que es l a u l t ima proposic ion cuando se cumple l a condicion e i n d i c a que i o 5 h i j o s s iguientes son del o t ro$ 3

ap-padre”. h i jo-s-si : map-actual ; ap-hno: =Ni 1 i otro: =True; ap-padre“. t i po -h i jo:=X; 1 e x i co;

END; IF f i n a l THEN error (17) ;

END; ap-padre*.hijo-s-no:=NIL; I F o t r o THEN ap-padre”. h i jo-s-no: =ap-actual ELSE ap-padre^.hi jo-s-si :=ap-actual ; ap-hno: =apepadre; ap-actual : rap-padre;

END ELSE error ( 5 ) ;

END; END;

PROCEDURE i t e r ac i on ; VAR ap-padre : apunt-2;

BEG I N nuevo(ap-actuai) 5 ap-actual”. tipo-prop; =C; ap-actual^.hi jo-c:=Nil; ap-hnoa =Ni 1 ; ap-padre:=ap-actual ; Deletetexpress, 1 ,Length (express) 1 ; ex p res i on ; IF Not err THEN BEGIN

ap~acturl*.cond~c:=Copy(express, 1,Length (express) 1 ; 1 ex i co; I F compara(palabra,’H~GA’) THEN BEGIN

1 e x i co; WHILE NOT(compara(palabra,’FINM’) )AND(NOT err) DO BEGIN

1 ee: =Fa1 se; proposicion; ap-actual padre: rap-padre; 1 ex i co; IF f i n a l THEN error(l6):

END; ap-padre”. h i jo-c: =apeactual g ap-hnor rap-padre;

I

Page 69: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa que hace a n a l i s i s s i n t a c t i c o

ap-actual : =ñp-padre; END ELSE error (4 ) ;

END; END;

PROCEDURE as i gnac i on ; BEG I N nuevo (ap-actual 1 ; ap-actual*. tipo-prop:=&; ap-actual*. var i a: =Copy (pal abra, 1, Length (pal abra) 1 ; lex ico; I F toquen-CORCH-IiQ THEN

WITH ap-actual* DO BEGIN REPEAT

varia: =Concat (var ia, p a l abra) ; lex ico;

UNTIL (toquen = CORCH-DERIOR (toquen=OP-RELACIONAL) ; I F toquen0CORCH-DER THEN error(l5) ELSE varia:=Concat (varia,palabra);

END ELSE 1 ee: =Fa1 se; 1 ex i co; I F tipo-sin=IGUAL THEN BEGIN

Delete(express, l,Length(express) 1; expr @s i on ; ap-actual^. expre: =Copy (express, 1 , Length (express) 1 ; ap-hno: =apeactual ; 1 ex i co ; I F toquenOPUNT0-COMA THEN e r r o r ( l 0 ) ;

END ELSE e r r o r ( 3 ) ; END:

BEGIN € I n i c i a e l procedimiento proposici6n3 ap-actual :=Ni 1 ; 1 ex i co; CASE toquen OF

RESERVADA# I F compara(palabra, ’ S I ’ ) THEN seleccion

ELSE e r r o r (13) ; ELSE I F compara(palabra,’MIENTRAS’) THEN i t e r a c i o n

1DENTIFICADOR:asignacion; FIN8 f i n a l :=True;

ELSE e r r o r (13) ; END; C termina e l caso d e toquen3 END;

PROCEDURE proposiciones; BEG I N 1 ex i co; I F compara(palabra,’EMPIEZA’) THEN BEGIN

1 ex i cos ap-hno: =Ni 1 ; WHILE (toquen<>FIN) AND (NOT e r r ) DO BEGIN

lee:=False; proposi c i on ; lex ico;

END g 1 BB: =Fa1 se;

I

Page 70: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa que hace a n a l i s i s s intact ico

END ELSE error (12) ; END;

PROCEDURE borra-1 i s t a (actual : apunt-2) ; JAR hermano : apunt-2;

BEG I N WHILE actual<>Nil DO BEGIN

WITH actual" DO BEGIN hermano: =hno; CASE tipo-prop OF

A: Dispose(actua1) ; C: BEGI9l

ZF hi jo-c.<>Nil THEN borra- l ista(hi jo-c) j Dispose (actual ) ;

END; S: BEGIN

IF hi jo-s-siONil THEN b ~ r r a _ l i s t a ( h i j o _ s - s i 1; IF hi jo-s-no< >Ni 1 THEN borra-1 i s t a (hi jo-s-no) ; Dispose(actua1) j

END; END;

actual :=hermano; END;

END; END;

:UNCTION sintact-completo: apunt-2; BEGIN €Procedimiento que hace el a n a l i s i s s intact ico 2 err:=False$ ren-err:=O; y-err : =O; Final :=Fa1 se; 1 ee-programa; lee:=True; si nt ac t -camp 1 et o: =Ni 1 ; I F abierto THEN BEGIN

1 ee-rengl on; 1 ex i co; ap-actual :=Ni 1 ; IF NOT compara(palñbra, 'PROGRAMG' 1 THEN error ( 0 ) ELSE BEGIN

1 e x i co; IF toqusn<>IDENTIFlCADOR THEN e r ro r (1 ) ELSE BEGIN

proposiciones; 1 ex i co 9 IF (toquenOFIN)AND(NOT err) THEN error (2);

END; END 3 IF ((ap-der<longitud)OR(NOT Eo+ (texto)) )AND(NOT err) THEN error (14)5 Writeln; C1 ose (texto) ; abiertos =False; IF NOT err THEN BEGIN

sintact-compieto:=ap-actual; Writeln(BEEP1; Writet 'para continuar "OPRIMA" cualquier tec la ' ) ; Read (Kbd,caracter);

END

Page 71: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa que hace ana l i s i s s intact ico

ELSE BEGIN IF ap-actual< >Ni 1 THEN BEGIN

WITH ap-actual^ DO WHILE padre< >NIL DO ap-actual :=padre;

borra- l ista (ap-actual ) ; END 5 si ntact-compl eto: =Ni 1 ;

END; END; END;

; IN € Empieza a n a l i s i s s intact ico s i es tota l llama a l sintatac-completo 9 I h1 i si s-sintacti co: =Ni 1 ; tot a l THEN anal i si 5-si n t act i to: =si n t act -compl eto ;E l ex ico ; ); I

I

Page 72: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa VER I F I CADOR

I)ROCEDURE inicial iza-inter-reductor; BEGIN

tope := O; { limite del vector de especiales 2 ult-dag-espe :=O! {Limite en el dag de especiales 3 ultimo:=O; C apunta al ultimo renglon de la tabla 3 ap-prim:=l;€ Apunta al primer renglon activo de la tabla 3 ult-tab-str:=C~$C apunta ai primer STRING de l a tabla de STRING3

END ; 6 )

3OCEDURE verificador (actuai:apunt-2) ; INST

(PE

\R

TOPE = 20;

pila = ARRAYCl..TOPEl OF cadena;

pila-wp,cond-inv :pila; limite,lim-con,contprt : INTEGER; wp,pre,post,post-cmd, wp-ini :cadena; corta : BOOLEAN;

‘rocedimiento que despliega la ventana Superior 3 PROCEDURE ventana-sup; BEG IN marco ( 1 1 , 79,5, 1 1 ; Window(2,2,78,4) ; Textcolor (COLOR-1 1 ;TextBackground (COLOR-4) ; GoToXY (1,l) ; ClrEol ; GotoXY (20,l) $ Write ( ’ Con juntos actual es de verif i caci ón’ 1 ;

GotoXY(1,3);Write(’ Post-Condici6n : ’ I ; Textcolor (COLOR-2) ; TextBackground (COLOR-1) ; END ;

GotoXY (1,2) g Wri te ( ’ Pre-Condici 6n : ’ I ;

Procedimiento que despliega la ventana inferior 3 PROCEDURE ventana-inf;

BEG I N marco(J,20,79,25,1); Window (2,21,78,24) ; ClrScr i Textcolor (COLOR-1) ; TextBackground (COLOR-4) ; GoToXY(1,l)~ClrEol;

Write(+Conjuntoa de verificacibn proporcionados por el usuario’)$ Textcolor (COLOR-2) : TextBackground (COLOR-1) ; END;

GOtOXY (10, 1) 3

+ocedimiento que desplieaga la ventana donde va la seccibn del arograma que se verifica > ’ROCEDURE ventana-med; BEGIN marco ( 1 , 5,79,20,2 ) ; Window(Z,6,78,19); ClrScr; TextColor (CW-OR-1) ; TextEackground (COLOR-4) ; OoToXY (1,l) 3 ClrEol ; GotoXY (15,l) 8 Write(’Seccibn del programa que SET verifica’); TextColor (COLOR-2) 5 TextBackground (COLOR-1 1; END;

Page 73: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa VERIFICADOR

€ Procedimiento que despliega la pan ta l l a de presentacidn de

PROCEDURE pantal la-presentacion; los resul tados ' 3

BEG IN Window (l,l, 80,25) ; C l r S c r ; vent ana-sup ; vent an a-med ; ventana-inf; END;

C Procedimiento que da opcibn para co r ta r l a ejecucidn en caso

DROCEDURE error; de e r r o r en l o s conjuntos de v e r i f i c a c i h 3

BEG IN marco(20,22,60,24,3) ; Window(21,23,59,24); TextColor (COLOR-5+16) ;TextBackground (COLOR-4) ; GotoXY(1,l) jC l rEol ; GotoXY (2, 1 1 ; Write('Desea supr imir l a Ve r i f i cac ion S IN ' ) ; REPEhT

GetChar (carac ter ) ; IF NOT(UpCasetcaracter) I N C'S' , " '1) THEN Write(BEEP1;

UNTIL UpCase(caracter) I N C'S' ,'N" 3 ; I F Upcaoe(caracter)= 'S" THEN corta:=True; TextColor (COLOR-2) ; TextBackground (COLOR-1) ; END;

C Procedimiento que escr ibe una cadena e i n s e r t a una l i n e a si

>ROCEDURE escst rn (reng1on:cadena) ; JCIR i , f i n : INTEGER;

l a cadena no cabe en el renglon 3

BEG I N i:=l; fin:=Length(renglon); While i < = f i n DO BEGIN

Wr i t e ( rengl on C i 3 1 ; I F WhereX=ElO THEN BEGIN

W r i te ln ; InsLine;

END; i I =i +l ;

END; END;

t Procedimiento que escr ibe una cadena en papel 3 >ROCEDURE escp r t s t rn (renglon: cadena) ; IAR i, f i n ; INTEGER;

BEGIN ii=l; +i n : =Length (rengl on 1 ; While i < = f i n DO BEGIN

W r i t e (1 st , reng l on C i 3 1 ; IF c o n t p r t ~ 7 0 THEN BEGIN

Wri t e í n (1 st) ; contprt:=0;

END; i : =i + t i con tp r t 'I =contpr t+ l ;

END 8

Paq. 17 J.&.E.M. - -- L-

Page 74: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa VER I F I CADOR

C Procesimiento que lee una cadena d e caracteres 3 PROCEDURE lee-cad(VAR cad:cadena); VAR cad-inte :cad-expres;

BEG IN Deletetcad, l ,Length(cad) 1; REPECIT

cad: =lee-val (SO, T-ALNUM) i IF Length (cad)=O THEN BEGIN

Write(EEEP1; Gotoxy(WhereX, WhereY-1) ;

END; UNTIL Length (cad) < >O; cad-inte:=Copy(cad, l,Length(cad) 1;

C ap-daql:=reduce(cad-inte) ; 3 < cad:=Copy(cad-inte, l , Length (cad - i~ ie ) I ; >

IF(Length(cad)=O) THEN ventana-inf j

END;

.C Procedimiento que despliega en panta l l a l a informaciSn necesaria: sector del programa, pre-condición, post-condicidn y opci dn de

PROCEDURE escr i be (act : apunt -2; ti PO: CHAR) ; VAR prim,ap-reser :apunt-2;

cont,i,posx,posy:INTEGER; par a : BOOLEAN;

corte de l a proposicibn que se v e r i f i c a 3

< Función que regresa un apuntadores apuntador 2 proposiciones m a s a r r i b a de la proposición que se v e r i f i c a 3

FUNCTION sube-2 (actual apunt-2; Üar cont: INTEGER) : apunt-2; BEGIN cont:=O; WHILE ~ c o n t ~ 2 ~ A N D ~ a c t u a l h . h n o ~ ~ N I L ~ DO BEGIN

cont:=cont+l; actual :=actual*. hno;

END; sube-2: =actual ;

END;

C Fuci6n que escr ibe el t i p o de proposición 3 PROCEDURE esc-prop (apunt: apunt-2) ;

CCISE tipo-prop O F AiWrite (var ia ,* = ',expre)~ St Wri te ( 'SI * , cond-s, ' Ct Write ( ' MIENTRCSS ' , cond-c , ' HAGA' ;

BEGIN WITH apunt* DO

ENTONCES' 1 ;

END; END #

PROCEDURE puntos3 BEG IN FOR i:=l TO 2 DO BEGIN

Got o x y ( posx , posy 1 ;

posy:=WhereY+l; Wri t e l n ( ' g . E');

END j END:

Page 75: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa VERIFICADOR

C Función que regresa un apuntador a l padre ma5 externo de l a proposi c i ón ’r

FUNCTION BEG IN

prim-pad (actual : apunt-2) : apunt-2;

Whi l e actual”. padre< >Ni 1 DO actual :=actual*. padre; p r i m-pad: =actual ; END;

C Procedimiento que escr ibe l a parte del proqrama donde es ta l a proposición que 5e v e r i f i c a 3

PROCEDURE esc-sec-pro; BEGIN Window (297,78, 19) ;ClrSCr; GotoXY(5,l) ;Write(’EMPIEZA’);

prim: =sube-2 (act y cont) ; ap-reser : =pr i m-pad (pr i m) ; IF ap-reser”. hno< >NI1 THEN puntos; IF prim*.padre<>NIL THEN BEGIN

Gotoxy (posx, posy) ; esc-prop (prim-“.padre) 5 I F prim*.si-no=l THEN Write(’ OTRO’);

posy: =WhereY+l;

Writeln(’Empieza’1; posy:=WhereY+l; IF prim*.hno<> N i l THEN puntos;

posy: =2; posx : =5;

f305X:=1O;

GOtOxy (POS% y P05y) j

END; i :=O; WHILE ( i <=2+cont 1 AND (pr i m< >NIL) DO BEGIN

Gotoxy (posx I posy) ; esc-prop (prim) ; IF primxact THEN BEGIN

TextCol or (COLOR-3) ; IF tipo=’S’ THEN BEGIN

Gotoxy (posx posy) : InsLine; escstrn (wp) ; posy:=WhereY+l;

END; Gotoxy(I,po5y); Write(’=>’)i Gotoxy (posx , WhereY+l) ; InsLine; escstrn (post 1 ; Textcolor (COLOR-2) ; posy: =WhereY+l;

END; i :=i+l; posy: =WhsreY+li p r i m: =pr i m̂ . ant p

END : IF prim-Nil THEN BEGIN

Ootoxy(posx,pPsy) 3 Write( ’Fin’1;

END; END 8

Page 76: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa VERIFICADOR

C Empieza el procedimiento escr ibe 3 BEGIN IF t i p o 0 ’ C ” THEN BEGIN

W i nd0.w (20 3,78 , 4) ; C1 r Scr ; GotoXY ( 1 , 2 1 ; escstrn (post 1 ; esc -sec -pro;

END; para:=True; Window (2, 22,78,24) ; ClrScr; GotoXY ( 2 , l ) ; CASE t i p o OF

’S I : BEGIN C Despliega precondición de l a proposicidn 3 Window (20,3,78,4) ; Gotoxytl, 1); escstrn (wp) ; Window (2,22,78,24) ; END ;

Write( ’ ( ’ ) ; escstrn ( c o n d ~ i n v i l i m ~ c o n l ) ; óeecprtstrn (cond-invLlim-conI); 3 Write(’) AND (’1; IF tipo=”C’ THEN BEGIN

’ C ’ , ’ F ’ : BEGIN C E l usuario v e r i f i c a l a implicacidn 3

Write( ’No ’1; Write (1st , ’ No ’ 1 ; 3

END; escstrn (act”. cond-c 1 ; Write(’) => ’1; escstrn (wp) ; escprtstrn(act”.cond_c); Wr i te (Lst , ’ ) => ’ ) ; escprtstrn(wp); Wri t e i n (1 st) ; contprt : =1; 3.

END; ’ W : BEGIN .: E l usuario entra l a condicidn invariante del c ic lo3

para: =Fa1 se; REPEAT

Window(2,22,78,24); ClrScr; GotoXY (2, l ) ; Textcolor (COLOR_2+16) ; TextSackground (COLOR-3) ; GotoXY(1,l); C l rEol ; Writeln(’Cua1 es l a Condicion Invariante’ ) ; TextColor (COLOR-2) ; TextBackground (COLOR-1 1 ; Delete tcond-i nv C 1 i m-con 3 , 1, Length (cond-i nvC 1 i m-con 3 1 1 ; 1 ee-c ad ( cond-i nv C 1 i m-con 3 1 ;

UNTIL(Length (cond~invCl im~con3) >O) ; END;

END; IF para THEN BEGIN

Write (BEEP) 3

IF Upcare (caracter 1 = Char (27) THEN error; Getchar (caracter) ; -

END; END 5

‘ROCEDURE inserta-parentesis (VAR expre: cadena) ; BEG IN

Page 77: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa VERIFICADOR

I n s e r t ( ‘ ( ’ ,expre, 1 ) ; I n s e r t ( ’ 1 ’ ,expre,Length (ewpre)+l) ; END;

Función que busca una palabra e l un renglon 3 UNCTION busca(palabra,expre:cadena; i n i : INTEGER): INTEGER; ’AR encuentra :BOOLEAN;

pos-pal , pos : INTEGER; BEG I N encuentra:=False; C No encuentra 3 WHILE ( i n i <=Length (expire) -Length (pa l abra) +1) AND ( Not encuentra) DO BEGIN

pos: =i n i ; pos-pal : =l ; € Compara l e t r a por l e t r a 3 WHILE (pos-palc-Length (palabra) )AND (palabraCpos-pal3=expreEpos3) DO BEG

pos:=pos+l; pos-pal : =pos-pal +l ;

END; IF pos-pal $.Length (palabra) THEN encuentra:=True ELSE i n i : = i n i + l ;

END; I F NOT encuentra THEN ini:=Length(expre)+i: .: No encuentra 3 busca:=ini;< regresa pos 1 l e t r a de l a palabra en el renglon 3 END;

. Procedimiento que v e r i f i c a una proposic ión e5 recurs iva para

‘ROCEDURE proposic ion (actual :apunt-2) : PAR pos :INTEGER;

padre : apiint-2; aux zcadena;

proposiciones que t ienen h i j os , (seleccibn c i c l o s 1 3

BEGIN € Guarda en l a p i l a l a wp (precondición mas d e b i l 3 1 imi tes =1 i m i te+ l ; p i 1 a-wpC 1 i m i te3: =Copy (wp, 1 , Length (wp) 1 ; CASE actual*.t ipo-prop OF

A:BEGlN 4 Caso de asignacidn 3 pos: =o: pos8 =busca (actual *. var i a, wp y pos) ; WHILE pos<=Length (wp) DO BEGIN

Delete (wp , pos, Length (actual ”. var i a) ) ; I n s e r t (actua l * . expre, wp, pos) ; posr=pos+Length (actual*.expre); post =burica (actua l v a r i a, wp y pos) ;

END; pre: ‘Copy (wp, 1 , Length (wp 1 1 ; END;

GIBEGIN € caso de selección 3 padre: =actual ; actual:=actuai^.hi jo-s-si; C V e r i f i c a l a pa r te del entonces 3. WHILE (actual<>Nil)AND (Not cor ta ) DO BEGSN

ptoposic ion tactual 1 ; IF Not cor ta THEN escribe(actua1,’S’); actua l :=actual*.hno;

END; C Cuarda en l a p i l a 9 1 i m i te: =1 i m i te+ 1 ; p i 1 a-wp C 1 imi te ] : =Copy (wp, 1 , Length (wp) 1 ; wp: =Copy ( p i la-wpC1 i m i te-1 3 , 1 , Length ( p i 1 a-wpC1 imi te-1 3 ) 1 ;

Page 78: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

--

Programa VERIFICADOR

actual z =padreh. h i jo-s-no; C V e r i f i c a en l a parte del otro si l a hay 3 WHILE (actual<>Nil)AND (Not corta ) DO BEGIN

proposicion (actual 1 ; IF Not corta THEN e s c r i b e ( a c tua l , ?S ’ ) ; actual :=actual *. hno;

END; 1 imite: =l irni te+l; IF padre^.hijo-s-naO NIL THEN

ELSE

actual :=padres C Encuentra wp de l a selecidn ut i l i zando el teorema 3 wp: =Copy (pi 1 a-wpC 1 i m i te-1 3 , 1, Length (pi 1 a-wpC 1 i m i te-1 3 1 ; inserta~parente~is(actual*.cond~s~ ; i nserta-parentesi s (wp 1 ; wp:=Concat (wp, ’Y*,actual*.cond_s) ; i nciert a-par ent esi s ( wp 1 ; IF actual*.hijo-s-no <>. NIL THEN

ELSE inserta-parentesis(aux1; aux:=Concat (aux, ’NO’,actual*.cond-s); i nsert a-parent esi s ( aux 1 ; wp:=Concat (wp,’O*,aux) 3 1 imite: =1 i m i te-1; pre:=Copy(wp,l,Length(wp)); END;

1 i m-con: =1 i m-con+ 1 ; C pide al usuario l a condicidn invar iante 3 escr ibetactua1, ’N’ ) ; € pide a l usuario v e r i f i c a r l a implicacidn para

escr i be ( actual , ’ C* ; padre: =actual ; actual : =padreh. h i jo-c; wp: =Copy (cond-i nvCl i m-cern3 , 1, Length (cond-i nvCl i m-con I1 1 ; post : =Copy (wp, 1 , Length (wp 1 ; C v e r i f i c a l a proposición del c i c l o 3 WHILE (actual<>Nil)AND (Not corta ) DO BEGIN

proposicion (actual 1 ; IF Not Corta THEN escribe(actua1, ’S ’ ) ; actual :=actual*. hno;

p i 1 a-wp C 1 imite]: =Copy (wp, 1 , Length (wp)

Delete (pi 1 a-wpC1 irni te], 1 , Length (pi 1 a-wpC1 i m i te3 1 1 ;

aux : =Copy (pi 1 a-wp C 1 i m i te 3 , 1 , Length (pi 1 a-wp C 1 i m i te 3 1 1 dux : =Copy (pi 1 a-wp C 1 i m i te-21,1, Length (p i 1 a-wp C 1 i m i te-21 1 ;

C:BEGIN C caso del c i c l o 3

entrar al c i c l o 3

END; actual :=padre; IF Not cor ta THEN escr ibe (actua l , *F*1 ; wps =Copy (cond-invC1 i m-con3 , 1 ,Length (cond-invCl im-con31 1 ; 1 im-con: =1 im-con-1 ; END ;

END; post: =Copy (pi la-wpC1 irni te3,l,Length (pi la-wptl irni te31 1 ; 1 irni te:=l irni te-1; END :

;IN € Empieza el procedimiento ver i f icador 3

)anta1 1 a-presentaci on 3 I i m i te: =O;

I n i c i a i i r a v a r i a b l e s 3

Page 79: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa VERIFICADOR

con t pr t : = 1 ; 1 i m-con 3 =O; Delete(post-cond, 1,Length (post-cond) 1; Delete(wp-ini,l,Length(wp-iniI 1; REPEAT

Window(2,22,78,24) ; T e x t Col or (COLOR_S+ i 6) ; T e x t Bac kgr ound (COLOR-4 1 ; GotoXY ( 1 , l ) 3 ClrEol ; Write ln ( ’ Escriba l a postcondición del programa’); TextColor (COLOR-2) ;TextBackground (COLOR-1) ; WritetBEEP); lee-cad (post-cond) ; post:=Copy(post-cond, 1,Length (post-cond) 1;

JNTIL Length (post-cond) >O: X r S c r ; REPEAT

Window (2,22,78,24) ; TextColor (COLOR-3+16) ; TextBackground (COLDR-4) i GotoXY(1,l); C1 rEol ; TextColor (COLOR_3+16) ; TextSackground (COLOR-4) j

GotoXY ( 1 , l ) ; C1 rEol ; Writeln( ’Escriba l a PrecondiciSn del programa’); T e x t Col or (COLOR-2) j T e x t Eac kground (COLOR- 1 1 ; Write(BEEP1; lee-cad(wp-ini); wp : =Copy ( post -cond, 1 , Length (past -c:and ) ) ;

JNTIL Length (wp) >O; Zorta: =FALSE; C mientra hay proposiciones encuentra l a precondición 3. rJHILE (actual< >Ni 1 1 CIND (Not corta) DO BEGIN

proposicion(actual1; IF Not corta THEN escribe(actua1, ’S ’ ) ; actual I =actual *. hnos END;

tF Not corta THEN BEGIN Window(2,22,78,24); ClrScr ; GotoXY (5,2) j Writeln( ‘La s iguiente proposicion se cumple S/N’:30) g escstrn (wp-ini 1 ; Write(’ => ’1; escstrn(wp1 3

escprtstrn (wp-ini) ; Writetlst,’ => ’1; escprtstrn (wp) 3 Writeln(1st ) : 3

REPEAT Read(Kbd,caracter); IF Not(UpCare(caracter) IN C’S’, ’N’J) THEN WritetBEEP);

UNTIL UpCase(crracter) IN C‘S’,’N23: Window( 10,22,70,2S) 8 ClrScr ; marco ( 10,22 y 70 y 25,2 1 ; TentBackground (COLOR-4) ; Window( 11,23,69,24) 3 C1 rScr ; GotoXY (1 1,2) ; IF UpCasetcaracter) = ’S’ THEN BEGIN C Programa correcto 3

Page 80: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa VERIFICADOR

TextCo1 or (COLOR-3) ; Write( ’ ******$ E í programa es correc to S S t S X t l r ’ ) ; Write (BEEP) ; Getchar (caracter ; TextCol or (COLOR-2) ; TextBackground (COLOR-1) ;

END ELSE BEGIN .I Programa con e r r o r regresa el e d i t o r para au modificación1

TextColor (COLOR-5) ; W r i t e ( ’ S t t t t S % * EL Programa t i e n e e r r o r t t f % t * S ” 1 ; c o r t a ? =True; Write(BEEP1; Getchar (carac ter ) ; TextColor (COLOR-2) ;TextSackground (COLOR-1 1 ; Window ( 1 , 1,8O,25) ; CcreenEdi tar ( ’ E‘ 1 ;

END; END ELSE BEGIN

Window ( 1 , 1 , 80,25) ; S c r e e n E d i t o r ( ? € ’ ) ;

END; END;

Page 81: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

_ -

Programa Reductor

‘rocedimiento para e s c r i b i r un conjunto 3 :RLAY procedure escribe-conjunto(conj:tipo-conjunto);

i n

f i IN conj THEN wr i te ( i :4 ) ; teln;

1;

i : inteqer ;

i .- .-1 TO v-grande do

rocedimiento que cambia valores de l a s Constantes entre el s intact ico I el reductor en l a parte del a n a l i s i s s intact ico ICEDURE conv-1 e x (VAR toq-equi : INTEGER) ; : ap :apunt-2; BEGIN I F lee THEN BEGIN

3

toq-equi :=O; ap: =anal isi s,sintñctico(False) j

CASE toquen OF 5: toq_equi:=40; .: ( 3 6: toq_equi:=41; < 1 3

14: toq_equi:=59; .: ; 3. 15: I F compara (palabra, ’NO’ 1 THEN

16: toquen:-O; € FIN de expresion 2 19: BEGIN €Identi f icador>

toq-equi 2 =126; €Iy, Negaci 6n 3.

toq-equi : “4; IF (compara(palabra,’VERDAD’) )OR(compara(pñlabra, ‘FALSO’)) THEN

END; toq_equi:=3; CBOLEANA 3

203 toq-equi : =2; C Numero] 22: toq_equi:=91; <E3 23s toq_equi:=93; C 3 3 25: toq-equi : =58; 6: 3 3: CASE Otd(palabraf í3 ) OF €Adicion3

124,79,311 :toq-equiP= 1241 C :,O,o 3 43,45 :toq-equi:= ürd(palabraCl3) ; C +,- 3

ELSE: END;

4: CASE Ord(palabraf l3 ) OF CMultiplicador3 38189,94,121 :toq-equi:= 38; C & , * , y , Y >

47,42 :Toq-equis= Ord(palabraEl3) ; C X,/ 3 ELSE ;

END; 17z CASE tipo-sin OF €Operador de re lacibn3

7 :toq-@qui:= 60; C < 3 8 :toq-equi:= 61; € = 3 9 :Toq-equi:= 623 C > 3

10 :toq-@qui:= 2433 C 5 3 11 rtoq,equii= 2423 C L > 10 :toq-@qui:= 2431 C I 3 21 :toq-equi:= 216; C t 3 ELSE

END; ELSE

END; END ELSE 1 ee: =True; END;

uncidn que regresa el s iguiente elemento de un conjunto ordenado 3

Page 82: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

--

Programa Reductor

FUNCTION siguiente-elemento(u1t: INTEGER; VCIR con j: tipo-con junto): INTEGER; BEGIN REPEAT u1 t : =Succ ( u1 t 1 ; UNTIL (ult IN conj)OR(ult>v-grande); siguiente-elemento:=ult; END;

procedimienta que recorre y guarda en un conjunto todas las ramas o hojas de un mismo OPERador 1 PROCEDURE llena_conjunto(apt,oper: 1NTEGER;VAR conj: tipo-conjunto) ;

BEGIN I F (tabl aLapt , TIPOI=INTERNO) AND (tabl at apt, VALORJ=oper 1 THEN BEGIN

1 1 end-con junto (tab1 aC apt I I ZQ3 oper , con j 1 ; llena~conjunto(tablaLapt,DER3,oper~conj);

END ELSE con j : =conj+Capt 3 ; END;

Procedimiento que busca y cambia los apuntadores de un nodo viejo a un nodo nuevo d e la tabla 3

ROCEDURE busca-cambi a-tabla ( v i e j o , nuevo,numero-apt: INTEGER;

AR i ,cuenta : INTEGER; W R tab1:matriz);

BEG I N

cuenta:=0; WHILE (i~=ultimo)~ND(cuenta~numero-apt) DO BEGIN

i:=1* I

IF tablCi,ÍZQl=viejo THEN BEGIN tablCi, IZQI:=nuevo; cuenta: =cuenta+ 1 ;

END; IF tablLi,DERl=viejo THEN BEGIN

tablfi,DERl:=nuevo; cuenta:=cuenta+i;

END; i.- .-i+i;

END; t ab1 C nuevo, CONT 3 : =t ab1 [nuevo, CONT 3 +cum t a; END;

Funcidn que Regresa un conjunto con los renglones del D.A.G. que son

NCTION 1 lena-uti 1 (papa: INTEGER; VAR uti 1 : tipo-con junto; VCIR tab-uso: rnatri z ) : INTEGER;

R conta: INTEGER;

utilizados para compactar el D.A.G. 3

BEGIN contat=O; I F tab-usoCpapa,IZP3>0 THEN

IF tab-usoCpapa,DERI>O THEN

I F Not (papa IN uti11 THEN BEGIN

END; ilena-util:=conta; END;

conta: =1 lena-uti 1 (tab-usoCpapa, 1201, uti 1, tab-uso) 3

conta: =conta+l 1 ma-ut i 1 (tab-usotpapa, DER3 , uti 1 , t ab-uso) ; conta:=conta+l; ut i 1 : =ut i 1 + C papa 3 ;

Page 83: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

rocedimiento l a seccidn de l D.A.G. ap: apuntador a l a r a i z del dag que se va a compactar; i n i e5 el limite

ERLAY PROCEDURE compacta-dag(VAR ñp,ultimo:INTEGEk;VAR tab-uso:matriz;

R tot_util,ap-ult,ap-prim,i, j , k :INTEGER;

inferior desde donde se va a qurada r el dag compactado)

i n i : INTEGER) ;

u t i 1 , l i b r e : tipo-conjunto; BEG IN 1 ibre:=C 3 ;

tot-ut i 1 : -1 1 ena-uti 1 (ap , ut i 1 , tab-uso) ; ap ,pr i m : =O ; FOR i:=l TO v-grande DO l i b r e : = l i b r e + C i 3 ; IF ini>O THEN

FOR i := l TO IN1 DO l ibre := i ibre -Ci l ; l i b r e : =i ibre-uti 1 ; i :=O; WHILE i<=v-grande DO BEGIN

u t i 1 :=c 3 ;

i . - . -siguiente-el emento ti, u t i i 1 ; IF (i<=v-grande)AND(i >tot-utii+ini THEN BEGIN

j : =siguiente-elemento(O, 1 ibre) j I F i=ap THEN ap:=j; 1 i bre: =1 ibre-t j 3 ; FOR k : = l TO LON-L DO BEGIN

tab-uso[ j 3 C k I : =tab-usoC i 3 C k 3 ; tab-usoti I C I: 3: =O;

END; busca-cambia-tabla(i, j,tab-usoC j,CONTI,tab-uso);

END; END; u1 t i mo: =tot-uti 1 +i ni ; END;

FUNCTION busca-str (VAR palabra: CADENA) : I VhR j : INTEGER;

termina: BOOLEAN; BEG I N j:=l; termina: =Fa1 se;

JTEGER;

WHILE (j<=ul t-tab-str 1 CIND (Not termina) DO BEGIN

END; IF Not termina THEN BEGIN

IF compara(palabra, tab-strCJ3) THEN termina:=True ELSE j 8 =j+l;

ult-tab-str:=ult-tab-str+l; tab-str tul t-tab-str 3 : =Copy (pal abra, 1, Length (palabra) ) ; j:=ult-tab-str;

END; busca-str:=j; END;

rocedimento que escr ibe l a t a b l a desde el i n i c i o hasta el ltimo renqlon act ivo 3 PROCEDURE esc r i be-tabi a (u1 ti mot i nteger ; VAR tab1 a: matri z 1 ; VRR x , y :INTEGER;

BEG I N FOR x : = l TO ultimo DO BEGIN

Write ( x 1 ;

Page 84: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

FOR y:=l TO LON-L DO wri te(tablaCx,y3:4) ;

I F tablaCx,T1P03=IDENTI THEN Wr i tetab-str C tab1 al:< , VALOR3 3 : 10) ;

Wr i te1 n; IF (x MOD 20)=0 THEN read(kbd,caracter); END; read(kbd,caracter); END;

’rocedimiento que escribe el tipo de ERROR 3 PROCEDURE errar (numero: INTEGER) ;

BEGIN IF Not err THEN BEGIN

Wi ndow (2, 22, 78, 25) ; C1 rScr ; marco(2,22,78,25,2) ; TextBackground(l5) ;Textcolor ( O ) ; Wi ndow (3,2J, 77,24) ; Cl r Scr ; GotoXY(5,l); CASE numero OF

O:Writeln(’t*Y ERROR S t f Espera una EXPRECIO SIMPLE’); i:Writeln(’tXt ERROR ttt Espera un TERMINO’); 2:Writeln(’SSS ERROR # f S Espera un FACTOR’); 3:Writeln(’ttX ERROR X S t Espera un (SUM) “F.”’); 4:Writeln(’$ttt ERROR X t t Espera un <I> “CORCHETE DERECHO”’); S:Writeln(”ttX ERROR btS Espera un ( 0 . “PARENTESIS IZQUIERDO”’); ó:Writeln(’ttt ERROR S f t Espera una VARIABLE’); 7rWriteln(’ttt ERROR t t t Espera .<:> “DOS PUNTOS”’); 8:Writeint’Jff ERROR YtX Espera un IDENTIFICADOR’); 9rWriteln(‘#*t ERROR t t t Espera un OPERADOR DE RELACION’); lO:Writeln(’ttS ERROR 4 $ $ Espera la VARIABLE: ‘,contraía); ll:Writeln(’ttt ERROR XXt Espera la 0 ) ”PARENTESIS DERECHO”’); 12: Wr i te1 n ( ‘ t t t ERROR t t t TOQUEN No def i ni do’ , toquen: 4) ; 13:Writeln(’ttt ERROR ttl: EXPRESION no recursiva‘); 14: Wri teln ( ’ t S S ERROR X S X DIVISION en O’ ) ; 15:Writeln(’ttS ERROR aXt Espera “FACTOR”’); lb:Writeln(’SSt ERROR S t t Espera “FACTOR SIMPLE”’); 17: Wri tei n ( ’ ttt ERROR t t t Espresi 6n I’ INCOMPLETA” ’ 1 ;

1; 18:Writeln(’ttt ERROR t t t Espera IGUAL ” = I s p

END3 fen-err:=renglon; y-err : =ap-i t q ; err : =True; TextBackground(0);Textcolor (15);

END; END;

C Función que regresa el valor de prioridad de un operador 3 FUNCTION prioridad (ap: INTEGER) : INTEGER;

BEG I N CASE tablaLap,VALOR3 OF

C ~ M f A Y O R , C ~ M E N O R , C ~ I G U A L , M A Y ~ I ~ , M E N ~ I ~ , C ~ D ~ F E R 8 pr i or i dad : =O;

NO8 pr i ori dad: =I 3 RESTA: pr i or i dad : “33

SUMfA, Y: priori dad: =2; O, MULT: pri ori dad: =4;

D1VI:prioridad: =5;

COP-REL3

ELSE END;

Page 85: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

END;

C Procedimiento que recorre el D.A.G. (en entre orden 1 para obtener

PROCEDURE rec-anterior (ap: INTEGER; VAR str-cadena: cad-expres;

VCIR parentesi s : BOOLEAN; str-aux :STRINGC103; h i j o : INTEGER;

1 a expresi ón reducida

VAR tab larmatr i t ) ;

BEGIN CASE tabiaCap,TIPOJ OF INTERNO: BEGIN

parentesis:=False; h i jo : =t ab1 a E ap , I ZQ I ; IF h i j o t X THEN BEGIN

J is i ta el h i j o Izquierdo 3 I F tab1 aChi jo, TIPOl=INTERNO THEN

inserta parentesisi para dejar l a pr ior idad de 105 operadores 3 I F prioridad(ap1 >pr ia r idad (h i j a ) THEN BEGIN

str-cadena:=Concñt (str-cadena, ' ( ' 1 ; parentesis: =True;

END; rec-anterior (hi jci, str-cadena, tabla) j

END; IF parentesic, THEN

str-cadena: =Concat (str-cadena, ' 1 ' 1 ; l i s i t a e l nodo 3

str-cadena: =Concat (str-cadena,Chr (tablaCap,VhLOR3) 1 ; parentesi s: =Fa1 se; hi j o: =tab 1 a C ap , DER 3 5 IF h i jo<FO THEN BEGIN

l i s i t a e l h i j o derecho 3. IF tablñChijo,TSP03=INTERNO THEN

I F prior idad (ap) >prioridad (h i j o ) THEN BEGIN inserta parentesis para dejar l a prioridad d e 105 operacores

str-cadena:=Concat (str-cadena, ' ( ' 1 ; parentesi 5 : =True:

END : rec-anterior ( h i jo,str-cadena,tabla) ;

END; IF parentesis THEN

END; str-cadena:=Concat (str-cadena, ' 1 ' 1 ;

Si el nodo que v i s i t a es una hoja 3 IDENTJ: BEGIN

SF tabiaCap,ESTADOl=NEG-~RIT THEN st r -c adena : =Cox at ( st r -cadena,

' (-',tab_strCtablaCap,VALOR33,")"1

ELSE IF tablaCap,ESTADOI=NEGJ3OL THEN

str -c adena: =Cancat (str -c adena, ' I"' , t ab-str C t ab1 a i ap VALOR3 3 , ' 1 ' 1

ELSE str-cadena: =Concat (str-cadena, t ab-str f t ab1 aC ap , VALOR1 3 1 ;

END; NUMERO : BEG I N

Stir (tabiatap,VALORlo 10,str-dux) ; WHILE Ord tstr-dux C 13 1 =32 DO de le te ístr-aux , 1 , 1 ) ; IF tablaCap,VhLORI ( 0 THEN

Page 86: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

str-cadena:=concat (str-cadena,' ( ' ,str-aux, * 1 ELSE str-cadena: =concat (str-cadena, str-aux) END;

BOLEANA: IF tablaCap,V~LORJ=VERDAD THEN str-cadena:=Concat (str-cadena, (VERDAD) ' 1

ELSE str-cadena:=loncat (str-cadena, ' (FALSO) ' 1; END ; END;

'rocedimiento que b o r r a un renglon d e l a t a b l a donde e s ta el DAG> PROCEDURE 1 i mpi a-t up1 a (apt : INTEGER) ; VAR i : INTEGER;

BEG I N FOR i :=l TO LON-L DO tab iaLapt , i l :=0 ; tablaCapt,TIPOl:=VACIO; END;

+ocedimiento que l i g a un nodo con sus hi jos 3 PROCEDURE apunta(padre,h-izq,h_der:INTEGER);

REGIN t ab1 alpadre, I ZQJ : =h-i zq ; tablaEpadre,DERJ:=h_der; t ab1 at h-i zq , CONTI : =tab1 at h-i z q , CONT 3 + 1 ; t ab1 aCh-der , CONTI : =tab1 alh-der , CONT 1 + 1 ; END;

-0cedimiento que borra una rama del DClG 3 PROCEDURE borra-ramatapt: INTEGER);

BEGIN I F ( tablatapt , CONTl<=l) THEN BEGIN

i m p i a el nodo porque no t i ene otro padre, y, t r a t a de limpiar a sus hijos 3 I F tab la fapt , IZ153<>0 THEN borra_rama(tablaCapt, I Z Q 3 ) ; IF tab l aC apt , DERIÉ >O THEN borra-rama (t ab1 aC apt, DER3 ; limpia-tuplatapt 1 ;

END

ELSE tab l at apt , CONTI : =t ab1 aC apt , CONTI-I ; END;

Elimina un padre >

incion que busca secuencialmente un nodo en l a t a b l a desde un renglon 3icia l dado ( i n i c i o ) hasta que l o encuentre ó l l e g e a l ultimo d e l a i b l a y regresa l a direction ó O 3 FUNCTION busca~nodo(vlr,tip,est,inicio:3NTEGER):INTEGER~:INTEGER; VAR i,ap-str : INTEGER!

encuentra : BOOLEAN3 BEGIN encuentras =Fai set i r r i n i c i o ;

3usqueda secuencia1 hasta el f i n a l de l a t a b l a act iva o hasta que en :uentre el nodo >

WHILE (i<=ultimo)AND(Not encuentra) DO BEGIN I F ( tabl aCi , TIPOJ=ti p) AND (est=tabl a t i , ESTADO 3 1 THEN BEGIN

IF (tipiIDENT1) and (compara(tab_~trCtablaCi, VALORJ3,palab-auxi 1) THEN encuentra: =True;

IF ( t ip< > IDENT I ) AND (tab1 a C i , VALOR J=vl r 1 THEN encuentra: =True:

END; S i el nodo no es, v e r i f i c a si es ta l i b r e para de ja r a l lpuntador "LIBRE" a l primer nodo l ibre de l a t ab l a 3

IF Not encuentra THEN BEGIN

Page 87: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

IF (t ab1 a C i , TIPO l=VAC IO 1 AND ( ( 1 i bre=O) OR ( 1 i b r e > i 1 1 THEN

i:=i+l; l ib re := i ;

END; END 5 IF encuentra THEN busca-nodo:=i ELSE busc a-nodo: =O ; END;

Procedimiento que cambia l a s ramas 6 ho jas del DAG-2 que estan en e l DhG-1, haciendo ,un reco r r i do s ime t r i co 3 OCEDURE mezcla-dag(ap:INTEGER;VAR cabezr1NTEGER;VAR tab :mat r i t ) ; R ap-nvo, aux : INTEGER;

termina : BOOLEAN; EGIN ux : =u1 timo; F tabCap,TIPOI~~~INIERNO THEN BEGIN

I F ap>=ap-prim THEN BEGIN u1 t i mo: =ñp,pr i m-1 ; IF tabCap,TIPOl=IDENTI THEN

a p ~ n v o : = b u s c a ~ n o d ~ ~ t a b C a p , V A ~ O R l , t a b C a p ~ T I ~ O l ~ t a b C a p ~ E S T A D O l y l ~ ; u1 t imo: =aux ; IF (ap_nvo(ap_pr im)AND(ap-nv~~~) THEN BEGIN

pa l ab-aux i : =tab-str Ctabtap, VfSLORl3;

IF aprcabez THEN cabez : =ap-nvo; busca-cambi a-t ab1 a (ap , ap-nvo, tab Cap I CONTI tab ; l impia-tupla(ap1;

END; END;

ND LSE BEGSN

IF tabfap, IZQJO.0 THEN mezcla-dag(tabCap, lZQ3,cabez,tab); I F tab Cap , DER]< >O THEN metcl a-dag ( tab Cap , DER], cabez , tab) ; I F ( tab C ap , I ZQ3< ap-pr i m) 4ND ( tab i ap , DER1 C ap-pr i m) THEN BEGIN

ap-nvo, =o; termina: =Fa1 se; REPEAT

u1 timo: =ap-pri m-1 ; ap~nvo:=busca~nodo(tabCap,VfALOR3, INTERNO,

u1 t i m o i =aux ; IF ap-nvo(>O THEN BEGIN

IF (tabtap, IZQl=tabtap-nvo, 1 Z Q l ) A N D ( tab C ap , DER 3 =tab C ap-nvo DER3 1 THEN t ermi na: =Tr ue;

IF ( tab C ap , VALOR 3 IN conmuta 1 AND ( tab Cap, I Z Q l = t ab C ap-nvo, DER 3 1 fSND ( tab C ap , DER 1 =tab C ap-nvo , I ZQ3 1 THEN t e r m i na: =True ;

tabfap,ECTADoJ~ aP-nvo+l) ;

END j UNTIL (terrnina)OR(ap_nvo=0) ; I F termina THEN BEGIN

busca-cambi a-t ab1 a (ap, ap-nvo, tab C ap , CONTI, tab 1 ; I F cabezrap THEN cabez:=ap-nvo;

END; END; JD; 1 timo: =aux ; 4D;

Funcidn que escr ibe un operador a l f i n a l de

FUNCTION ubica-oper (oper: INTEBER) : INTEGERi - l a t a b l a regresa l a d i recc idn > .

-- I_

Page 88: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Prcjorama Reductor

BEGIN u1 ti mo: =u1 ti mo+ 1 j 1 i mpi a-tup1 a (u1 t i mcl ; tab 1 aCul ti ma, VALLlR3 : =oper ; tablaCultiinu.TIP03:=INTERNO; ubi c a- ope:" : =u1 ti mo; END: -

?uncibn que busca un nodo hoja regresa l a dirección, 5i el. t ipo de iodo e5 var iab le , el nombre de es ta e s ta almacenado en '1PALAB-AUX18i3 FUNCTION busca~hoja(vlr,tip,est:iNTEGER~:íNTEGER; VAR i, j : INTEGER;

termina :BOOLEAN; BEGIN i : =ap-pr i m; termina:=False;

WHILE ( i >O)CSND(Not termina) DO BEGIN i : =busca-nodo ( v l r , t i p , est, i 1 ; IF ( i - <>O ) THEN

3uc;ca secuencialmente en l a t ab l a 3.

IF ( tablaCi , IZBl=O)AND(tablaEi ,DERI=O) THEN

ELSE i:=i+l; END;

Si no esta crea un nuevo nodo 3 IF Not termina THEN BEGIN

termina:=True

IF l i b r e 0 0 THEN BEGIN ipunta a l primer nodo l i b r e de l a t a b l a ac t i va 3

i : = l i b re ; libre:=O;

END ELSE BEGIN

lo hay noda l i b r e entonces amplia l a t a b l a act iva 3 u1 t i mor =u1 ti mo+l ; i : =u1 ti mo;

END; 1 i mpi a-tup1 a ( i 1 ; t ab1 at i , ESTAD03 : =est ; IF tip<>IDENTI THEN BEGIN

t ab1 a t i , VALOR3 : =vl r ; t ab l at i , T IPOI : =ti p ;

END ELSE BEGIN

3usca el s t r ing en l a t ab l a de s t r ing si esta apunta a ese, ii no esta crea un nuevo s t r ing 3

jtrbusca-str (palab-auxi 1 ; tabl at i , VALOR3 : = j ; t ab1 a C i 1 IPOI : =IDENT I ;

END ; END I busca-hoja: si ; END;

kncibn que recarre l a t ab l a secuencialmente hasta encontrar un nodo .nterno, con hijo izquierdo "H-IZQ1' y h i j o derecho "H-DER", si el

FUNCTION recorre-tabla-secuencia1 (h-izq,h-der,

VCIR i : INTEGER;

)perador es conmutativo conmuta los h i j o s 3

vlr,tip:INTEGER):INTEGER;

Pag. 32 3.CI.E.M. I _ _ " 4 1 1

_ L _ . ~ P - I J - F Lv

Page 89: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Proqrama Reductor

termina :BOOLEAN; BEGIN terminatrfalse; i : 'ap-pr i m; WHILE (Not termina)AND(i >O) DO BEGSN

i:=busca-nodo(vlr,tip,FOSI,i); IF i-<>O THEN BEGIN

IF (tablati 12~3=h_izq)AND(tablaCi ,DERI=h-der) THEN

ELSE termina: =True

IF (vlr IN CONMUTAIAND (tablaCi ,DERJ=h-izq)

ELSE i:=i+ls AND(tab1aí.i , iZQI=h-der) THEN termina:=True

END; END; recorre-tabla-secuencia1 :=i END;

-uncibn que regresa un valor de verdad si el nodo apuntado es una io ja 3 FUNCTION apunta-hoja(ap:INTEGER):BOOLEAN;

BEGIN apunta-hoja: =Fa1 se; I F ap>Q THEN

IF tablaCap,TIP03~>INTEHNO THEN apunta-ho ja: =True;

END;

'rocedimiento que busca un nodo hoja con estado opuesto3 PROCEDURE cambia-estado(Vf4R hija:INTEGER;est:INTEGER); VAR ap, val : INTEGER;

BEG IN IF tablachi jo,ECTAD03< >.POSI THEN

val:=tablaChi jo,VALORI; IF tablaChijo,TIPOI=NUMERO THEN BEGIN

est : =POSI ;

val :=val iL (-1 1 ; est : =POSI ;

END ELSE palab-auxi : =tab-str Eva1 3; ap:=busca-hoja(va1 ,tablaChiJo,TfPG3,estl; hi jo: =ap f END;

Función que regresa el apuntador a una rama despues de combinar los operadores 3 FUNCTION nueva-rama(h-irq,h-der,vir:INTEGER):SNTEGER~ VAR ap: INTEGER;

BEG 3 N ap: =recorre-t ab1 a-secuenci al (h-i sq, h-der , vl r , INTERNO) 3 IF ap=O THEN BEGIN

END; nueva-rama: =ap; END ;

apsrubica-oper {vir); apunta (ap, h-i zq, h-der 1 ;

'unción que regresa una nueva rama si puede combinar el operador I * I 1 con los operadores ll&k" 6 3

I_. I- Paq. 33 3.A.E.M. - ._-- .."---u

Page 90: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

FUNCTION combina-oper-bo1 (VAR hi jo: INTEGER) :BOOLEAN; VAR nue-irq, nue-der, nue-hi jo, vlr : INTEGER;

i nv : BOOLEAN; BEGIN vl r : =O; combi na-oper-bo1 : =Fa1 se; CASE tablaChijo,VALORl üF

Y,O : EEGIN IF tablaChijo,VALORI=Y THEN vlr:=O; IF tablachi jo,VALOR3=O THEN vlr:=Y; nue-izq:=tablaChi jo, 1ZQ3; nue-der:=tablalhi jo,DER3; IF (apunta-hoja(nue-irq) )fiND(apunta-hoja (nue BEG IN

Reduce solamente si 105 hijos son hojas 2. cambi a_estado(nue-icq,NEG-BOL) ; cambi a-estado (nue-der , NEG-BOL) ; hijo:=nueva-rama(nue_Izq,nue_der,vlr); combina-oper-bol :=True;

END; END;

BEGIN i nv: =Fa1 se; CASE tablachi ja,VALORl OF

C-MENOR, MEN-IG,C-IGUfiL,C-DIFER:

C-MENOR: BEGIN inv:=True; vlr:=MEN-IG; END;

C- I GUAL : vl r : =C-DI FER; C-DXFER: vlr:=C-IGUAL;

vlr : =C-MENOR; inv:=True; END;

MEN-IG: BEGIN

END; IF Not inv THEN BEGIN

nue-izq:=tablaChi jo, IZQ3; nue-der : =tab 1 at h i io, DER 3 ;

END ELSE BEGIN

nue-i z q : =t ab1 a C h i jo, DER3 ; nue-der:=tablaChijo, IZQJ;

END; h i jo:=nueva-rama(nue-izq,nue-der L v l r ) ; combina-oper-bol :=True; END;

ELSE END 3 END3

1 - der)) THEN

Funci6n que regresa una nueva rama si puede combinar el operador > 11 - I1 con los operadores"+" 6 I I $ II

FUNCTION combina_oper(VhR hijo:INTEGER):BOOLEAN; VAR nue,irq,nue-der,nue-hijo,vlr :INTEGER:

BEG IN combi na-oper : =Fai se: nue-i z q: =tab1 a L hi jo, I ZQJ 3 nue-der I: =t ab1 at hi jo, DER3 ; IF (tablachi jo,UALORJ IN OP-MULT) THEN BEGfN

Page 91: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

Busca una hoja en el hijo izquierdo ó en el derecho 3 IF apunta-hoja(nue-izq) THEN BEGIN

cambi a-estado (nue-i t q , NEG-AR I T 1 ; tabl at nu@-i zq, CONTI : =t ab1 afnue-i z q , CONTI41 ; combina-oper: =True; hi jo:=nueva-rama(nue-izq,nue_der,tablaLhi jo,VALOR3);

END ELSE

IF apunta-hoja(nue-der) THEN BEGIN cambia-estadotnue-der,NEG-ARST); tabl atnue-der , CONT 3 : =t ab1 a t nue-der , CONT 3 + 1 ; combina-oper:=True; hi jo:=nueva-rama(nue-izq,nue-der, tablachi jo,VAL083) ;

END; END; IF tablaChijo,VALORl IN OP-CUM THEN

Reduce solamente 51 105 hijos son hojas, 3. cambia-estado(nue-izq,N€G-fiRIT); cambia_estado(nue_der INEG-ARIT) ; hi jo: =nueva-rama (nue-i zq, nue-der , tabl aChi jo, VALOR3 1 j combina-oper:=True;

I F (apunta-hojatnue_izq))fi~D(apunt~-hoj~(nue-der)) THEN BEGIN

END; END ;

Función que busca l a representacidn d e un nodo interno en la tabla y regresa l a direcci6n 6 O, el valor de verdad, y combina operadores 3 FUNCTION bus-i n t erno (padre, h-i z q : INTEGER ;

VAR h-der , ap-ret: INTEGER) :BOOLEAN; VAR i ,vlr, tip : INTEGER;

: BOOLEAN; ter mi na, unar i o BEG IN unario: =Fa1 sei IF h_izq=O THEN unario:=True; ap-ret : =O; termina:=False; v i r : =t ab1 a C padre, VCSLORI ; tip: =tab1 atpadre, TIPO];

I F vlr = NO THEN BEGIN Reduce el No Loqico 3

IF tablaCh~der,TIP03~>fNTERNO THEN BEGíPJ termina: =True; cambia,estado(h-der ,NEG-BOL) ;

END ELSE termina:=combina-oper-bol (h-der) ;

Reduce este nodo de 2 +ormas: combinando el operando d dejandolo en el hijo derecho si es hoja >

END5

IF (vlr = RESTfi)AND(h-izq(>h_der) THEN BEGIN vl r : =SUMA: termina:=True; Waior BOOLEAN0 que indica si hay cambio de oper3 I F tablath-der,tipol<>INTERNO THEN BEGIN

termina:=True; cambia-estado(h-der,NEG-fiRIT);

END ELSE termina:=combina-oper (h-der) ;

END; IF t ermi na THEN t ab1 at padre, VALOR3 : =vl r ; termina: =False;

I__^ Pag. 35 J.A.E.M.

.-“v_upy jl4-

”^ -.

Page 92: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

ap-ret: ih-der; IF Not Unario THEN

IF ap-ret>O THEN bus-interno:=True ELSE bus-i nterno: =Fa1 se; END;

ap-ret: =recorre-tab1 a-secuenci al (h-i z q , h-der , vl r , ti p) ;

ERLAY FUNCTION reduce (VAR buff -expr :cad-expres) : INTEGER; R i:INTEGER;

rocedimiento que reduce una expresdn guardada en un DAG y uego llama l a ru t ina para obtener l a expresión3 ROCEDURE red-expresian (VAR ap: INTEGER) ;

rocedimiento que cambia el h i j o d e un nodo y borra a l h i j o viejo) PROCEDURE cambi a-hi jo (VAR apt: INTEGER; h-vi e jo , ap-nuevo: INTEGER) ; VAR ap-h-der, ap-h-izq, ñp-ret : INTEGER; BEGIN I F h-viejo=DER THEN BEGIN

ap-h-i zq: =tab1 aCapt IZQ3 j ap-h-der : =ap_nwvo;

END ELSE BEGIN

ap-h-der: =tabi at apt, DERI; ap-h-i zq : =ap-nuevo;

END; tab 1 at ap-nuevo, CONT 3 : =t abi at ap-nuevo, CONT 3+ 1 ; borr a-rama (tab 1 a C apt, h-vi e jo 1 1 ; IF bus-intsrno(apt,ap-h_izq,ñp_h_der,ap-h-der,ap-ret) THEN BEGIN

busca-cambi a-tab1 a (apt, ap-ret , tab1 at apt , CONTI, tab1 a) ; borra-rama(apt); apt: =ap-ret;

tab I a C ap-nuevo, CONT 3 : =t ab1 a t ap-nuevo, CONT 3 - 1 ; END ELSE tablaCapt,h-viejo3:=ap_nuevo; END;

-ocedimiento que remplaza un nodo hijo par o t r o 3 PROCEDURE rempl aza-nodo (padre, h-vi ejo, vl r , t i p , est : INTEGER) ; VAR ap-viejo,nuevo :INTEGER;

BEG IN ap-viejoo=tabl atpadre, h-viejo3; nuevo: -busca-hoja ( v l r , t i p , est 1 ; teblaCpadre,h_viejo3:=nuevo; tablaCnuevo,CONT3:=tablaCnuevo,CONTl+l; borra-rama (ap-vie jo) ; END]

-0cedimiento que el imina un nodo d e l DAG, y, l o remplaza uno de 5us h i j o s 3 PROCEDURE elimina-nodotVAR apt81NTEGER;h-queda:INTEGER); VAR borra,cuenta : INTEGER;

BEGIN IF h-queda=IiQ THEN borra:=DER ELSE borrar =I ZQ; borra-rama (t ab1 ai apt, borra 3 ) ; cuenta: =t ab1 at apt, CONT 3 ; busca_cambia_tabla(apt,tablatapt,h_queda3,c~enta,tab~a); cuenta: =t ab1 at apt , h-queda 3 ;

Page 93: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

limpia-tupla(apt); apt: =cuenta; END;

rocedimiento que cambia los va lores de un nodo, ara esto crea uno nuevo y elimina el v i e j o 3

PROCEDURE cambia-nodo(VAR apt:JNTEGEñ;vlr ,t ip,est: íNTEGER)i VAR nuevo :INTEGER;

BEG I N nuevo:=busca-hoja(vlr, t i p , e s t ) ; t ab1 ñ C nuevo, CONT 3 : =t ab1 aC nueva, CONTI+ 1 ; busca-cambi a-t ab1 a (apt, nuevoy t ab1 a[ apt CONT3 t ab1 a) j borra-rama(apt); apt: =nuevo; END;

rocedimiento que borra un nodo h i j o 3 PROCEDURE borra-nodo(padre,hijo:INT€G€R); VAR ap-dux :INTEGER; BEGIN ap-aux:=tablaCpadre, h i j o l ; tablaCpadre,hi jol:=O; borra-rama (ap-aux 1 ; END;

FUNCT I ON VAR h-izq, h-der :INTEGER;

BEG IN hi jo-opuesto: =Fa1 se; h-i tq: =tab1 aCap, IZQI ; h-der : =tab1 aCap, DER]; I F (apunta-hoja(h-izq) )&ND

t i i j o-opuest o ( ap : I NTEGEH 1 : BOOLEAN;

(apunta-hoja (h-der) 1 THEN IF ( tab 1 a C h-i z 9, ESTADO 3 < >tab 1 ai h-der , ESTADO 3 1 AND

(tab1 ash-i zq y TIPOl=tabl aC h-der , ti po l 1 THEN IF compara (t ab-str C t ab1 a i h-i t q , VALOR3 3,

tab-str Ctablafh-der, VFILORJ 3 1 THEN hi jo-opuesto:=True;

END 3

FUNCTION pregunta(apt ,dir ,num,cla~e: INTEGER) :BOOLEAN; VAR hijo :INTEGER; BEG I N preguntar =Fa1 se; h i jor =t ab1 aC apt , di r 3 ; IF h i jo< >O THEN IF ~tablaChiJoytipo3=cla~e~AN~~tab~aChiJoyV~LOR3=num~

END; THEN pregunta:=True;

Fuci6n que recorre una rama comparando y buscando nodos del mismo t ipo (NUMERO) con l a o t ra r a m a del padre y regresa un va lor BOOLEAN03

FUNCTION recorre(apt,h_op,sig:INTEGEH):BOOLEA" VAR arbol , f i jo, di f er , ap-di f : INTEGER;

v-bol # BOOLEAN; BEGIN arbol : =t ab1 ai apt, h-op 3 ; v-bol : =Fa1 se; IF h-op-IZQ THEN fijo:=tablaCapt,DERJ ELSE f i jo: =t ab1 a i apt, IZQ 3 3

Pag. 37 J . A . E . M . I_ ~ , - - -1* ̂1 1 1 l-LIuI-i

Page 94: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

di fer : =O; IF tablatarbol, IZQ2=fijo THEN difer:=DER; IF tablaCarbol,DER3=fi jo THEN difer:=IZQ; SF diferO0 THEN BEGIN ap-di f : =tab1 at arb01 , di fer 3 ; IF (tablaCap_dif,TSPOJ=NUMERO) THEN BEGIN

IF (tablatarbol ,VALORl=CUMAl THEN BEGIN IF ( (si g=POCI 1 AND (tab3 aC ap-di f , VALOR3 >O) ) OR

( (sig=NEG-ARIT)AND(tablaCap-ciif ,VALORJ(O) )THEN v-bolo-True; END ELSE

IF difer=DER THEN I F ( ( si g=POSI 1 AND (t ab1 a E ap-di f , VALOH3< O) 1 OR

( (si g-NEG-ARI TI AND (t ab1 at ap-di f , VALOR 3 >O) 1 THEN v-bol : =True; END;

END j recorre: =v-bol; END;

:unci6n que regresa un valor EOLEANO que determina si los 2 ri jos de un ap dado esto solamente ocurre cuando un hijo del ap ?5 hijo del otro hijo del ap y este e5 un operador aritmeticci 3 FUNCTION di f er (apt: INTEGER) :BOOLEAN;

'uncion que regresa un valor BOOLEAN0 si se da l a condición intes nombrada para un nodo fijo dado 3 FUNCTION camino-difer (fijo,arbol: INTEGER) :BOOLEAN;

VAR otro: INTEGER; BEGIN camino-difer:=false; otro: =O; IF tablacarbol , IZRI=f ijo THEN otro:=DER; IF tablatarbol ,DERJ=fi jo THEN otro:=IZQ: IF (otro<>O)AND(tablaCarbol ,VALOR3 IN OP-ARIT)

AND(tablaCarbo1 , TIPOl=INTERNO) THEN S F ~ t a b l a t o t r o , V A L O R 3 ~ > O ~ A N D ~ t a b l a E ~ t r o , T S ~ O l = N U M E R O ~ THEN

camino-difer:=True; END;

BEGIN {DIFERENTE Procedimento de diferente 3 d i f er : =Fa1 se; IF {cami no-di fer ( tab1 at apt, I ZQI , t ab1 at apt, DER 3 1 1 OR

(cami no-di fer ( t ab1 aC apt, DER], t ab1 at apt, I ZQJ 1 1 THEN di fer : =True; IF hi jo-opuesto(apt) THEN difer:=True; END;

inción que devueve un valor de verdad si si el h i j o izquierdo e5 mismo que el derecho) FUNCTlON igual(apt:INTEGER):BOOiEAN;

BEG IN i gual : =Fa1 se; I F (tab 1 aC apt , TIPO I= INTERNO) AND (t ab1 a E ap t , I20 3 =t ab1 a C apt , DER3 1

END; THEN i gual =TRUE;

FUNCTION mayor(apt:INTEGER):BOOLEANg VAR difer,hijo :INTEGER;

BEGIN mayor: =Fa1 se; hi jor=tablatapt, IZQ3;

Page 95: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

I F (tablaChijo,TIP03=INTERNO~ AND(tablathij~~VALOR3 IN OP-SUM) THEN

IF (recorre(apt, IZí2,POSI) )THEN mayor:=True; hi jo: =t ab1 a C apt , DER 3 ; IF (tabl athi jci , TIPOl=INT€RNO)

AND (tabl aLhi joy VhLORI IN CRESTA, SUMfi3 1 THEN IF (recorre (apt, DER, NEG-ARI TI 1 THEN mayor: =True;

END;

FUNCTION menor(apt:lNTEGER):BOOLEAN; VCSR difer,hijo :INTEGER; BEGIN menor : =Fa1 se; hi jo:=tablafapt, I Z R I ; IF (tablachi joYTIP03=INTERNO)

AND(tnb1afhi jo,VALOR3 IN CRESTA,SUMAI) THEN IF ( recorre ( apt , I ZP , NEG-FIR IT 1 1 THEN menor : =True;

hi jo: =tab 1 a E apt , DER 3 ; IF (tablachi jo,TIPO3=INTERNO)

fiND(tabíathijo,VALORl IN LRESTfi,SUMAl) THEN IF (recorre(apt,DER,POSI) ITHEN menor:=True;

END;

OVERLAY PROCEDURE reduce-ytVflH apt:INTEGER); BEGIN IF (pregunta (apt , DER, FALSO, BOLEANA) 1 OR

(pregunta(apt,IZQ,FALSO,BOLEANA))THEN cambia-nodo(apt,FALSO,EOLEANA,PQSI) ;

IF pregunta(apt,IZP,VERDAD,BOLEANA) THEN elimina-nodo(apt,DER); IF pregunta(apt,DER,VERDAD,BOLEANA) THEN elimina-nodo(apt, I Z Q ) ; IF tablaCapt,DERI=tablaCapt~IX!3 THEN elimina-nodo(apt,IZQ); IF hijo-opuesto(apt) THEN cambia-nodo(apt,FALSO,BOLEANA,POSI); END;

OVERLAY PROCEDURE reduce-o(VAR apt:XNTEGER); BEGIN IF (pregunta(apt,DER,VERDAD,BOLEANA) 1

OR(pregunta(apt, IZQ,VERDAD,BOLECSNA) 1 THEN cambia-nodo(apt,VERDADyBOLEANAsPOSI);

S F pregunta (apt, I ZQ , FALSO, BOLEANA) THEN el i mi na-nodo (apt, DER) ; IF pregunta (apt , DERs FALSO, BOLEANA) THEN el i mi na-nodo (apt, I ZQ) ; IF tablatapt,DER3=tablaLapt,IZQl THEN elimina-nodo(apt,DER); IF hi jo-opuesto(apt) THEN cambia-nodo(apt,VERDAD,BOLEflNA,POSI);

END; *

OVERLAY PROCEDURE reduce-menor(VAR apt:INTEGER); BEG 1 N IF msnorlapt) THEN cambia-nado(apt,VERDfiDsBOLEANAyPOSI); IF mayor(apt1 THEN cambia-nodotapt,FALSOsBOLEANA,FOSI); IF igual (apt) THEN cambia-nodo(apt,FALCO,BOLEANA,POSI) ; END 3

OVERLAY PROCEDURE reduce-men-ig(VAR apt:INTEGER); BEGIN IF menor(apt) THEN cambia-nodo(apt,VERDAD,BOLEANA,POSS); IF igual(apt1 THEN cambia-nodotapt,VERDAD,BOLEANA,POSI); IF mayor (apt 1 THEN cambi a-nodo (apt , FALSO, BOLEANA, POS1 1 ; END;

Page 96: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

OVERLAY PROCEDURE reduce-igual(VAR apt:INTEGER); BEGIN IF igual (apt) THEN cambia-nodo(apt,VERDAD,BüLE&Nfi,FOSI); IF difertapt) THEN cambia-nodo(apt,FALSO,BOLEfiNA,PCiSI); IF mayor(apt1 THEN cambia-nodo(apt,FÁLSO,BOLEAN&,POSI); IF menor(apt1 THEN cambia-nodo(apt,FACSO,BOLEANA,POCI); END;

OVERLAY PROCEDURE reduce-difer(VAR apt:lNTEGER); BEG IN IF di f er (apt 1 THEN cambi a-nodo (apt VERDAD, BOLEANA, POS3 1 ; IF mayor(apt1 THEN cambia-nodo(apt,VERDAD,I3CJLEANA,POSI); IF menor (apt) THEN cambia-nodo(apt,VERDfiD,BOLEAN¿4,POSl) ; IF igual(apt1 THEN cambia-nodo(apt,FALSO,BCiLEANA,POSI); END;

3-ocedimiento que asocia 105 operadore por medio de conjutos wden ados 3 3RLAY PROCEDURE asociñtivo(VAR papa:ZNTEGER); $te procedimiento asocia utilizando conjuntos 3 1R conj-a,conj-b,conj-c :tipo-conjunto; resultado, elemento, est, oper, auxi 1 i ar, ap-h-izq, ap-13-der : INTEGER; termina, guard : BOOLEAN;

'unción que regresa el siguiente elemento de un conjunto ordenado 3. 'UNCTION siguiente-elemento(u1t: INTEGER; VAR conj:tipo-conjunto): INTEGER;

BEGIN REPEAT u1 t : =Succ (u1 t 1 ; UNTIL (u1 t IN con j 1 OR (u1 t >v-grande) ; siguiente-eiemento:=ul t; END;

'UNCTION restaura-ramatVar conj:tipo-conjunto;op: INTEGER) E INTEGER; JAR apunt,element : INTEGER;

BEGIN eiement:=siguiente-elemento(O,con j) ; con j : =con j -C el ement 3 ; apunt: =element; WHSLE conjOC3 DO BEGIN

eiement:=siguiente-elemento(element,ccm j) ; con j : =con j-Eel ement 3 ; apunt:=nueva-rama(apunt,element,op) ;

END ; IF apunt<=v-qrande THEN restaura-rama:=apunt ELSE restaura-rama: =O; END;

WNCT ION rest a w a-dag (VAR con j-i z q , con j -der : t i po-can junt o;

lAR op,ap-der, ap-izq,apt : INTEGER; oper: INTEGER) : INTEGER;

BEGIN ap-itq: =O; ap-der : =O; op:=oper; IF oper-rDIVI THEN op:=MULTg IF con j -i zq< >C 3 THEN ap-i t q : =restaura-rama (con j-i r q , op 1 ; IF (conj-derOC3) THEN BEGIN

ap-dkr:=restaura_rama(conj-der,op);

._..-"-

Page 97: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

IF (ap-irq = O)AND(oper = D I V I ) THEN

restaura_dag:=nueva_rama (ap-izq,ap-der,oper) a p ~ i z q ~ = b ~ ~ ~ c ñ ~ h o j a ~ l , N U M E R ~ , P O C I ) ;

END ELSE restaura-dag: =ap-izq; END;

FUNCTION asocia-identif(elemento,aper:INTEGER;VAR conj-b:

VAR est :INTEGER; tipo-conjunto) : BOOLECSN;

BEG IN asocia-identif :=Fal5e; est : =t ab1 aiel emento, ESTADO]; IF oper=SUMA THEN BEGIN

IF tablaielemento,ESTCSDO3=POSI THEN est:=NEG-ARIT ELSE est : =f OS I ; pal ab-auxi : =Copy (t ab-str ttabl a i el emento, VALOR3 3, i I

elemento: =Bu~ca-nodo (ELEMENTO, IDENTI, est, 1 ) j END; IF (elemento IN ccnj_b)AND(aper,::>MULT) THEN BEGIN

Length (tab-str C tab1 aiel emento, VALOR3 3 1 1 ;

asoci a-i denti +: = T r u e ; conj~b:=conj~b-Celementol;

END; END;

BEGIN C: Empieza procedimiento asociativo 3. oper : =tab1 a C papa, VCSLOR 3 ; IF (tablaCpapa,VALORl)= DIVI THEN oper:=MULT; IF (tablaCpapa,VALORI)= RESTCS THEN oper:=SUMA; conj-ar=i 3; conj-bi=CI; 1 1 ena-conjunto (t ab1 af papa, 1293, oper , con j-a) ; 1 1 end-con junto (t ab1 at papa, DER], oper , con j-b 1 ; termina: =False5 elemento:=v-bajo-1; resul t ado: =O; IF oper = MULT THEN

resul t ado: = I ; oper : =t ab1 a t papa, VRLOR 3 ; element o: =si gui ente-el ement o (O, con j-a); con j -c : =E 3 ; WHILE conJ-a<>CI DO BEGIN

guard : =Tr uet aux i 1 i ar : =el emento; con j~ar=conj~a-Celementol; CASE tablaCelemento,TIP03 OF

NUMERO s BEGS N guard: =False$ IF oper IN CSUMA,RESTAl THEN

ELSE resultador=resultado~tablaCelement~,VALORl; END;

resul tado: “resu1 t ado+t ab1 a C el ement o, VALOR 3

IDENTI : guard t =Not asoci a-i dent i f (el ement o, oper , con j -b ) ; ELSE;

END; eiementorrauxiliar; IF guard THEN con~~c:=conj~c+CelementoI; el emen tor =si gui en t e-el ement o (el emen t o, con j -a) ;

END;

Page 98: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

el emento: =si qui ente-el emento (O, con j -b ; WHILE elemento<=v-grande DO BEGIN

con j -b : =con j-b-i el ement o1 ; CASE oper OF

IF tablaCelemento,TIP01 = NUMERO THEN BEGIN

SUMf3: resul tado:=re~ultado+tablaSelemento,VALORl; MULT: resul tado: =resu1 t adoSt ab1 at el ement o, VALOR 3 ; RESTAt r esul t ado: =resu1 t ado-t ab1 a Le1 emento, VALOR 3 ; DIVI: conj~b:=conj~b+CelementoI;

END; END ELSE

IF oper IN CSUMA,MULTl THEN BEGIN con j -c : =con j -c + C el emento 3 ; con j-b:=con j-b- Cel emento3;

END; el emento: =si gui ent e-el emento (el emen to, con j-b 1 ;

END; .C ap-izq apunta siempre a la rama izquierda y cuando ya no hay

rama derecha se convierte in nuevo papa 3. ap-h-i z q : =rest aura-dag (con j-c , con j-b , oper ) IF ( (resultado(>O)AND(oper IN CSUMA,RESTAl) )OR

((resultado<>l)AND(oper IN CMULT,DIVIl) 1 THEN BEGIN ap-h-der:=busca-hoja(resul tado,NUMERO,POSI 1 j IF oper=DIVI THEN oper:=MULT; IF oper=RESTA THEN oper:=SUMA; IF ap_h-izq<>O THEN ñp_h_ixq:=nueva_rama(ap-h-iz~,ap-h-~er,oper) ELSE ap-h-izq:=ap_h-der;

END; IF (ap_h_izq=C))AND(oper IN CSUMA,RESTAJ) THEN

ap-h-izq:=busca-hoja(O,NUMERa,POSI) ; IF (ap-h-irq=O)AND(oper IN SMULT,DIVII) THEN

ap-h-izq: =busca-ho ja ( 1 , NUMER0,POSI ; busca-cambia-tabla (papa,ap-h-izq, tablaCpapa,CRNTl,tabla) ; < para no perder algun elemento de intersección no se papat map-h-itq; END;

borra l a la rama 5in reducir 3

OVERLAY PROCEDURE reduce-div(VAR apttINTEGER); BEG IN IF pregunta (apt, DER, O, NUMERO) THEN

ELSE BEGIN error (14)

IF tablacapt, IZQJ=tablaLapt,DER3 THEN

IF pregunta(apt, IZQ,O,NUMERO) THEN

IF pregunta(apt,DER, 1,NUMERO) THEN elimina-nodotapt, IZQ); IF hijo-opuesto(apt) THEN cambia-nodo(apt,-l,NUMERO,POSi);

camb i a-nodo ( apt, 1, NUMERO , POSI 1 ;

cambi a-nodo (apt , O, NUMERO, POS1 1 3

END; END 3

OVERLAY PROCEDURE reduce-resta(Ví4R aptglNTEGER); BEí3 IN IF pregunta(apt,DER,O,NUHERO) THEN el imina-nodo(apt, IZQ) ; IF pregunta(apt,IfQ,0,NUHERO) THEN borra-nodo(apt,DER); IF tab1 at apt , I ZQ3=t ab1 ai apt, DER 3 THEN

cambia-nodo(apt,O,NüMERO,POSI); END;

Page 99: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

OVERLAY PROCEDURE reduce-mult(VAR apt:INTEGER); BEGIN IF preguntatapt, IZQ,O,NUMERO) THEN elimina-nodo(apt, IZQ) ; IF pregunta ( apt , DER , O , NUMERO 1 THEN el i mi na-nodo < apt, DER) ; IF pregunta(apt,IZQ, 1,NUMERO) THEN elimina-nodo(apt,DER); IF pregunta(apt,DER, ¡,NUMERO) THEN elimina-nodo(apt, IZQ); END j

OVERLAY PROCEDURE reduce-suma(VAR apt:INTEGER); BEGIN IF pregunta (apt , IZQ, 0,NUMERO) THEN el imina-nodo (apt , DER) ; IF pregunta (APT, DER, O, NUMERO) THEN el i m i na-nodo (apt, I ZQ 1 $ IF hi jo-opuesto(apt) THEN cambia-nodo(apt,O,NUMERO,POCI); END;

OVERLAY PROCEOUHE reduce-numero(VAR ap:INTEGER); VAR apun-der,apun-izq,val-der,val-izq,result : INTEGER;

reduce : BOOLEAN; BEGiN reduce: =FALSE; apun-der : =t ab1 aC ap , DER3 ; apun-i zq: =t ab1 at ap, I ZQ3 ; val -i z q : =t ab1 at apun-i zq , VCSLORI ; val-der: =tablatapun-der,VALORI; ri-sul t : =O; IF tablaCapun-der,TIP03=tablaCapun_izq,TIPOl THEN BEGIN

reduce: =True; CASE tñblaCapun~der,TlP03 OF

NUMERO: CASE tab 1 a C ap , VALOR 3 OF SUMA: result:=val-izq+val-der;

RESTA: resul t : =val -i zq-val -der; MULT: resul t : =val -i zqtval -der ; DIVI: IF val-dert>O THEN

result:= Trunctval_izq/val_der) ELSE BEGIN

error (14) ; reduce: =Fa1 se;

END;

ELSE result:=FBLSO;

ELSE resul t:=FALSO;

ELSE resul t : =FALSO;

ELSE result : =FALSO;

C-MCIYOR: IF val -i zq>val -der THEN result : =VERDAD

C-MENOR: IF val -izq<val -der THEN result : =VERDAD

C-IGUAL: IF val-izq-val-der THEN result:=VERDAD

C-DIFER: IF val -i zq< >vai ,der THEN resul t : =VERDAD

ELSE reduce: =Fa1 se; END;

BOLEANCI: CASE tablaCap,VALORI OF O: IF (val -i zq=VERDAD) OR (val -der=VERDAD) THEN

result : =VERI)CID ELSE resul t : =FALSO;

Y: IF (val-izq=VERDAD)AND(val_deriVERDAD) THEN result : =VERDAD

ELSE result : =FALSO; ELSE reduce: =Fa1 eeg

END; ELSE reduce: =Fa1 se;

Page 100: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

- -

Programa Redue t or

END; IF (tablaCñp,UALORl IN OP-ARIT1AND reduce THEN

I F (tablaCap,VALORl IN OP-REL+CY,Ol)AND reduce THEN cambia-nodo(ap,result,NUMERO,fOSI);

cambia-nodo(ap,RESULT3BOLE&N&,FOSI); END;

END;

PROCEDURE reduce-basica(VAR apt:INTEGER); BEGIN reduceinumero (apt) ; IF tablaCapt,TIPOl=INTERNO THEN CASE tablaCapt,V&LORl OF

SUMA8 reduce-suma(apt); RECTCI: reduce-resta (apt 1 ; MULT: reduce-mu1 t (apt 1 ; DIVI: reduce-div(apt1;

Y: reduce-Y(apt); O: reduce-0 (apt 1 ;

MEN-IG: reduce-men-ig (apt) j C-DIFER: reduce-difer ( apt ) ; C-MENOR: reduce-menor(apt); C-IGUAL: reduce-igual(apt);

ELSE END;

END;

FUNCTION reduce-dag(ap-tab1a:INTEGER):INTEGER; V M h i j o : INTEGER; BEGIN IF (tab1aCap~tabla,TIPOI=INTERNO) THEN

IF (Not errlAND(tablafap~tab1a,TIPOl=INTERNO) THEN BEGIN reduce-basica tap-tabla) ;

IF (Not tapunta-hoja(tablaCap-tabla, I tQI) )OR Not (apunt a-ho ja tab1 aiap-tab1 a, DER3 1 1 AND (tablaCap-ta&la,VALORl IN OF-QRIT) THEN

asoci at i vo tap-t ab1 a) ; IF tablaCap-tabla, IZQI >O THEN

hi jo:=reduce-daq(tablafap-tabla, I Z Q I ) ; IF t ab1 at ap-t ab1 a, DER3 >O THEN

hi jo:=reduce-dag (tab1 aCap-tabla,DERl) ; IF (Not (apunt a-ho ja (t ab1 aCap-tab1 a, I ZQI 1 1 OR Not (apunt a-hoja (t ab1 at ap-t ab1 a, DER3 1 1 1 AND (tablaCap_tabla,VALOR3 IN OP-ARIT) THEN

reduce-basica(ap-tabla) 8 asoc i at i vo ( ap-t ab 1 a 1 ;

END; reduce-dags =ap-tabl a; END8

BEGíN {reduce expresidn 3 err: =Fa1 sei apr=reduce-dag (ap) ; buff -2srChr ( 0 ) ; rec-ant er i or tap, buff -2, t ab1 a) ; END;

FUNCTION expresion: INTEGER; VAR apl,ap2,ap3,ap-act,ap-control : INTEGER;

invert : BOOLEAN;

Page 101: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

FUNCTION expr -ari tmet i ea (desi C: BOOLEAN) : INTEGER; procedimiento que copia un DAG en l a matriz d e DilG especia les 3

FUNCTION copia-daqtapt:INTEGER):INTEGERr VAR d i f e r , i ,ap-sec,ap-ini,ini-esp,ult,ini:INTEGER; BEG 1 N ap-sec: =ap-prim; ini-esp: =tope; ap-ini :=tope+i; difer:=ap-prim-ap-ini; WHILE ap-sec<=uitimo DO BEGIN

tope:=tope+i; FOR i:=i TO LON-L DO

IF t ab l aC ap-see , DER3 >O THEN IF tablalap-sec, IZ í23Tü THEN

I F ap-sec=apt THEN ap-ini :=tope: ap-ser:=ap-sec+l;

dag-espeC tope, i I : =tab1 a l ap-sec , i 3 ; daq-espeCtope,DERI:=tablaCap-~ec~DERl-difer;

dag-espeltope, IZQl:=tablaCap-sec, IZGJ-difer;

END; compacta-dag (ap-ini, tope,daq-espe, ini-esp) ; cop i a-dag: =ap-ini ; END;

PROCEDURE compl emento (expre: BOOLEAN) ; VAR ap,ult-aux,prim-aux,ap2: INTEGER; BEG I N u1 t -aux: =u1 ti mo; prim-dux :=ap-prim$ ap-pri mr =u1 t i mo+i ; n i vel : =n i vel + 1 ; IF expre THEN ap:=expresion ELSE ap; sexpr-ar i tmet i c a (Fa1 se) ; red-expresion (ap) ; ap2: =copi a-dag tap) ; t ab l a-espetul t-dag-espe, E-EXPR3: =ap2; n ive l :=nivel-1; u1 timo: =u1 t-aux ; ap-prim:=prim-dux; END;

3racedimienmtD que apunta a l a expresibn re lac iona l ; segmentada 3 PROCEDURE llena-datos-expr-rel(apt:INTEGER); VhR i ,ap : INTEGER; BEG I N FOR i:=IZQ TO DER DO BEGIN

apr =dag-espeCapt , i 3; tabla-espeiul t,dag_espe,4+i I:=dag,espeCap,VALOR3; t ab1 a-espelul t ,dag,espe, 1 +i 3 : =dag-espeC ap , i 3 :

END; apr=dag_e5peCapt,IZ93; tab1 a-ecrpec u1 t-dag-espe, E-EXP-C 3 : =dag-espe t ap , DER3 ; END;

PROCEDURE expr-re1 ,esp; VAR aux-prim,aux-ult,

ap l , ap2, ap3, apd, api , ap-exp : INTEGER; buff -re1 a t :cadena;

Paq. 45 J .A .E .M. ____u UII

Page 102: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

BEGIN aux-ult:=ultimo; ñux ,pr i m: =ap-pr i m j ap-pr i m: =u1 ti ma; nivel :=nivel+l ; ap 1 : =expr-ar i tmet i ca (Fa1 se) ; nivel :=nivel-1;

ELSE EEGIN I F apl=O THEN arror (8 )

conv-lex (toquen); IF Not(toquen i N OP-REL) THEN e r ror (9 ) ELSE BEGIN

ap2: =ubica-oper (toquen) ; esta: =Fa1 se; nivel:-nive3+1; ap-ex p : =expr -ari tmeti cñ (Fa1 se) ; nive l : =nivel-i ; IF Not ( esta ) THEN error (10) ELSE BEGIN

IF bus_ intern~ (ap l , ap2 ,ap_exp ,ap i ) THEN

ELSE BEGIN 1 i mpi a-tup1 a (apL)

apunta (ap2, ap í a p - e x p ) ; api : =ap2;

END; conv-1 e x (toquen ; I F Notttoquen IN OP-REL) THEN er ror (9 ) ELSE BEGIN

ap 1 : =ubi ca-aper (toquen ) ; ni vel : =ni vel +1 j ap2:=expr_aritmetica(Fñise) ; nive l :=nivel-1; IF ap2<>Ci THEN BEGIN

I F (bus-i nterno (ap 1, ap-exp, ap2, apd 1 1 THEN

ELSE BEGIN 1 i mpi a-tup1 a (ap 1 1

apunta (ap 1 , ap-exp , ap2 1 ; apd: =ap 1 ;

END; ap3: =ubi ca-oper ( Y ) ; I F bus-i nterno (ap3, ap i , apd , ap 1 ) THEN

ELSE BEGIN 1 i mpi a-tup1 a ( ap3)

apunta(ap3,api ,apd) ; apl : =ñp3;

END; red-expresi on ( ap 1 ) ; ap3: =Copi a-dag (apl 1 ; 1 1 ena-dat os-expr -re1 (ap3) ;

END; END;

END; END;

END; u1 ti m a : =aux -u1 t ; ap-prim:=aux-prim) END;

PROCEDURE un i ver sal (str-uni :cad,corta;expre:BOOLEAN) 5

Page 103: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

VAR b u f f -univ :cadena; REG IN ult-dag-espe: =u1 t-dag-espe+l; IF Compara (str-uni , ’ TODO’ 1 THEN BEGIN

b u f f -uni v: =Copy ( C h r (231 ) y 1,lI ; tabla-espeCult-dag-espe,E_TIP03:=231;

IF compara(str-uni, ’EXISTE’) THEN BEGIN

END ELSE

b u f f -uni v: =Copy (Chr (2C;8),1,11; tab1 a-ecipetul t-dag-espe, E-TIPOI: =238;

END ELSE BEGIN

b u f f -uni v: =Copy (Chr (228) , I y 1 ) ; tabla-espeCult-dag-espe,E-TIPO1:=228; END;

conv-1 ex (toquen 1 ; I F toquen< >PA-IZR THEN e r r o r (5) ELSE BEGIN

ccinv-1 e x (t aquen 1 j I F toquenc:>IDENTI THEN er ro r ( 6 ) ELSE BEGIN

palab-auxi:=Copy(palabra, l ,Length(paiabra) ) ; ap-control:=busca-hoja~tocquen,IDENTI,POSI); contrala:=Copy(paiabra, 1,Length (palabra) 1 ; tabla-especul t-dag-espe,E-CONTHl:=busca_str (cont ro la) ; conv-1 ex (toquen 1 ; IF toquen<:> DOS-PUNT THEN e r r o r ( 7 ) ELSE BEGIN

buff-univ:=Concat(buff-univ,’ ( ’ ,controla, ’ : ’ ) ;

expr-rel-esp; buff-univ:=Concat (bu f f -univ, buff-2, ’ : ’ 1 ; conv-lex (toquen) ; IF t o q u e n 0 DOS-PUNT THEN er ro r ( 7 ) ELSE BEGIN

comp 1 ement o ( e x p r e 1 ; b u f f -2: =Concat (buf f -uni v , b u f f -2, ’ 1 ’ 1 ; conv-1 ex (toquen) ; IF toquenOPA-DER THEN e r r o r ( l 1 ) ;

END; END;

END; END; END;

FUNCTION variab1e:INTEGER; VAR ap,res-var,prirn-aux,ult-aux,i :INTEGER5

b u f f -expre :cadena; erpeci a l

BEGIN : BOOLEAN;

buff -expre: =Chr (0) 8 p r i m-dux : =ap,pr i m) u1 t-aux : =u1 ti mo; especial : =Fa1 se; res-var : =O; palab-auxi :=Copy(palabra, 1,Length (palabra) 1 g IF compara(palabra,’TODO’ )OR cornparatpalabra, “EXISTE’ITHEN BEGIN

universa l (palabra,True); b u f f -expre: ‘Copy (buf f -2,l ,Length (bu f f -2) ) ; especial D =True;

Pag. 47 J.A.E.M. _. * _ _ _I - --.^

..---.U--

-_- ”-

Page 104: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

END ELSE BEGIN

canv-lex (toquen) ; CASE toquen OF DOS-PUNT: BEGIN

conv-lex (toquen) ; IF toquen=C-IGUAL THEN BEGIN

conv-lex (toquen) ; IF compara(palabra, ’SUM’ 1 THEN BEGIN

buff-expre:=Concat(palab-auxi,’ :=’I; universal (”C*,FfiLSE); especial :=True; bu+f -expre: =Concat (buff -expre, buf f - 2 ) ;

END ELSE error (3) ; ,

END ELSE error (18) j END;

ap-pr i m: =u1 ti mo; buff -expre: =Concat (pal ab-dux i , ’ C ’ 1 ; ap : =ex pr-ñr i tmet i ca (Fa1 =.e 1 ; red-expresion (ap) ; buff -expre: =Concat (buff -expre, buf f -2 , ’ 3’ 1 ; conv-1 e x (toquen 1 ; IF t oquent XORCH-DER THEN error ( 4 1 ; END;

1 ee: =Fa1 se; buff-expre:=Copy(palab-auxi, l,Length(palab-auxi 1); END ;

CORCH-IZQ: BEGIN

ELSE BEGlN

END; €termina caso 3 END; u1 timo: =u1 t-aux ; ap-pr i m: =pr i m-aux ; pal ab-aux i : =Copy (buff -expre, 1, Length (buff -ex pre) 1 ; res-vñr:=busca-hoja(toquenyXDENTI,POSI); IF especial THEN begin

tabla-espetul t_dag_espe,E-AP_STRJ: =tablñCres-var ,VALOR3; tablafres~var,DIR~ESP€Cl:=ult~dag~espe;

END; var i ab1 e: =res-var; END;

I INTEGER; I INTEGER;

FUNCT ION f a c t -si mpl e VC\R ap l , resu l t , num-equi

BEGIN apl:=O; conv-1 ex 4 toquen 1 ; CASE toquen OF

NUMERO: BEGIN Val (pal abrac num-equi resul t 1 ; apl:=busca-hoja (num-equi ,NUMERO,POSI) ; END;

IF compara(controla,palabraI THEN esta:=True; palab-auxi :=Copy(palabra, l ,Length(palabra) I ; apl:=busca-ho ja (toquen, IDENTI ,POSI 1 ; END;

IDENTI I BEGIN

BOLEANfi I BEG I N

Pag. 48 J.A.E.M.-_ -___ Y-.-

Page 105: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

IF compara (pal abra, ’ VERDAD’ THEN ap 1 : =bust a-h o j a (VERDQD , BOLEANA, POS I 1

ELSE a p l : = b u s c a ~ h o j a ~ F ~ L S O , ~ O L E ~ N ~ , F O S í ~ ; END;

ap 1 : =ex p r -ar i t m e t i c a Fa1 se) ; conv-lex (toquen) ; IF toquen.: >.PA-DEH THEN error (1 1 ) ; END;

FIN: error(l7);

PA-IZQ: BEGIN

ELSE e r r c r (16) ; END; f ac t -s i m p l e: =ap 1 ; END; ,

FUNCTION .factor: INTEGER; VAR ap1,num-equi,result :INTEGER;

BEGIN apl:=O; ronv-lex (toquen); CASE toquen OF

NUMERO: BEGIN V a l (pal abra, num-equi , resul t ) ; apl: =busca-ho j a (num-equi ,NUMERO, POS1 1 j END;

K D E N T I : ap 1 : =var i ab1 e ;

IF compara (pal abra, ’ VERDAD’ 1 THEN apl:=busca-hoja(VERDAD,i3OLEfiNA9P0SI)

ELSE a p l : = b u s c a ~ h o j a ~ F A L S ~ , ~ O L E ~ N A , P O S I ~ ; END;

ap 1 : lexp res i on; conv-1 ex (toquen ) ; IF toquen<>PA-DER THEN e r r o r ( l 1 ) ; END;

FIN: e r r o r (17) ; ELSE error (15) ;

BOLEANA: BEGIN

PA-IZQ: BEGIN

NO: apl:=fattor;

END; factor: =ap 1 ; END;

FUNCTION t e r m i no (r el ac : BOOLEAN) : INTEGER; VCIR ap 1 , ap2, ap3, ap-act : INTEGER;

BEGIN SF relac THEN api:=factor ELSE ap 1 : =f act-si m p l e; IF ap1OO THEN BEGIN

conv-lex (toquen); WHILE (toquen I N op-mult)OR(relac AND(toquen = Y ) ) DO BEGIN

apZ:=ubica-oper(toquen); ap3: =factor; IF ap30O THEN

I F bus-interno(ap2, apl , ap3, ap-act ) THEN

ELSE BEGIN l impia- tup la(ap2)

apunta(ap2,aplYap3); ap_act:=ap2;

END

Page 106: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

ELSE BEGIN l impia-tupla(ap2); ap-act:=O; errar (2) ;

END; I F ap-act<>Ci THEN conv-lex (toquen); apl:=ap-act;

END; 1 ee: =Fa1 se; ap-act: =apl;

END ELSE ap-act: =O; termino:=ap-act; END:

FUNCTION simplg(relac:BOOLEAN) ; INTEGER; VCIR apO,ap1,ap2,apJ9ap-act: INTEGER;

BEGIN conv-1 e x (toquen ) ; apO: =O; I F (toquen IN OP-SUM)OR(relac AND(toquen=NO) 1 THEN BEGIN

I F toquen=RESTA THEN apO:=ubica-oper (toquen) ; I F r e l a c AND(toquen=NO) THEN apO:=ubica-oper (toquen) :

END ELSE 1 ee: =Fa1 se; apl : =termi no (re1 ac) ; I F apl(>O THEN BEGIN

conv-1 e x (toquen 1 ; WHILE (toquen IN OP-SUM)OR(RELAC fiND(toquen=O) ) DO BEGIN

ap2 : =ubi c a-oper ( toquen 1 ; ap3: =ter m i no (re1 ac 1 ; IF ap3.C >.O THEN BEGIN

I F bus_interno(ap2,apl,ap3,ap_act) THEN

ELSE BEGIN limpia-tupla(ap2)

apunta (ap2, apl ap3) ; ap-act: =ap2;

END; END ELSE BEGIN

limpia-tupla(ap2) j ap-act: =O; error ( 1 ) ;

END; IF ap-act<>O THEN cow-lex (toquen) ; apl:=ap-act; END; 1 ee: =Fa1 se: ap-act : =ap 1 ;

END ELSE ap-act : =O; IF ñpO< >O THEN IF- bus-i nterno (apO, O, ap-act , ap 1 1 THEN ap-act : =ap 1 ELSE BEGIN

tab 1 aC apü, DER3 3 =ap-ac t ; ap-act : =apO;

END; si mpl et =apex t ; END;

Pag. 50 J.A.E.M. l-l.

IC-

Page 107: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Weduc t or

xpresicln aritemetica "desic" indica si e5 expresidn aritmetica o relaciona13 BEG IN expr-ari tmeti ca: =si mpl e (desi c 1 ; END;

BEGIN {empieza expresion 3 ap 1 : =expr-ari tmet i ca (True) ; IF apl<X) THEN BEGIN

conv-1 e x (toquen 1 ; IF toquen IN OP-REL THEN BEGIN

i nver t : =True: CASE toquen OF

C-MAYOR :toquen:=C MENUR: MAY-IG :toquen: =MEN i L j d ELSE invert : =Fa1 SG;

END; ap2:=ubi ca-oper (Tsquen) ; ap3: = e x w -ari t ,mtica ( true) ; IF ap3< 30 7'115N BEGIN

I F i r1bw- t THEN BEGIN at acttsap3; up3: =apl; apl : =ap-act;

5JD; i F bus_interno(ap2,apl,ap3,ap_act) THEN

ELSE BEGIN limpia-tupla(ap2)

apunta(ap2,apl,ap3); ap-act : =ap2;

END; END ELSE BEGIN

1 i mpi a-tup1 a ( ap2) ; ap-act :=O; error ( 0 ) ;

END; END ELSE BEGIN

1 ee: =Fa1 se; ap-act : =ap 1 ;

END; END ELSE ap-act:=O; ex pr @si on : =ap-act ; END;

PROCEDURE i n i c i a-vl r ; VAR posic ion, i ; INTEGER;

termina : EOOLEAN; BEGIN Cposicidn en l a t a b l a 9 controla:=Chr (0) ; err: =Fa1 se; 1 i bre: =O; € guarda en un archivo memoria l a expresbn con renqlones de 80 3 renglon:=O; arch-mem: =True; ap-der: =O; ap-izq:=C); longitud:=Oj

Page 108: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa Reductor

posi cion: =l ; leeP=True; f i n a l : =Fa1 se! i :=O; nivel:=O; € Nivel de profundidad de i a recursividad con l a5 especiales3 termi na: =Fa1 se; WHILE Not termina DO BEGIN

i := i+ l ; arch-expr Ci 3: =Copy (buff -expr , posicion, 80) ; posicim:=posicion+80; IF posicion>Length (buff-expr) THEN termina:=True;

END; ult-ren-exp:=i;

END; r i : = l to ult-ren-exp do writeln(arch-exprCi3);

rocedure que r e c i b e una expresidn "BUF-EXPRE" y l a regrsa reducida 3 BEGIN C Empieza el procedimiento reductor > i n i c i a-vlr; ap-tabla:=expresian; Genera un D. A. G. y regresa el apuntador 3 t ab1 a l ap-t ab1 a , CONTI : =t ab1 at ap-t ab1 a, CONTI +l;

FOR i :=ap-pri m TO u1 timo DO I F t a b l a t i ,CONTl=O THEN

borra-rama(i 1 ; I F Not err THEN BEGIN

red-expresion (ap-tabla); reduce: =ap-tabl a; buff-expr:=Copy(buff-2, l,Length(buf+-2) 1;

END ELSE BEGIN

GotoXY (2,s) ; x:=WhereX; yyr=WhereY; FOR i := l TO ult-ren-exp DO

W r i te (arch-expr t i 3 1 ; GotoXY (x+y-err-l, yy+ren-err-l) ; Read (kbd, caracter 1 ; Window ( 2 , 22, 78,251 ; C1 rScr ; Delete (huf f -expr , 1 ,Length (buff -expr) 1 ;

END i END f

Pag. 52 J.A.E.M. ~ _ - - . . - _ _ __- _._.PI--_-.-"

Page 109: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa DEMUESTRA

nnct i on !gin id ;

si gui ente-el emento ( i : integer ; con jun : ti po-con junt o) : i nt eger ;

ID; ,ocedure llena_conjunto(ap_O,Y: 1nteger;anteced: tipo-con junto) ; 'gin id; .ocedur-e escribe-conjunto (cxmg:tipc-con junto) ; !gin id;

'unción que busca una "SUBCADENA" en un STRING, desde una posición n i c i a i , regresa l a posicibn i n i c i a l , 5 un numero mayor a l a longuitud el STRING 3 INCT 1 ON busca-sub cadena ( st r-c ad subcad : cad-ex pres; pos : INTEGER 1 : INTEGER ; cR encuentra :BOOLEAN;

BEG i N encuentra: =Fa1 5e; WHILE (pos+Length (subcad) -f(=Length (str-cad) 1 AND (NOT encuentra) 13U BEGIN

i n i - p a l ,ap-sub : INTEGER;

ap-sub:=l; ini-pal :=pos$ IF ~tr~cadCpos3=subcad~ap_sub3 THEN BEGIN

encuentra: =True; WHILE(encuentra)AND(ap-wb.<Length (subcad) 1 DO BEGIN

ap-sub: =ap-sub+l;

IF subcadCap-subI~< >str-cadCposI THEN encuentra: =Fa1 se; POS:=pOS+l;

END; END; pos:=ini-pal+l;

END; I F encuentra THEN busca-subcadena:=ini -pal ELSE busca-subcadena:=Length (str-cad) +l; END;

Procedimiento

OCEDURE se1 ecci ma-c on j un t o ( apun t : INTEGER; VAR con j un : t i po-c on junto;

BEGIN IF (tab 1 a C apun t , T IPOI = I NTERNO 1 AND (tab 1 a I: apun t , VALOR 3 =Y 1 THEN BEG IN Llamado recurs ivo y hace un recorr ido medio 3

se1 ecc i ona-con junto (t ab1 at apunt , I ZQ3, con jun , ap-O) ; selecciona~conjunto~tablatapunt,DER3,conjun,ap~O~;

IF (t ab1 a I: apun t , TIP03 =INTERNO) AND (t ab1 af apunt , VALOR3=O) THEN ap-O: =apunt

ELSE conjun:=c~njun+Capuntl;

que l l e n a un conjunto y apunta a una hoja que 5ea una disyunci 6n >

VAR ap-O:INTEGER);

END ELSE

END;

Función que reduce directamente l a implicación Dor l a t a b l a d e VERDAD 3 NCTION reduce-direc (apl, ap2: 1NTEGER;VAR re su l ti'lNTEGER1 !BOOLEAN; BEGIN

I -- I -I-

Pag. 53 J.A.E.M. .I --I ---

Page 110: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa DEMUESTRA

resul t : =l ; reduce-direc:=False; IF ( t ab1 a C ap-dag 1, TIPO 3 =EOLEANA) AND It ab1 a t ap-dag 1, YALOR 3=FALSD) THEN

IF (t abi a C ap-dag2, TIPOJ=BOLEANA) AND (t ab1 aCap-dag2, VALORJ=VERDAD) THEN

I F (t ab1 a E. ap-d ag2 , TIPO I=BOLEANA) AND ( tab 1 aC ap-dag2 , VALOR 3=FALSD) AND (t ab1 aC ap-dag 1, T IPO3 =BOLEAN&) AND (t ab1 a C ap-dag 1, VALOR J=VERDAD) THEN BEGIN

red uce-d i r ec : =True;

r educe-d i r ec : =True;

reeul t : =FALSO; reduce-direc: =True;

END; END;

INCTION sigui-elem-ord(VAR vect:tipo-vect-cmj;VAR j:INTEOER):INTEGER; BEGIN REPEAT

UNTIL (j=M&X-ELE-EQU) OR (vect C j I/, 3 0 ) ; IF j-<=MAX-ELE-EQU THEN sigui~elem_ard:=vecttjl ELSE si gui -el em-urd : =O;

j:=j+l;

END;

INCTION expre-conj-ord(op:INTEGER;VAR matriz:tipo_matr_cUnj)

if3 i , j,a,b : INTEGER; : cad-expres;

ant e, cons, expre-equ, e x pres: c ad-ex pr es; BEGIN delete (expre-equ, 1 , Length (expre-equ) 1 ; FOR i:=l TO MAX-CON-EQU DD BEGIN

j:=O; a: =si gui-el em-ard (matriz C i 3, j 1 ; I F a 0 0 THEN BEGIN Deletetante, i,Length(ante)); rec-anterior (a,ante,tabla) ; matrizfi , j3:=0; b: =sigui -elem-ord (matri 2: C i 3, j 1 ; WHILE j<MfiX-ELE-EQU DO BEGIN

Delete(cons, 1,Length (Cons) 1; rec-anterior (b,con5, tabla) ; matrizti, jI:=O; I F Length(expre-equ)>O THEN

ELSE expre-equ:=Concat (ante,Chr top) ,cons) ; ante:=cons; b: =si qui -el em-ord (matriz S i 3, j 1 ;

expre-equ:=Concat(expre-equ,’ * (‘,ante,Chr(op),cons,’)’)

END: END 5

END; ex pre-con j -ord: =ex pr e-equ; END;

NCTION expres-conj-equ:cad-expres; IR expr-equ,expr-men,ante,ccms:cad-expres;

i , a , b : INTEGER; BEG I N Delete (expr-equ, 1 ,Length (expr-equ) ) ; Deletetexpr-men, l,Length(expr-men) 1; ante: =chr ( 0 ) ; FOR i:=l TO MAX-CON-EQU DO BEGIN

a: =siguiente-elemento(0,con j-equi C Y 3 ) ;

Pag. 54 J.A.E.M. - - u _ I _ u c I I - 1 - ~ -

Page 111: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa DEMUESTRA

IF a<=v-grande THEN BEGIN Delete(ante, 1,Lengthíante) ) ; rec-anterior (a,ante,tabla); conj-equici J:=conj~equiCil-Cal; WHILE conj-equiCil~:~>C1DO BEGIN

b : =5i qui en te-el emento (a, con j-equi C i 3 ) ; conj~equiCil:=conj~equifi 3-tbl; cons:=char ( 0 ) ; rec-anterior (b,cons,tabla) ; IF Length (expr-equ) >.O THEN

ELSE expr-equ:=Concat (ante, ’=’ ,cons) ; a:=b; ante: =cons;

expr-equ: =Concat (expr-equ, ’ * ( ” ante, ’ =? ,cons,’)’)

END; END;

END; expr_men:=expre-conj-ord (C-MENOR, matr-men) ; IF Length (enpr-men) >O THEN

IF Length (expr-equ) >O THEN

ELSE expr-equ: =expr-rren; expr-equ:=Concat (expr-equ, ’ (’. ’ ,expr-men)

ex pr -men : =ex pre-con j -ord (MEN-I G, mat -m-i g 1 ; IF Length (expr-men) 30 THEN

I F Length (expr-equ) C.0 THEN

ELSE expr-equ: =expr-men; expr-equ:=Concat (expr-equ, ’ .*. ’ ,expr-men)

expres-con j-equ: = e x p r -equ; END;

rocedimienta que ubica en el centro de un conjunto los

OCEDURE nuevo(e1emento:INTEGER;VAR vector:tipo-vect-conj); elementos iniciales 3

BEG IN vectortMAX-ELE-EQU DIV 23:=tablaCelemento, I Z R J ; vectorC (MhX-ELE-EQU DIV 2)+1 J:=tablaCelemento,DERl; END;

Funcidn que busca un conjunto que este vacio 3. NCTION busca-libre(VAR matriz:tipo-matr-conj1:INTEGER; s libre :BOOLEAN;

i,j : INTEGER; BEGIN 1 ibre; =Fa1 se; i:=l; WHILE(N0T libre)AND(i<=MAX-CON_EQU) DO BEGIN

1 i bre : =Tr ue; j:=l; WHILE 1 i br e ) AND j S: =MAX-ELE-EQU) DO

IF (matriztiltjl00) THEN

ELSE j : =: j+l ; libre:=False

IF NOT libre THEN i:=i+l; END; busca-1 i bre: =i ; END;

:unción que regresa un apuntador a la posición de un elemento en un íjunto; si no esta regresa un valor mas grande del permitido 3 rlCTl0N busca-elem(e1ementorINTEGER;VQR vector:tipo-vect-conj):INTEGER;

Pag. 55 J.A.E.M. .--...- -”-- P

Page 112: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa DEMUESTRA

3 encuentra :BOOLEAN; j : INTEGER;

BEG IN encuentra: =Fa1 se;

WHILE (NOT encuentra) AND (j<=MAX-ELE-EQU) DO j . - m-1;

IF (vector[ jI=elemento) THEN encuentra:=True ELSE j:=j+l;

busca-elem:=j; END;

3-ocedimiento que incer ta a l i n i c i o de un conjunto 3. 3CEDURE incerta-ini (elemento: 1NTEGER;VAR vector : tipo-vect-con j ) ; 3 i %INTEGER; BEG IN i : = l ; I F vectorCiI=O THEN BEGIN

WHILE vectorCi+ll=O 00 i :=i+l; vector C i 3 : =el ement o;

END ELSE PEGIN

WHILE (i (MAX-ELE-EQU) AND (vector C i 3.:: :.O) DO i : =i + l ; IF i<=MAX-ELE-EQU THEN REGIN C Mueve el sector del vector a l a derecha 3

WHILE i > l DO BEGIN vector C i 3 : =vector C i -1 3 ; i.- .-i-l-

c END; vectorCi3:=elemento;

END ELSE Write(’ Estructura insu f ic iente ‘1;

END ; END;

-0cedimiento que incer ta a l f i n a l de un conjunto 3 ICEDURE incerta-fin(e1emento: 1NTEGER;VAR vector:tipo-vect-conj); ? i :INTEGER; BEG IN i:=MAX-ELE-EQU; IF vectorCi3=0 THEN BEGIN

WHILE (vector C i -1 ]=O) DO i : =i -1 ; vector t i 3 : =el ement o;

END ELSE BEGIN

WHILE ( i >I 1 AND (vector C i I< >O) DO i : =i -1 ; IF i>=l THEN BEGIN C mueve el sector del VECTOR a l a izquierda 3

WHILE i<MAX-ELE-EQU DO BEGIN vector C i 3 I =vector t i +13 3 i : =i +1;

END; vector CMAX-ELE-EQU3: =elemento;

END ELSE Write(’ Estructura insu f ic iente * 1;

END; END;

-uncibn que regresa (True) Cuando el elemento es el primero del conjunto, (False) en otro caso 3 JCTION u1 t’i mo-el e (el ement o: INTEGER; vector : ti po-vect -con j 1 : BOOLEAN;

Page 113: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa DEMUESTRA

dente, eliminando algunos casos particulares 2 PROCEDURE conjunto-especial; VCIR ap,i,dire :INTEGER;

5tr-lim, str-contr : cad-expres; REGIN di re: =t ab1 aC el. em, DSH-ESPECI ; IF t ab1 a-espet di re, E-EXP-D l=t ab1 a-espel. di re, E-EXP- I 3 THEN BEGIN conjun:=conjun-Celeml; IF (tab1 a-espeCdi re, E-OP-I 3 IN CC-iGUAL, MEN-IGI 1 AND

(tabla-espetdire,E-OP_D3 IN CC-IGUAL,MEN-IGI) THEN BEGIN con jun: =con jun+Celeml; ap:=tabla-espeCdire,€-f?iP-STRl; Del et e (str-1 i m, 1 , Length (str-1 i m) 1 ; rec-anterior (tabla-espeCdire,E-EXP-D3,str-lim,dag-espe) ; cambi a-especi al (t ab-str C t ab1 a-espeC di re, E-CDNTR3 3 , st r --l i m,

tab-str Cap 3 1 ; END; FOR i:=l TO ultimo DO

FOR i:=í TO LONG-ESPE DO tabla_espeCdire,i3:=0; IF tablaCi ,DIR-ESPECl=dire THEN tablaCi ,DIH_ESPEC3:=O;

END ELSE c u n j _ e s p : = c o n j _ e s p ~ C ~ l ~ m l ; END;

BEGIN €Empieza CoJ~intos EWIvalentes3 < Limpia los conjuntos de equivalencia para el CONJUNTO recibido

conj_esp:=Cl; =OR j:=i TO MAX-CON-EQU DD BEGIN

como parametro 3

conj-equiCjl:=Cl; C Conjuntos d e igualdad 3 FOR k : = í TO MAX-ELE-EQU DO BEGIN

matr-menC j , k 3 : =O; mat-m_igCJ,Kl:=O;

END; END; 21em:=siguiente_elemento(C),conJun) ; WHILE telem<=v-qrande) DO BEGIN

IF (tabla~elem,TIPO1=INTEH"EN BEGIN IF (tablatelem,VALORl = C-IGUhLl THEN conjunto-iguales; IF (tablaCelem,VALORI = MEN-IGITHEN conjunto-menorestmat-m-ig) ; IF ( tab 1 at el em, VALOR 1 = C-MENOR) THEN can j unt o-menor es ( matr -men 1

END; IF (tablafelern,DIR-ESPECl<>O) THEN con junto-especial ; el em I =si gui ent e-el ement o (el em, con jun 1 ;

END; ite('sa1e conj equivalentes ' ) ; ;ribe-conjunto(conj-esp); END;

=unción para determinar si 2 valores con iguales usando 3s Conjuntos de igualdad inicial VCTION transi ti va-i gu (el emt INTEGER) : BOOLEAN; 3 i 3 INTEGER; termina D BOOLEAN;

BEGIN

transitivo_igu:=False; rlHiLE (i<=Mf4X-CDN-EQU)AND(NOT termina) DO

i . - . -1;

IF (tablaCelem,IZQl IN conj-equiCi3)AND (tablatelem,DERl IN conj-equi til)

3

-.- Pag. 61 J.A.E.M. .--Y-__*

Page 114: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

- , .

Programa DEMUESTRA

THEN BEGIN transi ti vo-i gu:=True; termina: =True;

END ELSE i:=i+l;

END ;

NCT ION transi ti vo-men < term-a, term-b i INTEGER; VAR matr i z : ti po-matr -con j :

R i,j : INTEGER; termina,esta_a,esta_b :BOOLEAN;

BEG IN

termi nat =Fa1 se; WHILE (i<=MAX-CON_EQU)AND(NOT termina) DO BEGIN

i qual : BOOLEAN) : BOOLEAN;

i:=i= 5

j:=l; esta-a: =Fa1 se; esta-b: =False; WHILE (j<=MAX-CON-EC¿U)AND(NOT termina) DO BEGIN

IF term-a=matrizCilCjl THEN BEGIN esta-a: =True; IF (NOT Igual )AND(esta-b) THEN esta-a:=False;

END; IF term-b=matriiCiJCjI THEN esta-&:=True; IF (esta-a) AND (esta-b) THEN termina:=True ELSE j:=j+l;

END; i : =i + 1 ;

END; transitivo-men:=termina; END;

NCT ION i qual -term (ter ml , ter m 2 , ti p : INTEGER ) : BOOLEAN; U igal : BOOLEAN;

apl , ap2 : INTEGER; BEGIN igal:=True; IF dag~espe~terml,TIP0Jodag_espett~rm2,TIPOJ THEN igal:=False; IF daq~espeCterml,EST~DOl<>dag~espeCterm2,ESTADOl THEN igal :=False; IF igal THEN

CASE dag-espetterml, TIP01 OF INTERNO: BEGIN

IF dag-espef t erml , WLOR 3 < >dag-espeC term2, VALOR 3 THEN i gal : =Fa1 se ELSE BEGIN

IF (dag-espetterml, IZR3(>0)AND(dag-espetterm2, IZQ3<>0) THEN

i gal : =Igual -term (dag-espet t erml , I ZRJ , dag-espefterm2, IZQI, tip)

ELSE IF(dag-espetterml, I Z Q l ~ ~ O ~ O R ~ d a g _ e ~ p e C t e r r n 2 , 1 2 ~ 3 0 ~ 0 ) THEN

i gal t =Fa1 eje;

END; IF NOT igal THEN

IF (dag_espeCterml,DER3<>0~AND~dag~e~pettefm2,DERJ~>~~ THEN

i g a l :=Igual_term(daq_espettermí, IZRJ, dag-espeCterm2,IZQI,tip)

ELSE IF (dag-espetterml, DER]< >O) OR (dag_espetterm2,DERI< >.O) THEN

Page 115: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa DEMUESTRA

igal : =Fa1 se; END;

BOLEANA: XF (dag-zspeCterm1 , VALOR].: ::.dag_caspeCt~srm2~ VALOR1 1 THEN i gal : =Fa1 se;

NUMERO: CASE t i p OF C-MENOR: IF (dag-espeEterm1 ,VALORI>dag_espeCterm2, VALOR])

C-MAYOR: IF (dag-espec t erm 1 , VALOH 1 < dag-espeC t er m2, VFILORI 1

C-IGUAL: IF (dag-espeCterm1 , VfiLORl< >dag_espeCterm2, VFILORI)

THEN i gal : =Fa1 se;

THEN i gal : =Fa1 se;

THEN i gal : =Fa1 se; END;

ap 1 : =dag-rspeC term1 , VCSLORI ; apíl: =dag-espeCterm2,VALORl; IF tab-strcapi J<Stab_strCap23 THEN

IDENTI: BEGIN

IF tJOT((ap1 IN conj-cantr)AND(ap2 IN conj-contr)) THEN i gal : =Fa1 se;

END j

END; i qual -term: =i gal ;

END;

NCTION recrxre-dag-ecpe~apt:INTEEEH):INTEGER; BEGIN IF dag_espeCapt,TIPOI=I"Q THEN

IF (dag-espeCapt, IZQl(>0)~ND(dag_espeCapt,DER3(>0) THEN recorre-dag-espe: =recorre-dag-espe (dag-espeCapt, IZQJ 1 +

recorre~dag~espe(dag~espefapt,DERl~+l ELSE BEGIN

IF dag-espeiapt, IZQl<>O THEN

IF dag-espeCapt, DER]< >O THEN recorre_dag_espe:=l+recorre-dag-~spe(d~g-~speCapt~ IZQI);

recorre-dag-espe: =i+recorre-dag-espe (dag-espefapt , DER1 1 ; END

ELSE recorre-dag-espe:=i; END;

NCT ION val or a (VAR con jun : ti po-con junt o; apunt : INTEGER) : INTEGER; R val ,scum, el em: INTEGER; BEGIN val -acum: =O; el em: =si gui ente-el emento (O, con jun ; WHILE elemt=E-EXPR DO BEGIN

val -acum: =val -acum+recorre-dag-espe (tabl a-especapunt , el em3 ; el em: =si gui ent e-el emento (el em, con jun ;

END; valoraiival-acum; END;

DCEDURE expr-especial (conj-opt: tipo-conjunto;optimo,apunt-b: INTEGER); R ante-espe,cons-espe :cad-expres; el em : INTEGER;

BEG IN el em: =si gui ente-el emento (O, con j-opt ) ; WHILE elem<=E-EXPR DO BEGIN

Deletelante-espe,l,Length(ante-espe)); Delete (cons-espe, 1 , Length (cons-espe) 1 ; rec-anteri or (tabl a-espetoptimo, eleml, ante-espe, dag-espe) ;

-- _I-

Pag. 63 J.A.E.M. --I- .. XI

Page 116: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa, DEMUECTHci

rec-anterior (tabla_espeCapunt_~,elem3,cons_espe,~ag~~spe~ ; IF Length (expr-espe) 3.C) THEN

expr-espe:=Concat (expr-espe, ’ .* ,ante-espe, ’ 1 => ( ’ , cons-espe,’)’)

ELSE expr-espe:=Concat ( ’ < ’ ,ante-espe, ’ => ’ ,cons-espe, ’ 1 ‘ Z ;

el em: =si qui ent e-el ement o (el em, con j-opt 1 ; END;

END; iteln(’especia expre :’,expr-espe);

3CEDURE implica-especial (elem: 1NTEGER;VAR cmsecu: tipo-conjunto) ; R esp-antec , apunt-a, apunt-b, val or, i , val -npt , cant i , opt i roo, ter m-opt : INTEGER; conj-opt, conj-term : tipo-conjunto; termina :BOOLEAN; FEGIN val_opt:=999; optirno:=ci; esp-antec : =si gui ente-el ement o ( 0 , con j-esp ) j apunt -b : =t ab1 ace1 em, DIR-ESPECJ ; term-apt : =999; termina:=FkLGE; WHILE (NOT termina; AND(eep-antec(=V_grande) DO BEGIN

conj-term:=[]; apunt -a : =tab 1 at esp-an t ec , DIR-ECPECI ; conj_contr:=Ctabla~espeCapunt~~,E~CONTR3,tabla~espeCapunt~b,E~CONTRl~; IF t a b l ñ ~ e s p e C a p u n t ~ a , E ~ T I P O l = t a b l a ~ e s p e C a p ~ ~ n t ~ b , E ~ T I P O l THEN BEGIN

IF NOT (igual-term(tabla_ospetapunt_a,E_EXP_I3, tabla-especapunt-b, E-EXP-I 1,CJENOR) 1 THEN

con j-term:=con j-term+CE-EXP-I 3; IF NOT(igual-term(tabla-espeCapunt_a,E_EXP_Dl,

tabla-espeCapunt-b,E-EXP-DJ,C-MAYOR)) THEN conj~term:=conj~term+CE~EXP~Dl;

IF NOT (igual -term (t ab1 a-espec apunt-a, E-EXP-CI , con j-t er rn: =con j -t er m+C E-EXP-C 3 ;

IF t ab1 a-espec apunt ,a, E-T IPO3=228 THEN

ELSE I F (tabla-espeCapunt-a,E-OP-Il<>MEN-IG) THEN

tabla-espeCapunt-b,E-EXP-Cl,C-IGUAL) 1 THEN

IF tabla~espeCapunt~a,E~OP~Il<>tabla~espeCapunt~b,E~OP~Il THEN

conj~term:=conj~term+tE~EXP~C,E~EXP~Il

con j-term: =con j-term+CE-EXP-C, E-EXP-I I ; IF tabla~espeCapunt~a,E~OP~~~~~tabla~e~peCapunt~b,E~OP~Dl THEN

IF tabla_espeCapunt_a,€-TIPC33=228 THEN

ELSE IF (tabla-espeCapunt-b,E-OP-Dl<>M€N-IG) THEN con j-t er m: =con j-term+I E-EXP-C, E-EXP- I 3 ;

tabla-espeCapunt-b,E_EXPR3,C_IGUAL)) THEN

con j -ter m: =con j -t erm+ f E-EXP-C, E-EXP- I 3

I F NOT (igual -term (tab1 a-espetapunt-a, E-EXPRI , con j-ter m: =con j-t erm+ CE-EXPR 3 ;

canti :=O; FOR i:=l TO E-EXPR DO

IF i IN conj-term THEN canti:=canti+l; IF (canti < term-opt 1 AND (cant i <=4) THEN BEGIN

valor:=valora(conj-term,apunt-b) ; IF valorXval-opt THEN BEGIN

conj-opt: =con j-term; optimo:=apunt-a; val-opt: =val or ;

Page 117: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa DEMUESTRA

iR pos :INTEGER; BEGIN pos:=busca~elem(elemento,vector) ; ultimo-ele:=True; WHILE pos<MAX-ELE-EQU DO BEGIN

pos: =pos+l; IF vector Cpos3.; 30 THEN BEGIN

u1 ti mo-el e: =Fa1 se; pos: =MAX-ELE-ERU;

END; END; END;

Función que regresa (True) si el elemento del conjunto es el Stimo, (False ) en ot ro caco 3 INCTION primero~elemento:3NTE~ER;vect~r:tipo~vec~~c~nj~:BO~LE~N; IR pos :INTEGER; BEG IN pos:=l; primero:=false; WHILE pos<MAX-ELE-EQU DO

I F vector iposl.:: 33 THEN BEGIN IF vectorCposl=elemento THEN primero:=True; pos: =MAX-ELE-EQU;

END ELSE pos:=pos+l;

END;

unción que busca in elementci en los conjuntos de igualdades 2 NCTION busca-con j-orden (el emento: INTEGER; VAR nuevo: BOOLEAN) : INTEGER; R i,ap-nvo : INTEGER; BEG I N i := l ; ap-nvo:=ó;< apunta a l primer conjunto vacio que encuentre 3 nuevo: =True; WHILE (i<=MAX-CON-ERU)ANDtnuevo) DO

IF elemento IN conj-equiCi3 THEN nuevo:=False ELSE BEGIN

IF (con j-equi C i 3=t 3) AND (ap-nvo=O) THEN ap-nvo: =i ; i :=i+l;

IF nuevo THEN BEGIN END;

busca-conj-orden:=ap-nvo; I F ap-nvo=C, THEN Write( 'Error estructura de conjuntos insuf '1;

END ELSE busca-conj-orden:=i; END 3

Funcidn que regresa el siguiente canjunto que t i ene un elemento, busca apar t i r de un conjunto dado 1 NCTION sgte-cjto(elemen: 1NTEGER;VAR matriz: tipo-matr-conj;

R termina: BOOLEAN; i , j : INTEGER;

VCSR nuevo:BOOLEAN; conj-ini:INTEGER):INTEGER;

BEGIN termina:=False; i :=conj- ini ; WHILE (NOT t er mi na) AND ( i <MAX-CON-EQU) DO BEG1 N

j : =O; i o - .-i+l;

Pag. 57 J.A.E.M. -

Page 118: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa DEMUESTRA

WHILE(N0T termina)AND( j+:MAX-ELE-EBU) DO BEGIN j:=j+li IF (matriz I: i I L: j ]=el emen THEN termi na: =True;

END; END; Nuevo: =NOT ter mi na 8 IF termina THEN sgte-cjto:=i ELSE sgte-cjto:=busca-libre(matri=)$ END ;

:Procedimiento que une dos CONJUNTOS representados en la matriz 3 WXEDURE une(VAR matriz:t ipo-matr_conj;ap-vec-l ,ap-vec-~~INTEGER); V4R i: INTEGER;

BEGIN FOR i:=l TO MAX-ELE-EQU DO BEGIN

IF matrizCap-vec-2,ilOO THEN BEGIN incerta-f in (matri L I: ap-vec-21 C i 3, matriz Cap-~iec-131 j

matrizCap-vec-2lCi ]:=O; END;

END; END;

:OCEDURE escribe-matriz (VAR mat:tip~_matr_i~nj); \R i, j:integer; BEGIN FOR i:=l TO max-con-equ DO BEGIN

FOR j:=l TO max-ele-equ 00

Writeln; Write(matCi, j3:3);

END ; Read(hbd,caracter) ;

ID;

‘rocedimiento donde se obtienen los con juntos d e equinalencia )ara menores, menores igueles e igules 3 ,OCEDURE c jtos-equi (VAR conjun: tipo-con junto) ; rR elem,ap-conj-l,ap-conj-2~posl,pos2, j,k : INTEGER;

nvo-1 ,nvo,2, encuent : BOOLEAN3 € Procedimiento que llena el conjunto de iguales, no

PROCEDURE conjunto-iguales; BEGIN con jun:=con jun-Celeml; ap~conJ~lr=busca~conj_orden (tablacelem, IZQ3,nvo-1) ; ap-con j-2~r =busca-canj -orden (t ab1 a C el em, DER], nvo-2) 8 IF (nvo-2) THEN BEGIN

importa el oreden 3

IF (nvo-1) THEN conj-equi tap~conj~llr=ttablaCelem, IZRII; conj~equiCap_conj_l3:=conj~equi Cap~conj~l3+Ctablafelem,DERIl;

END ELSE BEGIN

IF nvo-1 THEN

ELSE con j-equi C ap-con j-23 : =con j-equi C ap-con j-2 3+C t ab1 a C el em, I ZQ3 3

IF ap-conj-l<>ap-conj-2 THEN BEGIN conj-equi Cap-conj-l3:= conj-equiCap-conj-ll+conj-equi Cap-conj-23: conj~equifap~conj~23:=il;

END; END;

END;

Page 119: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa DEMUESTRA

Procedimiento que l l e n a l o 5 conjunto5 de menares 6 menures igua les dependiendo de la matr iz que se como parametro 3 PROCEDURE conjunto-rnenores(VAR matr iz E t ipo-matr-ron j ) ; VAR ap : INTEGER;

BEGIN con jun:=c~njun-CelemI; ap-con j- 1 : =sgte-c j t o (t ab1 ate1 em, I ZQI , matr i z , nvo- 1,O) j

ap-con i -2: =sgte-c j t o ( t a b l ate1 em, DER], matr i z , nvo-2, O ) ; I F (nvo-2) THEN BEGIN

uni o , i n i c i o, t e r m i na: BOOLEAN;

I F (nvo-1 1 THEN nuevo (el em, mat r i 2 Cap-con j -1 I ) ELSE BEGIN

REPEAT €So10 5e puede guardar cuando e5 u l t i m o elemento 3 encuent: =u1 t i mo-el e ( t a b l a t e l em, IZQI , n a t r i z C ap-con j-11) ; I F NOT encuent THEN ap-con j - 1 : =sgte-cj t o (t ab1 atel em, 1293, matr i z , nvo- 1 ap-con j -1 ;

UNTIL tencuent)0R(nvo-l) ; I F encuent THEN

ELSE nuevo(rlem,matrizCap_cbnj_13); i nce r ta - f i n ( t a b l atel em, DER], mat r i z Cap-con j - 1 3 )

END; END ELSE BEGIN

REPEAT I F (nva-1) THEN BEGIN

encuent : =pr i mero (t ab1 a5 e1 em, DER], mat r i z I: ap-con j-2 1 ; I F NOT encuent THEN a p ~ c o n j ~ 2 : = s q t e ~ ~ j t o ~ t ~ b l ~ C e l e m ~ D E ~ 3 , m a t r i z , n v o ~ ~ , ap-con j-2) j

UNTIL (enccient 1 OR (nvo-2) ; I F encuent THEN

i ncer t a - i n i (t ab1 a C e l em, I ZRI , matr i z 1. ap-con j -2 1 1 ELSE nuevo (el em, matr i z C ap-can j -23 ;

END ELSE BEGIN

unio:=False; < I n d i c a s i 5e unieron 105 conjuntos 3 Apunta a l conjunto donde e l h i j o I Z O es el primero 6 el h i j o DER 1s e l u l t i m o 3

ap:=O; termina:=False; inicio:=True; € i n d i c a 5 i se i n c e r t a a l i n i c i o 3 WHILE (NOT nvo-1) AND (NOT termina) DO BEGIN

ap-con j-2: Esgte-c j t o (tab1 aC e l em, DER], mat r i z , nvo-2, O j WHILE (NOT nvo_2)AND(NOT termina) DO BEGIN

pos1 : =busca-el em (t ab1 at e l em, I ZQI , m a t r i z t ap-con j- 1 1 1 ; pos2: =busca-el em ( t a b l a t e l em, DER3 , matr i t tap-con j -23 1 ; I F ap-conj-1.: >ap-conj-2 THEN BEGIN

I F pr i mero (t ab1 a t e l em, DER], mat r i z Cap-con j -23 1 THEN

I F u1 t i mo-el e (t ab1 a t e l em, I ZQI , matri z C ap-con j- 1 3 THEN BEGIN

ap: =ap,con j-2;

ap:=ñp,con j-1; inicio:=Falseg

END; I F (posl<MfiX-ELE-EQU) AND (pos2<MAX_ELE_EQU) THEN

I F matrizCap~conj~l+l3Cposl+ll= matrizCap~con~~23fpos2+13 THEN

matrizCap~conj~lltposl+ll:=O; I F (pos1 >.l) AND (pos2< 1 ) THEN

I F matrizCap~conj~13Cposl-l1= matr i z C ap-con j 3 3 Cpos2-13 THEN

Page 120: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa DEMUESTRA

matrizCap~conJ~23Cpos2-il:=O;

une (matriz ap-con j-i ap-cm j-1) ; uni o: =True;

I F u1 ti mo-el E? t ab1 at el em, I ZQI , matr i z C ap-con j- 1 3 AND pri mero (tab1 a Cel em, DER 3, matr i z f ap-cm j -2 I 1 THEN BEGIN

END; END ELSE BEGIN

IF posl>p0~2 THEN BEGIN con junto-i qual es; matriz f ap-con j- 1, pos1 3 : =O; matr i z C ap-con j-2, pos23 : =O;

END; termina:=True; unio: =True;

END; ap-conj_2:=sgte_cjto(tablaCelem,DER3,

END;

END; I F NOT unio THEN

I F ap-O THEN nuevo(elem,matrizLap_cUnj_231 ELSE

IF i n i c i o THEN i ncerta-i ni (tabl alelcm, I293 , matri z Cap3 ELSE i ncerta-.f i n ( tab l atel em, DER], matr i z C a p 3 1 j

END; END; END ;

Procedimento que camabia el STRING de UR especial por su reducción 3 PROCEDURE cambia-especial (str-contr,str-lim:cad-exprtzs;UAR

VAR i : INTEGER; caracter :CHAR;

str-espe:cadena) ;

BEG 1 N i :=1 ; REPEAT

car ac ter : =st r ,@spec 1 3 ; IF caracter=’:’ THEN i:=i+l; Delete(str-espe, l * l ) ;

UNTIL i>S;

REPEAT i.- . -1;

i:=busca~subcadena(str~espe,~tr~contr,i); I F i<=Length (str-espe) THEN REGIN

Delete(str-espe,i,Length(str)); Snsert (str-1 i m , str-espe, i 1 ; ir=i+l+Length(str-lim);

END 5 UNTlL i >Length (str-espe) ; REPEAT

car ac ter : =str -espe CLengt h (st r -espe 1 3 ; Delete(str-espe,Lenqth (str-espe) , 1 ) ;

UNTIL caracter”’ 1 ’ ; END;

Procedimiento para crear el conjunto de especiales del antece

Page 121: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

- <- .--_-."- .-.. _I_. .--?=?- . . . . . . . . . . . . . . . . ........... . ._-_, ..................... ._.- ...... ....

Programa DEMUESTRCI

WHILE(N0T termina)CIND( j<MfiX-ELE-EQU) DO BEGIN j:=j+l; IF(matrizCi1C jl=elemen) THEN termina:=True;

END; 1; wo: =NOT termina; termina THEN sgte-c jto:=i

;E sgte-c jto: =busca-l ibre (matriz 1 ; 1; \

:edimiento que une dos CONJUNTOS representados en l a m a t r i z 3 ZDURE une(VAR matriz:tipo_mñtr_conj;ap_vec_l,ap_vec_2:INTEGER)~ J. INTEGER; 3EG 5 N :OR i:=i TO MAX-ELE-EQU DO BEGIN

IF matrirCap_vec_2,il(SO THEN BEGIN incerta-f in (matriz Cap-vec-23Ci 3, matrix rap-vec-131 ; matr i z C ap-vec-23 C i 3 : =O;

END; 1ND; IND ;

IURE escr i be-matr i z (VAR mat: tipo-matr-coni ; , j : i n t eger ; ;IN i i:=l TO max-con-equ DO BEGIN -OR j:=i TO max-ele-equ DO Wr i te ( m a t C i , j 3 : 3) ;

J r i teln; z

1; -- -,- - -- 3d(kbd,caracter);

?dimiento donde se obtienen los conjuntos de equinalencia

IURE cjtos-equitVAR conjun:tipo-conjunto); lem,ap~conj~l,ap~conj~2,posl,pO52,j,k :INTEGER; #o-1, nvo-2, encuent : BOOLEAN: 'rocedimiento que llena el conjunto de iguales, no imparta el oreden 3 3CEDURE conjunto-iguales;

menores, menores igueles e igules 3

BEGIN con j un : =con j un- C el em 3 ; ap_conj_lr=busca_conj~orden(tablaCelem~ iZQ3,nvo-1); ap~conj~2:=busca~conj~orden~tablaC~lem,DERl,nvo~2~: W (nvo-2) THEN BEGIN -

I F (nvo-1) THEN conj-equi Cap-conj,lli=CtablaCelem, IZQ33g con j-equi Cap-con j,i3:=cwr j-equi Cap-con j-lI+ttablaCelem,DER33;

END ELSE BEGIN

IF nvo-1 THEN -

ELSE conj-equi Cap-conj-23i=con j-equi Cap-conj-23+CtablaCelem, IZPII

IF ap-conJ-lC>ap-conj-2 THEN BEGIN

END;

conj-equiCap-conj-l3:= conj-equi Cap~conj~lI+conj~equiCap~conj~21~ con j-equi Cap-conj-23:=CJ; -

END; END;

Page 122: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa DEMUESTRA

2 , eliminando algunos casos particulares 3 :DURE con junto-especi al ; ap,i,dire :INTEGER; str-1 i m, str - c a n t r : cad-ex pres; 3IN -e:=tablaLelem,DIR-ESPECl~

ionjun:=conjun-Celeml; IF ( t ab1 a-tispeC di re, E-OP- I I IN CC-I GUAL, MEN-I O1 1 AND

(tabla_espeCdirgyE_~P_D3 IN CC-iGUAL,MEN-IGI) THEN BEGIN

t a b l a ~ e s p e L d i r e y E _ E X P ~ D l = t a b l a ~ e ~ p e ~ ~ i r e , E ~ E X ~ ~ X l THEN BEGIN

c m jun : =con juntCelem3; ap:=tabla-espeCdire,€-~~-STRl~

rec-anterior ~tabla_espeCdire,E~EXP_D3,str_lim,dag_espe~ ; c ñmbi a-especi al (tab-str I: t ab1 a-espeC di re, E-CONTRI I y st r -1 i m,

- Delete(str-lim, l,Length(str-lim)); --

t ab-str Cap 3 1 ; IND ; -OR i:=l TO ultimo DO

'OR i:=l TO LONG-ECPE DO tabla-espeCdire,il:=O; 3 SE conj-esp:=cm j-esp+Celeml; 2;

IF tablaCi ,DIH-ESPECl=dire THEN tablati ,DIH-ESPECl:=O;

4 (Empieza CclJuntos ERUIvalentes3 npiñ los conjuntos de equivalencia para el CONJUNTO recibido no parametro 3 -esp : =C 3 ;

~j-equiCjI:=Cl; C Conjuntos de igualdad 3 3 k:=l'TO'l%T%-ELE-EQU DO BEGIN

j : = i TO MAX-CON-EQU DO BEGIN - - --

matr-men C j , k 3 : =O; mat-m-i g C J, K I : =O;

);

: =si qui ente-el emento (O, con jun 1 ; E (elem<=v-qrande) DO BEGIN

I F (tab1 atelem,VfiLORl = C-IGUAL) THEN conjunto-iguales: I F (tablaCelem,VALORl = MEN-1G)THEN conjunto-menores(mat-m-ig); I F (tablaCelem,V~LORl = C-MENOR)THEN conjunto-menores(matr-men); 3 ;

em: =si qui ente-el emento (el em, con jun 1 ;

(tablaCelem,TIP03=INTERNO)THEN BEGIN

(tab 1 a C el em, DI R-ESPECI.: >O 1 THEN con jun t o-espec i al ;

'-le con j equivalentes ' 1 I 2 - conjunto(conj-esp);

-.

idn para determinar si 2 valores son Iguales usando mjuntos de igualdad inicial 3N transitivo-igu~elemr INTEGER) :BOOLEAN;

: INTEGER; +-mina f BOOLEAN; v i ei t i vo-i gu: =Fa1 se; E (i<=MfiX-CON-EQU)AND(NOT termina) DO I F (tablaCelem,IZPl IN conj-equiti 3)AND

-

(tablaiel~,DERI IN conj-equiCi 3 ) a - # "I I <I

Pax. 41 J.A.E.M.: _ _ _ ~" -.. li- 11_------ - I _-,_ y.1_ - I - ~. I _ _

Page 123: POYECTO DE I NVESTI GACI /' VERIFICACION FORMAL …148.206.53.84/tesiuami/UAM8305.pdf · resuelta por el software y por consiguiente las soluciones ... WPCS1 B ENTONCES S1 OTRO S2,GD

Programa DEMUESTRA

IF END;

‘D SE IF D;

URE 2:

r-aux : cad-expres; GIN lete (expr , l ,Length(expr ) ) ; con junto< >.t 3 THEN BEGIN el em: =si gui en t e-el emen t o (O, con junto) ; str-aux:=Chr ( 0 ) ; rec-anterior (elem,str-aux, t ab l a ) ; expr:=str-dux; e1 em: -si gui en te-el emen to (el em, can j un t D 1 ; WHILE elem<=v-grande DO BEGIN

str-aux:=Chr 10) j rec-anterior (elem,str-aux, tab la ) j expr: =Concat (expr, * ’ 5 t r - a ~ ~ ) j

el em: =si qui ent e-el ement o (el em conjunto) ; -!END; IF c-equival THEN BEGIN

str-aux : =expres-con j-equ; Length(5tr-dux) ::.O THEN expr:=Cmcat texpr, .% .’ ,str-au:<.) j

r-equi v a l THEN expr: =expr-~?~-can j-squ;

pre-con j (UAR ante, conse: tipo-con junto den-ante, caden-con : cad-expres; G 11.1 den-ante:=Chr ( 0 ) ; den-con: =Chr ( 0 ) ; r-con j (ante,caden-ante, True) ; -

VFsñ express

- r-conj (conse,caden-con,False) ; - -- press: ic-Bfi it ( ’ ( ’ ,caden-ante, ’ 1 => ( ’ ,caden-con, ’ 1 ’ 1 ;

Length (expr-espe) >O THEN express: =Concat ( ’ ( ’ , express, ’ 1 * ( ’ , expr -espe, ’ ) ’ ) ; D;

ON combina(VAR a,b,ayb: INTEGER) :BOOLEAN; GIN mbi na: =Fa1 se; b:=O; (a=O) OR (b=O) THEN combina :=True; (a=l) AND (b=l) THEN BEGIN combina:=True; ayb:=l;

D i D;

icn que reduce los conjun tos de equivalencia, do l a información se r e p i t e en los di ferentes untos, y regresa (TRUE, r e s u l t = Fa150.) si hay radicción 3 ON elimina-conjun(VAR conjunt:tipo-conjunfo;

N i na-con jun : =Fa1 sei

-

VAR resu l t : INTEGER) ;BOOLEAN;

cad-ex pr es)

ión que reduce los conjuntos de l consecuentes si son ucidos por los conjuntos del antecedente, regresa TRUE 1 consecuente se redujo en forma to ta l 3 ON reduce-conjunto (VAR ap-dag1 , ap-dag28 INTEGER3