<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/RA2013/index.php?action=history&amp;feed=atom&amp;title=Tema_1%3A_Programaci%C3%B3n_funcional_en_Isabelle</id>
	<title>Tema 1: Programación funcional en Isabelle - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/RA2013/index.php?action=history&amp;feed=atom&amp;title=Tema_1%3A_Programaci%C3%B3n_funcional_en_Isabelle"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/RA2013/index.php?title=Tema_1:_Programaci%C3%B3n_funcional_en_Isabelle&amp;action=history"/>
	<updated>2026-07-17T15:39:22Z</updated>
	<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
	<generator>MediaWiki 1.31.14</generator>
	<entry>
		<id>https://www.glc.us.es/~jalonso/RA2013/index.php?title=Tema_1:_Programaci%C3%B3n_funcional_en_Isabelle&amp;diff=677&amp;oldid=prev</id>
		<title>WikiSysop: Texto reemplazado: «isar» por «isabelle»</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/RA2013/index.php?title=Tema_1:_Programaci%C3%B3n_funcional_en_Isabelle&amp;diff=677&amp;oldid=prev"/>
		<updated>2018-07-16T15:46:17Z</updated>

		<summary type="html">&lt;p&gt;Texto reemplazado: «isar» por «isabelle»&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 15:46 16 jul 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Línea 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;isar&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;isabelle&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;header {* Tema 1: Programación funcional en Isabelle *}&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;header {* Tema 1: Programación funcional en Isabelle *}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/RA2013/index.php?title=Tema_1:_Programaci%C3%B3n_funcional_en_Isabelle&amp;diff=20&amp;oldid=prev</id>
		<title>Jalonso en 06:28 24 oct 2013</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/RA2013/index.php?title=Tema_1:_Programaci%C3%B3n_funcional_en_Isabelle&amp;diff=20&amp;oldid=prev"/>
		<updated>2013-10-24T06:28:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 06:28 24 oct 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l188&quot; &gt;Línea 188:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 188:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;value &amp;quot;a#(b#(c#[]))&amp;quot; -- &amp;quot;= [a,b,c]&amp;quot; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;value &amp;quot;a#(b#(c#[]))&amp;quot; -- &amp;quot;= [a,b,c]&amp;quot; &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;text {* Funciones de &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;descomposión &lt;/del&gt;de listas:&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;text {* Funciones de &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;descomposición &lt;/ins&gt;de listas:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; · (hd xs) es el primer elemento de la lista xs.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; · (hd xs) es el primer elemento de la lista xs.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; · (tl xs) es el resto de la lista xs.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; · (tl xs) es el resto de la lista xs.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l205&quot; &gt;Línea 205:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 205:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; http://goo.gl/sFsFF se encuentran más definiciones y propiedades de&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; http://goo.gl/sFsFF se encuentran más definiciones y propiedades de&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; las listas. *}&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; las listas. *}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;section {* Registros *}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;text {* Un registro es una colección de campos y valores. &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; Por ejemplo, los puntos del plano se pueden representar mediante&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; registros con dos campos, las coordenadas, con valores enteros. *}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;record punto = &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; coordenada_x :: int&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; coordenada_y :: int&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;text {* Ejemplo, el punto pt tiene de coordenadas 3 y 7. *}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;definition pt :: punto where&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; &amp;quot;pt ≡ ⦇coordenada_x = 3, coordenada_y = 7⦈&amp;quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;text {* Ejemplo, la coordenada x del punto pt es 3. *}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;value &amp;quot;coordenada_x pt&amp;quot; -- &amp;quot;= 3&amp;quot; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;text {* Ejemplo, sea pt2 el punto obtenido a partir del punto pt&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; cambiando el valor de su coordenada x por 4. Entonces la coordenada x&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;#160; del punto pt2 es 4. *}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;value &amp;quot;let pt2 = pt⦇coordenada_x:=4⦈ in coordenada_x (pt2)&amp;quot; -- &amp;quot;= 4&amp;quot; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;section {* Funciones anónimas *}&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;section {* Funciones anónimas *}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/RA2013/index.php?title=Tema_1:_Programaci%C3%B3n_funcional_en_Isabelle&amp;diff=16&amp;oldid=prev</id>
		<title>Jalonso: Página creada con &#039;&lt;source lang=&quot;isar&quot;&gt; header {* Tema 1: Programación funcional en Isabelle *}  theory T1 imports Main  begin  section {* Introducción *}  text {*    En este tema se presenta el...&#039;</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/RA2013/index.php?title=Tema_1:_Programaci%C3%B3n_funcional_en_Isabelle&amp;diff=16&amp;oldid=prev"/>
		<updated>2013-10-24T06:02:45Z</updated>

		<summary type="html">&lt;p&gt;Página creada con &amp;#039;&amp;lt;source lang=&amp;quot;isar&amp;quot;&amp;gt; header {* Tema 1: Programación funcional en Isabelle *}  theory T1 imports Main  begin  section {* Introducción *}  text {*    En este tema se presenta el...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;isar&amp;quot;&amp;gt;&lt;br /&gt;
header {* Tema 1: Programación funcional en Isabelle *}&lt;br /&gt;
&lt;br /&gt;
theory T1&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
section {* Introducción *}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  En este tema se presenta el lenguaje funcional que está&lt;br /&gt;
  incluido en Isabelle. El lenguaje funcional es muy parecido a&lt;br /&gt;
  Haskell. *}&lt;br /&gt;
&lt;br /&gt;
section {* Números naturales, enteros y booleanos *}&lt;br /&gt;
&lt;br /&gt;
text {* En Isabelle están definidos los número naturales con la sintaxis&lt;br /&gt;
  de Peano usando dos constructores: 0 (cero) y Suc (el sucesor).&lt;br /&gt;
&lt;br /&gt;
  Los números como el 1 son abreviaturas de los correspondientes en la&lt;br /&gt;
  notación de Peano, en este caso &amp;quot;Suc 0&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
  El tipo de los números naturales es nat. &lt;br /&gt;
&lt;br /&gt;
  Por ejemplo, el siguiente del 0 es el 1. *}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;Suc 0&amp;quot; -- &amp;quot;= 1&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {* En Isabelle está definida la suma de los números naturales:&lt;br /&gt;
  (x + y) es la suma de x e y.&lt;br /&gt;
&lt;br /&gt;
  Por ejemplo, la suma de los números naturales 1 y 2 es el número&lt;br /&gt;
  natural 3. *}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;(1::nat) + 2&amp;quot; -- &amp;quot;= 3&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {* La notación del par de dos puntos se usa para asignar un tipo a&lt;br /&gt;
  un término (por ejemplo, (1::nat) significa que se considera que 1 es&lt;br /&gt;
  un número natural).   &lt;br /&gt;
&lt;br /&gt;
  En Isabelle está definida el producto de los números naturales:&lt;br /&gt;
  (x * y) es el producto de x e y.&lt;br /&gt;
&lt;br /&gt;
  Por ejemplo, el producto de los números naturales 2 y 3 es el número&lt;br /&gt;
  natural 6. *}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;(2::nat) * 3&amp;quot; -- &amp;quot;= 6&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {* En Isabelle está definida la división de números naturales: &lt;br /&gt;
  (n div m) es el cociente entero de x entre y.&lt;br /&gt;
&lt;br /&gt;
  Por ejemplo, la división natural de 7 entre 3 es 2. *}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;(7::nat) div 3&amp;quot; -- &amp;quot;= 2&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {* En Isabelle está definida el resto de división de números&lt;br /&gt;
  naturales: (n mod m) es el resto de dividir n entre m.&lt;br /&gt;
&lt;br /&gt;
  Por ejemplo, el resto de dividir 7 entre 3 es 1. *}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;(7::nat) mod 3&amp;quot; -- &amp;quot;= 1&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {* En Isabelle también están definidos los números enteros. El tipo&lt;br /&gt;
  de los enteros se representa por int.&lt;br /&gt;
&lt;br /&gt;
  Por ejemplo, la suma de 1 y -2 es el número entero -1. *}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;(1::int) + -2&amp;quot; -- &amp;quot;= -1&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {* Los numerales están sobrecargados. Por ejemplo, el 1 puede ser&lt;br /&gt;
  un natural o un entero, dependiendo del contexto. &lt;br /&gt;
&lt;br /&gt;
  Isabelle resuelve ambigüedades mediante inferencia de tipos.&lt;br /&gt;
&lt;br /&gt;
  A veces, es necesario usar declaraciones de tipo para resolver la&lt;br /&gt;
  ambigüedad.&lt;br /&gt;
&lt;br /&gt;
  En Isabelle están definidos los valores booleanos (True y False), las&lt;br /&gt;
  conectivas (¬, ∧, ∨, ⟶ y ↔) y los cuantificadores (∀ y ∃). &lt;br /&gt;
&lt;br /&gt;
  El tipo de los booleanos es bool. *}&lt;br /&gt;
&lt;br /&gt;
text {* La conjunción de dos fórmulas verdaderas es verdadera. *}&lt;br /&gt;
value &amp;quot;True ∧ True&amp;quot; -- &amp;quot;= True&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {* La conjunción de un fórmula verdadera y una falsa es falsa. *} &lt;br /&gt;
value &amp;quot;True ∧ False&amp;quot; -- &amp;quot;= False&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {* La disyunción de una fórmula verdadera y una falsa es&lt;br /&gt;
  verdadera. *} &lt;br /&gt;
value &amp;quot;True ∨ False&amp;quot; -- &amp;quot;= True&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {* La disyunción de dos fórmulas falsas es falsa. *}&lt;br /&gt;
value &amp;quot;False ∨ False&amp;quot; -- &amp;quot;= False&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {* La negación de una fórmula verdadera es falsa. *}&lt;br /&gt;
value &amp;quot;¬True&amp;quot; -- &amp;quot;= False&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {* Una fórmula falsa implica una fórmula verdadera. *}&lt;br /&gt;
value &amp;quot;False ⟶ True&amp;quot; -- &amp;quot;= True&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* Un lema introduce una proposición seguida de una demostración. &lt;br /&gt;
&lt;br /&gt;
  Isabelle dispone de varios procedimientos automáticos para generar&lt;br /&gt;
  demostraciones, uno de los cuales es el de simplificación (llamado&lt;br /&gt;
  simp). &lt;br /&gt;
&lt;br /&gt;
  El procedimiento simp aplica un conjunto de reglas de reescritura, que&lt;br /&gt;
  inicialmente contiene un gran número de reglas relativas a los objetos&lt;br /&gt;
  definidos. *}&lt;br /&gt;
&lt;br /&gt;
text {* Ej. de simp: Todo elemento es igual a sí mismo. *}&lt;br /&gt;
lemma &amp;quot;∀x. x = x&amp;quot; &lt;br /&gt;
by simp&lt;br /&gt;
&lt;br /&gt;
text {* Ej. de simp: Existe un elemento igual a 1. *}&lt;br /&gt;
lemma &amp;quot;∃x. x = 1&amp;quot; &lt;br /&gt;
by simp&lt;br /&gt;
&lt;br /&gt;
section {* Definiciones no recursivas *}&lt;br /&gt;
&lt;br /&gt;
text {* La disyunción exclusiva de A y B se verifica si una es verdadera&lt;br /&gt;
  y la otra no lo es. *}&lt;br /&gt;
&lt;br /&gt;
definition xor :: &amp;quot;bool ⇒ bool ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;xor A B ≡ (A ∧ ¬B) ∨ (¬A ∧ B)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* Prop.: La disyunción exclusiva de dos fórmulas verdaderas es&lt;br /&gt;
  falsa. &lt;br /&gt;
&lt;br /&gt;
  Dem.: Por simplificación, usando la definición de la disyunción&lt;br /&gt;
  exclusiva. &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;xor True True = False&amp;quot;&lt;br /&gt;
by (simp add: xor_def)&lt;br /&gt;
&lt;br /&gt;
text {* Se añade la definición de la disyunción exclusiva al conjunto de&lt;br /&gt;
  reglas de simplificación automáticas. *}&lt;br /&gt;
&lt;br /&gt;
declare xor_def[simp]&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;xor True False = True&amp;quot;&lt;br /&gt;
by simp&lt;br /&gt;
&lt;br /&gt;
section {* Definiciones locales *}&lt;br /&gt;
&lt;br /&gt;
text {* Se puede asignar valores a variables locales mediante &amp;#039;let&amp;#039; y&lt;br /&gt;
  usarlo en las expresiones dentro de &amp;#039;in&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
  Por ejemplo, si x es el número natural 3, entonces &amp;quot;x*x=9&amp;quot;. *}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;let x = 3::nat in x * x&amp;quot; -- &amp;quot;= 9&amp;quot; &lt;br /&gt;
&lt;br /&gt;
section {* Pares *}&lt;br /&gt;
&lt;br /&gt;
text {* Un par se representa escribiendo los elementos entre paréntesis&lt;br /&gt;
  y separados por coma.&lt;br /&gt;
  &lt;br /&gt;
  El tipo de los pares es el producto de los tipos.&lt;br /&gt;
  &lt;br /&gt;
  La función fst devuelve el primer elemento de un par y la snd el&lt;br /&gt;
  segundo. &lt;br /&gt;
&lt;br /&gt;
  Por ejemplo, si p es el par de números naturales (2,3), entonces la&lt;br /&gt;
  suma del primer elemento de p y 1 es igual al segundo elemento de&lt;br /&gt;
  p. *} &lt;br /&gt;
&lt;br /&gt;
value &amp;quot;let p = (2,3)::nat × nat in fst p + 1 = snd p&amp;quot; &lt;br /&gt;
&lt;br /&gt;
section {* Listas *}&lt;br /&gt;
&lt;br /&gt;
text {* Una lista se representa escribiendo los elementos entre&lt;br /&gt;
  corchetes y separados por comas.&lt;br /&gt;
  &lt;br /&gt;
  La lista vacía se representa por [].&lt;br /&gt;
  &lt;br /&gt;
  Todos los elementos de una lista tienen que ser del mismo tipo.&lt;br /&gt;
  &lt;br /&gt;
  El tipo de las listas de elementos del tipo a es (a list).&lt;br /&gt;
  &lt;br /&gt;
  El término (x#xs) representa la lista obtenida añadiendo el elemento x&lt;br /&gt;
  al principio de la lista xs. &lt;br /&gt;
&lt;br /&gt;
  Por ejemplo, la lista obtenida añadiendo sucesivamente a la lista&lt;br /&gt;
  vacía los elementos c, b y a es [a,b,c]. *}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;a#(b#(c#[]))&amp;quot; -- &amp;quot;= [a,b,c]&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {* Funciones de descomposión de listas:&lt;br /&gt;
  · (hd xs) es el primer elemento de la lista xs.&lt;br /&gt;
  · (tl xs) es el resto de la lista xs.&lt;br /&gt;
&lt;br /&gt;
  Por ejemplo, si xs es la lista [a,b,c], entonces el primero de xs es a&lt;br /&gt;
  y el resto de xs es [b,c]. *} &lt;br /&gt;
&lt;br /&gt;
value &amp;quot;let xs = [a,b,c] in hd xs = a ∧ tl xs = [b,c]&amp;quot; -- &amp;quot;= True&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* (length xs) es la longitud de la lista xs. Por ejemplo, la&lt;br /&gt;
  longitud de la lista [1,2,3] es 3. *}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;length [1,2,3]&amp;quot; -- &amp;quot;= 3&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {* En la sesión 47 de &amp;quot;Isabelle/HOL — Higher-Order Logic&amp;quot;&lt;br /&gt;
  http://goo.gl/sFsFF se encuentran más definiciones y propiedades de&lt;br /&gt;
  las listas. *}&lt;br /&gt;
&lt;br /&gt;
section {* Registros *}&lt;br /&gt;
&lt;br /&gt;
text {* Un registro es una colección de campos y valores. &lt;br /&gt;
&lt;br /&gt;
  Por ejemplo, los puntos del plano se pueden representar mediante&lt;br /&gt;
  registros con dos campos, las coordenadas, con valores enteros. *}&lt;br /&gt;
&lt;br /&gt;
record punto = &lt;br /&gt;
  coordenada_x :: int&lt;br /&gt;
  coordenada_y :: int&lt;br /&gt;
&lt;br /&gt;
text {* Ejemplo, el punto pt tiene de coordenadas 3 y 7. *}&lt;br /&gt;
&lt;br /&gt;
definition pt :: punto where&lt;br /&gt;
  &amp;quot;pt ≡ ⦇coordenada_x = 3, coordenada_y = 7⦈&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* Ejemplo, la coordenada x del punto pt es 3. *}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;coordenada_x pt&amp;quot; -- &amp;quot;= 3&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {* Ejemplo, sea pt2 el punto obtenido a partir del punto pt&lt;br /&gt;
  cambiando el valor de su coordenada x por 4. Entonces la coordenada x&lt;br /&gt;
  del punto pt2 es 4. *}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;let pt2 = pt⦇coordenada_x:=4⦈ in coordenada_x (pt2)&amp;quot; -- &amp;quot;= 4&amp;quot; &lt;br /&gt;
&lt;br /&gt;
section {* Funciones anónimas *}&lt;br /&gt;
&lt;br /&gt;
text {* En Isabelle pueden definirse funciones anónimas.  &lt;br /&gt;
&lt;br /&gt;
  Por ejemplo, el valor de la función que a un número le asigna su doble&lt;br /&gt;
  aplicada a 1 es 2. *}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;(λx. x + x) 1::nat&amp;quot; -- &amp;quot;= 2&amp;quot; &lt;br /&gt;
&lt;br /&gt;
section {* Condicionales *}&lt;br /&gt;
&lt;br /&gt;
text {* El valor absoluto del entero x es x, si &amp;quot;x ≥ 0&amp;quot; y es -x en caso &lt;br /&gt;
  contrario. *}&lt;br /&gt;
&lt;br /&gt;
definition absoluto :: &amp;quot;int ⇒ int&amp;quot; where&lt;br /&gt;
  &amp;quot;absoluto x ≡ (if x ≥ 0 then x else -x)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* Ejemplo, el valor absoluto de -3 es 3. *}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;absoluto(-3)&amp;quot; -- &amp;quot;= 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* Def.: Un número natural n es un sucesor si es de la forma &lt;br /&gt;
  (Suc m). *}&lt;br /&gt;
&lt;br /&gt;
definition es_sucesor :: &amp;quot;nat ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;es_sucesor n ≡ (case n of &lt;br /&gt;
    0     ⇒ False &lt;br /&gt;
  | Suc m ⇒ True)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* Ejemplo, el número 3 es sucesor. *}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;es_sucesor 3&amp;quot; -- &amp;quot;= True&amp;quot;&lt;br /&gt;
&lt;br /&gt;
section {* Tipos de datos y definiciones recursivas *}&lt;br /&gt;
&lt;br /&gt;
text {* Una lista de elementos de tipo a es la lista Vacia o se obtiene&lt;br /&gt;
  añadiendo, con Cons, un elemento de tipo a a una lista de elementos de&lt;br /&gt;
  tipo a. *} &lt;br /&gt;
&lt;br /&gt;
datatype &amp;#039;a Lista = Vacia | Cons &amp;#039;a &amp;quot;&amp;#039;a Lista&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* (conc xs ys) es la concatenación de las lista xs e ys. Por&lt;br /&gt;
  ejemplo, &lt;br /&gt;
     conc (Cons a (Cons b Vacia)) (Cons c Vacia)&lt;br /&gt;
     = Cons a (Cons b (Cons c Vacia))&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun conc :: &amp;quot;&amp;#039;a Lista ⇒ &amp;#039;a Lista ⇒ &amp;#039;a Lista&amp;quot; where&lt;br /&gt;
  &amp;quot;conc Vacia ys       = ys&amp;quot;&lt;br /&gt;
| &amp;quot;conc (Cons x xs) ys = Cons x (conc xs ys)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;conc (Cons a (Cons b Vacia)) (Cons c Vacia)&amp;quot;&lt;br /&gt;
-- &amp;quot;= Cons a (Cons b (Cons c Vacia))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* (suma n) es la suma de los primeros n números naturales. Por&lt;br /&gt;
  ejemplo,&lt;br /&gt;
     suma 3 = 6&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun suma :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;suma 0       = 0&amp;quot;&lt;br /&gt;
| &amp;quot;suma (Suc m) = (Suc m) + suma m&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;suma 3&amp;quot; -- &amp;quot;= 6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* (sumaImpares n) es la suma de los n primeros números&lt;br /&gt;
  impares. Por ejemplo,&lt;br /&gt;
     sumaImpares 3 = 9&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun sumaImpares :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;sumaImpares 0       = 0&amp;quot;&lt;br /&gt;
| &amp;quot;sumaImpares (Suc n) = (2 * (Suc n) - 1) + sumaImpares n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;sumaImpares 3&amp;quot; -- &amp;quot;= 9&amp;quot;&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>
</feed>