15.11.2014 Views

con Isabelle/Isar - Dpto. Ciencias de la Computación e Inteligencia ...

con Isabelle/Isar - Dpto. Ciencias de la Computación e Inteligencia ...

con Isabelle/Isar - Dpto. Ciencias de la Computación e Inteligencia ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

46 Capítulo 5. Heurísticas para <strong>la</strong> inducción y recursion general<br />

map-arbol :: ′ a arbol ⇒ ( ′ a ⇒ ′ b) ⇒ ′ b arbol and<br />

map-bosque :: ′ a bosque ⇒ ( ′ a ⇒ ′ b) ⇒ ′ b bosque where<br />

map-arbol Hoja h = Hoja<br />

| map-arbol (Nodo x b) h = Nodo (h x) (map-bosque b h)<br />

| map-bosque Vacio h = Vacio<br />

| map-bosque (ConsB a b) h = ConsB (map-arbol a h) (map-bosque b h)<br />

Lema 5.3.4 (Ejemplo <strong>de</strong> inducción cruzada).<br />

1. ap<strong>la</strong>na-arbol (map-arbol a h) = map h (ap<strong>la</strong>na-arbol a)<br />

2. ap<strong>la</strong>na-bosque (map-bosque b h) = map h (ap<strong>la</strong>na-bosque b)<br />

lemma ap<strong>la</strong>na-arbol (map-arbol a h) = map h (ap<strong>la</strong>na-arbol a)<br />

∧ ap<strong>la</strong>na-bosque (map-bosque b h) = map h (ap<strong>la</strong>na-bosque b)<br />

proof (induct-tac a and b)<br />

show ap<strong>la</strong>na-arbol (map-arbol Hoja h) = map h (ap<strong>la</strong>na-arbol Hoja) by simp<br />

next<br />

fix x b<br />

assume HI: ap<strong>la</strong>na-bosque (map-bosque b h) = map h (ap<strong>la</strong>na-bosque b)<br />

have ap<strong>la</strong>na-arbol (map-arbol (Nodo x b) h)<br />

= ap<strong>la</strong>na-arbol (Nodo (h x) (map-bosque b h)) by simp<br />

also have . . . = (h x)#(ap<strong>la</strong>na-bosque (map-bosque b h)) by simp<br />

also have . . . = (h x)#(map h (ap<strong>la</strong>na-bosque b)) using HI by simp<br />

also have . . . = map h (ap<strong>la</strong>na-arbol (Nodo x b)) by simp<br />

finally show ap<strong>la</strong>na-arbol (map-arbol (Nodo x b) h)<br />

= map h (ap<strong>la</strong>na-arbol (Nodo x b)) .<br />

next<br />

show ap<strong>la</strong>na-bosque (map-bosque Vacio h) = map h (ap<strong>la</strong>na-bosque Vacio) by simp<br />

next<br />

fix a b<br />

assume HI1: ap<strong>la</strong>na-arbol (map-arbol a h) = map h (ap<strong>la</strong>na-arbol a)<br />

and HI2: ap<strong>la</strong>na-bosque (map-bosque b h) = map h (ap<strong>la</strong>na-bosque b)<br />

have ap<strong>la</strong>na-bosque (map-bosque (ConsB a b) h)<br />

= ap<strong>la</strong>na-bosque (ConsB (map-arbol a h) (map-bosque b h)) by simp<br />

also have . . . = ap<strong>la</strong>na-arbol(map-arbol a h)@ap<strong>la</strong>na-bosque(map-bosque b h)<br />

by simp<br />

also have . . . = (map h (ap<strong>la</strong>na-arbol a))@(map h (ap<strong>la</strong>na-bosque b))<br />

using HI1 HI2 by simp<br />

also have . . . = map h (ap<strong>la</strong>na-bosque (ConsB a b)) by simp<br />

finally show ap<strong>la</strong>na-bosque (map-bosque (ConsB a b) h)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!