<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/SLC2018/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WikiSysop</id>
	<title>Seminario de Lógica Computacional (2018) - Contribuciones del usuario [es]</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/SLC2018/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=WikiSysop"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php/Especial:Contribuciones/WikiSysop"/>
	<updated>2026-07-18T11:34:05Z</updated>
	<subtitle>Contribuciones del usuario</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Sistemas&amp;diff=16</id>
		<title>Sistemas</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Sistemas&amp;diff=16"/>
		<updated>2018-02-21T19:36:13Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sistemas ==&lt;br /&gt;
&lt;br /&gt;
* Instalación de [[https://coq.inria.fr Coq] 8.6&lt;br /&gt;
** [https://github.com/coq/coq/wiki/Installation-of-Coq-on-Linux en Ubuntu].&lt;br /&gt;
** [https://coq.inria.fr/coq-86 en Eindows o Mac].&lt;br /&gt;
&lt;br /&gt;
* Instalación de [https://proofgeneral.github.io/ Proof General]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Sistemas&amp;diff=15</id>
		<title>Sistemas</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Sistemas&amp;diff=15"/>
		<updated>2018-02-21T19:32:28Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Página creada con &amp;#039;== Sistemas ==  * Instalación de Coq 8.6 ** [https://github.com/coq/coq/wiki/Installation-of-Coq-on-Linux en Ubuntu]. ** [https://coq.inria.fr/coq-86 en Eindows o Mac].&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sistemas ==&lt;br /&gt;
&lt;br /&gt;
* Instalación de Coq 8.6&lt;br /&gt;
** [https://github.com/coq/coq/wiki/Installation-of-Coq-on-Linux en Ubuntu].&lt;br /&gt;
** [https://coq.inria.fr/coq-86 en Eindows o Mac].&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=MediaWiki:Sidebar&amp;diff=14</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=MediaWiki:Sidebar&amp;diff=14"/>
		<updated>2018-02-21T19:20:47Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &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;
** Documentación|Documentación&lt;br /&gt;
** Sistemas|Sistemas&lt;br /&gt;
** http://www.glc.us.es/~jalonso/vestigium/tag/ra2017|Diario&lt;br /&gt;
** https://twitter.com/search?f=tweets&amp;amp;q=%23SLC2018%20from:Jose_A_Alonso|Twitter&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Temas&amp;diff=13</id>
		<title>Temas</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Temas&amp;diff=13"/>
		<updated>2018-02-21T19:09:12Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: /* Temas de Seminario de lógica computacional (2018) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Temas de &amp;#039;&amp;#039;Seminario de lógica computacional (2018)&amp;#039;&amp;#039; ==&lt;br /&gt;
&lt;br /&gt;
En esta página se irán publicando los temas conforme se vayan estudiando.&lt;br /&gt;
&lt;br /&gt;
* [http://www.seas.upenn.edu/~cis500/current/lectures/lec01.pdf Introducción de B. Pierce a &amp;quot;Software foundations&amp;quot;].&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Documentaci%C3%B3n&amp;diff=12</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Documentaci%C3%B3n&amp;diff=12"/>
		<updated>2018-02-21T19:06:06Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Página creada con &amp;#039;== Documentación ==  * [https://softwarefoundations.cis.upenn.edu/lf-current/index.html Software foundations (Volume 1: Logical foundations)] * [http://www.seas.upenn.edu/~cis5...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Documentación ==&lt;br /&gt;
&lt;br /&gt;
* [https://softwarefoundations.cis.upenn.edu/lf-current/index.html Software foundations (Volume 1: Logical foundations)]&lt;br /&gt;
* [http://www.seas.upenn.edu/~cis500/current/index.html CIS 500: Software foundations (2017)]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Relaci%C3%B3n_1&amp;diff=11</id>
		<title>Relación 1</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Relaci%C3%B3n_1&amp;diff=11"/>
		<updated>2018-02-21T19:01:24Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Página creada con &amp;#039;&amp;lt;source lang=&amp;quot;ocaml&amp;quot;&amp;gt; (* Relación 1: Programación funcional en Coq *)  Require Export Basics.  Definition admit {T: Type} : T.  Admitted.  (* ---------------------------------...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;ocaml&amp;quot;&amp;gt;&lt;br /&gt;
(* Relación 1: Programación funcional en Coq *)&lt;br /&gt;
&lt;br /&gt;
Require Export Basics.&lt;br /&gt;
&lt;br /&gt;
Definition admit {T: Type} : T.  Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 1. Definir la función &lt;br /&gt;
      nandb :: bool -&amp;gt; bool -&amp;gt; bool &lt;br /&gt;
   tal que (nanb x y) se verifica si x e y no son verdaderos.&lt;br /&gt;
&lt;br /&gt;
   Demostrar las siguientes propiedades de nand&lt;br /&gt;
      (nandb true  false) = true.&lt;br /&gt;
      (nandb false false) = true.&lt;br /&gt;
      (nandb false true)  = true.&lt;br /&gt;
      (nandb true  true)  = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Definition nandb (b1:bool) (b2:bool) : bool :=&lt;br /&gt;
  admit. &lt;br /&gt;
&lt;br /&gt;
Example prop_nandb1: (nandb true false) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_nandb2: (nandb false false) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example prop_nandb3: (nandb false true) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_nandb4: (nandb true true) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 2.1. Definir la función&lt;br /&gt;
      andb3 :: bool -&amp;gt; bool -&amp;gt; bool -&amp;gt; bool&lt;br /&gt;
   tal que (andb3 x y z) se verifica si x, y y z son verdaderos.&lt;br /&gt;
&lt;br /&gt;
   Demostrar las siguientes propiedades de andb3&lt;br /&gt;
      (andb3 true  true  true)  = true.&lt;br /&gt;
      (andb3 false true  true)  = false.&lt;br /&gt;
      (andb3 true  false true)  = false.&lt;br /&gt;
      (andb3 true  true  false) = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Definition andb3 (x:bool) (y:bool) (z:bool) : bool :=&lt;br /&gt;
  admit.&lt;br /&gt;
&lt;br /&gt;
Example prop_andb31: (andb3 true true true) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_andb32: (andb3 false true true) = false.&lt;br /&gt;
Admitted. &lt;br /&gt;
&lt;br /&gt;
Example prop_andb33: (andb3 true false true) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_andb34: (andb3 true true false) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 3. Definir la función&lt;br /&gt;
      factorial :: nat -&amp;gt; nat1&lt;br /&gt;
   tal que (factorial n) es el factorial de n. &lt;br /&gt;
&lt;br /&gt;
      (factorial 3) = 6.&lt;br /&gt;
      (factorial 5) = (mult 10 12).&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Fixpoint factorial (n:nat) : nat := &lt;br /&gt;
  admit.&lt;br /&gt;
&lt;br /&gt;
Example prop_factorial1: (factorial 3) = 6.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_factorial2: (factorial 5) = (mult 10 12).&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 4. Definir la función&lt;br /&gt;
      blt_nat :: nat -&amp;gt; nat -&amp;gt; bool&lt;br /&gt;
   tal que (blt n m) se verifica si n es menor que m.&lt;br /&gt;
&lt;br /&gt;
   Demostrar las siguientes propiedades&lt;br /&gt;
      (blt_nat 2 2) = false.&lt;br /&gt;
      (blt_nat 2 4) = true.&lt;br /&gt;
      (blt_nat 4 2) = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Definition blt_nat (n m : nat) : bool :=&lt;br /&gt;
  admit.&lt;br /&gt;
                                   &lt;br /&gt;
Example prop_blt_nat1: (blt_nat 2 2) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_blt_nat2: (blt_nat 2 4) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_blt_nat3: (blt_nat 4 2) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 5. Demostrar que&lt;br /&gt;
      forall n m o : nat,&lt;br /&gt;
         n = m -&amp;gt; m = o -&amp;gt; n + m = m + o.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem plus_id_exercise: forall n m o : nat,&lt;br /&gt;
  n = m -&amp;gt; m = o -&amp;gt; n + m = m + o.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 6. Demostrar que&lt;br /&gt;
      forall n m : nat,&lt;br /&gt;
        m = S n -&amp;gt;&lt;br /&gt;
        m * (1 + n) = m * m.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Theorem mult_S_1 : forall n m : nat,&lt;br /&gt;
  m = S n -&amp;gt;&lt;br /&gt;
  m * (1 + n) = m * m.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 7. Demostrar que&lt;br /&gt;
      forall b c : bool,&lt;br /&gt;
        andb b c = true -&amp;gt; c = true.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem andb_true_elim2 : forall b c : bool,&lt;br /&gt;
  andb b c = true -&amp;gt; c = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 8. Dmostrar que&lt;br /&gt;
      forall n : nat,&lt;br /&gt;
        beq_nat 0 (n + 1) = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem zero_nbeq_plus_1: forall n : nat,&lt;br /&gt;
  beq_nat 0 (n + 1) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 9. Demostrar que&lt;br /&gt;
      forall (f : bool -&amp;gt; bool),&lt;br /&gt;
        (forall (x : bool), f x = x) -&amp;gt; &lt;br /&gt;
        forall (b : bool), f (f b) = b.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem identity_fn_applied_twice :&lt;br /&gt;
  forall (f : bool -&amp;gt; bool),&lt;br /&gt;
    (forall (x : bool), f x = x) -&amp;gt;&lt;br /&gt;
    forall (b : bool), f (f b) = b.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 10. Demostrar que&lt;br /&gt;
      forall (b c : bool),&lt;br /&gt;
        (andb b c = orb b c) -&amp;gt; b = c.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem andb_eq_orb :&lt;br /&gt;
  forall (b c : bool),&lt;br /&gt;
    (andb b c = orb b c) -&amp;gt; b = c.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 11. En este ejercicio se considera la siguiente&lt;br /&gt;
   representación de los números naturales&lt;br /&gt;
      Inductive nat2 : Type :=&lt;br /&gt;
        | C  : nat2&lt;br /&gt;
        | D  : nat2 -&amp;gt; nat2&lt;br /&gt;
        | SD : nat2 -&amp;gt; nat2.&lt;br /&gt;
   donde C representa el cero, D el doble y SD el siguiente del doble.&lt;br /&gt;
&lt;br /&gt;
   Definir la función&lt;br /&gt;
      nat2Anat :: nat2 -&amp;gt; nat&lt;br /&gt;
   tal que (nat2Anat x) es el número natural representado por x. &lt;br /&gt;
&lt;br /&gt;
   Demostrar que &lt;br /&gt;
      nat2Anat (SD (SD C))     = 3&lt;br /&gt;
      nat2Anat (D (SD (SD C))) = 6.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Inductive nat2 : Type :=&lt;br /&gt;
  | C  : nat2&lt;br /&gt;
  | D  : nat2 -&amp;gt; nat2&lt;br /&gt;
  | SD : nat2 -&amp;gt; nat2.&lt;br /&gt;
&lt;br /&gt;
Fixpoint nat2Anat (x:nat2) : nat :=&lt;br /&gt;
  admit.&lt;br /&gt;
&lt;br /&gt;
Example prop_nat2Anat1: (nat2Anat (SD (SD C))) = 3.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_nat2Anat2: (nat2Anat (D (SD (SD C)))) = 6.&lt;br /&gt;
Admitted.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=R1&amp;diff=10</id>
		<title>R1</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=R1&amp;diff=10"/>
		<updated>2018-02-21T19:00:59Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Protegió «R1» ([edit=sysop] (indefinido) [move=sysop] (indefinido))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;ocaml&amp;quot;&amp;gt;&lt;br /&gt;
(* Relación 1: Programación funcional en Coq *)&lt;br /&gt;
&lt;br /&gt;
Require Export Basics.&lt;br /&gt;
&lt;br /&gt;
Definition admit {T: Type} : T.  Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 1. Definir la función &lt;br /&gt;
      nandb :: bool -&amp;gt; bool -&amp;gt; bool &lt;br /&gt;
   tal que (nanb x y) se verifica si x e y no son verdaderos.&lt;br /&gt;
&lt;br /&gt;
   Demostrar las siguientes propiedades de nand&lt;br /&gt;
      (nandb true  false) = true.&lt;br /&gt;
      (nandb false false) = true.&lt;br /&gt;
      (nandb false true)  = true.&lt;br /&gt;
      (nandb true  true)  = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Definition nandb (b1:bool) (b2:bool) : bool :=&lt;br /&gt;
  admit. &lt;br /&gt;
&lt;br /&gt;
Example prop_nandb1: (nandb true false) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_nandb2: (nandb false false) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example prop_nandb3: (nandb false true) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_nandb4: (nandb true true) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 2.1. Definir la función&lt;br /&gt;
      andb3 :: bool -&amp;gt; bool -&amp;gt; bool -&amp;gt; bool&lt;br /&gt;
   tal que (andb3 x y z) se verifica si x, y y z son verdaderos.&lt;br /&gt;
&lt;br /&gt;
   Demostrar las siguientes propiedades de andb3&lt;br /&gt;
      (andb3 true  true  true)  = true.&lt;br /&gt;
      (andb3 false true  true)  = false.&lt;br /&gt;
      (andb3 true  false true)  = false.&lt;br /&gt;
      (andb3 true  true  false) = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Definition andb3 (x:bool) (y:bool) (z:bool) : bool :=&lt;br /&gt;
  admit.&lt;br /&gt;
&lt;br /&gt;
Example prop_andb31: (andb3 true true true) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_andb32: (andb3 false true true) = false.&lt;br /&gt;
Admitted. &lt;br /&gt;
&lt;br /&gt;
Example prop_andb33: (andb3 true false true) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_andb34: (andb3 true true false) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 3. Definir la función&lt;br /&gt;
      factorial :: nat -&amp;gt; nat1&lt;br /&gt;
   tal que (factorial n) es el factorial de n. &lt;br /&gt;
&lt;br /&gt;
      (factorial 3) = 6.&lt;br /&gt;
      (factorial 5) = (mult 10 12).&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Fixpoint factorial (n:nat) : nat := &lt;br /&gt;
  admit.&lt;br /&gt;
&lt;br /&gt;
Example prop_factorial1: (factorial 3) = 6.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_factorial2: (factorial 5) = (mult 10 12).&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 4. Definir la función&lt;br /&gt;
      blt_nat :: nat -&amp;gt; nat -&amp;gt; bool&lt;br /&gt;
   tal que (blt n m) se verifica si n es menor que m.&lt;br /&gt;
&lt;br /&gt;
   Demostrar las siguientes propiedades&lt;br /&gt;
      (blt_nat 2 2) = false.&lt;br /&gt;
      (blt_nat 2 4) = true.&lt;br /&gt;
      (blt_nat 4 2) = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Definition blt_nat (n m : nat) : bool :=&lt;br /&gt;
  admit.&lt;br /&gt;
                                   &lt;br /&gt;
Example prop_blt_nat1: (blt_nat 2 2) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_blt_nat2: (blt_nat 2 4) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_blt_nat3: (blt_nat 4 2) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 5. Demostrar que&lt;br /&gt;
      forall n m o : nat,&lt;br /&gt;
         n = m -&amp;gt; m = o -&amp;gt; n + m = m + o.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem plus_id_exercise: forall n m o : nat,&lt;br /&gt;
  n = m -&amp;gt; m = o -&amp;gt; n + m = m + o.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 6. Demostrar que&lt;br /&gt;
      forall n m : nat,&lt;br /&gt;
        m = S n -&amp;gt;&lt;br /&gt;
        m * (1 + n) = m * m.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Theorem mult_S_1 : forall n m : nat,&lt;br /&gt;
  m = S n -&amp;gt;&lt;br /&gt;
  m * (1 + n) = m * m.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 7. Demostrar que&lt;br /&gt;
      forall b c : bool,&lt;br /&gt;
        andb b c = true -&amp;gt; c = true.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem andb_true_elim2 : forall b c : bool,&lt;br /&gt;
  andb b c = true -&amp;gt; c = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 8. Dmostrar que&lt;br /&gt;
      forall n : nat,&lt;br /&gt;
        beq_nat 0 (n + 1) = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem zero_nbeq_plus_1: forall n : nat,&lt;br /&gt;
  beq_nat 0 (n + 1) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 9. Demostrar que&lt;br /&gt;
      forall (f : bool -&amp;gt; bool),&lt;br /&gt;
        (forall (x : bool), f x = x) -&amp;gt; &lt;br /&gt;
        forall (b : bool), f (f b) = b.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem identity_fn_applied_twice :&lt;br /&gt;
  forall (f : bool -&amp;gt; bool),&lt;br /&gt;
    (forall (x : bool), f x = x) -&amp;gt;&lt;br /&gt;
    forall (b : bool), f (f b) = b.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 10. Demostrar que&lt;br /&gt;
      forall (b c : bool),&lt;br /&gt;
        (andb b c = orb b c) -&amp;gt; b = c.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem andb_eq_orb :&lt;br /&gt;
  forall (b c : bool),&lt;br /&gt;
    (andb b c = orb b c) -&amp;gt; b = c.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 11. En este ejercicio se considera la siguiente&lt;br /&gt;
   representación de los números naturales&lt;br /&gt;
      Inductive nat2 : Type :=&lt;br /&gt;
        | C  : nat2&lt;br /&gt;
        | D  : nat2 -&amp;gt; nat2&lt;br /&gt;
        | SD : nat2 -&amp;gt; nat2.&lt;br /&gt;
   donde C representa el cero, D el doble y SD el siguiente del doble.&lt;br /&gt;
&lt;br /&gt;
   Definir la función&lt;br /&gt;
      nat2Anat :: nat2 -&amp;gt; nat&lt;br /&gt;
   tal que (nat2Anat x) es el número natural representado por x. &lt;br /&gt;
&lt;br /&gt;
   Demostrar que &lt;br /&gt;
      nat2Anat (SD (SD C))     = 3&lt;br /&gt;
      nat2Anat (D (SD (SD C))) = 6.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Inductive nat2 : Type :=&lt;br /&gt;
  | C  : nat2&lt;br /&gt;
  | D  : nat2 -&amp;gt; nat2&lt;br /&gt;
  | SD : nat2 -&amp;gt; nat2.&lt;br /&gt;
&lt;br /&gt;
Fixpoint nat2Anat (x:nat2) : nat :=&lt;br /&gt;
  admit.&lt;br /&gt;
&lt;br /&gt;
Example prop_nat2Anat1: (nat2Anat (SD (SD C))) = 3.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_nat2Anat2: (nat2Anat (D (SD (SD C)))) = 6.&lt;br /&gt;
Admitted.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=R1&amp;diff=9</id>
		<title>R1</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=R1&amp;diff=9"/>
		<updated>2018-02-21T18:59:56Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;ocaml&amp;quot;&amp;gt;&lt;br /&gt;
(* Relación 1: Programación funcional en Coq *)&lt;br /&gt;
&lt;br /&gt;
Require Export Basics.&lt;br /&gt;
&lt;br /&gt;
Definition admit {T: Type} : T.  Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 1. Definir la función &lt;br /&gt;
      nandb :: bool -&amp;gt; bool -&amp;gt; bool &lt;br /&gt;
   tal que (nanb x y) se verifica si x e y no son verdaderos.&lt;br /&gt;
&lt;br /&gt;
   Demostrar las siguientes propiedades de nand&lt;br /&gt;
      (nandb true  false) = true.&lt;br /&gt;
      (nandb false false) = true.&lt;br /&gt;
      (nandb false true)  = true.&lt;br /&gt;
      (nandb true  true)  = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Definition nandb (b1:bool) (b2:bool) : bool :=&lt;br /&gt;
  admit. &lt;br /&gt;
&lt;br /&gt;
Example prop_nandb1: (nandb true false) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_nandb2: (nandb false false) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example prop_nandb3: (nandb false true) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_nandb4: (nandb true true) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 2.1. Definir la función&lt;br /&gt;
      andb3 :: bool -&amp;gt; bool -&amp;gt; bool -&amp;gt; bool&lt;br /&gt;
   tal que (andb3 x y z) se verifica si x, y y z son verdaderos.&lt;br /&gt;
&lt;br /&gt;
   Demostrar las siguientes propiedades de andb3&lt;br /&gt;
      (andb3 true  true  true)  = true.&lt;br /&gt;
      (andb3 false true  true)  = false.&lt;br /&gt;
      (andb3 true  false true)  = false.&lt;br /&gt;
      (andb3 true  true  false) = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Definition andb3 (x:bool) (y:bool) (z:bool) : bool :=&lt;br /&gt;
  admit.&lt;br /&gt;
&lt;br /&gt;
Example prop_andb31: (andb3 true true true) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_andb32: (andb3 false true true) = false.&lt;br /&gt;
Admitted. &lt;br /&gt;
&lt;br /&gt;
Example prop_andb33: (andb3 true false true) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_andb34: (andb3 true true false) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 3. Definir la función&lt;br /&gt;
      factorial :: nat -&amp;gt; nat1&lt;br /&gt;
   tal que (factorial n) es el factorial de n. &lt;br /&gt;
&lt;br /&gt;
      (factorial 3) = 6.&lt;br /&gt;
      (factorial 5) = (mult 10 12).&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Fixpoint factorial (n:nat) : nat := &lt;br /&gt;
  admit.&lt;br /&gt;
&lt;br /&gt;
Example prop_factorial1: (factorial 3) = 6.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_factorial2: (factorial 5) = (mult 10 12).&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 4. Definir la función&lt;br /&gt;
      blt_nat :: nat -&amp;gt; nat -&amp;gt; bool&lt;br /&gt;
   tal que (blt n m) se verifica si n es menor que m.&lt;br /&gt;
&lt;br /&gt;
   Demostrar las siguientes propiedades&lt;br /&gt;
      (blt_nat 2 2) = false.&lt;br /&gt;
      (blt_nat 2 4) = true.&lt;br /&gt;
      (blt_nat 4 2) = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Definition blt_nat (n m : nat) : bool :=&lt;br /&gt;
  admit.&lt;br /&gt;
                                   &lt;br /&gt;
Example prop_blt_nat1: (blt_nat 2 2) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_blt_nat2: (blt_nat 2 4) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_blt_nat3: (blt_nat 4 2) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 5. Demostrar que&lt;br /&gt;
      forall n m o : nat,&lt;br /&gt;
         n = m -&amp;gt; m = o -&amp;gt; n + m = m + o.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem plus_id_exercise: forall n m o : nat,&lt;br /&gt;
  n = m -&amp;gt; m = o -&amp;gt; n + m = m + o.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 6. Demostrar que&lt;br /&gt;
      forall n m : nat,&lt;br /&gt;
        m = S n -&amp;gt;&lt;br /&gt;
        m * (1 + n) = m * m.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Theorem mult_S_1 : forall n m : nat,&lt;br /&gt;
  m = S n -&amp;gt;&lt;br /&gt;
  m * (1 + n) = m * m.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 7. Demostrar que&lt;br /&gt;
      forall b c : bool,&lt;br /&gt;
        andb b c = true -&amp;gt; c = true.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem andb_true_elim2 : forall b c : bool,&lt;br /&gt;
  andb b c = true -&amp;gt; c = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 8. Dmostrar que&lt;br /&gt;
      forall n : nat,&lt;br /&gt;
        beq_nat 0 (n + 1) = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem zero_nbeq_plus_1: forall n : nat,&lt;br /&gt;
  beq_nat 0 (n + 1) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 9. Demostrar que&lt;br /&gt;
      forall (f : bool -&amp;gt; bool),&lt;br /&gt;
        (forall (x : bool), f x = x) -&amp;gt; &lt;br /&gt;
        forall (b : bool), f (f b) = b.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem identity_fn_applied_twice :&lt;br /&gt;
  forall (f : bool -&amp;gt; bool),&lt;br /&gt;
    (forall (x : bool), f x = x) -&amp;gt;&lt;br /&gt;
    forall (b : bool), f (f b) = b.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 10. Demostrar que&lt;br /&gt;
      forall (b c : bool),&lt;br /&gt;
        (andb b c = orb b c) -&amp;gt; b = c.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem andb_eq_orb :&lt;br /&gt;
  forall (b c : bool),&lt;br /&gt;
    (andb b c = orb b c) -&amp;gt; b = c.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 11. En este ejercicio se considera la siguiente&lt;br /&gt;
   representación de los números naturales&lt;br /&gt;
      Inductive nat2 : Type :=&lt;br /&gt;
        | C  : nat2&lt;br /&gt;
        | D  : nat2 -&amp;gt; nat2&lt;br /&gt;
        | SD : nat2 -&amp;gt; nat2.&lt;br /&gt;
   donde C representa el cero, D el doble y SD el siguiente del doble.&lt;br /&gt;
&lt;br /&gt;
   Definir la función&lt;br /&gt;
      nat2Anat :: nat2 -&amp;gt; nat&lt;br /&gt;
   tal que (nat2Anat x) es el número natural representado por x. &lt;br /&gt;
&lt;br /&gt;
   Demostrar que &lt;br /&gt;
      nat2Anat (SD (SD C))     = 3&lt;br /&gt;
      nat2Anat (D (SD (SD C))) = 6.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Inductive nat2 : Type :=&lt;br /&gt;
  | C  : nat2&lt;br /&gt;
  | D  : nat2 -&amp;gt; nat2&lt;br /&gt;
  | SD : nat2 -&amp;gt; nat2.&lt;br /&gt;
&lt;br /&gt;
Fixpoint nat2Anat (x:nat2) : nat :=&lt;br /&gt;
  admit.&lt;br /&gt;
&lt;br /&gt;
Example prop_nat2Anat1: (nat2Anat (SD (SD C))) = 3.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_nat2Anat2: (nat2Anat (D (SD (SD C)))) = 6.&lt;br /&gt;
Admitted.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=R1&amp;diff=8</id>
		<title>R1</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=R1&amp;diff=8"/>
		<updated>2018-02-21T18:59:19Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Página creada con &amp;#039;&amp;lt;source lang=&amp;quot;coq&amp;quot;&amp;gt; (* Relación 1: Programación funcional en Coq *)  Require Export Basics.  Definition admit {T: Type} : T.  Admitted.  (* -----------------------------------...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;coq&amp;quot;&amp;gt;&lt;br /&gt;
(* Relación 1: Programación funcional en Coq *)&lt;br /&gt;
&lt;br /&gt;
Require Export Basics.&lt;br /&gt;
&lt;br /&gt;
Definition admit {T: Type} : T.  Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 1. Definir la función &lt;br /&gt;
      nandb :: bool -&amp;gt; bool -&amp;gt; bool &lt;br /&gt;
   tal que (nanb x y) se verifica si x e y no son verdaderos.&lt;br /&gt;
&lt;br /&gt;
   Demostrar las siguientes propiedades de nand&lt;br /&gt;
      (nandb true  false) = true.&lt;br /&gt;
      (nandb false false) = true.&lt;br /&gt;
      (nandb false true)  = true.&lt;br /&gt;
      (nandb true  true)  = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Definition nandb (b1:bool) (b2:bool) : bool :=&lt;br /&gt;
  admit. &lt;br /&gt;
&lt;br /&gt;
Example prop_nandb1: (nandb true false) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_nandb2: (nandb false false) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example prop_nandb3: (nandb false true) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_nandb4: (nandb true true) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 2.1. Definir la función&lt;br /&gt;
      andb3 :: bool -&amp;gt; bool -&amp;gt; bool -&amp;gt; bool&lt;br /&gt;
   tal que (andb3 x y z) se verifica si x, y y z son verdaderos.&lt;br /&gt;
&lt;br /&gt;
   Demostrar las siguientes propiedades de andb3&lt;br /&gt;
      (andb3 true  true  true)  = true.&lt;br /&gt;
      (andb3 false true  true)  = false.&lt;br /&gt;
      (andb3 true  false true)  = false.&lt;br /&gt;
      (andb3 true  true  false) = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Definition andb3 (x:bool) (y:bool) (z:bool) : bool :=&lt;br /&gt;
  admit.&lt;br /&gt;
&lt;br /&gt;
Example prop_andb31: (andb3 true true true) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_andb32: (andb3 false true true) = false.&lt;br /&gt;
Admitted. &lt;br /&gt;
&lt;br /&gt;
Example prop_andb33: (andb3 true false true) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_andb34: (andb3 true true false) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 3. Definir la función&lt;br /&gt;
      factorial :: nat -&amp;gt; nat1&lt;br /&gt;
   tal que (factorial n) es el factorial de n. &lt;br /&gt;
&lt;br /&gt;
      (factorial 3) = 6.&lt;br /&gt;
      (factorial 5) = (mult 10 12).&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Fixpoint factorial (n:nat) : nat := &lt;br /&gt;
  admit.&lt;br /&gt;
&lt;br /&gt;
Example prop_factorial1: (factorial 3) = 6.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_factorial2: (factorial 5) = (mult 10 12).&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 4. Definir la función&lt;br /&gt;
      blt_nat :: nat -&amp;gt; nat -&amp;gt; bool&lt;br /&gt;
   tal que (blt n m) se verifica si n es menor que m.&lt;br /&gt;
&lt;br /&gt;
   Demostrar las siguientes propiedades&lt;br /&gt;
      (blt_nat 2 2) = false.&lt;br /&gt;
      (blt_nat 2 4) = true.&lt;br /&gt;
      (blt_nat 4 2) = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Definition blt_nat (n m : nat) : bool :=&lt;br /&gt;
  admit.&lt;br /&gt;
                                   &lt;br /&gt;
Example prop_blt_nat1: (blt_nat 2 2) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_blt_nat2: (blt_nat 2 4) = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_blt_nat3: (blt_nat 4 2) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 5. Demostrar que&lt;br /&gt;
      forall n m o : nat,&lt;br /&gt;
         n = m -&amp;gt; m = o -&amp;gt; n + m = m + o.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem plus_id_exercise: forall n m o : nat,&lt;br /&gt;
  n = m -&amp;gt; m = o -&amp;gt; n + m = m + o.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 6. Demostrar que&lt;br /&gt;
      forall n m : nat,&lt;br /&gt;
        m = S n -&amp;gt;&lt;br /&gt;
        m * (1 + n) = m * m.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Theorem mult_S_1 : forall n m : nat,&lt;br /&gt;
  m = S n -&amp;gt;&lt;br /&gt;
  m * (1 + n) = m * m.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 7. Demostrar que&lt;br /&gt;
      forall b c : bool,&lt;br /&gt;
        andb b c = true -&amp;gt; c = true.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem andb_true_elim2 : forall b c : bool,&lt;br /&gt;
  andb b c = true -&amp;gt; c = true.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 8. Dmostrar que&lt;br /&gt;
      forall n : nat,&lt;br /&gt;
        beq_nat 0 (n + 1) = false.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem zero_nbeq_plus_1: forall n : nat,&lt;br /&gt;
  beq_nat 0 (n + 1) = false.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 9. Demostrar que&lt;br /&gt;
      forall (f : bool -&amp;gt; bool),&lt;br /&gt;
        (forall (x : bool), f x = x) -&amp;gt; &lt;br /&gt;
        forall (b : bool), f (f b) = b.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem identity_fn_applied_twice :&lt;br /&gt;
  forall (f : bool -&amp;gt; bool),&lt;br /&gt;
    (forall (x : bool), f x = x) -&amp;gt;&lt;br /&gt;
    forall (b : bool), f (f b) = b.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 10. Demostrar que&lt;br /&gt;
      forall (b c : bool),&lt;br /&gt;
        (andb b c = orb b c) -&amp;gt; b = c.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Theorem andb_eq_orb :&lt;br /&gt;
  forall (b c : bool),&lt;br /&gt;
    (andb b c = orb b c) -&amp;gt; b = c.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
(* ---------------------------------------------------------------------&lt;br /&gt;
   Ejercicio 11. En este ejercicio se considera la siguiente&lt;br /&gt;
   representación de los números naturales&lt;br /&gt;
      Inductive nat2 : Type :=&lt;br /&gt;
        | C  : nat2&lt;br /&gt;
        | D  : nat2 -&amp;gt; nat2&lt;br /&gt;
        | SD : nat2 -&amp;gt; nat2.&lt;br /&gt;
   donde C representa el cero, D el doble y SD el siguiente del doble.&lt;br /&gt;
&lt;br /&gt;
   Definir la función&lt;br /&gt;
      nat2Anat :: nat2 -&amp;gt; nat&lt;br /&gt;
   tal que (nat2Anat x) es el número natural representado por x. &lt;br /&gt;
&lt;br /&gt;
   Demostrar que &lt;br /&gt;
      nat2Anat (SD (SD C))     = 3&lt;br /&gt;
      nat2Anat (D (SD (SD C))) = 6.&lt;br /&gt;
   ------------------------------------------------------------------ *)&lt;br /&gt;
&lt;br /&gt;
Inductive nat2 : Type :=&lt;br /&gt;
  | C  : nat2&lt;br /&gt;
  | D  : nat2 -&amp;gt; nat2&lt;br /&gt;
  | SD : nat2 -&amp;gt; nat2.&lt;br /&gt;
&lt;br /&gt;
Fixpoint nat2Anat (x:nat2) : nat :=&lt;br /&gt;
  admit.&lt;br /&gt;
&lt;br /&gt;
Example prop_nat2Anat1: (nat2Anat (SD (SD C))) = 3.&lt;br /&gt;
Admitted.&lt;br /&gt;
&lt;br /&gt;
Example prop_nat2Anat2: (nat2Anat (D (SD (SD C)))) = 6.&lt;br /&gt;
Admitted.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Ejercicios&amp;diff=7</id>
		<title>Ejercicios</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Ejercicios&amp;diff=7"/>
		<updated>2018-02-21T18:53:07Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Página creada con &amp;#039;== Relaciones de ejercicios ==  === Relaciones de ejercicios propuestos ===  En esta sección se publicarán las relaciones de ejercicios. Las soluciones se escriben de forma co...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Relaciones de ejercicios ==&lt;br /&gt;
&lt;br /&gt;
=== Relaciones de ejercicios propuestos ===&lt;br /&gt;
&lt;br /&gt;
En esta sección se publicarán las relaciones de ejercicios. Las soluciones se escriben de forma colaborativa por los alumnos del curso y no deben tomarse como definitivas.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 1&amp;#039;&amp;#039;&amp;#039;: Programación funcional en Coq. ([[R1 |Enunciado]] y [[Relación 1 | Solución colaborativa]]).&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Temas&amp;diff=6</id>
		<title>Temas</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Temas&amp;diff=6"/>
		<updated>2018-02-21T18:38:55Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Página creada con &amp;#039;== Temas de &amp;#039;&amp;#039;Seminario de lógica computacional (2018)&amp;#039;&amp;#039; ==  En esta página se irán publicando los temas conforme se vayan estudiando.&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Temas de &amp;#039;&amp;#039;Seminario de lógica computacional (2018)&amp;#039;&amp;#039; ==&lt;br /&gt;
&lt;br /&gt;
En esta página se irán publicando los temas conforme se vayan estudiando.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=MediaWiki:Sidebar&amp;diff=5</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=MediaWiki:Sidebar&amp;diff=5"/>
		<updated>2018-02-21T18:36:59Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: &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;
** Documentación|Documentación&lt;br /&gt;
** http://www.glc.us.es/~jalonso/vestigium/tag/ra2017|Diario&lt;br /&gt;
** https://twitter.com/search?f=tweets&amp;amp;q=%23SLC2018%20from:Jose_A_Alonso|Twitter&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Seminario_de_L%C3%B3gica_Computacional_(2018):Seminario_de_L%C3%B3gica_Computacional_(2018)&amp;diff=4</id>
		<title>Seminario de Lógica Computacional (2018):Seminario de Lógica Computacional (2018)</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=Seminario_de_L%C3%B3gica_Computacional_(2018):Seminario_de_L%C3%B3gica_Computacional_(2018)&amp;diff=4"/>
		<updated>2018-02-21T18:36:03Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Página creada con &amp;#039;== Material para el seminario == * Temas: Teorías de los temas. * Ejercicios: Relaciones de ejercicios. * Documentación: Lecturas recomendadas. * Sistemas: Sis...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Material para el seminario ==&lt;br /&gt;
* [[Temas]]: Teorías de los temas.&lt;br /&gt;
* [[Ejercicios]]: Relaciones de ejercicios.&lt;br /&gt;
* [[Documentación]]: Lecturas recomendadas.&lt;br /&gt;
* [[Sistemas]]: Sistemas utilizados.&lt;br /&gt;
* [http://www.glc.us.es/~jalonso/vestigium/tag/slc2018 Diario]: Descripción diaria de las sesiones.&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=MediaWiki:Mainpage&amp;diff=3</id>
		<title>MediaWiki:Mainpage</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=MediaWiki:Mainpage&amp;diff=3"/>
		<updated>2018-02-21T18:32:31Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Página creada con &amp;#039;SLC2018: Seminario de Lógica Computacional (2018)&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SLC2018: Seminario de Lógica Computacional (2018)&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/SLC2018/index.php?title=MediaWiki:Sidebar&amp;diff=2</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/SLC2018/index.php?title=MediaWiki:Sidebar&amp;diff=2"/>
		<updated>2018-02-21T18:30:08Z</updated>

		<summary type="html">&lt;p&gt;WikiSysop: Página creada con &amp;#039;* navigation ** mainpage|mainpage-description ** Temas|Temas ** Ejercicios|Ejercicios ** Documentación|Documentación ** http://www.glc.us.es/~jalonso/vestigium/tag/ra2017|Diar...&amp;#039;&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;
** Documentación|Documentación&lt;br /&gt;
** http://www.glc.us.es/~jalonso/vestigium/tag/ra2017|Diario&lt;br /&gt;
** https://twitter.com/search?f=tweets&amp;amp;q=%23RA2017%20from:Jose_A_Alonso|Twitter&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
</feed>