1 of 4

Invariante de Representación

⟨⟩ -- Árbol vacío�⟨l, e, r-- Árbol con al menos un elemento

check_greater :: T -> T-> Boolcheck_greater e' ⟨⟩ = True�check_greater e' l, e, r = e' > e check_greater e' l

check_greater e' r

check_smaller :: T -> T-> Boolcheck_smaller e' ⟨⟩ = True

check_smaller e' l, e, r = e' < e

check_smaller e' l � check_smaller e' r

is_abb :: T-> Boolis_abb ⟨⟩ = True�is_abb l, e, r⟩ = check_greater e l ∧ � check_smaller e r ∧� is_abb(l) ∧� is_abb(r)

2 of 4

Operaciones de ABBs - exists

exists :: T -> T-> Bool�exists e' ⟨⟩ = False�exists e' l, e, r⟩ | (e'== e) = True� | (e' > e) = exists e' r� | (e' < e) = exists e' l

-- Sin usar definición por casos

exists' :: T -> T-> Bool

exists' e' ⟨⟩ = False�exists' e' l, e, r⟩ = (e'== e) � ((e' > e) exists' e' r)

((e' < e) exists' e' l)

3 of 4

Operaciones de ABBs - add

add :: T -> T -> T⟩�add ⟨⟩ eₙ = ⟨⟨⟩, eₙ, ⟨⟩⟩add l, e, r eₙ | eₙ == e = l, e, r

| eₙ < e = add l eₙ, e, r

| eₙ > e = l, e,add r eₙ

4 of 4

Operaciones de ABBs - remove

max_e :: T -> T�max_e l, e, ⟨⟩⟩ = e�max_e l, e, r = max_e r�

del_max :: T⟩ -> ⟨T⟩�del_max l, e, ⟨⟩⟩ = l�del_max l, e, r = l, e, del_max r

del :: T -> T -> T⟩�del ⟨⟩ eₓ = ⟨⟩�del l, e, r eₓ | eₓ < e = del l eₓ,e, r

| e < eₓ = l, e, del r eₓ

| e == eₓ | is_empty l = r

| otherwise = del_max l ,max_e l, r