<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/LMF2020/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jalonso</id>
	<title>Lógica matemática y fundamentos [Curso 2019-20] - Contribuciones del usuario [es]</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/LMF2020/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jalonso"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php/Especial:Contribuciones/Jalonso"/>
	<updated>2026-07-17T15:19:22Z</updated>
	<subtitle>Contribuciones del usuario</subtitle>
	<generator>MediaWiki 1.31.14</generator>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=1287</id>
		<title>Ejercicios</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=1287"/>
		<updated>2021-07-25T15:07:15Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se encuentran los ejercicios para resolver de manera colaborativa que complementan al [https://www.cs.us.es/~jalonso/cursos/lmf-19/ejercicios/ejercicios-LMF-2019-20.pdf libro de ejercicios].&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 1&amp;#039;&amp;#039;&amp;#039;: Sintaxis y semántica de la lógica proposicional. ([[R1 |Enunciado]] y [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R1_sol.pdf solución]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 2&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R2.thy Deducción natural proposicional con Isabelle] ([[R2 |Enunciado]] y [[Rel 2 |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 3&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R3.thy Deducción natural proposicional con Isabelle (II)] ([[R3 |Enunciado]] y [[Rel 3 |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 4&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R4.thy Sintaxis y semántica de la lógica de primer orden.] ([[R4 |Enunciado]] y [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R4_sol.pdf solución]).).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 5&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R5.thy Deducción natural en lógica de primer orden.] ([[R5 |Enunciado]] y [[Rel 5 |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 6&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R6.thy Formalización y argumentación con Isabelle/HOL.] ([[R6 |Enunciado]] y [[Rel 6 |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R7.thy Deducción natural,formalización y argumentación en LPO con Isabelle/HOL.] ([[R7 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 8&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R8.thy Programación funcional en  Isabelle/HOL.] ([[R8 |Enunciado]] y [[Rel 8 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 9&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R9.thy Programación funcional en  Isabelle/HOL (II).] ([[R9 |Enunciado]] y [[Rel 9 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Tarea 1 (24-04-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T1 |Enunciado]] y [[T1 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 10&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R10.thy Razonamiento sobre programas en Isabelle/HOL.] ([[R10 |Enunciado]] y [[Rel 10 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 11&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R11.thy Razonamiento sobre programas en Isabelle/HOL(II).] ([[R11 |Enunciado]] y [[Rel 11 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 12&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R12.thy Razonamiento sobre programas en Isabelle/HOL(III).] ([[R12 |Enunciado]] y [[Rel 12 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Tarea 2 (12-05-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T2 |Enunciado]] y [[T2 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 13&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R13.thy Recorridos de árboles.] ([[R13 |Enunciado]] y [[Rel 13 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 14&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R14.thy Una axiomatización de la Geometría.] ([[R14 |Enunciado]] y [[Rel 14 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Tarea 3 (19-05-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T3 |Enunciado]] y [[T3 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 15&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R15.thy Definiciones inductivas: clausuras.] ([[R15 |Enunciado]] y [[Rel 15 (sol) |solución]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Tarea 4 (26-05-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T4 |Enunciado]] y [[T4 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Tarea 5 (02-06-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T5-1 |Enunciado (1)]] y [[T5-1 sol |solución]]) y ([[T5-2 |Enunciado (2)]] y [[T5-2 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Trabajo final&amp;#039;&amp;#039;&amp;#039;: ([[TF |Enunciado]] y [[TF sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Examen (2-07-2020)&amp;#039;&amp;#039;&amp;#039;: ([[Examen 1C |Enunciado]] y [[Examen 1C sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Examen (9-09-2020)&amp;#039;&amp;#039;&amp;#039;: ([[Examen 2C |Enunciado]] y [[Examen 2C sol |solución]]).&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=1286</id>
		<title>Ejercicios</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=1286"/>
		<updated>2021-07-25T15:01:47Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se encuentran los ejercicios para resolver de manera colaborativa que complementan al [https://www.cs.us.es/~jalonso/cursos/lmf-19/ejercicios/ejercicios-LMF-2019-20.pdf libro de ejercicios].&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 1&amp;#039;&amp;#039;&amp;#039;: Sintaxis y semántica de la lógica proposicional. ([[R1 |Enunciado]] y [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R1_sol.pdf solución]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 2&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R2.thy Deducción natural proposicional con Isabelle] ([[R2 |Enunciado]] y [[Rel 2 |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 3&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R3.thy Deducción natural proposicional con Isabelle (II)] ([[R3 |Enunciado]] y [[Rel 3 |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 4&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R4.thy Sintaxis y semántica de la lógica de primer orden.] ([[R4 |Enunciado]] y [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R4_sol.pdf solución]).).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 5&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R5.thy Deducción natural en lógica de primer orden.] ([[R5 |Enunciado]] y [[Rel 5 |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 6&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R6.thy Formalización y argumentación con Isabelle/HOL.] ([[R6 |Enunciado]] y [[Rel 6 |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R7.thy Deducción natural,formalización y argumentación en LPO con Isabelle/HOL.] ([[R7 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 8&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R8.thy Programación funcional en  Isabelle/HOL.] ([[R8 |Enunciado]] y [[Rel 8 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 9&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R9.thy Programación funcional en  Isabelle/HOL (II).] ([[R9 |Enunciado]] y [[Rel 9 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio evaluable 1 (24-04-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T1 |Enunciado]] y [[T1 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 10&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R10.thy Razonamiento sobre programas en Isabelle/HOL.] ([[R10 |Enunciado]] y [[Rel 10 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 11&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R11.thy Razonamiento sobre programas en Isabelle/HOL(II).] ([[R11 |Enunciado]] y [[Rel 11 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 12&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R12.thy Razonamiento sobre programas en Isabelle/HOL(III).] ([[R12 |Enunciado]] y [[Rel 12 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio evaluable 2 (12-05-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T2 |Enunciado]] y [[T2 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 13&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R13.thy Recorridos de árboles.] ([[R13 |Enunciado]] y [[Rel 13 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 14&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R14.thy Una axiomatización de la Geometría.] ([[R14 |Enunciado]] y [[Rel 14 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio evaluable 3 (19-05-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T3 |Enunciado]] y [[T3 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 15&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R15.thy Definiciones inductivas: clausuras.] ([[R15 |Enunciado]] y [[Rel 15 (sol) |solución]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio evaluable 4 (26-05-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T4 |Enunciado]] y [[T4 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio evaluable 5 (02-06-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T5-1 |Enunciado (1)]] y [[T5-1 sol |solución]]) y ([[T5-2 |Enunciado (2)]] y [[T5-2 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Trabajo final&amp;#039;&amp;#039;&amp;#039;: ([[TF |Enunciado]] y [[TF sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Examen (2-07-2020)&amp;#039;&amp;#039;&amp;#039;: ([[Examen 1C |Enunciado]] y [[Examen 1C sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Examen (9-09-2020)&amp;#039;&amp;#039;&amp;#039;: ([[Examen 2C |Enunciado]] y [[Examen 2C sol |solución]]).&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=1285</id>
		<title>Ejercicios</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=1285"/>
		<updated>2021-07-25T15:00:09Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se encuentran los ejercicios para resolver de manera colaborativa que complementan al [https://www.cs.us.es/~jalonso/cursos/lmf-19/ejercicios/ejercicios-LMF-2019-20.pdf libro de ejercicios].&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 1&amp;#039;&amp;#039;&amp;#039;: Sintaxis y semántica de la lógica proposicional. ([[R1 |Enunciado]] y [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R1_sol.pdf solución]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 2&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R2.thy Deducción natural proposicional con Isabelle] ([[R2 |Enunciado]] y [[Rel 2 |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 3&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R3.thy Deducción natural proposicional con Isabelle (II)] ([[R3 |Enunciado]] y [[Rel 3 |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 4&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R4.thy Sintaxis y semántica de la lógica de primer orden.] ([[R4 |Enunciado]] y [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R4_sol.pdf solución]).).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 5&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R5.thy Deducción natural en lógica de primer orden.] ([[R5 |Enunciado]] y [[Rel 5 |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 6&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R6.thy Formalización y argumentación con Isabelle/HOL.] ([[R6 |Enunciado]] y [[Rel 6 |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R7.thy Deducción natural,formalización y argumentación en LPO con Isabelle/HOL.] ([[R7 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 8&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R8.thy Programación funcional en  Isabelle/HOL.] ([[R8 |Enunciado]] y [[Rel 8 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 9&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R9.thy Programación funcional en  Isabelle/HOL (II).] ([[R9 |Enunciado]] y [Rel 9 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio evaluable 1 (24-04-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T1 |Enunciado]] y [[T1 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 10&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R10.thy Razonamiento sobre programas en Isabelle/HOL.] ([[R10 |Enunciado]] y [[Rel 10 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 11&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R11.thy Razonamiento sobre programas en Isabelle/HOL(II).] ([[R11 |Enunciado]] y [[Rel 11 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 12&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R12.thy Razonamiento sobre programas en Isabelle/HOL(III).] ([[R12 |Enunciado]] y [[Rel 12 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio evaluable 2 (12-05-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T2 |Enunciado]] y [[T2 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 13&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R13.thy Recorridos de árboles.] ([[R13 |Enunciado]] y [[Rel 13 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 14&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R14.thy Una axiomatización de la Geometría.] ([[R14 |Enunciado]] y [[Rel 14 (sol) |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio evaluable 3 (19-05-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T3 |Enunciado]] y [[T3 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 15&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R15.thy Definiciones inductivas: clausuras.] ([[R15 |Enunciado]] y [[Rel 15 (sol) |solución]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio evaluable 4 (26-05-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T4 |Enunciado]] y [[T4 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio evaluable 5 (02-06-2020)&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
** ([[T5-1 |Enunciado (1)]] y [[T5-1 sol |solución]]).&lt;br /&gt;
** ([[T5-2 |Enunciado (2)]] y [[T5-2 sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Trabajo final&amp;#039;&amp;#039;&amp;#039;: ([[TF |Enunciado]] y [[TF sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Examen (2-07-2020)&amp;#039;&amp;#039;&amp;#039;: ([[Examen 1C |Enunciado]] y [[Examen 1C sol |solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Examen (9-09-2020)&amp;#039;&amp;#039;&amp;#039;: ([[Examen 2C |Enunciado]] y [[Examen 2C sol |solución]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039; Se pueden publicar las soluciones hasta el martes 31 de marzo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 2&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional. ([[R2 |Enunciado]] y [[Relación 2 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 3&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional (II). ([[R3 |Enunciado]] y [[Relación 3 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 4&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional con Isabelle ([[R4 |Enunciado]], [[Relación 4 |Solución colaborativa]] y [[Sol 4 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 5&amp;#039;&amp;#039;&amp;#039;: Sintaxis y semántica de la lógica de primer orden. ([[R5 |Enunciado]] y [[Relación 5 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 6&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R6.thy Deducción natural en lógica de primer orden con Isabelle] ([[R6 |Enunciado]], [[Relación  |Solución colaborativa]] y [[Sol 6 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R7.thy Deducción natural en lógica proposicional con Isabelle basada en tácticas] ([[R7 |Enunciado]], [[Relación 7 |Solución colaborativa]] y [[Sol 7 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7b&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica de primer orden con Isabelle basada en tácticas. ([[Sol 7b | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 8&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R8.thy Argumentación en lógica de primer orden con Isabelle.] ([[R8 |Enunciado]], [[Relación 8 |Solución colaborativa]] y [[Sol 8 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 9&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R9.thy Programación funcional en Isabelle] ([[R9 |Enunciado]], [[Relación 9 |Solución colaborativa]] y [[Sol 9 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 10&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R10.thy Programación funcional en Isabelle (2)] ([[R10 |Enunciado]], [[Relación 10 |Solución colaborativa]]  y [[Sol 10 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 11&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R11.thy Razonamiento sobre programas en Isabelle/HOL] ([[R11 |Enunciado]], [[Relación 11 |Solución colaborativa]]  y [[Sol 11 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 12&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R12.thy Recorridos de árboles en Isabelle/HOL] ([[R12 |Enunciado]], [[Relación 12 |Solución colaborativa]]  y [[Sol 12 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 13&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R13.thy Definiciones inductivas: clausuras] ([[R13 |Enunciado]], [[Relación 13 |Solución colaborativa]]  y [[Sol 13 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 14&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R14.thy Desarrollo de teorías axiomáticas] ([[R14 |Enunciado]], [[Relación 14 |Solución colaborativa]]  y [[Sol 14 | una solución]]).&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=1284</id>
		<title>Ejercicios</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=1284"/>
		<updated>2021-07-25T14:48:32Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se encuentran los ejercicios para resolver de manera colaborativa que complementan al [https://www.cs.us.es/~jalonso/cursos/lmf-19/ejercicios/ejercicios-LMF-2019-20.pdf libro de ejercicios].&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 1&amp;#039;&amp;#039;&amp;#039;: Sintaxis y semántica de la lógica proposicional. ([[R1 |Enunciado]], [[Relación 1 |Solución colaborativa]], [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R1_sol.pdf Una solución]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 2&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R2.thy Deducción natural proposicional con Isabelle] ([[R2 |Enunciado]], [[Relación 2 |Solución colaborativa]], [[Rel 2 |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 3&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R3.thy Deducción natural proposicional con Isabelle (II)] ([[R3 |Enunciado]], [[Relación 3 |Solución colaborativa]], [[Rel 3 |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 4&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R4.thy Sintaxis y semántica de la lógica de primer orden.] ([[R4 |Enunciado]], [[Relación 4 |Solución colaborativa]], [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R4_sol.pdf Una solución]).).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 5&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R5.thy Deducción natural en lógica de primer orden.] ([[R5 |Enunciado]], [[Relación 5 |Solución colaborativa]], [[Rel 5 |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 6&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R6.thy Formalización y argumentación con Isabelle/HOL.] ([[R6 |Enunciado]], [[Relación 6 |Solución colaborativa]] , [[Rel 6 |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R7.thy Deducción natural,formalización y argumentación en LPO con Isabelle/HOL.] ([[R7 |Enunciado]], [[Relación 7 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 8&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R8.thy Programación funcional en  Isabelle/HOL.] ([[R8 |Enunciado]], [[Relación 8 |Solución colaborativa]]).&lt;br /&gt;
** [[Rel 8 (rev 1) | Primera corrección]]&lt;br /&gt;
** [[Rel 8 (sol) | Una solución]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 9&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R9.thy Programación funcional en  Isabelle/HOL (II).] ([[R9 |Enunciado]], [[Relación 9 |Solución colaborativa]]).&lt;br /&gt;
** [[Rel 9 (rev 1) | Primera corrección]]&lt;br /&gt;
** [[Rel 9 (sol) | Una solución]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio 1 (24-04-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T1 |Enunciado]], [[T1 sol |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 10&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R10.thy Razonamiento sobre programas en Isabelle/HOL.] ([[R10 |Enunciado]], [[Relación 10 |Solución colaborativa]]).&lt;br /&gt;
** [[Rel 10 (sol) | Una solución]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 11&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R11.thy Razonamiento sobre programas en Isabelle/HOL(II).] ([[R11 |Enunciado]], [[Relación 11 |Solución colaborativa]]).&lt;br /&gt;
** [[Rel 11 (sol) | Una solución]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 12&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R12.thy Razonamiento sobre programas en Isabelle/HOL(III).] ([[R12 |Enunciado]], [[Relación 12 |Solución colaborativa]]).&lt;br /&gt;
** [[Rel 12 (sol) | Una solución]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio 2 (12-05-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T2 |Enunciado]], [[T2 sol |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 13&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R13.thy Recorridos de árboles.] ([[R13 |Enunciado]], [[Relación 13 |Solución colaborativa]]).&lt;br /&gt;
** [[Rel 13 (sol) | Una solución]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 14&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R14.thy Una axiomatización de la Geometría.] ([[R14 |Enunciado]], [[Relación 14 |Solución colaborativa]]).&lt;br /&gt;
** [[Rel 14 (sol) | Una solución]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio 3 (19-05-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T3 |Enunciado]], [[T3 sol |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 15&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R15.thy Definiciones inductivas: clausuras.] ([[R15 |Enunciado]], [[Relación 15 |Solución colaborativa]]).&lt;br /&gt;
** [[Rel 15 (sol) | Una solución]]&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio 4 (26-05-2020)&amp;#039;&amp;#039;&amp;#039;: ([[T4 |Enunciado]], [[T4 sol |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Ejercicio 5 (02-06-2020)&amp;#039;&amp;#039;&amp;#039;: &lt;br /&gt;
** ([[T5-1 |Enunciado (1)]], [[T5-1 sol |Una solución]]).&lt;br /&gt;
** ([[T5-2 |Enunciado (2)]], [[T5-2 sol |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Trabajo final&amp;#039;&amp;#039;&amp;#039;: ([[TF |Enunciado]], [[TF sol |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Examen (2-07-2020)&amp;#039;&amp;#039;&amp;#039;: ([[Examen 1C |Enunciado]], [[Examen 1C sol |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Examen (9-09-2020)&amp;#039;&amp;#039;&amp;#039;: ([[Examen 2C |Enunciado]], [[Examen 2C sol |Una solución]]).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039; Se pueden publicar las soluciones hasta el martes 31 de marzo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 2&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional. ([[R2 |Enunciado]] y [[Relación 2 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 3&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional (II). ([[R3 |Enunciado]] y [[Relación 3 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 4&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional con Isabelle ([[R4 |Enunciado]], [[Relación 4 |Solución colaborativa]] y [[Sol 4 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 5&amp;#039;&amp;#039;&amp;#039;: Sintaxis y semántica de la lógica de primer orden. ([[R5 |Enunciado]] y [[Relación 5 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 6&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R6.thy Deducción natural en lógica de primer orden con Isabelle] ([[R6 |Enunciado]], [[Relación  |Solución colaborativa]] y [[Sol 6 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R7.thy Deducción natural en lógica proposicional con Isabelle basada en tácticas] ([[R7 |Enunciado]], [[Relación 7 |Solución colaborativa]] y [[Sol 7 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7b&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica de primer orden con Isabelle basada en tácticas. ([[Sol 7b | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 8&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R8.thy Argumentación en lógica de primer orden con Isabelle.] ([[R8 |Enunciado]], [[Relación 8 |Solución colaborativa]] y [[Sol 8 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 9&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R9.thy Programación funcional en Isabelle] ([[R9 |Enunciado]], [[Relación 9 |Solución colaborativa]] y [[Sol 9 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 10&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R10.thy Programación funcional en Isabelle (2)] ([[R10 |Enunciado]], [[Relación 10 |Solución colaborativa]]  y [[Sol 10 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 11&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R11.thy Razonamiento sobre programas en Isabelle/HOL] ([[R11 |Enunciado]], [[Relación 11 |Solución colaborativa]]  y [[Sol 11 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 12&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R12.thy Recorridos de árboles en Isabelle/HOL] ([[R12 |Enunciado]], [[Relación 12 |Solución colaborativa]]  y [[Sol 12 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 13&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R13.thy Definiciones inductivas: clausuras] ([[R13 |Enunciado]], [[Relación 13 |Solución colaborativa]]  y [[Sol 13 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 14&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R14.thy Desarrollo de teorías axiomáticas] ([[R14 |Enunciado]], [[Relación 14 |Solución colaborativa]]  y [[Sol 14 | una solución]]).&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Rel_11_(sol)&amp;diff=1094</id>
		<title>Rel 11 (sol)</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Rel_11_(sol)&amp;diff=1094"/>
		<updated>2020-05-12T10:05:02Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
chapter ‹ R11: Razonamiento sobre programas en Isabelle/HOL (II)›&lt;br /&gt;
 &lt;br /&gt;
theory R11_sol&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
   En toda la relación de ejercicios las demostraciones han de realizarse&lt;br /&gt;
   de las formas siguientes:&lt;br /&gt;
    + automática&lt;br /&gt;
    + en el ejercicio 1.2, la prueba detallada usando &amp;quot;simp only:...&amp;quot;&lt;br /&gt;
      (bien de forma declarativa o aplicativa) &lt;br /&gt;
    + en los ejercicios 5, 6 y 7 sólo es necesario hacer la demostración &lt;br /&gt;
      detallada usando &amp;quot;simp&amp;quot;, sin llegar al detalle de usar &amp;quot;simp only:...&amp;quot;&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
    &lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1.1. Definir la función&lt;br /&gt;
    factR :: nat ⇒ nat&lt;br /&gt;
  tal que (factR n) es el factorial de n. Por ejemplo,&lt;br /&gt;
    factR 4 = 24&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
 &lt;br /&gt;
fun factR :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;factR 0       = 1&amp;quot;&lt;br /&gt;
| &amp;quot;factR (Suc n) = Suc n * factR n&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
value &amp;quot;factR 4&amp;quot; ― ‹= 24›&lt;br /&gt;
 &lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1.2. Se considera la siguiente definición iterativa de la&lt;br /&gt;
  función factorial &lt;br /&gt;
     factI :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
     factI n = factI&amp;#039; n 1&lt;br /&gt;
 &lt;br /&gt;
     factI&amp;#039; :: nat ⇒ nat ⇒ nat&amp;quot; where&lt;br /&gt;
     factI&amp;#039; 0       x = x&lt;br /&gt;
     factI&amp;#039; (Suc n) x = factI&amp;#039; n (Suc n)*x&lt;br /&gt;
  Demostrar que, para todo n y todo x, se tiene &lt;br /&gt;
     factI&amp;#039; n x = x * factR n&lt;br /&gt;
  ------------------------------------------------------------------- ›&lt;br /&gt;
 &lt;br /&gt;
fun factI&amp;#039; :: &amp;quot;nat ⇒ nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;factI&amp;#039; 0       x = x&amp;quot;&lt;br /&gt;
| &amp;quot;factI&amp;#039; (Suc n) x = factI&amp;#039; n (x* (Suc n))&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
fun factI :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;factI n = factI&amp;#039; n 1&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ― ‹Demostración automática:›&lt;br /&gt;
lemma &amp;quot;factI&amp;#039; n x = x * factR n&amp;quot;  &lt;br /&gt;
  by (induct n arbitrary: x) &lt;br /&gt;
    (auto simp del: mult_Suc)&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración en lenguaje natural:&lt;br /&gt;
Por inducción en n con x arbitrario, hay que probar &lt;br /&gt;
     ∀n. (∀x. factI&amp;#039; n x = x * factR n)&lt;br /&gt;
&lt;br /&gt;
+ Caso base:  hay que probar ∀x. factI&amp;#039; 0 x = x * factR 0&lt;br /&gt;
  En efecto, para cualquier x, se tiene factI&amp;#039; 0 x = x * factR 0,&lt;br /&gt;
  aplicando directamenta las definiciones de ambas funciones.&lt;br /&gt;
&lt;br /&gt;
+ Paso inductivo:&lt;br /&gt;
  + HI: ∀x. factI&amp;#039; n x = x * factR n&lt;br /&gt;
  + Hay que probar  ∀x. factI&amp;#039; (n+1) x = x * factR (n+1)&lt;br /&gt;
  En efecto, sea a cualquiera&lt;br /&gt;
     factI&amp;#039; (n+1) a       = (por def. de factI&amp;#039;)&lt;br /&gt;
     factI&amp;#039; n (a*(n+1))   = (por HI, para x = a*(n+1))&lt;br /&gt;
     (a*(n+1))*(factR n)  = (asociativa de *)&lt;br /&gt;
     a*((n+1)*(factR n))  = (def. de factR)&lt;br /&gt;
     a*(factR (n+1))&lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración estructurada:›&lt;br /&gt;
lemma &amp;quot;factI&amp;#039; n x = x * factR n&amp;quot;&lt;br /&gt;
proof (induct n arbitrary: x)&lt;br /&gt;
  show &amp;quot;⋀x. factI&amp;#039; 0 x = x * factR 0&amp;quot; by simp&lt;br /&gt;
next&lt;br /&gt;
  fix n&lt;br /&gt;
  assume HI: &amp;quot;⋀x. factI&amp;#039; n x = x * factR n&amp;quot;&lt;br /&gt;
  show &amp;quot;⋀x. factI&amp;#039; (Suc n) x = x * factR (Suc n)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    fix x&lt;br /&gt;
    have &amp;quot;factI&amp;#039; (Suc n) x = factI&amp;#039; n (x * Suc n)&amp;quot; by simp&lt;br /&gt;
    also have &amp;quot;... = (x * Suc n) * factR n&amp;quot; using HI by simp&lt;br /&gt;
    also have &amp;quot;... = x * (Suc n * factR n)&amp;quot; by (simp del: mult_Suc)&lt;br /&gt;
    also have &amp;quot;... = x * factR (Suc n)&amp;quot; by simp&lt;br /&gt;
    finally show &amp;quot;factI&amp;#039; (Suc n) x = x * factR (Suc n)&amp;quot; by simp&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración detallada declarativa:›     &lt;br /&gt;
lemma fact: &amp;quot;factI&amp;#039; n x = x * factR n&amp;quot;&lt;br /&gt;
proof (induct n arbitrary: x)&lt;br /&gt;
fix x&lt;br /&gt;
  have &amp;quot;factI&amp;#039; 0 x = x&amp;quot;&lt;br /&gt;
    by (simp only: factI&amp;#039;.simps(1))&lt;br /&gt;
  also have &amp;quot;... = x * 1&amp;quot;&lt;br /&gt;
    by (simp only: mult_1_right)&lt;br /&gt;
  also have &amp;quot;... = x * factR 0&amp;quot;&lt;br /&gt;
    by (simp only: factR.simps(1))&lt;br /&gt;
  finally show &amp;quot;factI&amp;#039; 0 x= x* factR 0&amp;quot;&lt;br /&gt;
    by this&lt;br /&gt;
next&lt;br /&gt;
  fix n &lt;br /&gt;
  assume HI: &amp;quot; ⋀x. factI&amp;#039; n x = x *factR n&amp;quot;&lt;br /&gt;
  show &amp;quot;⋀x. factI&amp;#039; (Suc n) x = x*factR (Suc n)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    fix x&lt;br /&gt;
    have &amp;quot;factI&amp;#039; (Suc n) x = factI&amp;#039; n (x*Suc n)&amp;quot;&lt;br /&gt;
      by (simp only: factI&amp;#039;.simps(2))&lt;br /&gt;
    also have &amp;quot;... = (x*Suc n)*factR n&amp;quot;&lt;br /&gt;
      by (simp only: HI)&lt;br /&gt;
    also have &amp;quot;... = x*(Suc n*factR n)&amp;quot;&lt;br /&gt;
      by (simp only: mult.assoc)&lt;br /&gt;
    also have &amp;quot;... = x*factR (Suc n)&amp;quot;&lt;br /&gt;
      by (simp only: factR.simps(2))&lt;br /&gt;
    finally show &amp;quot;factI&amp;#039; (Suc n) x= x*factR (Suc n)&amp;quot;&lt;br /&gt;
      by this&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración detallada aplicativa:›     &lt;br /&gt;
lemma  &amp;quot;factI&amp;#039; n x = x * factR n&amp;quot;&lt;br /&gt;
  apply (induct n arbitrary: x)&lt;br /&gt;
   apply (simp only: factI&amp;#039;.simps(1))&lt;br /&gt;
   apply (simp only: factR.simps(1)) &lt;br /&gt;
  apply  (simp only: factI&amp;#039;.simps(2))&lt;br /&gt;
  apply  (simp only: factR.simps(2))&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1.3. Demostrar que&lt;br /&gt;
     factI n = factR n&lt;br /&gt;
  ------------------------------------------------------------------- ›&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración automática:›&lt;br /&gt;
corollary &amp;quot;factI n = factR n&amp;quot;&lt;br /&gt;
  by (simp add: fact)&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración en lenguaje natural:&lt;br /&gt;
&lt;br /&gt;
   factI n        = (def. de factI)&lt;br /&gt;
   factI&amp;#039; n 1     = (lema fact)&lt;br /&gt;
   1 * (factR n)  = (1 es elemento neutro de *)&lt;br /&gt;
   factR n&lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración estructurada:›&lt;br /&gt;
corollary &amp;quot;factI n = factR n&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;factI n = factI&amp;#039; n 1&amp;quot;&lt;br /&gt;
    by simp&lt;br /&gt;
  also have &amp;quot;… = 1 * factR n&amp;quot;&lt;br /&gt;
    by (simp add: fact)&lt;br /&gt;
  also have &amp;quot;… = factR n&amp;quot;&lt;br /&gt;
    by simp &lt;br /&gt;
  finally show &amp;quot;factI n = factR n&amp;quot;&lt;br /&gt;
    by this&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración detallada declarativa:›&lt;br /&gt;
corollary &amp;quot;factI n = factR n&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;factI n = factI&amp;#039; n 1&amp;quot;&lt;br /&gt;
    by (simp only: factI.simps)&lt;br /&gt;
  also have &amp;quot;… = 1 * factR n&amp;quot;&lt;br /&gt;
    by (simp only: fact)&lt;br /&gt;
  also have &amp;quot;… = factR n&amp;quot;&lt;br /&gt;
    by (simp only: nat_mult_1)&lt;br /&gt;
  finally show &amp;quot;factI n = factR n&amp;quot;&lt;br /&gt;
    by this&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 text ‹&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Definir la función&lt;br /&gt;
     estaEn :: &amp;#039;a ⇒ &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (estaEn x xs) se verifica si el elemento x está en la lista&lt;br /&gt;
  xs. Por ejemplo, &lt;br /&gt;
     estaEn (2::nat) [3,2,4] = True&lt;br /&gt;
     estaEn (1::nat) [3,2,4] = False&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
fun estaEn :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;estaEn x []     = False&amp;quot;&lt;br /&gt;
| &amp;quot;estaEn x (a#xs) = (x=a ∨ estaEn x xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
text ‹ &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Definir la función&lt;br /&gt;
     sinDuplicados :: &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (sinDuplicados xs) se verifica si la lista xs no contiene&lt;br /&gt;
  duplicados. Por ejemplo,  &lt;br /&gt;
     sinDuplicados [1::nat,4,2]   = True&lt;br /&gt;
     sinDuplicados [1::nat,4,2,4] = False&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
fun sinDuplicados :: &amp;quot;&amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;sinDuplicados []     = True&amp;quot;&lt;br /&gt;
| &amp;quot;sinDuplicados (a#xs) = ((¬ estaEn a xs) ∧ sinDuplicados xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
text ‹ &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Definir la función&lt;br /&gt;
     borraDuplicados :: &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (borraDuplicados xs) es la lista obtenida eliminando los&lt;br /&gt;
  elementos duplicados de la lista xs. Por ejemplo, &lt;br /&gt;
     borraDuplicados [1::nat,2,4,2,3] = [1,4,2,3]&lt;br /&gt;
&lt;br /&gt;
  Nota: La función borraDuplicados es equivalente a la predefinida &lt;br /&gt;
  remdups. &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fun borraDuplicados :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;borraDuplicados []     = []&amp;quot;&lt;br /&gt;
| &amp;quot;borraDuplicados (a#xs) = (if estaEn a xs&lt;br /&gt;
                             then borraDuplicados xs&lt;br /&gt;
                             else (a#borraDuplicados xs))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Demostrar o refutar&lt;br /&gt;
     length (borraDuplicados xs) ≤ length xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración automática:›&lt;br /&gt;
lemma &amp;quot;length (borraDuplicados xs) ≤ length xs&amp;quot;&lt;br /&gt;
  by (induct xs) simp_all&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración en lenguaje natural:&lt;br /&gt;
Por inducción en xs.&lt;br /&gt;
&lt;br /&gt;
+ Caso base: &lt;br /&gt;
    length (borraDuplicados [])  ≤ length [], directamente por las definciones.&lt;br /&gt;
&lt;br /&gt;
+ Paso inductivo: &lt;br /&gt;
  + HI: length (borraDuplicados xs) ≤ length xs&lt;br /&gt;
  + Hay que probar: length (borraDuplicados (a#xs)) ≤ length (a#xs)&lt;br /&gt;
    La demostración se realiza por casos:&lt;br /&gt;
&lt;br /&gt;
    + Caso 1: estaEn a xs&lt;br /&gt;
      En este caso, por la definición de borraDuplicados, &lt;br /&gt;
      borraDuplicados (a#xs) = borraDuplicados xs. Por tanto,&lt;br /&gt;
      length (borraDuplicados (a#xs)) = (def. de borraDuplicados)&lt;br /&gt;
      length (borraDuplicados xs)     ≤ (por HI)&lt;br /&gt;
      length xs                       ≤ (aritmética)&lt;br /&gt;
      1 + length xs                   = (por def. de length)&lt;br /&gt;
      length (a#xs)    &lt;br /&gt;
              &lt;br /&gt;
    + Caso 2: ¬ (estaEn a xs)&lt;br /&gt;
      En este caso, por la definición de borraDuplicados, &lt;br /&gt;
      borraDuplicados (a#xs) = a#(borraDuplicados xs). Por tanto,&lt;br /&gt;
      length (borraDuplicados (a#xs)) = (def. de borraDuplicados)&lt;br /&gt;
      length (a#(borraDuplicados xs)) = (def. de length)&lt;br /&gt;
      1 + length (borraDuplicados xs) ≤ (por HI)&lt;br /&gt;
      1 + length xs                   = (por def. de length)&lt;br /&gt;
      length (a#xs)                  &lt;br /&gt;
&lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración estructurada:›&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
&amp;quot;length (borraDuplicados xs) ≤ length xs&amp;quot;&lt;br /&gt;
proof (induct xs)&lt;br /&gt;
  show &amp;quot;length (borraDuplicados [])  ≤ length []&amp;quot; by simp&lt;br /&gt;
next&lt;br /&gt;
  fix a xs&lt;br /&gt;
  assume HI: &amp;quot;length (borraDuplicados (xs :: &amp;#039;a list)) ≤ length xs&amp;quot;&lt;br /&gt;
  thus &amp;quot;length (borraDuplicados (a#xs)) ≤ length (a#xs)&amp;quot;&lt;br /&gt;
  proof (cases)&lt;br /&gt;
    assume &amp;quot;estaEn a xs&amp;quot;&lt;br /&gt;
    thus &amp;quot;length (borraDuplicados (a#xs)) ≤ length (a#xs)&amp;quot;&lt;br /&gt;
      using HI by simp&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;(¬ estaEn a xs)&amp;quot;&lt;br /&gt;
    thus &amp;quot;length (borraDuplicados (a#xs)) ≤ length (a#xs)&amp;quot;&lt;br /&gt;
      using HI by simp&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ― ‹Auxiliares para la demostración detallada:›&lt;br /&gt;
lemma estaEnBD1:&lt;br /&gt;
  assumes &amp;quot;estaEn b xs&amp;quot;&lt;br /&gt;
  shows &amp;quot;borraDuplicados (b#xs) = borraDuplicados xs&amp;quot; &lt;br /&gt;
  using assms by (simp only:borraDuplicados.simps(2) if_P)&lt;br /&gt;
&lt;br /&gt;
lemma estaEnBD2:&lt;br /&gt;
  assumes &amp;quot;¬ (estaEn b xs)&amp;quot;&lt;br /&gt;
  shows &amp;quot;borraDuplicados (b#xs) = b#(borraDuplicados xs)&amp;quot; &lt;br /&gt;
proof-&lt;br /&gt;
 have  &amp;quot;borraDuplicados (b#xs) =  (if estaEn b xs &lt;br /&gt;
                             then borraDuplicados xs&lt;br /&gt;
                             else (b#borraDuplicados xs))&amp;quot; &lt;br /&gt;
   by (simp only: borraDuplicados.simps(2))&lt;br /&gt;
  also have &amp;quot;…= (b#borraDuplicados xs)&amp;quot; using assms by (rule if_not_P)&lt;br /&gt;
  finally show &amp;quot;borraDuplicados (b # xs) = b # borraDuplicados xs&amp;quot; by this&lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración detallada declarativa:›&lt;br /&gt;
lemma length_borraDuplicados_d:&lt;br /&gt;
&amp;quot;length (borraDuplicados xs) ≤ length xs&amp;quot;&lt;br /&gt;
proof (induct xs)&lt;br /&gt;
  show &amp;quot;length (borraDuplicados []) ≤ length []&amp;quot; &lt;br /&gt;
    by (simp only: borraDuplicados.simps(1) list.size)&lt;br /&gt;
next&lt;br /&gt;
  fix a xs&lt;br /&gt;
  assume HI: &amp;quot;length (borraDuplicados (xs :: &amp;#039;a list)) ≤ length xs&amp;quot;&lt;br /&gt;
  show &amp;quot;length (borraDuplicados (a#xs)) ≤ length (a#xs)&amp;quot;&lt;br /&gt;
  proof (cases)&lt;br /&gt;
    assume &amp;quot;estaEn a xs&amp;quot;&lt;br /&gt;
    then have &amp;quot;borraDuplicados (a#xs) = borraDuplicados xs&amp;quot; by (rule estaEnBD1)&lt;br /&gt;
    then have &amp;quot;length (borraDuplicados (a#xs)) = length (borraDuplicados xs)&amp;quot;&lt;br /&gt;
      by (rule arg_cong)&lt;br /&gt;
    also have &amp;quot;... ≤ length xs&amp;quot; using HI by this&lt;br /&gt;
    also have &amp;quot;... ≤ length (a#xs)&amp;quot; by (simp only: list.size)&lt;br /&gt;
    finally show ?thesis by this&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;(¬ estaEn a xs)&amp;quot;&lt;br /&gt;
    then have &amp;quot;borraDuplicados (a#xs) = a#(borraDuplicados xs)&amp;quot;&lt;br /&gt;
      by (rule estaEnBD2)&lt;br /&gt;
    then have &amp;quot;length (borraDuplicados (a#xs)) = length (a#(borraDuplicados xs))&amp;quot;&lt;br /&gt;
      by (rule arg_cong)&lt;br /&gt;
    also have &amp;quot;... = 1 + length (borraDuplicados xs)&amp;quot; by (simp only: list.size)&lt;br /&gt;
    also have &amp;quot;... ≤ 1 + length xs&amp;quot; using HI by (simp only: add_left_mono)&lt;br /&gt;
    also have &amp;quot;... = length (a#xs)&amp;quot; by (simp only: list.size)&lt;br /&gt;
    finally show ?thesis  by this&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración aplicativa detallada:›&lt;br /&gt;
lemma length_borraDuplicados_a:&lt;br /&gt;
&amp;quot;length (borraDuplicados xs) ≤ length xs&amp;quot;&lt;br /&gt;
  apply (induct xs)&lt;br /&gt;
   apply (simp only: borraDuplicados.simps(1) list.size)&lt;br /&gt;
  apply (simp only: borraDuplicados.simps(2))&lt;br /&gt;
  apply(split if_split)&lt;br /&gt;
  apply (rule conjI)&lt;br /&gt;
  apply (rule impI)&lt;br /&gt;
   apply (drule estaEnBD1)&lt;br /&gt;
   apply (simp only:list.size)&lt;br /&gt;
   apply (rule impI)&lt;br /&gt;
   apply (drule estaEnBD2)&lt;br /&gt;
   apply (simp only:list.size)&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
text ‹&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Demostrar o refutar&lt;br /&gt;
     estaEn a (borraDuplicados xs) = estaEn a xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración automática:›&lt;br /&gt;
lemma &amp;quot;estaEn a (borraDuplicados xs) = estaEn a xs&amp;quot;&lt;br /&gt;
  by (induct xs) auto&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración en lenguaje natural:&lt;br /&gt;
Por inducción en xs.&lt;br /&gt;
&lt;br /&gt;
+ Caso base: &lt;br /&gt;
     estaEn a (borraDuplicados []) = estaEn a [], directamente por las definiciones.&lt;br /&gt;
&lt;br /&gt;
+ Paso inductivo:&lt;br /&gt;
  + HI: estaEn a (borraDuplicados xs) = estaEn a xs&lt;br /&gt;
  + Hay que probar: estaEn a (borraDuplicados (b#xs)) = estaEn a (b#xs).&lt;br /&gt;
    La demostración se realiza por casos.&lt;br /&gt;
    &lt;br /&gt;
    + Caso 1: estaEn b xs&lt;br /&gt;
      En este caso, por la definición de borraDuplicados, &lt;br /&gt;
      borraDuplicados (b#xs) = borraDuplicados xs. Por tanto,&lt;br /&gt;
      estaEn a (borraDuplicados (b#xs))    = (def. de borraDuplicados)&lt;br /&gt;
      estaEn a (borraDuplicados xs)        = (por HI)&lt;br /&gt;
      estaEn a xs                          = (por (estaEn b xs))&lt;br /&gt;
      estaEn a (b#xs)&lt;br /&gt;
           &lt;br /&gt;
    + Caso 2: ¬ (estaEn b xs)&lt;br /&gt;
      En este caso, por la definición de borraDuplicados, &lt;br /&gt;
      borraDuplicados (b#xs) = b # (borraDuplicados xs). Por tanto,&lt;br /&gt;
      estaEn a (borraDuplicados (b#xs))        = (def. de borraDuplicados)&lt;br /&gt;
      estaEn a ( b # (borraDuplicados xs))     = (def. de estaEn)&lt;br /&gt;
      (a = b) ∨ (estaEn a (borraDuplicados xs) = (por HI)&lt;br /&gt;
      (a = b) ∨ (estaEn a xs                  = (def. de estaEn)&lt;br /&gt;
      estaEn a (b#xs)&lt;br /&gt;
›    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración estructurada:›&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;estaEn a (borraDuplicados xs) = estaEn a xs&amp;quot;&lt;br /&gt;
proof (induct xs)&lt;br /&gt;
  show &amp;quot;estaEn a (borraDuplicados []) = estaEn a []&amp;quot; by simp&lt;br /&gt;
next&lt;br /&gt;
  fix b xs&lt;br /&gt;
  assume HI: &amp;quot;estaEn a (borraDuplicados xs) = estaEn a xs&amp;quot;&lt;br /&gt;
  show &amp;quot;estaEn a (borraDuplicados (b#xs)) = estaEn a (b#xs)&amp;quot; &lt;br /&gt;
  proof  (cases)&lt;br /&gt;
    assume &amp;quot;estaEn b xs&amp;quot;&lt;br /&gt;
    then have &amp;quot;borraDuplicados (b#xs) = borraDuplicados xs&amp;quot; by (rule estaEnBD1)&lt;br /&gt;
    then have &amp;quot;estaEn a (borraDuplicados (b#xs)) = &lt;br /&gt;
               estaEn a (borraDuplicados xs)&amp;quot; by (rule arg_cong)&lt;br /&gt;
    also have &amp;quot;… = estaEn a xs&amp;quot; using HI by this&lt;br /&gt;
    also have &amp;quot;… = estaEn a (b#xs)&amp;quot; using ‹estaEn b xs› by auto&lt;br /&gt;
    finally show ?thesis by this&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot; ¬ estaEn b xs&amp;quot;&lt;br /&gt;
    then have &amp;quot;borraDuplicados (b#xs) = b#(borraDuplicados xs)&amp;quot; by (rule estaEnBD2)&lt;br /&gt;
    then have &amp;quot;estaEn a (borraDuplicados (b#xs)) = &lt;br /&gt;
               estaEn a (b#(borraDuplicados xs))&amp;quot; by (rule arg_cong)&lt;br /&gt;
    also have &amp;quot;… = ((a = b) ∨ (estaEn a (borraDuplicados xs)))&amp;quot;&lt;br /&gt;
      by (simp only: estaEn.simps(2))&lt;br /&gt;
    also have &amp;quot;… =  ((a = b) ∨ (estaEn a  xs))&amp;quot; using HI by simp&lt;br /&gt;
    also have &amp;quot;… = estaEn a (b#xs)&amp;quot; by (simp only: estaEn.simps(2))&lt;br /&gt;
    finally show ?thesis by this&lt;br /&gt;
  qed&lt;br /&gt;
  qed&lt;br /&gt;
&lt;br /&gt;
 ― ‹Auxiliar:›&lt;br /&gt;
&lt;br /&gt;
lemma estaEnCons:&lt;br /&gt;
  assumes &amp;quot;estaEn b xs&amp;quot;&lt;br /&gt;
  shows &amp;quot;estaEn a xs = estaEn a (b#xs)&amp;quot; &lt;br /&gt;
proof (rule iffI)&lt;br /&gt;
  assume &amp;quot; estaEn a xs &amp;quot; &lt;br /&gt;
  then have &amp;quot;((a = b) ∨ (estaEn a xs))&amp;quot; by (rule disjI2)&lt;br /&gt;
  then show &amp;quot;estaEn a (b # xs)&amp;quot; by (simp only:estaEn.simps(2))&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;estaEn a (b # xs)&amp;quot; &lt;br /&gt;
   then have &amp;quot;((a = b) ∨ (estaEn a xs))&amp;quot; by (simp only:estaEn.simps(2))&lt;br /&gt;
   then show  &amp;quot;estaEn a xs&amp;quot; &lt;br /&gt;
   proof&lt;br /&gt;
     assume &amp;quot;a = b&amp;quot; then show &amp;quot;estaEn a xs&amp;quot; using assms by (rule ssubst)&lt;br /&gt;
   next &lt;br /&gt;
     assume &amp;quot;estaEn a xs&amp;quot; then show  &amp;quot;estaEn a xs&amp;quot; by this&lt;br /&gt;
   qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración detallada declarativa:›&lt;br /&gt;
lemma estaEn_borraDuplicados_d:&lt;br /&gt;
  &amp;quot;estaEn a (borraDuplicados xs) = estaEn a xs&amp;quot;&lt;br /&gt;
proof (induct xs)&lt;br /&gt;
  show &amp;quot;estaEn a (borraDuplicados []) = estaEn a []&amp;quot; &lt;br /&gt;
    by (simp only:borraDuplicados.simps(1))&lt;br /&gt;
next&lt;br /&gt;
  fix b xs&lt;br /&gt;
  assume HI: &amp;quot;estaEn a (borraDuplicados xs) = estaEn a xs&amp;quot;&lt;br /&gt;
  show &amp;quot;estaEn a (borraDuplicados (b#xs)) = estaEn a (b#xs)&amp;quot; &lt;br /&gt;
  proof  (cases)&lt;br /&gt;
    assume &amp;quot;estaEn b xs&amp;quot;&lt;br /&gt;
    then have &amp;quot;borraDuplicados (b#xs) = borraDuplicados xs&amp;quot; by (rule estaEnBD1)&lt;br /&gt;
    then have &amp;quot;estaEn a (borraDuplicados (b#xs)) = &lt;br /&gt;
               estaEn a (borraDuplicados xs)&amp;quot; by (rule arg_cong)&lt;br /&gt;
    also have &amp;quot;… = estaEn a xs&amp;quot; using HI by this&lt;br /&gt;
    also have &amp;quot;… = estaEn a (b#xs)&amp;quot; using ‹estaEn b xs› by (rule  estaEnCons)&lt;br /&gt;
    finally show ?thesis by this&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot; ¬ estaEn b xs&amp;quot;&lt;br /&gt;
    then have &amp;quot;borraDuplicados (b#xs) = b#(borraDuplicados xs)&amp;quot; by (rule estaEnBD2)&lt;br /&gt;
    then have &amp;quot;estaEn a (borraDuplicados (b#xs)) = &lt;br /&gt;
               estaEn a (b#(borraDuplicados xs))&amp;quot; by (rule arg_cong)&lt;br /&gt;
    also have &amp;quot;… = ((a = b) ∨ (estaEn a (borraDuplicados xs)))&amp;quot;&lt;br /&gt;
      by (simp only: estaEn.simps(2))&lt;br /&gt;
    also have &amp;quot;… =  ((a = b) ∨ (estaEn a  xs))&amp;quot; using HI by simp&lt;br /&gt;
    also have &amp;quot;… = estaEn a (b#xs)&amp;quot; by (simp only: estaEn.simps(2))&lt;br /&gt;
    finally show ?thesis by this&lt;br /&gt;
  qed&lt;br /&gt;
  qed&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración detallada aplicativa:›&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;estaEn a (borraDuplicados xs) = estaEn a xs&amp;quot;&lt;br /&gt;
  apply (induct xs)&lt;br /&gt;
   apply (simp only: borraDuplicados.simps(1))&lt;br /&gt;
    apply (simp only: borraDuplicados.simps(2))&lt;br /&gt;
  apply(split if_split)&lt;br /&gt;
  apply (rule conjI)&lt;br /&gt;
   apply (rule impI) &lt;br /&gt;
   apply (simp only: estaEnCons)&lt;br /&gt;
  apply (rule impI) &lt;br /&gt;
  apply (simp only: estaEn.simps(2))&lt;br /&gt;
  done&lt;br /&gt;
                    &lt;br /&gt;
&lt;br /&gt;
text ‹&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Demostrar o refutar&lt;br /&gt;
     sinDuplicados (borraDuplicados xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración automática:›&lt;br /&gt;
lemma &amp;quot;sinDuplicados (borraDuplicados xs)&amp;quot;&lt;br /&gt;
  by (induct xs) &lt;br /&gt;
    (auto simp add: estaEn_borraDuplicados_d)&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración en lenguaje natural:&lt;br /&gt;
Por inducción en xs.&lt;br /&gt;
&lt;br /&gt;
+ Caso base: &lt;br /&gt;
   sinDuplicados (borraDuplicados []), directamente por las definiciones.&lt;br /&gt;
&lt;br /&gt;
+ Paso inductivo:&lt;br /&gt;
  + HI: sinDuplicados (borraDuplicados xs)&lt;br /&gt;
  + Hay que probar: sinDuplicados (borraDuplicados (a#xs))&lt;br /&gt;
       La demostración se realiza por casos.&lt;br /&gt;
    &lt;br /&gt;
    + Caso 1: estaEn a xs&lt;br /&gt;
      En este caso, por la definición de borraDuplicados, &lt;br /&gt;
      borraDuplicados (a#xs) = borraDuplicados xs. Por tanto,&lt;br /&gt;
      sinDuplicados (borraDuplicados (a#xs)) = (def.de borraDuplicados)&lt;br /&gt;
      sinDuplicados  (borraDuplicados xs)     (cierto, por HI)&lt;br /&gt;
    &lt;br /&gt;
    + Caso 2: ¬ (estaEn a xs)&lt;br /&gt;
      En este caso, por la definición de borraDuplicados, &lt;br /&gt;
      borraDuplicados (a#xs) = a # (borraDuplicados xs). Por tanto,&lt;br /&gt;
      sinDuplicados (borraDuplicados (a#xs))     = (def. de borraDuplicados)  &lt;br /&gt;
      sinDuplicados (a#(borraDuplicados xs))     = (def. de sinDuplicados)&lt;br /&gt;
      ((¬ estaEn a (borraDuplicados xs)) ∧ &lt;br /&gt;
       sinDuplicados (borraDuplicados xs))       = (por hI)&lt;br /&gt;
      ¬ estaEn a (borraDuplicados xs)            (cierto por la hipótesis del &lt;br /&gt;
                                                  caso 2 y el ejercicio 6)   &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración estructurada:›&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;sinDuplicados (borraDuplicados xs)&amp;quot;&lt;br /&gt;
proof (induct xs)&lt;br /&gt;
  show &amp;quot;sinDuplicados (borraDuplicados [])&amp;quot; by simp&lt;br /&gt;
next&lt;br /&gt;
  fix a xs&lt;br /&gt;
  assume HI: &amp;quot;sinDuplicados (borraDuplicados (xs :: &amp;#039;a list))&amp;quot;&lt;br /&gt;
  show &amp;quot;sinDuplicados (borraDuplicados (a#xs))&amp;quot;&lt;br /&gt;
  proof (cases)&lt;br /&gt;
    assume &amp;quot;estaEn a xs&amp;quot;&lt;br /&gt;
    thus &amp;quot;sinDuplicados (borraDuplicados (a#xs))&amp;quot; using HI by simp&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;¬ estaEn a xs&amp;quot;&lt;br /&gt;
    thus &amp;quot;sinDuplicados (borraDuplicados (a#xs))&amp;quot;&lt;br /&gt;
      using `¬ estaEn a xs` HI by (auto simp add: estaEn_borraDuplicados_d)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración detallada declarativa:›&lt;br /&gt;
lemma sinDuplicados_borraDuplicados_d:&lt;br /&gt;
  &amp;quot;sinDuplicados (borraDuplicados xs)&amp;quot;&lt;br /&gt;
proof (induct xs)&lt;br /&gt;
  show &amp;quot;sinDuplicados (borraDuplicados [])&amp;quot; &lt;br /&gt;
    by (simp only: borraDuplicados.simps(1) &lt;br /&gt;
                   sinDuplicados.simps(1))&lt;br /&gt;
next&lt;br /&gt;
  fix a xs&lt;br /&gt;
  assume HI: &amp;quot;sinDuplicados (borraDuplicados (xs:: &amp;#039;a list))&amp;quot;&lt;br /&gt;
  show &amp;quot;sinDuplicados (borraDuplicados (a#xs))&amp;quot;&lt;br /&gt;
  proof (cases)&lt;br /&gt;
    assume &amp;quot;estaEn a xs&amp;quot;&lt;br /&gt;
    then have &amp;quot;borraDuplicados (a#xs) = borraDuplicados xs&amp;quot; &lt;br /&gt;
      by (rule estaEnBD1)&lt;br /&gt;
    then show &amp;quot;sinDuplicados (borraDuplicados (a#xs))&amp;quot; using HI &lt;br /&gt;
      by (rule ssubst)&lt;br /&gt;
  next&lt;br /&gt;
    assume 1: &amp;quot;¬ estaEn a xs&amp;quot;&lt;br /&gt;
     then have 2: &amp;quot;borraDuplicados (a#xs) = a#(borraDuplicados xs)&amp;quot; &lt;br /&gt;
       by (rule estaEnBD2)&lt;br /&gt;
     have &amp;quot;¬ estaEn a (borraDuplicados xs)&amp;quot; using 1&lt;br /&gt;
       by  (simp add: estaEn_borraDuplicados_d)&lt;br /&gt;
     then have &amp;quot;¬ (estaEn a (borraDuplicados xs)) &lt;br /&gt;
                   ∧ sinDuplicados (borraDuplicados xs)&amp;quot;&lt;br /&gt;
       using HI by (rule conjI)&lt;br /&gt;
     then have &amp;quot;sinDuplicados (a#(borraDuplicados xs))&amp;quot; &lt;br /&gt;
       by (simp only: sinDuplicados.simps(2)[THEN sym])  &lt;br /&gt;
     with 2 show  &amp;quot;sinDuplicados (borraDuplicados (a#xs))&amp;quot; &lt;br /&gt;
       by (rule ssubst)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text ‹&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Demostrar o refutar:&lt;br /&gt;
    borraDuplicados (rev xs) = rev (borraDuplicados xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;borraDuplicados (rev xs) = rev (borraDuplicados xs)&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
(*&lt;br /&gt;
Auto Quickcheck found a counterexample:&lt;br /&gt;
  xs = [a⇩1, a⇩2, a⇩1]&lt;br /&gt;
Evaluated terms:&lt;br /&gt;
  borraDuplicados (rev xs) = [a⇩2, a⇩1]&lt;br /&gt;
  rev (borraDuplicados xs) = [a⇩1, a⇩2]&lt;br /&gt;
*)&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Rel_11_(sol)&amp;diff=1093</id>
		<title>Rel 11 (sol)</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Rel_11_(sol)&amp;diff=1093"/>
		<updated>2020-05-12T10:04:21Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
chapter ‹ R11: Razonamiento sobre programas en Isabelle/HOL (II)›&lt;br /&gt;
 &lt;br /&gt;
theory R11_sol&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
   En toda la relación de ejercicios las demostraciones han de realizarse&lt;br /&gt;
   de las formas siguientes:&lt;br /&gt;
    + automática&lt;br /&gt;
    + en el ejercicio 1.2, la prueba detallada usando &amp;quot;simp only:...&amp;quot;&lt;br /&gt;
      (bien de forma declarativa o aplicativa) &lt;br /&gt;
    + en los ejercicios 5, 6 y 7 sólo es necesario hacer la demostración &lt;br /&gt;
      detallada usando &amp;quot;simp&amp;quot;, sin llegar al detalle de usar &amp;quot;simp only:...&amp;quot;&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
    &lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1.1. Definir la función&lt;br /&gt;
    factR :: nat ⇒ nat&lt;br /&gt;
  tal que (factR n) es el factorial de n. Por ejemplo,&lt;br /&gt;
    factR 4 = 24&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
 &lt;br /&gt;
fun factR :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;factR 0       = 1&amp;quot;&lt;br /&gt;
| &amp;quot;factR (Suc n) = Suc n * factR n&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
value &amp;quot;factR 4&amp;quot; ― ‹= 24›&lt;br /&gt;
 &lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1.2. Se considera la siguiente definición iterativa de la&lt;br /&gt;
  función factorial &lt;br /&gt;
     factI :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
     factI n = factI&amp;#039; n 1&lt;br /&gt;
 &lt;br /&gt;
     factI&amp;#039; :: nat ⇒ nat ⇒ nat&amp;quot; where&lt;br /&gt;
     factI&amp;#039; 0       x = x&lt;br /&gt;
     factI&amp;#039; (Suc n) x = factI&amp;#039; n (Suc n)*x&lt;br /&gt;
  Demostrar que, para todo n y todo x, se tiene &lt;br /&gt;
     factI&amp;#039; n x = x * factR n&lt;br /&gt;
  ------------------------------------------------------------------- ›&lt;br /&gt;
 &lt;br /&gt;
fun factI&amp;#039; :: &amp;quot;nat ⇒ nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;factI&amp;#039; 0       x = x&amp;quot;&lt;br /&gt;
| &amp;quot;factI&amp;#039; (Suc n) x = factI&amp;#039; n (x* (Suc n))&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
fun factI :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;factI n = factI&amp;#039; n 1&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 ― ‹Demostración automática:›&lt;br /&gt;
lemma &amp;quot;factI&amp;#039; n x = x * factR n&amp;quot;  &lt;br /&gt;
  by (induct n arbitrary: x) &lt;br /&gt;
    (auto simp del: mult_Suc)&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración en lenguaje natural:&lt;br /&gt;
Por inducción en n con x arbitrario, hay que probar &lt;br /&gt;
     ∀n. (∀x. factI&amp;#039; n x = x * factR n)&lt;br /&gt;
&lt;br /&gt;
+ Caso base:  hay que probar ∀x. factI&amp;#039; 0 x = x * factR 0&lt;br /&gt;
  En efecto, para cualquier x, se tiene factI&amp;#039; 0 x = x * factR 0,&lt;br /&gt;
  aplicando directamenta las definiciones de ambas funciones.&lt;br /&gt;
&lt;br /&gt;
+ Paso inductivo:&lt;br /&gt;
  + HI: ∀x. factI&amp;#039; n x = x * factR n&lt;br /&gt;
  + Hay que probar  ∀x. factI&amp;#039; (n+1) x = x * factR (n+1)&lt;br /&gt;
  En efecto, sea a cualquiera&lt;br /&gt;
     factI&amp;#039; (n+1) a       = (por def. de factI&amp;#039;)&lt;br /&gt;
     factI&amp;#039; n (a*(n+1))   = (por HI, para x = a*(n+1))&lt;br /&gt;
     (a*(n+1))*(factR n)  = (asociativa de *)&lt;br /&gt;
     a*((n+1)*(factR n))  = (def. de factR)&lt;br /&gt;
     a*(factR (n+1))&lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración estructurada:›&lt;br /&gt;
lemma &amp;quot;factI&amp;#039; n x = x * factR n&amp;quot;&lt;br /&gt;
proof (induct n arbitrary: x)&lt;br /&gt;
  show &amp;quot;⋀x. factI&amp;#039; 0 x = x * factR 0&amp;quot; by simp&lt;br /&gt;
next&lt;br /&gt;
  fix n&lt;br /&gt;
  assume HI: &amp;quot;⋀x. factI&amp;#039; n x = x * factR n&amp;quot;&lt;br /&gt;
  show &amp;quot;⋀x. factI&amp;#039; (Suc n) x = x * factR (Suc n)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    fix x&lt;br /&gt;
    have &amp;quot;factI&amp;#039; (Suc n) x = factI&amp;#039; n (x * Suc n)&amp;quot; by simp&lt;br /&gt;
    also have &amp;quot;... = (x * Suc n) * factR n&amp;quot; using HI by simp&lt;br /&gt;
    also have &amp;quot;... = x * (Suc n * factR n)&amp;quot; by (simp del: mult_Suc)&lt;br /&gt;
    also have &amp;quot;... = x * factR (Suc n)&amp;quot; by simp&lt;br /&gt;
    finally show &amp;quot;factI&amp;#039; (Suc n) x = x * factR (Suc n)&amp;quot; by simp&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración detallada declarativa:›     &lt;br /&gt;
lemma fact: &amp;quot;factI&amp;#039; n x = x * factR n&amp;quot;&lt;br /&gt;
proof (induct n arbitrary: x)&lt;br /&gt;
fix x&lt;br /&gt;
  have &amp;quot;factI&amp;#039; 0 x = x&amp;quot;&lt;br /&gt;
    by (simp only: factI&amp;#039;.simps(1))&lt;br /&gt;
  also have &amp;quot;... = x * 1&amp;quot;&lt;br /&gt;
    by (simp only: mult_1_right)&lt;br /&gt;
  also have &amp;quot;... = x * factR 0&amp;quot;&lt;br /&gt;
    by (simp only: factR.simps(1))&lt;br /&gt;
  finally show &amp;quot;factI&amp;#039; 0 x= x* factR 0&amp;quot;&lt;br /&gt;
    by this&lt;br /&gt;
next&lt;br /&gt;
  fix n &lt;br /&gt;
  assume HI: &amp;quot; ⋀x. factI&amp;#039; n x = x *factR n&amp;quot;&lt;br /&gt;
  show &amp;quot;⋀x. factI&amp;#039; (Suc n) x = x*factR (Suc n)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    fix x&lt;br /&gt;
    have &amp;quot;factI&amp;#039; (Suc n) x = factI&amp;#039; n (x*Suc n)&amp;quot;&lt;br /&gt;
      by (simp only: factI&amp;#039;.simps(2))&lt;br /&gt;
    also have &amp;quot;... = (x*Suc n)*factR n&amp;quot;&lt;br /&gt;
      by (simp only: HI)&lt;br /&gt;
    also have &amp;quot;... = x*(Suc n*factR n)&amp;quot;&lt;br /&gt;
      by (simp only: mult.assoc)&lt;br /&gt;
    also have &amp;quot;... = x*factR (Suc n)&amp;quot;&lt;br /&gt;
      by (simp only: factR.simps(2))&lt;br /&gt;
    finally show &amp;quot;factI&amp;#039; (Suc n) x= x*factR (Suc n)&amp;quot;&lt;br /&gt;
      by this&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración detallada aplicativa:›     &lt;br /&gt;
lemma  &amp;quot;factI&amp;#039; n x = x * factR n&amp;quot;&lt;br /&gt;
  apply (induct n arbitrary: x)&lt;br /&gt;
   apply (simp only: factI&amp;#039;.simps(1))&lt;br /&gt;
   apply (simp only: factR.simps(1)) &lt;br /&gt;
  apply  (simp only: factI&amp;#039;.simps(2))&lt;br /&gt;
  apply  (simp only: factR.simps(2))&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1.3. Demostrar que&lt;br /&gt;
     factI n = factR n&lt;br /&gt;
  ------------------------------------------------------------------- ›&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración automática:›&lt;br /&gt;
corollary &amp;quot;factI n = factR n&amp;quot;&lt;br /&gt;
  by (simp add: fact)&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración en lenguaje natural:&lt;br /&gt;
&lt;br /&gt;
   factI n        = (def. de factI)&lt;br /&gt;
   factI&amp;#039; n 1     = (lema fact)&lt;br /&gt;
   1 * (factR n)  = (1 es elemento neutro de *)&lt;br /&gt;
   factR n&lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración estructurada:›&lt;br /&gt;
corollary &amp;quot;factI n = factR n&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;factI n = factI&amp;#039; n 1&amp;quot;&lt;br /&gt;
    by simp&lt;br /&gt;
  also have &amp;quot;… = 1 * factR n&amp;quot;&lt;br /&gt;
    by (simp add: fact)&lt;br /&gt;
  also have &amp;quot;… = factR n&amp;quot;&lt;br /&gt;
    by simp &lt;br /&gt;
  finally show &amp;quot;factI n = factR n&amp;quot;&lt;br /&gt;
    by this&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración detallada declarativa:›&lt;br /&gt;
corollary &amp;quot;factI n = factR n&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;factI n = factI&amp;#039; n 1&amp;quot;&lt;br /&gt;
    by (simp only: factI.simps)&lt;br /&gt;
  also have &amp;quot;… = 1 * factR n&amp;quot;&lt;br /&gt;
    by (simp only: fact)&lt;br /&gt;
  also have &amp;quot;… = factR n&amp;quot;&lt;br /&gt;
    by (simp only: nat_mult_1)&lt;br /&gt;
  finally show &amp;quot;factI n = factR n&amp;quot;&lt;br /&gt;
    by this&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 text ‹&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Definir la función&lt;br /&gt;
     estaEn :: &amp;#039;a ⇒ &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (estaEn x xs) se verifica si el elemento x está en la lista&lt;br /&gt;
  xs. Por ejemplo, &lt;br /&gt;
     estaEn (2::nat) [3,2,4] = True&lt;br /&gt;
     estaEn (1::nat) [3,2,4] = False&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
fun estaEn :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;estaEn x []     = False&amp;quot;&lt;br /&gt;
| &amp;quot;estaEn x (a#xs) = (x=a ∨ estaEn x xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
text ‹ &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Definir la función&lt;br /&gt;
     sinDuplicados :: &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (sinDuplicados xs) se verifica si la lista xs no contiene&lt;br /&gt;
  duplicados. Por ejemplo,  &lt;br /&gt;
     sinDuplicados [1::nat,4,2]   = True&lt;br /&gt;
     sinDuplicados [1::nat,4,2,4] = False&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
fun sinDuplicados :: &amp;quot;&amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;sinDuplicados []     = True&amp;quot;&lt;br /&gt;
| &amp;quot;sinDuplicados (a#xs) = ((¬ estaEn a xs) ∧ sinDuplicados xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
text ‹ &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Definir la función&lt;br /&gt;
     borraDuplicados :: &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (borraDuplicados xs) es la lista obtenida eliminando los&lt;br /&gt;
  elementos duplicados de la lista xs. Por ejemplo, &lt;br /&gt;
     borraDuplicados [1::nat,2,4,2,3] = [1,4,2,3]&lt;br /&gt;
&lt;br /&gt;
  Nota: La función borraDuplicados es equivalente a la predefinida &lt;br /&gt;
  remdups. &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
fun borraDuplicados :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;borraDuplicados []     = []&amp;quot;&lt;br /&gt;
| &amp;quot;borraDuplicados (a#xs) = (if estaEn a xs&lt;br /&gt;
                             then borraDuplicados xs&lt;br /&gt;
                             else (a#borraDuplicados xs))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Demostrar o refutar&lt;br /&gt;
     length (borraDuplicados xs) ≤ length xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración automática:›&lt;br /&gt;
lemma &amp;quot;length (borraDuplicados xs) ≤ length xs&amp;quot;&lt;br /&gt;
  by (induct xs) simp_all&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración en lenguaje natural:&lt;br /&gt;
Por inducción en xs.&lt;br /&gt;
&lt;br /&gt;
+ Caso base: &lt;br /&gt;
    length (borraDuplicados [])  ≤ length [], directamente por las definciones.&lt;br /&gt;
&lt;br /&gt;
+ Paso inductivo: &lt;br /&gt;
  + HI: length (borraDuplicados xs) ≤ length xs&lt;br /&gt;
  + Hay que probar: length (borraDuplicados (a#xs)) ≤ length (a#xs)&lt;br /&gt;
    La demostración se realiza por casos:&lt;br /&gt;
&lt;br /&gt;
    + Caso 1: estaEn a xs&lt;br /&gt;
      En este caso, por la definición de borraDuplicados, &lt;br /&gt;
      borraDuplicados (a#xs) = borraDuplicados xs. Por tanto,&lt;br /&gt;
      length (borraDuplicados (a#xs)) = (def. de borraDuplicados)&lt;br /&gt;
      length (borraDuplicados xs)     ≤ (por HI)&lt;br /&gt;
      length xs                       ≤ (aritmética)&lt;br /&gt;
      1 + length xs                   = (por def. de length)&lt;br /&gt;
      length (a#xs)    &lt;br /&gt;
              &lt;br /&gt;
    + Caso 2: ¬ (estaEn a xs)&lt;br /&gt;
      En este caso, por la definición de borraDuplicados, &lt;br /&gt;
      borraDuplicados (a#xs) = a#(borraDuplicados xs). Por tanto,&lt;br /&gt;
      length (borraDuplicados (a#xs)) = (def. de borraDuplicados)&lt;br /&gt;
      length (a#(borraDuplicados xs)) = (def. de length)&lt;br /&gt;
      1 + length (borraDuplicados xs) ≤ (por HI)&lt;br /&gt;
      1 + length xs                   = (por def. de length)&lt;br /&gt;
      length (a#xs)                  &lt;br /&gt;
&lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración estructurada:›&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
&amp;quot;length (borraDuplicados xs) ≤ length xs&amp;quot;&lt;br /&gt;
proof (induct xs)&lt;br /&gt;
  show &amp;quot;length (borraDuplicados [])  ≤ length []&amp;quot; by simp&lt;br /&gt;
next&lt;br /&gt;
  fix a xs&lt;br /&gt;
  assume HI: &amp;quot;length (borraDuplicados (xs :: &amp;#039;a list)) ≤ length xs&amp;quot;&lt;br /&gt;
  thus &amp;quot;length (borraDuplicados (a#xs)) ≤ length (a#xs)&amp;quot;&lt;br /&gt;
  proof (cases)&lt;br /&gt;
    assume &amp;quot;estaEn a xs&amp;quot;&lt;br /&gt;
    thus &amp;quot;length (borraDuplicados (a#xs)) ≤ length (a#xs)&amp;quot;&lt;br /&gt;
      using HI by simp&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;(¬ estaEn a xs)&amp;quot;&lt;br /&gt;
    thus &amp;quot;length (borraDuplicados (a#xs)) ≤ length (a#xs)&amp;quot;&lt;br /&gt;
      using HI by simp&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ― ‹Auxiliares para la demostración detallada:›&lt;br /&gt;
lemma estaEnBD1:&lt;br /&gt;
  assumes &amp;quot;estaEn b xs&amp;quot;&lt;br /&gt;
  shows &amp;quot;borraDuplicados (b#xs) = borraDuplicados xs&amp;quot; &lt;br /&gt;
  using assms by (simp only:borraDuplicados.simps(2) if_P)&lt;br /&gt;
&lt;br /&gt;
lemma estaEnBD2:&lt;br /&gt;
  assumes &amp;quot;¬ (estaEn b xs)&amp;quot;&lt;br /&gt;
  shows &amp;quot;borraDuplicados (b#xs) = b#(borraDuplicados xs)&amp;quot; &lt;br /&gt;
proof-&lt;br /&gt;
 have  &amp;quot;borraDuplicados (b#xs) =  (if estaEn b xs &lt;br /&gt;
                             then borraDuplicados xs&lt;br /&gt;
                             else (b#borraDuplicados xs))&amp;quot; &lt;br /&gt;
   by (simp only: borraDuplicados.simps(2))&lt;br /&gt;
  also have &amp;quot;…= (b#borraDuplicados xs)&amp;quot; using assms by (rule if_not_P)&lt;br /&gt;
  finally show &amp;quot;borraDuplicados (b # xs) = b # borraDuplicados xs&amp;quot; by this&lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración detallada declarativa:›&lt;br /&gt;
lemma length_borraDuplicados_d:&lt;br /&gt;
&amp;quot;length (borraDuplicados xs) ≤ length xs&amp;quot;&lt;br /&gt;
proof (induct xs)&lt;br /&gt;
  show &amp;quot;length (borraDuplicados []) ≤ length []&amp;quot; &lt;br /&gt;
    by (simp only: borraDuplicados.simps(1) list.size)&lt;br /&gt;
next&lt;br /&gt;
  fix a xs&lt;br /&gt;
  assume HI: &amp;quot;length (borraDuplicados (xs :: &amp;#039;a list)) ≤ length xs&amp;quot;&lt;br /&gt;
  show &amp;quot;length (borraDuplicados (a#xs)) ≤ length (a#xs)&amp;quot;&lt;br /&gt;
  proof (cases)&lt;br /&gt;
    assume &amp;quot;estaEn a xs&amp;quot;&lt;br /&gt;
    then have &amp;quot;borraDuplicados (a#xs) = borraDuplicados xs&amp;quot; by (rule estaEnBD1)&lt;br /&gt;
    then have &amp;quot;length (borraDuplicados (a#xs)) = length (borraDuplicados xs)&amp;quot;&lt;br /&gt;
      by (rule arg_cong)&lt;br /&gt;
    also have &amp;quot;... ≤ length xs&amp;quot; using HI by this&lt;br /&gt;
    also have &amp;quot;... ≤ length (a#xs)&amp;quot; by (simp only: list.size)&lt;br /&gt;
    finally show ?thesis by this&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;(¬ estaEn a xs)&amp;quot;&lt;br /&gt;
    then have &amp;quot;borraDuplicados (a#xs) = a#(borraDuplicados xs)&amp;quot;&lt;br /&gt;
      by (rule estaEnBD2)&lt;br /&gt;
    then have &amp;quot;length (borraDuplicados (a#xs)) = length (a#(borraDuplicados xs))&amp;quot;&lt;br /&gt;
      by (rule arg_cong)&lt;br /&gt;
    also have &amp;quot;... = 1 + length (borraDuplicados xs)&amp;quot; by (simp only: list.size)&lt;br /&gt;
    also have &amp;quot;... ≤ 1 + length xs&amp;quot; using HI by (simp only: add_left_mono)&lt;br /&gt;
    also have &amp;quot;... = length (a#xs)&amp;quot; by (simp only: list.size)&lt;br /&gt;
    finally show ?thesis  by this&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración aplicativa detallada:›&lt;br /&gt;
lemma length_borraDuplicados_a:&lt;br /&gt;
&amp;quot;length (borraDuplicados xs) ≤ length xs&amp;quot;&lt;br /&gt;
  apply (induct xs)&lt;br /&gt;
   apply (simp only: borraDuplicados.simps(1) list.size)&lt;br /&gt;
  apply (simp only: borraDuplicados.simps(2))&lt;br /&gt;
  apply(split if_split)&lt;br /&gt;
  apply (rule conjI)&lt;br /&gt;
  apply (rule impI)&lt;br /&gt;
   apply (drule estaEnBD1)&lt;br /&gt;
   apply (simp only:list.size)&lt;br /&gt;
   apply (rule impI)&lt;br /&gt;
   apply (drule estaEnBD2)&lt;br /&gt;
   apply (simp only:list.size)&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
text ‹&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Demostrar o refutar&lt;br /&gt;
     estaEn a (borraDuplicados xs) = estaEn a xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración automática:›&lt;br /&gt;
lemma &amp;quot;estaEn a (borraDuplicados xs) = estaEn a xs&amp;quot;&lt;br /&gt;
  by (induct xs) auto&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración en lenguaje natural:&lt;br /&gt;
Por inducción en xs.&lt;br /&gt;
&lt;br /&gt;
+ Caso base: &lt;br /&gt;
     estaEn a (borraDuplicados []) = estaEn a [], directamente por las definiciones.&lt;br /&gt;
&lt;br /&gt;
+ Paso inductivo:&lt;br /&gt;
  + HI: estaEn a (borraDuplicados xs) = estaEn a xs&lt;br /&gt;
  + Hay que probar: estaEn a (borraDuplicados (b#xs)) = estaEn a (b#xs).&lt;br /&gt;
    La demostración se realiza por casos.&lt;br /&gt;
    &lt;br /&gt;
    + Caso 1: estaEn b xs&lt;br /&gt;
      En este caso, por la definición de borraDuplicados, &lt;br /&gt;
      borraDuplicados (b#xs) = borraDuplicados xs. Por tanto,&lt;br /&gt;
      estaEn a (borraDuplicados (b#xs))    = (def. de borraDuplicados)&lt;br /&gt;
      estaEn a (borraDuplicados xs)        = (por HI)&lt;br /&gt;
      estaEn a xs                          = (por (estaEn b xs))&lt;br /&gt;
      estaEn a (b#xs)&lt;br /&gt;
           &lt;br /&gt;
    + Caso 2: ¬ (estaEn b xs)&lt;br /&gt;
      En este caso, por la definición de borraDuplicados, &lt;br /&gt;
      borraDuplicados (b#xs) = b # (borraDuplicados xs). Por tanto,&lt;br /&gt;
      estaEn a (borraDuplicados (b#xs))        = (def. de borraDuplicados)&lt;br /&gt;
      estaEn a ( b # (borraDuplicados xs))     = (def. de estaEn)&lt;br /&gt;
      (a = b) ∨ (estaEn a (borraDuplicados xs) = (por HI)&lt;br /&gt;
      (a = b) ∨ (estaEn a xs                  = (def. de estaEn)&lt;br /&gt;
      estaEn a (b#xs)&lt;br /&gt;
›    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración estructurada:›&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;estaEn a (borraDuplicados xs) = estaEn a xs&amp;quot;&lt;br /&gt;
proof (induct xs)&lt;br /&gt;
  show &amp;quot;estaEn a (borraDuplicados []) = estaEn a []&amp;quot; by simp&lt;br /&gt;
next&lt;br /&gt;
  fix b xs&lt;br /&gt;
  assume HI: &amp;quot;estaEn a (borraDuplicados xs) = estaEn a xs&amp;quot;&lt;br /&gt;
  show &amp;quot;estaEn a (borraDuplicados (b#xs)) = estaEn a (b#xs)&amp;quot; &lt;br /&gt;
  proof  (cases)&lt;br /&gt;
    assume &amp;quot;estaEn b xs&amp;quot;&lt;br /&gt;
    then have &amp;quot;borraDuplicados (b#xs) = borraDuplicados xs&amp;quot; by (rule estaEnBD1)&lt;br /&gt;
    then have &amp;quot;estaEn a (borraDuplicados (b#xs)) = &lt;br /&gt;
               estaEn a (borraDuplicados xs)&amp;quot; by (rule arg_cong)&lt;br /&gt;
    also have &amp;quot;… = estaEn a xs&amp;quot; using HI by this&lt;br /&gt;
    also have &amp;quot;… = estaEn a (b#xs)&amp;quot; using ‹estaEn b xs› by auto&lt;br /&gt;
    finally show ?thesis by this&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot; ¬ estaEn b xs&amp;quot;&lt;br /&gt;
    then have &amp;quot;borraDuplicados (b#xs) = b#(borraDuplicados xs)&amp;quot; by (rule estaEnBD2)&lt;br /&gt;
    then have &amp;quot;estaEn a (borraDuplicados (b#xs)) = &lt;br /&gt;
               estaEn a (b#(borraDuplicados xs))&amp;quot; by (rule arg_cong)&lt;br /&gt;
    also have &amp;quot;… = ((a = b) ∨ (estaEn a (borraDuplicados xs)))&amp;quot;&lt;br /&gt;
      by (simp only: estaEn.simps(2))&lt;br /&gt;
    also have &amp;quot;… =  ((a = b) ∨ (estaEn a  xs))&amp;quot; using HI by simp&lt;br /&gt;
    also have &amp;quot;… = estaEn a (b#xs)&amp;quot; by (simp only: estaEn.simps(2))&lt;br /&gt;
    finally show ?thesis by this&lt;br /&gt;
  qed&lt;br /&gt;
  qed&lt;br /&gt;
&lt;br /&gt;
 ― ‹Auxiliar:›&lt;br /&gt;
&lt;br /&gt;
lemma estaEnCons:&lt;br /&gt;
  assumes &amp;quot;estaEn b xs&amp;quot;&lt;br /&gt;
  shows &amp;quot;estaEn a xs = estaEn a (b#xs)&amp;quot; &lt;br /&gt;
proof (rule iffI)&lt;br /&gt;
  assume &amp;quot; estaEn a xs &amp;quot; &lt;br /&gt;
  then have &amp;quot;((a = b) ∨ (estaEn a xs))&amp;quot; by (rule disjI2)&lt;br /&gt;
  then show &amp;quot;estaEn a (b # xs)&amp;quot; by (simp only:estaEn.simps(2))&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;estaEn a (b # xs)&amp;quot; &lt;br /&gt;
   then have &amp;quot;((a = b) ∨ (estaEn a xs))&amp;quot; by (simp only:estaEn.simps(2))&lt;br /&gt;
   then show  &amp;quot;estaEn a xs&amp;quot; &lt;br /&gt;
   proof&lt;br /&gt;
     assume &amp;quot;a = b&amp;quot; then show &amp;quot;estaEn a xs&amp;quot; using assms by (rule ssubst)&lt;br /&gt;
   next &lt;br /&gt;
     assume &amp;quot;estaEn a xs&amp;quot; then show  &amp;quot;estaEn a xs&amp;quot; by this&lt;br /&gt;
   qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración detallada declarativa:›&lt;br /&gt;
lemma estaEn_borraDuplicados_d:&lt;br /&gt;
  &amp;quot;estaEn a (borraDuplicados xs) = estaEn a xs&amp;quot;&lt;br /&gt;
proof (induct xs)&lt;br /&gt;
  show &amp;quot;estaEn a (borraDuplicados []) = estaEn a []&amp;quot; &lt;br /&gt;
    by (simp only:borraDuplicados.simps(1))&lt;br /&gt;
next&lt;br /&gt;
  fix b xs&lt;br /&gt;
  assume HI: &amp;quot;estaEn a (borraDuplicados xs) = estaEn a xs&amp;quot;&lt;br /&gt;
  show &amp;quot;estaEn a (borraDuplicados (b#xs)) = estaEn a (b#xs)&amp;quot; &lt;br /&gt;
  proof  (cases)&lt;br /&gt;
    assume &amp;quot;estaEn b xs&amp;quot;&lt;br /&gt;
    then have &amp;quot;borraDuplicados (b#xs) = borraDuplicados xs&amp;quot; by (rule estaEnBD1)&lt;br /&gt;
    then have &amp;quot;estaEn a (borraDuplicados (b#xs)) = &lt;br /&gt;
               estaEn a (borraDuplicados xs)&amp;quot; by (rule arg_cong)&lt;br /&gt;
    also have &amp;quot;… = estaEn a xs&amp;quot; using HI by this&lt;br /&gt;
    also have &amp;quot;… = estaEn a (b#xs)&amp;quot; using ‹estaEn b xs› by (rule  estaEnCons)&lt;br /&gt;
    finally show ?thesis by this&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot; ¬ estaEn b xs&amp;quot;&lt;br /&gt;
    then have &amp;quot;borraDuplicados (b#xs) = b#(borraDuplicados xs)&amp;quot; by (rule estaEnBD2)&lt;br /&gt;
    then have &amp;quot;estaEn a (borraDuplicados (b#xs)) = &lt;br /&gt;
               estaEn a (b#(borraDuplicados xs))&amp;quot; by (rule arg_cong)&lt;br /&gt;
    also have &amp;quot;… = ((a = b) ∨ (estaEn a (borraDuplicados xs)))&amp;quot;&lt;br /&gt;
      by (simp only: estaEn.simps(2))&lt;br /&gt;
    also have &amp;quot;… =  ((a = b) ∨ (estaEn a  xs))&amp;quot; using HI by simp&lt;br /&gt;
    also have &amp;quot;… = estaEn a (b#xs)&amp;quot; by (simp only: estaEn.simps(2))&lt;br /&gt;
    finally show ?thesis by this&lt;br /&gt;
  qed&lt;br /&gt;
  qed&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración detallada aplicativa:›&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;estaEn a (borraDuplicados xs) = estaEn a xs&amp;quot;&lt;br /&gt;
  apply (induct xs)&lt;br /&gt;
   apply (simp only: borraDuplicados.simps(1))&lt;br /&gt;
    apply (simp only: borraDuplicados.simps(2))&lt;br /&gt;
  apply(split if_split)&lt;br /&gt;
  apply (rule conjI)&lt;br /&gt;
   apply (rule impI) &lt;br /&gt;
   apply (simp only: estaEnCons)&lt;br /&gt;
  apply (rule impI) &lt;br /&gt;
  apply (simp only: estaEn.simps(2))&lt;br /&gt;
  done&lt;br /&gt;
                    &lt;br /&gt;
&lt;br /&gt;
text ‹&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Demostrar o refutar&lt;br /&gt;
     sinDuplicados (borraDuplicados xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración automática:›&lt;br /&gt;
lemma &amp;quot;sinDuplicados (borraDuplicados xs)&amp;quot;&lt;br /&gt;
  by (induct xs) &lt;br /&gt;
    (auto simp add: estaEn_borraDuplicados_d)&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración en lenguaje natural:&lt;br /&gt;
Por inducción en xs.&lt;br /&gt;
&lt;br /&gt;
+ Caso base: &lt;br /&gt;
   sinDuplicados (borraDuplicados []), directamente por las definiciones.&lt;br /&gt;
&lt;br /&gt;
+ Paso inductivo:&lt;br /&gt;
  + HI: sinDuplicados (borraDuplicados xs)&lt;br /&gt;
  + Hay que probar: sinDuplicados (borraDuplicados (a#xs))&lt;br /&gt;
       La demostración se realiza por casos.&lt;br /&gt;
    &lt;br /&gt;
    + Caso 1: estaEn a xs&lt;br /&gt;
      En este caso, por la definición de borraDuplicados, &lt;br /&gt;
      borraDuplicados (a#xs) = borraDuplicados xs. Por tanto,&lt;br /&gt;
      sinDuplicados (borraDuplicados (a#xs)) = (def.de borraDuplicados)&lt;br /&gt;
      sinDuplicados  (borraDuplicados xs)     (cierto, por HI)&lt;br /&gt;
    &lt;br /&gt;
    + Caso 2: ¬ (estaEn a xs)&lt;br /&gt;
      En este caso, por la definición de borraDuplicados, &lt;br /&gt;
      borraDuplicados (a#xs) = a # (borraDuplicados xs). Por tanto,&lt;br /&gt;
      sinDuplicados (borraDuplicados (a#xs))     = (def. de borraDuplicados)  &lt;br /&gt;
      sinDuplicados (a#(borraDuplicados xs))     = (def. de sinDuplicados)&lt;br /&gt;
      ((¬ estaEn a (borraDuplicados xs)) ∧ &lt;br /&gt;
       sinDuplicados (borraDuplicados xs))       = (por hI)&lt;br /&gt;
      ¬ estaEn a (borraDuplicados xs)            (cierto por la hipótesis del &lt;br /&gt;
                                                  caso 2 y el ejercicio 6)   &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración estructurada:›&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;sinDuplicados (borraDuplicados xs)&amp;quot;&lt;br /&gt;
proof (induct xs)&lt;br /&gt;
  show &amp;quot;sinDuplicados (borraDuplicados [])&amp;quot; by simp&lt;br /&gt;
next&lt;br /&gt;
  fix a xs&lt;br /&gt;
  assume HI: &amp;quot;sinDuplicados (borraDuplicados (xs :: &amp;#039;a list))&amp;quot;&lt;br /&gt;
  show &amp;quot;sinDuplicados (borraDuplicados (a#xs))&amp;quot;&lt;br /&gt;
  proof (cases)&lt;br /&gt;
    assume &amp;quot;estaEn a xs&amp;quot;&lt;br /&gt;
    thus &amp;quot;sinDuplicados (borraDuplicados (a#xs))&amp;quot; using HI by simp&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;¬ estaEn a xs&amp;quot;&lt;br /&gt;
    thus &amp;quot;sinDuplicados (borraDuplicados (a#xs))&amp;quot;&lt;br /&gt;
      using `¬ estaEn a xs` HI by (auto simp add: estaEn_borraDuplicados_d)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 ― ‹Demostración detallada declarativa:›&lt;br /&gt;
lemma sinDuplicados_borraDuplicados_d:&lt;br /&gt;
  &amp;quot;sinDuplicados (borraDuplicados xs)&amp;quot;&lt;br /&gt;
proof (induct xs)&lt;br /&gt;
  show &amp;quot;sinDuplicados (borraDuplicados [])&amp;quot; &lt;br /&gt;
    by (simp only: borraDuplicados.simps(1) &lt;br /&gt;
                   sinDuplicados.simps(1))&lt;br /&gt;
next&lt;br /&gt;
  fix a xs&lt;br /&gt;
  assume HI: &amp;quot;sinDuplicados (borraDuplicados (xs:: &amp;#039;a list))&amp;quot;&lt;br /&gt;
  show &amp;quot;sinDuplicados (borraDuplicados (a#xs))&amp;quot;&lt;br /&gt;
  proof (cases)&lt;br /&gt;
    assume &amp;quot;estaEn a xs&amp;quot;&lt;br /&gt;
    then have &amp;quot;borraDuplicados (a#xs) = borraDuplicados xs&amp;quot; &lt;br /&gt;
      by (rule estaEnBD1)&lt;br /&gt;
    then show &amp;quot;sinDuplicados (borraDuplicados (a#xs))&amp;quot; using HI &lt;br /&gt;
      by (rule ssubst)&lt;br /&gt;
  next&lt;br /&gt;
    assume 1: &amp;quot;¬ estaEn a xs&amp;quot;&lt;br /&gt;
     then have 2: &amp;quot;borraDuplicados (a#xs) = a#(borraDuplicados xs)&amp;quot; &lt;br /&gt;
       by (rule estaEnBD2)&lt;br /&gt;
     have &amp;quot;¬ estaEn a (borraDuplicados xs)&amp;quot; using 1&lt;br /&gt;
       by  (simp add: estaEn_borraDuplicados_d)&lt;br /&gt;
     then have &amp;quot;¬ (estaEn a (borraDuplicados xs)) &lt;br /&gt;
                   ∧ sinDuplicados (borraDuplicados xs)&amp;quot;&lt;br /&gt;
       using HI by (rule conjI)&lt;br /&gt;
     then have &amp;quot;sinDuplicados (a#(borraDuplicados xs))&amp;quot; &lt;br /&gt;
       by (simp only: sinDuplicados.simps(2)[THEN sym])  &lt;br /&gt;
     with 2 show  &amp;quot;sinDuplicados (borraDuplicados (a#xs))&amp;quot; &lt;br /&gt;
       by (rule ssubst)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text ‹&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Demostrar o refutar:&lt;br /&gt;
    borraDuplicados (rev xs) = rev (borraDuplicados xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;borraDuplicados (rev xs) = rev (borraDuplicados xs)&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
(*&lt;br /&gt;
Auto Quickcheck found a counterexample:&lt;br /&gt;
  xs = [a⇩1, a⇩2, a⇩1]&lt;br /&gt;
Evaluated terms:&lt;br /&gt;
  borraDuplicados (rev xs) = [a⇩2, a⇩1]&lt;br /&gt;
  rev (borraDuplicados xs) = [a⇩1, a⇩2]&lt;br /&gt;
*)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=R12&amp;diff=1036</id>
		<title>R12</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=R12&amp;diff=1036"/>
		<updated>2020-05-07T15:22:31Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang = &amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
chapter ‹ R12: Razonamiento sobre programas en Isabelle/HOL (III)›&lt;br /&gt;
 &lt;br /&gt;
theory R12&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  En toda la relación de ejercicios las demostraciones han de realizarse&lt;br /&gt;
  de las formas siguientes:&lt;br /&gt;
  + en lenguaje natural&lt;br /&gt;
  + aplicativa o declarativa usando &amp;quot;simp&amp;quot;&lt;br /&gt;
  + aplicativa o declarativa usando &amp;quot;simp only: ...&amp;quot;  &lt;br /&gt;
  + automática&lt;br /&gt;
&lt;br /&gt;
  Además, se recomienda el uso de lemas auxiliares (nuevos o de los &lt;br /&gt;
  ejercicios anteriores) para que las demostraciones sean más cortas y &lt;br /&gt;
  claras.&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
 &lt;br /&gt;
text ‹------------------------------------------------------------------ &lt;br /&gt;
  Ejercicio 1. Definir la función&lt;br /&gt;
     estaEn :: &amp;#039;a ⇒ &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (estaEn x xs) se verifica si el elemento x está en la lista&lt;br /&gt;
  xs. Por ejemplo, &lt;br /&gt;
     estaEn (2::nat) [3,2,4] = True&lt;br /&gt;
     estaEn (1::nat) [3,2,4] = False&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
fun estaEn :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;estaEn x []     = False&amp;quot;&lt;br /&gt;
| &amp;quot;estaEn x (a#xs) = (a=x ∨ estaEn x xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 2. Definir la función &lt;br /&gt;
     sublista :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (sublista xs ys) se verifica si todos los elementos de la&lt;br /&gt;
  lista xs están en la lista ys. Por ejemplo,&lt;br /&gt;
     sublista [(1::nat),2,3] [3,2,1,2] = True&lt;br /&gt;
     sublista [(1::nat),2,3] [2,1,2]   = False&lt;br /&gt;
 ----------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
fun sublista :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;sublista [] ys     = True&amp;quot;&lt;br /&gt;
| &amp;quot;sublista (x#xs) ys = (estaEn x ys ∧ sublista xs ys )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 3. Demostrar la siguiente propiedad: si xs es sublista de &lt;br /&gt;
  ys, entonces xs también es sublista de la lista (y#ys). Es decir,&lt;br /&gt;
     sublista xs ys ⟹ sublista xs (y#ys)&lt;br /&gt;
 ----------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Demostración en lenguaje natural:&lt;br /&gt;
&lt;br /&gt;
 ----------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración declarativa:›&lt;br /&gt;
&lt;br /&gt;
lemma sublistaMono_d: &lt;br /&gt;
  &amp;quot;sublista xs ys ⟶ sublista xs (y#ys)&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración aplicativa:›&lt;br /&gt;
&lt;br /&gt;
lemma sublistaMono: &amp;quot;sublista xs ys ⟹ sublista xs (y#ys)&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 4. Demostrar que la relación sublista es reflexiva. Es &lt;br /&gt;
  decir,&lt;br /&gt;
     sublista xs xs&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Demostración en lenguaje natural:&lt;br /&gt;
&lt;br /&gt;
 ----------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración declarativa:›&lt;br /&gt;
&lt;br /&gt;
lemma sublistaReflexiva_d: &amp;quot;sublista xs xs&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración aplicativa:›&lt;br /&gt;
&lt;br /&gt;
lemma sublistaReflexiva: &amp;quot;sublista xs xs&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 5. Probar, como corolario, que &lt;br /&gt;
     sublista xs (x#xs)&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Demostración en lenguaje natural:&lt;br /&gt;
&lt;br /&gt;
 ----------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración declarativa:›&lt;br /&gt;
&lt;br /&gt;
corollary sublistaInc_d: &amp;quot;sublista xs (x#xs)&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración aplicativa:›&lt;br /&gt;
&lt;br /&gt;
corollary sublistaInc: &amp;quot;sublista xs (x#xs)&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 6. Probar que la relación sublista es transitiva. Es decir,&lt;br /&gt;
     sublista xs ys ∧ sublista ys zs ⟶ sublista xs zs&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Demostración en lenguaje natural:&lt;br /&gt;
&lt;br /&gt;
 ----------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración declarativa:›&lt;br /&gt;
&lt;br /&gt;
lemma sublistaTransitiva_d: &lt;br /&gt;
  &amp;quot;sublista xs ys ∧ sublista ys zs ⟶ sublista xs zs&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración aplicativa:›&lt;br /&gt;
&lt;br /&gt;
lemma sublistaTransitiva: &lt;br /&gt;
  &amp;quot;sublista xs ys ∧ sublista ys zs ⟶ sublista xs zs&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
 &lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 7. Definir la función&lt;br /&gt;
     coge :: nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (coge n xs) es la lista de los n primeros elementos de xs. Por &lt;br /&gt;
  ejemplo, &lt;br /&gt;
     coge 2 [a,c,d,b,e] = [a,c]&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
&lt;br /&gt;
fun coge :: &amp;quot;nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;coge n []           = []&amp;quot;&lt;br /&gt;
| &amp;quot;coge 0 xs           = []&amp;quot;&lt;br /&gt;
| &amp;quot;coge (Suc n) (x#xs) = x # (coge n xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;coge 2 [a,c,d,b,e] = [a,c]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 8. Probar que &lt;br /&gt;
     coge 0 xs = []&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Demostración en lenguaje natural:&lt;br /&gt;
&lt;br /&gt;
 ----------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración declarativa:›&lt;br /&gt;
&lt;br /&gt;
lemma coge0_d: &amp;quot;coge 0 xs = []&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración aplicativa:›&lt;br /&gt;
&lt;br /&gt;
lemma coge0: &amp;quot;coge 0 xs = []&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 9. Probar que &lt;br /&gt;
     length xs ≤ n ⟹ coge n xs = xs&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Demostración en lenguaje natural:&lt;br /&gt;
&lt;br /&gt;
 ----------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración declarativa:›&lt;br /&gt;
&lt;br /&gt;
lemma cogeTodos_d: &lt;br /&gt;
    &amp;quot;length xs ≤ n ⟶ coge n xs = xs&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración aplicativa:›&lt;br /&gt;
&lt;br /&gt;
lemma cogeTodos: &amp;quot;length xs ≤ n ⟹ coge n xs = xs&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 10. Probar que &lt;br /&gt;
     length (coge n xs) ≤ n&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Demostración en lenguaje natural:&lt;br /&gt;
&lt;br /&gt;
 ----------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración declarativa:›&lt;br /&gt;
&lt;br /&gt;
lemma cogeLongN_d: &amp;quot;length (coge n xs) ≤ n&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración aplicativa:›&lt;br /&gt;
&lt;br /&gt;
lemma cogeLongN: &amp;quot;length (coge n xs) ≤ n&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 11. Probar que &lt;br /&gt;
      length (coge n xs) ≤ length xs&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Demostración en lenguaje natural:&lt;br /&gt;
&lt;br /&gt;
 ----------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración declarativa:›&lt;br /&gt;
&lt;br /&gt;
lemma cogeLongL_d: &amp;quot;length (coge n xs) ≤ length xs&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración aplicativa:›&lt;br /&gt;
&lt;br /&gt;
lemma cogeLongL: &amp;quot;length (coge n xs) ≤ length xs&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 12. Probar que &lt;br /&gt;
     length (coge n xs) = min n (length xs)&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Demostración en lenguaje natural:&lt;br /&gt;
&lt;br /&gt;
 ----------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración declarativa:›&lt;br /&gt;
&lt;br /&gt;
lemma lengthCogeMin_d:&amp;quot;length (coge n xs) = min n (length xs)&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración aplicativa:›&lt;br /&gt;
&lt;br /&gt;
lemma lengthCogeMin: &amp;quot;length (coge n xs) = min n (length xs)&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 13. Probar que&lt;br /&gt;
     estaEn x (coge n xs) ⟹ estaEn x xs&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Demostración en lenguaje natural:&lt;br /&gt;
&lt;br /&gt;
 ----------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración declarativa:›&lt;br /&gt;
&lt;br /&gt;
lemma estaEnCoge_d: &lt;br /&gt;
    &amp;quot;estaEn x (coge n xs) ⟶ estaEn x xs&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración aplicativa:›&lt;br /&gt;
&lt;br /&gt;
lemma estaEnCoge: &lt;br /&gt;
  &amp;quot;estaEn x (coge n xs) ⟹ estaEn x xs&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Ejercicio 14. Probar que &lt;br /&gt;
     sublista (coge n xs) xs&lt;br /&gt;
  ---------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
text ‹------------------------------------------------------------------&lt;br /&gt;
  Demostración en lenguaje natural:&lt;br /&gt;
&lt;br /&gt;
 ----------------------------------------------------------------------›&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración declarativa:›&lt;br /&gt;
&lt;br /&gt;
lemma sublistaCoge_d: &amp;quot;sublista (coge n xs) xs&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
― ‹Demostración aplicativa:›&lt;br /&gt;
&lt;br /&gt;
lemma sublistaCoge: &amp;quot;sublista (coge n xs) xs&amp;quot;&lt;br /&gt;
  oops&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=MediaWiki:Sidebar&amp;diff=932</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=MediaWiki:Sidebar&amp;diff=932"/>
		<updated>2020-04-25T18:27:24Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Ejercicios|Ejercicios&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
* Ayudas&lt;br /&gt;
** https://es.wikipedia.org/wiki/Ayuda:Uso_de_TeX|Ayuda de LaTeX&lt;br /&gt;
** https://es.wikipedia.org/wiki/Ayuda:Uso_de_TeX#L%C3%B3gica|Lógica en LaTeX&lt;br /&gt;
** https://es.wikipedia.org/wiki/Ayuda:Uso_de_TeX#Conjuntos|Conjuntos en LaTeX&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=480</id>
		<title>Ejercicios</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=480"/>
		<updated>2020-03-26T06:17:05Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se encuentran los ejercicios para resolver de manera colaborativa que complementan al [https://www.cs.us.es/~jalonso/cursos/lmf-19/ejercicios/ejercicios-LMF-2019-20.pdf libro de ejercicios].&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 1&amp;#039;&amp;#039;&amp;#039;: Sintaxis y semántica de la lógica proposicional. ([[R1 |Enunciado]], [[Relación 1 |Solución colaborativa]], [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R1_sol.pdf Una solución]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 2&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R2.thy Deducción natural proposicional con Isabelle] ([[R2 |Enunciado]], [[Relación 2 |Solución colaborativa]], [[Rel 2 |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 3&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R3.thy Deducción natural proposicional con Isabelle (II)] ([[R3 |Enunciado]], [[Relación 3 |Solución colaborativa]], [[Rel 3 |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 4&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R4.thy Sintaxis y semántica de la lógica de primer orden.] ([[R4 |Enunciado]], [[Relación 4 |Solución colaborativa]], [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R4_sol.pdf Una solución]).).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 5&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R5.thy Deducción natural en lógica de primer orden.] ([[R5 |Enunciado]], [[Relación 5 |Solución colaborativa]], [[Rel 5 |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 6&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R6.thy Formalización y argumentación con Isabelle/HOL.] ([[R6 |Enunciado]], [[Relación 6 |Solución colaborativa]]).&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039; Se pueden publicar las soluciones hasta el martes 31 de marzo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 2&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional. ([[R2 |Enunciado]] y [[Relación 2 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 3&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional (II). ([[R3 |Enunciado]] y [[Relación 3 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 4&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional con Isabelle ([[R4 |Enunciado]], [[Relación 4 |Solución colaborativa]] y [[Sol 4 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 5&amp;#039;&amp;#039;&amp;#039;: Sintaxis y semántica de la lógica de primer orden. ([[R5 |Enunciado]] y [[Relación 5 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 6&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R6.thy Deducción natural en lógica de primer orden con Isabelle] ([[R6 |Enunciado]], [[Relación  |Solución colaborativa]] y [[Sol 6 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R7.thy Deducción natural en lógica proposicional con Isabelle basada en tácticas] ([[R7 |Enunciado]], [[Relación 7 |Solución colaborativa]] y [[Sol 7 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7b&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica de primer orden con Isabelle basada en tácticas. ([[Sol 7b | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 8&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R8.thy Argumentación en lógica de primer orden con Isabelle.] ([[R8 |Enunciado]], [[Relación 8 |Solución colaborativa]] y [[Sol 8 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 9&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R9.thy Programación funcional en Isabelle] ([[R9 |Enunciado]], [[Relación 9 |Solución colaborativa]] y [[Sol 9 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 10&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R10.thy Programación funcional en Isabelle (2)] ([[R10 |Enunciado]], [[Relación 10 |Solución colaborativa]]  y [[Sol 10 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 11&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R11.thy Razonamiento sobre programas en Isabelle/HOL] ([[R11 |Enunciado]], [[Relación 11 |Solución colaborativa]]  y [[Sol 11 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 12&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R12.thy Recorridos de árboles en Isabelle/HOL] ([[R12 |Enunciado]], [[Relación 12 |Solución colaborativa]]  y [[Sol 12 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 13&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R13.thy Definiciones inductivas: clausuras] ([[R13 |Enunciado]], [[Relación 13 |Solución colaborativa]]  y [[Sol 13 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 14&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R14.thy Desarrollo de teorías axiomáticas] ([[R14 |Enunciado]], [[Relación 14 |Solución colaborativa]]  y [[Sol 14 | una solución]]).&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=266</id>
		<title>Ejercicios</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=266"/>
		<updated>2020-03-17T16:24:29Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se encuentran los ejercicios para resolver de manera colaborativa que complementan al [https://www.cs.us.es/~jalonso/cursos/lmf-19/ejercicios/ejercicios-LMF-2019-20.pdf libro de ejercicios].&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 1&amp;#039;&amp;#039;&amp;#039;: Sintaxis y semántica de la lógica proposicional. ([[R1 |Enunciado]] y [[Relación 1 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 2&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R2.thy Deducción natural proposicional con Isabelle] ([[R2 |Enunciado]], [[Relación 2 |Solución colaborativa]], [[Rel 2 |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 3&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R3.thy Deducción natural proposicional con Isabelle (II)] ([[R3 |Enunciado]], [[Relación 3 |Solución colaborativa]], [[Rel 3 |Una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 4&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R4.thy Sintaxis y semántica de la lógica de primer orden.] ([[R4 |Enunciado]], [[Relación 4 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 5&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R5.thy Deducción natural en lógica de primer orden.] ([[R5 |Enunciado]], [[Relación 5 |Solución colaborativa]]).&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;Nota&amp;#039;&amp;#039;&amp;#039; Se pueden publicar las soluciones hasta el martes 24 de marzo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 2&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional. ([[R2 |Enunciado]] y [[Relación 2 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 3&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional (II). ([[R3 |Enunciado]] y [[Relación 3 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 4&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional con Isabelle ([[R4 |Enunciado]], [[Relación 4 |Solución colaborativa]] y [[Sol 4 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 5&amp;#039;&amp;#039;&amp;#039;: Sintaxis y semántica de la lógica de primer orden. ([[R5 |Enunciado]] y [[Relación 5 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 6&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R6.thy Deducción natural en lógica de primer orden con Isabelle] ([[R6 |Enunciado]], [[Relación  |Solución colaborativa]] y [[Sol 6 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R7.thy Deducción natural en lógica proposicional con Isabelle basada en tácticas] ([[R7 |Enunciado]], [[Relación 7 |Solución colaborativa]] y [[Sol 7 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7b&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica de primer orden con Isabelle basada en tácticas. ([[Sol 7b | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 8&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R8.thy Argumentación en lógica de primer orden con Isabelle.] ([[R8 |Enunciado]], [[Relación 8 |Solución colaborativa]] y [[Sol 8 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 9&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R9.thy Programación funcional en Isabelle] ([[R9 |Enunciado]], [[Relación 9 |Solución colaborativa]] y [[Sol 9 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 10&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R10.thy Programación funcional en Isabelle (2)] ([[R10 |Enunciado]], [[Relación 10 |Solución colaborativa]]  y [[Sol 10 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 11&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R11.thy Razonamiento sobre programas en Isabelle/HOL] ([[R11 |Enunciado]], [[Relación 11 |Solución colaborativa]]  y [[Sol 11 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 12&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R12.thy Recorridos de árboles en Isabelle/HOL] ([[R12 |Enunciado]], [[Relación 12 |Solución colaborativa]]  y [[Sol 12 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 13&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R13.thy Definiciones inductivas: clausuras] ([[R13 |Enunciado]], [[Relación 13 |Solución colaborativa]]  y [[Sol 13 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 14&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R14.thy Desarrollo de teorías axiomáticas] ([[R14 |Enunciado]], [[Relación 14 |Solución colaborativa]]  y [[Sol 14 | una solución]]).&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=210</id>
		<title>Ejercicios</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=210"/>
		<updated>2020-03-08T07:04:06Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se encuentran los ejercicios para resolver de manera colaborativa que complementan al [https://www.cs.us.es/~jalonso/cursos/lmf-19/ejercicios/ejercicios-LMF-2019-20.pdf libro de ejercicios].&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 1&amp;#039;&amp;#039;&amp;#039;: Sintaxis y semántica de la lógica proposicional. ([[R1 |Enunciado]] y [[Relación 1 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 2&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R2.thy Deducción natural proposicional con Isabelle] ([[R2 |Enunciado]], [[Relación 2 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 3&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R3.thy Deducción natural proposicional con Isabelle (II)] ([[R3 |Enunciado]], [[Relación 3 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 4&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-19/relaciones-ejercicios/R4.thy Sintaxis y semántica de la lógica de primer orden.] ([[R4 |Enunciado]], [[Relación 4 |Solución colaborativa]]).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 2&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional. ([[R2 |Enunciado]] y [[Relación 2 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 3&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional (II). ([[R3 |Enunciado]] y [[Relación 3 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 4&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional con Isabelle ([[R4 |Enunciado]], [[Relación 4 |Solución colaborativa]] y [[Sol 4 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 5&amp;#039;&amp;#039;&amp;#039;: Sintaxis y semántica de la lógica de primer orden. ([[R5 |Enunciado]] y [[Relación 5 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 6&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R6.thy Deducción natural en lógica de primer orden con Isabelle] ([[R6 |Enunciado]], [[Relación  |Solución colaborativa]] y [[Sol 6 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R7.thy Deducción natural en lógica proposicional con Isabelle basada en tácticas] ([[R7 |Enunciado]], [[Relación 7 |Solución colaborativa]] y [[Sol 7 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7b&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica de primer orden con Isabelle basada en tácticas. ([[Sol 7b | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 8&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R8.thy Argumentación en lógica de primer orden con Isabelle.] ([[R8 |Enunciado]], [[Relación 8 |Solución colaborativa]] y [[Sol 8 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 9&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R9.thy Programación funcional en Isabelle] ([[R9 |Enunciado]], [[Relación 9 |Solución colaborativa]] y [[Sol 9 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 10&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R10.thy Programación funcional en Isabelle (2)] ([[R10 |Enunciado]], [[Relación 10 |Solución colaborativa]]  y [[Sol 10 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 11&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R11.thy Razonamiento sobre programas en Isabelle/HOL] ([[R11 |Enunciado]], [[Relación 11 |Solución colaborativa]]  y [[Sol 11 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 12&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R12.thy Recorridos de árboles en Isabelle/HOL] ([[R12 |Enunciado]], [[Relación 12 |Solución colaborativa]]  y [[Sol 12 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 13&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R13.thy Definiciones inductivas: clausuras] ([[R13 |Enunciado]], [[Relación 13 |Solución colaborativa]]  y [[Sol 13 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 14&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R14.thy Desarrollo de teorías axiomáticas] ([[R14 |Enunciado]], [[Relación 14 |Solución colaborativa]]  y [[Sol 14 | una solución]]).&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=L%C3%B3gica_matem%C3%A1tica_y_fundamentos_(3%C2%BA_Matem%C3%A1ticas)&amp;diff=8</id>
		<title>Lógica matemática y fundamentos (3º Matemáticas)</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=L%C3%B3gica_matem%C3%A1tica_y_fundamentos_(3%C2%BA_Matem%C3%A1ticas)&amp;diff=8"/>
		<updated>2020-02-07T11:11:42Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Este sitio contiene materiales del curso [https://www.cs.us.es/~jalonso/cursos/lmf-19 &amp;#039;&amp;#039;&amp;#039;Lógica matemática y fundamentos&amp;#039;&amp;#039;&amp;#039;] de 3º del [http://www.us.es/estudios/grados/plan_171?p=7 Grado en Matemáticas] de la [http://www.us.es Universidad de Sevilla].&lt;br /&gt;
&lt;br /&gt;
== Material para el curso ==&lt;br /&gt;
* [[Temas]]: Transparencias de los temas y teorías.&lt;br /&gt;
* [[Ejercicios]]: Relaciones de ejercicios.&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=7</id>
		<title>Ejercicios</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Ejercicios&amp;diff=7"/>
		<updated>2020-02-07T11:10:50Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Página creada con «En esta página se encuentran los ejercicios para resolver de manera colaborativa que complementan al [https://www.cs.us.es/~jalonso/cursos/lmf-19/ejercicios/ejercicios-LMF…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se encuentran los ejercicios para resolver de manera colaborativa que complementan al [https://www.cs.us.es/~jalonso/cursos/lmf-19/ejercicios/ejercicios-LMF-2019-20.pdf libro de ejercicios].&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 1&amp;#039;&amp;#039;&amp;#039;: Sintaxis y semántica de la lógica proposicional. ([[R1 |Enunciado]] y [[Relación 1 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 2&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional. ([[R2 |Enunciado]] y [[Relación 2 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 3&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional (II). ([[R3 |Enunciado]] y [[Relación 3 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 4&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional con Isabelle ([[R4 |Enunciado]], [[Relación 4 |Solución colaborativa]] y [[Sol 4 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 5&amp;#039;&amp;#039;&amp;#039;: Sintaxis y semántica de la lógica de primer orden. ([[R5 |Enunciado]] y [[Relación 5 |Solución colaborativa]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 6&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R6.thy Deducción natural en lógica de primer orden con Isabelle] ([[R6 |Enunciado]], [[Relación  |Solución colaborativa]] y [[Sol 6 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R7.thy Deducción natural en lógica proposicional con Isabelle basada en tácticas] ([[R7 |Enunciado]], [[Relación 7 |Solución colaborativa]] y [[Sol 7 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7b&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica de primer orden con Isabelle basada en tácticas. ([[Sol 7b | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 8&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R8.thy Argumentación en lógica de primer orden con Isabelle.] ([[R8 |Enunciado]], [[Relación 8 |Solución colaborativa]] y [[Sol 8 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 9&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R9.thy Programación funcional en Isabelle] ([[R9 |Enunciado]], [[Relación 9 |Solución colaborativa]] y [[Sol 9 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 10&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R10.thy Programación funcional en Isabelle (2)] ([[R10 |Enunciado]], [[Relación 10 |Solución colaborativa]]  y [[Sol 10 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 11&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R11.thy Razonamiento sobre programas en Isabelle/HOL] ([[R11 |Enunciado]], [[Relación 11 |Solución colaborativa]]  y [[Sol 11 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 12&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R12.thy Recorridos de árboles en Isabelle/HOL] ([[R12 |Enunciado]], [[Relación 12 |Solución colaborativa]]  y [[Sol 12 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 13&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R13.thy Definiciones inductivas: clausuras] ([[R13 |Enunciado]], [[Relación 13 |Solución colaborativa]]  y [[Sol 13 | una solución]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 14&amp;#039;&amp;#039;&amp;#039;: [https://www.cs.us.es/~mjoseh/cursos/lmf-18/relaciones_ejercicios/R14.thy Desarrollo de teorías axiomáticas] ([[R14 |Enunciado]], [[Relación 14 |Solución colaborativa]]  y [[Sol 14 | una solución]]).&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=L%C3%B3gica_matem%C3%A1tica_y_fundamentos_(3%C2%BA_Matem%C3%A1ticas)&amp;diff=5</id>
		<title>Lógica matemática y fundamentos (3º Matemáticas)</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=L%C3%B3gica_matem%C3%A1tica_y_fundamentos_(3%C2%BA_Matem%C3%A1ticas)&amp;diff=5"/>
		<updated>2020-02-07T11:05:18Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Página creada con «Este sitio contiene materiales del curso [https://www.cs.us.es/~jalonso/cursos/lmf/temas.php &amp;#039;&amp;#039;&amp;#039;Lógica matemática y fundamentos&amp;#039;&amp;#039;&amp;#039;] de 3º del [http://www.us.es/estudios/…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Este sitio contiene materiales del curso [https://www.cs.us.es/~jalonso/cursos/lmf/temas.php &amp;#039;&amp;#039;&amp;#039;Lógica matemática y fundamentos&amp;#039;&amp;#039;&amp;#039;] de 3º del [http://www.us.es/estudios/grados/plan_171?p=7 Grado en Matemáticas] de la [http://www.us.es Universidad de Sevilla].&lt;br /&gt;
&lt;br /&gt;
== Material para el curso ==&lt;br /&gt;
* [[Temas]]: Transparencias de los temas y teorías.&lt;br /&gt;
* [[Ejercicios]]: Relaciones de ejercicios.&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=MediaWiki:Mainpage&amp;diff=4</id>
		<title>MediaWiki:Mainpage</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=MediaWiki:Mainpage&amp;diff=4"/>
		<updated>2020-02-07T11:03:56Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Página creada con «Lógica matemática y fundamentos (3º Matemáticas)»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lógica matemática y fundamentos (3º Matemáticas)&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=MediaWiki:Sidebar&amp;diff=3</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=MediaWiki:Sidebar&amp;diff=3"/>
		<updated>2020-02-07T11:01:59Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Página creada con «* navigation ** mainpage|mainpage-description ** Temas|Temas ** Ejercicios|Ejercicios ** recentchanges-url|recentchanges * Ayudas ** https://es.wikipedia.org/wiki/Ayuda:Uso…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Temas|Temas&lt;br /&gt;
** Ejercicios|Ejercicios&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
* Ayudas&lt;br /&gt;
** https://es.wikipedia.org/wiki/Ayuda:Uso_de_TeX|Ayuda de LaTeX&lt;br /&gt;
** https://es.wikipedia.org/wiki/Ayuda:Uso_de_TeX#L%C3%B3gica|Lógica en LaTeX&lt;br /&gt;
** https://es.wikipedia.org/wiki/Ayuda:Uso_de_TeX#Conjuntos|Conjuntos en LaTeX&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=MediaWiki:Common.css&amp;diff=2</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=MediaWiki:Common.css&amp;diff=2"/>
		<updated>2020-02-07T10:57:23Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Página creada con «/* Los estilos CSS colocados aquí se aplicarán a todas las apariencias */  @import url(&amp;quot;/~jalonso/font-awesome-4.7.0/css/font-awesome.min.css&amp;quot;);»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Los estilos CSS colocados aquí se aplicarán a todas las apariencias */&lt;br /&gt;
 @import url(&amp;quot;/~jalonso/font-awesome-4.7.0/css/font-awesome.min.css&amp;quot;);&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
</feed>