<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?action=history&amp;feed=atom&amp;title=Rel_9_%28rev_1%29</id>
	<title>Rel 9 (rev 1) - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?action=history&amp;feed=atom&amp;title=Rel_9_%28rev_1%29"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Rel_9_(rev_1)&amp;action=history"/>
	<updated>2026-07-22T16:59:28Z</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/LMF2020/index.php?title=Rel_9_(rev_1)&amp;diff=819&amp;oldid=prev</id>
		<title>Mjoseh: Protegió «Rel 9 (rev 1)» ([Editar=Solo administradores] (indefinido) [Trasladar=Solo administradores] (indefinido))</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Rel_9_(rev_1)&amp;diff=819&amp;oldid=prev"/>
		<updated>2020-04-20T17:57:23Z</updated>

		<summary type="html">&lt;p&gt;Protegió «&lt;a href=&quot;/~jalonso/LMF2020/index.php/Rel_9_(rev_1)&quot; title=&quot;Rel 9 (rev 1)&quot;&gt;Rel 9 (rev 1)&lt;/a&gt;» ([Editar=Solo administradores] (indefinido) [Trasladar=Solo administradores] (indefinido))&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 17:57 20 abr 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;es&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Sin diferencias)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Mjoseh</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Rel_9_(rev_1)&amp;diff=817&amp;oldid=prev</id>
		<title>Mjoseh: Página creada con «&lt;source lang = &quot;isabelle&quot;&gt;  chapter ‹ R9: Programación funcional en Isabelle/HOL (II) ›   theory R9_wiki_rev imports Main  begin      text ‹ ------------------------…»</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Rel_9_(rev_1)&amp;diff=817&amp;oldid=prev"/>
		<updated>2020-04-20T17:56:41Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «&amp;lt;source lang = &amp;quot;isabelle&amp;quot;&amp;gt;  chapter ‹ R9: Programación funcional en Isabelle/HOL (II) ›   theory R9_wiki_rev imports Main  begin      text ‹ ------------------------…»&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;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
chapter ‹ R9: Programación funcional en Isabelle/HOL (II) ›&lt;br /&gt;
 &lt;br /&gt;
theory R9_wiki_rev&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
    &lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Definir la función&lt;br /&gt;
     sumaPotenciasDeDosMasUno :: nat ⇒ nat&lt;br /&gt;
  tal que &lt;br /&gt;
     (sumaPotenciasDeDosMasUno n) = 1 + 2^0 + 2^1 + 2^2 + ... + 2^n. &lt;br /&gt;
  Por ejemplo, &lt;br /&gt;
     sumaPotenciasDeDosMasUno 3  =  16&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
 &lt;br /&gt;
(*antrivmar inehenluq enrniecar dessanriv juanarcon carboncar rosmargon1 laudiasan1&lt;br /&gt;
monlagare*)&lt;br /&gt;
  fun sumaPotenciasDeDosMasUno :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;sumaPotenciasDeDosMasUno 0 = 1 + 2^0 &amp;quot;&lt;br /&gt;
 |&amp;quot;sumaPotenciasDeDosMasUno (Suc m ) = sumaPotenciasDeDosMasUno m + 2^(Suc m)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*inmrodmon anapalsan3 elivazser manmorgar12*)&lt;br /&gt;
 fun sumaPotenciasDeDosMasUno1 :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;sumaPotenciasDeDosMasUno1 0 = 1 + 2^0&amp;quot;&lt;br /&gt;
| &amp;quot;sumaPotenciasDeDosMasUno1 n = 2^n + sumaPotenciasDeDosMasUno (n-1)&amp;quot;&lt;br /&gt;
value &amp;quot;sumaPotenciasDeDosMasUno 3&amp;quot; ― ‹= 16›&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
(*dantruvar josfloval*)&lt;br /&gt;
fun sumaPotenciasDeDosMasUno2 :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;sumaPotenciasDeDosMasUno2 0 = 2&amp;quot;&lt;br /&gt;
| &amp;quot;sumaPotenciasDeDosMasUno2 (Suc n) = 2^(Suc n) + sumaPotenciasDeDosMasUno2 n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Se considera la siguiente definición 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; :: &amp;quot;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;
&lt;br /&gt;
  ------------------------------------------------------------------- ›&lt;br /&gt;
 (* enrniecar antrivmar inmrodmon anapalsan3 dessanriv dantruvar elivazser&lt;br /&gt;
 juanarcon josfloval carboncar manmorgar12 laudiasan1 monlagare*)&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 (Suc n)*x&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;
(* value &amp;quot;factI 4&amp;quot; ― ‹= 24› *)&lt;br /&gt;
 &lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Definir, recursivamente y sin usar (@), la función&lt;br /&gt;
     amplia :: &amp;#039;a list ⇒ &amp;#039;a ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (amplia xs y) es la lista obtenida añadiendo el elemento y al&lt;br /&gt;
  final de la lista xs. Por ejemplo,&lt;br /&gt;
     amplia [d,a] t = [d,a,t]&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
 (*inehenluq antrivmar anapalsan3 dessanriv josfloval carboncar monlagare*)&lt;br /&gt;
fun amplia :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
 &amp;quot;amplia [] y = [y]&amp;quot;&lt;br /&gt;
|&amp;quot;amplia (x#xs) y = x#(amplia xs y)&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
(*enrniecar*)&lt;br /&gt;
fun amplia2 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;amplia2 xs y = rev (Cons y (rev(xs)))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*dantruvar elivazser rosmargon1*)&lt;br /&gt;
fun amplia3 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;amplia3 [] x = [x]&amp;quot;&lt;br /&gt;
| &amp;quot;amplia3 (Cons x xs) y = Cons x (amplia3 xs y)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(* juanarcon *)&lt;br /&gt;
fun amplia4 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;amplia4 xs y = xs @ [y]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(* manmorgar12*)&lt;br /&gt;
fun amplia5 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;amplia5 [] y = [y]&amp;quot; &lt;br /&gt;
| &amp;quot;amplia5 xs y = rev(y#(rev(xs)))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(* laudiasan1 *)&lt;br /&gt;
fun amplia&amp;#039;6 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;amplia&amp;#039;6 [] ys = ys&amp;quot;&lt;br /&gt;
| &amp;quot;amplia&amp;#039;6 xs ys = amplia&amp;#039;6 (butlast xs) ((last xs)#ys)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fun amplia6 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;amplia6 xs y = amplia&amp;#039;6 xs [y]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;amplia6 [d,a] t&amp;quot; ― ‹= [d,a,t]›&lt;br /&gt;
 &lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Definir la función&lt;br /&gt;
     todos :: (&amp;#039;a ⇒ bool) ⇒ &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (todos p xs) se verifica si todos los elementos de xs cumplen&lt;br /&gt;
  la propiedad p. Por ejemplo,&lt;br /&gt;
     todos (λx. x&amp;gt;(1::nat)) [2,6,4] = True&lt;br /&gt;
     todos (λx. x&amp;gt;(2::nat)) [2,6,4] = False&lt;br /&gt;
  Nota: La conjunción se representa por ∧&lt;br /&gt;
  ----------------------------------------------------------------- ›&lt;br /&gt;
 (*inehenluq inmrodmon antrivmar anapalsan3 dessanriv carboncar manmorgar12 laudiasan1&lt;br /&gt;
monlagare*)&lt;br /&gt;
fun todos :: &amp;quot;(&amp;#039;a ⇒ bool) ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;todos p [] = True&amp;quot;&lt;br /&gt;
| &amp;quot;todos p (x#xs) = ((p x) ∧ (todos p xs))&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(*enrniecar juanarcon josfloval rosmargon1(dentro de if basta con &amp;quot;p x&amp;quot;) *) &lt;br /&gt;
fun todos2 :: &amp;quot;(&amp;#039;a ⇒ bool) ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;todos2 p [] = True&amp;quot;&lt;br /&gt;
| &amp;quot;todos2 p (Cons x xs) = (if (p x) =True then (todos p xs) else False)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*dantruvar elivazser*)&lt;br /&gt;
fun todos3 :: &amp;quot;(&amp;#039;a ⇒ bool) ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;todos3 p [] = True&amp;quot;&lt;br /&gt;
| &amp;quot;todos3 p (Cons x xs) = (p x ∧ todos3 p xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;todos (λx. x&amp;gt;(1::nat)) [2,6,4]&amp;quot; ― ‹= True› &lt;br /&gt;
(* value &amp;quot;todos (λx. x&amp;gt;(2::nat)) [2,6,4]&amp;quot; ― ‹= False› *)&lt;br /&gt;
 &lt;br /&gt;
text ‹ &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Definir la función &lt;br /&gt;
     algunos :: (&amp;#039;a ⇒ bool) ⇒ &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (algunos p xs) se verifica si algunos elementos de la lista &lt;br /&gt;
  xs cumplen la propiedad p. Por ejemplo, se verifica &lt;br /&gt;
     algunos (λx. 1&amp;lt;length x) [[2,1,4],[3]]&lt;br /&gt;
     ¬algunos (λx. 1&amp;lt;length x) [[],[3]]&lt;br /&gt;
&lt;br /&gt;
  Nota: La función algunos es equivalente a la predefinida list_ex. &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
›&lt;br /&gt;
(*inehenluq anapalsan3 dessanriv carboncar manmorgar12 laudiasan1 monlagare*)&lt;br /&gt;
fun algunos  :: &amp;quot;(&amp;#039;a ⇒ bool) ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
 &amp;quot;algunos p [] = False&amp;quot;&lt;br /&gt;
|&amp;quot;algunos p (x#xs) = ((p x) ∨ (algunos p xs))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*enrniecar rosmargon1*)&lt;br /&gt;
fun algunos1  :: &amp;quot;(&amp;#039;a ⇒ bool) ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;algunos1 p [] =False &amp;quot;&lt;br /&gt;
| &amp;quot;algunos1 p (Cons x xs) =(if (p x) = True then True else algunos1 p xs)&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
(*antrivmar inmrodmon*)&lt;br /&gt;
fun algunos2  :: &amp;quot;(&amp;#039;a ⇒ bool) ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
&amp;quot;algunos2 p [] = False&amp;quot;&lt;br /&gt;
|&amp;quot;algunos2 p (x#xs) = (if p x then True else algunos p xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*dantruvar elivazser juanarcon josfloval*)&lt;br /&gt;
fun algunos3  :: &amp;quot;(&amp;#039;a ⇒ bool) ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;algunos3 p [] = False&amp;quot;&lt;br /&gt;
| &amp;quot;algunos3 p (Cons x xs) = (p x ∨ algunos3 p xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Definir recursivamente 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;
(*inehenluq anapalsan3 dessanriv dantruvar carboncar laudiasan1 monlagare*)&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 (y#ys) = ((x=y)∨(estaEn x ys))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*enrniecar juanarcon*)&lt;br /&gt;
fun estaEn2 :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;estaEn2 x [] = False&amp;quot;&lt;br /&gt;
| &amp;quot;estaEn2 y (Cons x xs) =(if x=y then True else estaEn2 y xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*rosmargon1*)&lt;br /&gt;
fun estaEn1 :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;estaEn1 y [] = False&amp;quot;&lt;br /&gt;
| &amp;quot;estaEn1 y (Cons x xs) =((y=x) ∨ (estaEn1 y xs))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*inmrodmon*)&lt;br /&gt;
fun estaEn3 :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
    &amp;quot;estaEn3 x [] = False&amp;quot;&lt;br /&gt;
|   &amp;quot;estaEn3 x xs = (if x=(hd xs) then True else estaEn1 x (tl xs))&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(*antrivmar manmorgar12*)&lt;br /&gt;
fun estaEn4 :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;estaEn4 y [] = False&amp;quot;&lt;br /&gt;
| &amp;quot;estaEn4 y (x#xs) = (if y = x then True else estaEn4 y xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*elivazser*)&lt;br /&gt;
fun estaEn5 :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;estaEn5 x [] = False&amp;quot;&lt;br /&gt;
| &amp;quot;estaEn5 x (Cons y xs) = ( x = y ∨ estaEn5 x xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*josfloval*)&lt;br /&gt;
fun estaEn6 :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;estaEn6 x xs = algunos (λy. y=x) xs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹ &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Definir recursivamemte 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;
(*inehenluq *)&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 [x] = True&amp;quot;&lt;br /&gt;
|&amp;quot;sinDuplicados (x#(y#xs))=((¬(x=y))∧(sinDuplicados (x#xs))∧(sinDuplicados (y#xs))&lt;br /&gt;
                            ∧(sinDuplicados xs))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(* Comentario: para definir sinDuplicados es conveniente usar la función estaEn *)&lt;br /&gt;
&lt;br /&gt;
(*enrniecar dessanriv dantruvar elivazser josfloval laudiasan1 monlagare*)&lt;br /&gt;
fun sinDuplicados2 :: &amp;quot;&amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;sinDuplicados2 [] = True&amp;quot;&lt;br /&gt;
| &amp;quot;sinDuplicados2 (Cons x xs) = ((¬estaEn x xs) ∧ (sinDuplicados2 xs))&amp;quot; &lt;br /&gt;
   (*estaEn está definida en el ejercicio anterior*)&lt;br /&gt;
&lt;br /&gt;
(*antrivmar inmrodmon juanarcon carboncar manmorgar12*)&lt;br /&gt;
fun sinDuplicados3 :: &amp;quot;&amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
 &amp;quot;sinDuplicados3 [] = True&amp;quot;&lt;br /&gt;
|&amp;quot;sinDuplicados3 (x#xs) = (if (estaEn x xs) then False else sinDuplicados3 xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*anapalsan3*)&lt;br /&gt;
fun sinDuplicados4 :: &amp;quot;&amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
 &amp;quot;sinDuplicados4 [] = True&amp;quot;&lt;br /&gt;
|&amp;quot;sinDuplicados4 (x#xs) =( (¬(estaEn x xs))  ∧ (sinDuplicados4 xs))&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(*rosmargon1*)&lt;br /&gt;
fun sinDuplicados5 :: &amp;quot;&amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;sinDuplicados5 [] = True&amp;quot;&lt;br /&gt;
| &amp;quot;sinDuplicados5 (Cons x xs) = (if (estaEn x xs) then False else sinDuplicados5 xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹ &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Definir la recursivamente 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;
(*enrniecar*)&lt;br /&gt;
fun aux :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
 &amp;quot;aux [] ys=ys&amp;quot;&lt;br /&gt;
|&amp;quot;aux (Cons x xs) ys=(if estaEn x ys then aux xs ys else aux xs (Cons x ys))&amp;quot;&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 xs= aux (rev(xs)) []&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*antrivmar inmrodmon dessanriv anapalsan3 dantruvar josfloval carboncar manmorgar12 laudiasan1*)&lt;br /&gt;
fun borraDuplicados1 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
 &amp;quot;borraDuplicados1 [] = []&amp;quot;&lt;br /&gt;
|&amp;quot;borraDuplicados1 (x#xs) = &lt;br /&gt;
  (if (estaEn x xs ) then borraDuplicados1 xs else  x#(borraDuplicados1 xs))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*elivazser juanarcon rosmargon1*)&lt;br /&gt;
fun borraDuplicados2 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;borraDuplicados2 [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;borraDuplicados2 (Cons x xs) = &lt;br /&gt;
  (if (estaEn x xs) then (borraDuplicados2 xs) else (Cons x (borraDuplicados2 xs)))&amp;quot;&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>Mjoseh</name></author>
		
	</entry>
</feed>