b'\n_START_ARTICLE_\nPila acotada\n_START_SECTION_\nImplementaci\xc3\xb3n\n_START_PARAGRAPH_\nPara ilustrar exponemos la implementaci\xc3\xb3n de una pila acotada.\n_START_SECTION_\nEn MAUDE\n_START_PARAGRAPH_\nNecesitaremos una teor\xc3\xada para definir el tama\xc2\xa0o m\xc3\xa1ximo de la pila._NEWLINE_fth CONSTANTE is_NEWLINE_  protecting NAT ._NEWLINE_  op cte: -> NAT ._NEWLINE_endfth_NEWLINE_Pasamos a definir la pila acotada parametrizada._NEWLINE_fmod PILA-ACOTADA {X\xc2\xa0:: TRIV , AC\xc2\xa0:: CONSTANTE} is_NEWLINE_  protecting NAT ._NEWLINE_  sorts PilaAC{X , AC} PilaACNV{X , AC} ._NEWLINE_  subsort PilaACNV{X , AC} < PilaAC{X , AC} ._NEWLINE_  *** generadores_NEWLINE_  op crear\xc2\xa0: -> PilaAC{X , AC} [ctor] ._NEWLINE_  op apilar\xc2\xa0: X$Elt PilaAC{X , AC} -> PilaACNV{X , AC} [ctor] ._NEWLINE_  *** constructores_NEWLINE_  op desapilar\xc2\xa0: PilaAC{X , AC} -> PilaAC{X , AC} ._NEWLINE_  *** selectores_NEWLINE_  op cima\xc2\xa0: PilaACNV{X , AC} -> X$Elt ._NEWLINE_  op longitud\xc2\xa0: PilaAC{X , AC} -> Nat ._NEWLINE_  op estaLlena?\xc2\xa0: PilaAC{X , AC} -> Bool ._NEWLINE_  *** variables_NEWLINE_  var P\xc2\xa0: PilaAC{X , AC} ._NEWLINE_  var E\xc2\xa0: X$Elt ._NEWLINE_  *** ecuaciones impurificadoras_NEWLINE_  ceq apilar (E, P) = P if estaLlena?(P) ._NEWLINE_  eq desapilar (crear) = crear ._NEWLINE_  ceq desapilar (apilar(E, P)) = P if not estaLlena?(P) ._NEWLINE_  ceq cima (apilar(E, P)) = E if not estaLlena?(P) ._NEWLINE_  eq longitud (crear) = 0 .                    _NEWLINE_  ceq longitud (apilar(E, P)) = 1 + longitud (P)_NEWLINE_     if not estaLlena?(P) .                      _NEWLINE_  eq estaLlena?(P) = longitud (P) >= cte ._NEWLINE_endfm'