<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/DAO/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jalonso</id>
	<title>DAO (Demostración asistida por ordenador) - Contribuciones del usuario [es]</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/DAO/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jalonso"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php/Especial:Contribuciones/Jalonso"/>
	<updated>2026-04-05T01:35:14Z</updated>
	<subtitle>Contribuciones del usuario</subtitle>
	<generator>MediaWiki 1.31.14</generator>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=223</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=223"/>
		<updated>2022-02-08T17:18:22Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO). Los enlaces están actualizados en el [https://www.glc.us.es/~jalonso/RA2019/index.php/Documentaci%C3%B3n curso 2019-20].&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [https://books.google.es/books?id=YCC6lwEACAAJ&amp;amp;dq=The+Haskell+Road+to+Logic,+Maths+and+Programming&amp;amp;hl=es&amp;amp;sa=X&amp;amp;redir_esc=y The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [https://www21.in.tum.de/teaching/semantics/WS1920/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=222</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=222"/>
		<updated>2022-02-08T17:16:52Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
*Nota:* Ver su actualización en las referencias del [https://www.glc.us.es/~jalonso/RA2019/index.php/Documentaci%C3%B3n curso 2019-20].&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [https://books.google.es/books?id=YCC6lwEACAAJ&amp;amp;dq=The+Haskell+Road+to+Logic,+Maths+and+Programming&amp;amp;hl=es&amp;amp;sa=X&amp;amp;redir_esc=y The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [https://www21.in.tum.de/teaching/semantics/WS1920/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=221</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=221"/>
		<updated>2022-02-08T10:46:25Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [https://books.google.es/books?id=YCC6lwEACAAJ&amp;amp;dq=The+Haskell+Road+to+Logic,+Maths+and+Programming&amp;amp;hl=es&amp;amp;sa=X&amp;amp;redir_esc=y The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [https://www21.in.tum.de/teaching/semantics/WS1920/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=220</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=220"/>
		<updated>2022-02-08T10:45:13Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Bibliotecas de ejemplos de verificación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [https://books.google.es/books?id=YCC6lwEACAAJ&amp;amp;dq=The+Haskell+Road+to+Logic,+Maths+and+Programming&amp;amp;hl=es&amp;amp;sa=X&amp;amp;redir_esc=y The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [https://www21.in.tum.de/teaching/semantics/WS1920/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=219</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=219"/>
		<updated>2022-02-08T10:44:29Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Bibliotecas de ejemplos de verificación */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [https://books.google.es/books?id=YCC6lwEACAAJ&amp;amp;dq=The+Haskell+Road+to+Logic,+Maths+and+Programming&amp;amp;hl=es&amp;amp;sa=X&amp;amp;redir_esc=y The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [https://www21.in.tum.de/teaching/semantics/WS1920/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=218</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=218"/>
		<updated>2022-02-08T10:43:18Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Otros cursos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [https://books.google.es/books?id=YCC6lwEACAAJ&amp;amp;dq=The+Haskell+Road+to+Logic,+Maths+and+Programming&amp;amp;hl=es&amp;amp;sa=X&amp;amp;redir_esc=y The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [https://www21.in.tum.de/teaching/semantics/WS1920/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=217</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=217"/>
		<updated>2022-02-08T10:42:34Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Otros cursos */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [https://books.google.es/books?id=YCC6lwEACAAJ&amp;amp;dq=The+Haskell+Road+to+Logic,+Maths+and+Programming&amp;amp;hl=es&amp;amp;sa=X&amp;amp;redir_esc=y The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [https://www21.in.tum.de/teaching/semantics/WS1920/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=216</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=216"/>
		<updated>2022-02-08T10:42:02Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Cursos con Isabelle/HOL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [https://books.google.es/books?id=YCC6lwEACAAJ&amp;amp;dq=The+Haskell+Road+to+Logic,+Maths+and+Programming&amp;amp;hl=es&amp;amp;sa=X&amp;amp;redir_esc=y The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [https://www21.in.tum.de/teaching/semantics/WS1920/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=215</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=215"/>
		<updated>2022-02-08T10:41:08Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Cursos con Isabelle/HOL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [https://books.google.es/books?id=YCC6lwEACAAJ&amp;amp;dq=The+Haskell+Road+to+Logic,+Maths+and+Programming&amp;amp;hl=es&amp;amp;sa=X&amp;amp;redir_esc=y The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [https://www21.in.tum.de/teaching/semantics/WS1920/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=214</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=214"/>
		<updated>2022-02-08T10:39:58Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Cursos con Isabelle/HOL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [https://books.google.es/books?id=YCC6lwEACAAJ&amp;amp;dq=The+Haskell+Road+to+Logic,+Maths+and+Programming&amp;amp;hl=es&amp;amp;sa=X&amp;amp;redir_esc=y The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [https://www21.in.tum.de/teaching/semantics/WS1920/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=213</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=213"/>
		<updated>2022-02-08T10:39:32Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Cursos con Isabelle/HOL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [https://books.google.es/books?id=YCC6lwEACAAJ&amp;amp;dq=The+Haskell+Road+to+Logic,+Maths+and+Programming&amp;amp;hl=es&amp;amp;sa=X&amp;amp;redir_esc=y The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [https://www21.in.tum.de/teaching/semantics/WS1920/Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=212</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=212"/>
		<updated>2022-02-08T10:37:23Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Cursos con Isabelle/HOL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [https://books.google.es/books?id=YCC6lwEACAAJ&amp;amp;dq=The+Haskell+Road+to+Logic,+Maths+and+Programming&amp;amp;hl=es&amp;amp;sa=X&amp;amp;redir_esc=y The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [http://www4.informatik.tu-muenchen.de/~nipkow/semantics/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=211</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=211"/>
		<updated>2022-02-08T10:36:02Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Cursos con Isabelle/HOL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [https://books.google.es/books?id=YCC6lwEACAAJ&amp;amp;dq=The+Haskell+Road+to+Logic,+Maths+and+Programming&amp;amp;hl=es&amp;amp;sa=X&amp;amp;redir_esc=y The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin. [http://www4.in.tum.de/~ballarin/belgrade08-tut/ Introduction to the Isabelle Proof Assistant]. (Belgrado, 2008). &lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [http://www4.informatik.tu-muenchen.de/~nipkow/semantics/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=210</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=210"/>
		<updated>2022-02-08T10:35:19Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Lógica computacional */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [https://books.google.es/books?id=YCC6lwEACAAJ&amp;amp;dq=The+Haskell+Road+to+Logic,+Maths+and+Programming&amp;amp;hl=es&amp;amp;sa=X&amp;amp;redir_esc=y The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Jeremy Avigad. [http://www.phil.cmu.edu/~avigad/formal/ Logic and Formal Verification]. (Carnegie Mellon, 2009).&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin. [http://www4.in.tum.de/~ballarin/belgrade08-tut/ Introduction to the Isabelle Proof Assistant]. (Belgrado, 2008). &lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [http://www4.informatik.tu-muenchen.de/~nipkow/semantics/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=209</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=209"/>
		<updated>2022-02-08T10:24:45Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Lógica computacional */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [https://www.doc.ic.ac.uk/~susan/firstyearbook.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [http://www.ldc.usb.ve/~astorga/Haskell.Road.pdf The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Jeremy Avigad. [http://www.phil.cmu.edu/~avigad/formal/ Logic and Formal Verification]. (Carnegie Mellon, 2009).&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin. [http://www4.in.tum.de/~ballarin/belgrade08-tut/ Introduction to the Isabelle Proof Assistant]. (Belgrado, 2008). &lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [http://www4.informatik.tu-muenchen.de/~nipkow/semantics/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=208</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=208"/>
		<updated>2022-02-08T10:23:03Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Lógica computacional */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li-12/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [http://pubs.doc.ic.ac.uk/reasoned-programming/reasoned-programming.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [http://www.ldc.usb.ve/~astorga/Haskell.Road.pdf The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Jeremy Avigad. [http://www.phil.cmu.edu/~avigad/formal/ Logic and Formal Verification]. (Carnegie Mellon, 2009).&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin. [http://www4.in.tum.de/~ballarin/belgrade08-tut/ Introduction to the Isabelle Proof Assistant]. (Belgrado, 2008). &lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [http://www4.informatik.tu-muenchen.de/~nipkow/semantics/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=207</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=207"/>
		<updated>2022-02-08T10:22:17Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Programación funcional */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m-12/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [http://pubs.doc.ic.ac.uk/reasoned-programming/reasoned-programming.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [http://www.ldc.usb.ve/~astorga/Haskell.Road.pdf The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Jeremy Avigad. [http://www.phil.cmu.edu/~avigad/formal/ Logic and Formal Verification]. (Carnegie Mellon, 2009).&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin. [http://www4.in.tum.de/~ballarin/belgrade08-tut/ Introduction to the Isabelle Proof Assistant]. (Belgrado, 2008). &lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [http://www4.informatik.tu-muenchen.de/~nipkow/semantics/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=206</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=206"/>
		<updated>2022-02-08T10:21:30Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Referencias sobre Isabelle/HOL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [http://pubs.doc.ic.ac.uk/reasoned-programming/reasoned-programming.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [http://www.ldc.usb.ve/~astorga/Haskell.Road.pdf The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Jeremy Avigad. [http://www.phil.cmu.edu/~avigad/formal/ Logic and Formal Verification]. (Carnegie Mellon, 2009).&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin. [http://www4.in.tum.de/~ballarin/belgrade08-tut/ Introduction to the Isabelle Proof Assistant]. (Belgrado, 2008). &lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [http://www4.informatik.tu-muenchen.de/~nipkow/semantics/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=205</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=205"/>
		<updated>2022-02-08T10:20:53Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Referencias sobre Isabelle/HOL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [https://isabelle.in.tum.de/website-Isabelle2009/dist/Isabelle/doc/tutorial.pdf A proof assistant for higher-order logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle2013].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [http://pubs.doc.ic.ac.uk/reasoned-programming/reasoned-programming.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [http://www.ldc.usb.ve/~astorga/Haskell.Road.pdf The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Jeremy Avigad. [http://www.phil.cmu.edu/~avigad/formal/ Logic and Formal Verification]. (Carnegie Mellon, 2009).&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin. [http://www4.in.tum.de/~ballarin/belgrade08-tut/ Introduction to the Isabelle Proof Assistant]. (Belgrado, 2008). &lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [http://www4.informatik.tu-muenchen.de/~nipkow/semantics/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=204</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=204"/>
		<updated>2022-02-08T10:19:07Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Referencias sobre Isabelle/HOL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [https://isabelle.in.tum.de/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. &lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle2013-2/doc/tutorial.pdf A proof assistant for higher-order logic]. Springer-Verlag. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. &lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle2013].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [http://pubs.doc.ic.ac.uk/reasoned-programming/reasoned-programming.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [http://www.ldc.usb.ve/~astorga/Haskell.Road.pdf The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Jeremy Avigad. [http://www.phil.cmu.edu/~avigad/formal/ Logic and Formal Verification]. (Carnegie Mellon, 2009).&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin. [http://www4.in.tum.de/~ballarin/belgrade08-tut/ Introduction to the Isabelle Proof Assistant]. (Belgrado, 2008). &lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [http://www4.informatik.tu-muenchen.de/~nipkow/semantics/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=203</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=203"/>
		<updated>2022-02-08T10:17:28Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Referencias sobre Isabelle/HOL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [https://web.cs.wpi.edu/~dd/resources_isabelle/isabelle_primer_mathematicians.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle2013-2/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. 5 de diciembre de 2013.&lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle2013-2/doc/tutorial.pdf A proof assistant for higher-order logic]. Springer-Verlag. 5 de diciembre de 2013.&lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. 12 de febrero de 2013.&lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle2013].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [http://pubs.doc.ic.ac.uk/reasoned-programming/reasoned-programming.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [http://www.ldc.usb.ve/~astorga/Haskell.Road.pdf The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Jeremy Avigad. [http://www.phil.cmu.edu/~avigad/formal/ Logic and Formal Verification]. (Carnegie Mellon, 2009).&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin. [http://www4.in.tum.de/~ballarin/belgrade08-tut/ Introduction to the Isabelle Proof Assistant]. (Belgrado, 2008). &lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [http://www4.informatik.tu-muenchen.de/~nipkow/semantics/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=202</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=202"/>
		<updated>2022-02-08T10:16:31Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Visiones generales de la DAO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [https://www.cs.ru.nl/F.Wiedijk/pubs/qed2.pdf The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [http://dream.inf.ed.ac.uk/projects/isabelle/Isabelle_Primer.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle2013-2/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. 5 de diciembre de 2013.&lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle2013-2/doc/tutorial.pdf A proof assistant for higher-order logic]. Springer-Verlag. 5 de diciembre de 2013.&lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. 12 de febrero de 2013.&lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle2013].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [http://pubs.doc.ic.ac.uk/reasoned-programming/reasoned-programming.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [http://www.ldc.usb.ve/~astorga/Haskell.Road.pdf The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Jeremy Avigad. [http://www.phil.cmu.edu/~avigad/formal/ Logic and Formal Verification]. (Carnegie Mellon, 2009).&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin. [http://www4.in.tum.de/~ballarin/belgrade08-tut/ Introduction to the Isabelle Proof Assistant]. (Belgrado, 2008). &lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [http://www4.informatik.tu-muenchen.de/~nipkow/semantics/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=201</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=201"/>
		<updated>2022-02-08T10:14:51Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Visiones generales de la DAO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://tptp.org/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [http://www.cs.ru.nl/~freek/pubs/qed2.ps.gz The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [http://dream.inf.ed.ac.uk/projects/isabelle/Isabelle_Primer.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle2013-2/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. 5 de diciembre de 2013.&lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle2013-2/doc/tutorial.pdf A proof assistant for higher-order logic]. Springer-Verlag. 5 de diciembre de 2013.&lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. 12 de febrero de 2013.&lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle2013].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [http://pubs.doc.ic.ac.uk/reasoned-programming/reasoned-programming.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [http://www.ldc.usb.ve/~astorga/Haskell.Road.pdf The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Jeremy Avigad. [http://www.phil.cmu.edu/~avigad/formal/ Logic and Formal Verification]. (Carnegie Mellon, 2009).&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin. [http://www4.in.tum.de/~ballarin/belgrade08-tut/ Introduction to the Isabelle Proof Assistant]. (Belgrado, 2008). &lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [http://www4.informatik.tu-muenchen.de/~nipkow/semantics/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=200</id>
		<title>Documentación</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Documentaci%C3%B3n&amp;diff=200"/>
		<updated>2022-02-08T10:14:02Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Visiones generales de la DAO */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;En esta página se recogen en enlaces que sirven de documentación al curso de demostración asistida por ordenador (DAO).&lt;br /&gt;
&lt;br /&gt;
== Visiones generales de la DAO ==&lt;br /&gt;
&lt;br /&gt;
# J.A. Alonso. [http://goo.gl/NWk7b Razonamiento formalizado: Del sueño a la realidad de las pruebas]. &amp;#039;&amp;#039;Vestigium&amp;#039;&amp;#039;, 26 de diciembre de 2012.&lt;br /&gt;
# J. Avigad. [http://www.andrew.cmu.edu/user/avigad/Talks/icerm.pdf Interactive theorem proving, automated reasoning, and mathematical computation]. ICERM, 14 de diciembre de 2012. &lt;br /&gt;
# M. Davis. [http://www.cs.nyu.edu/cs/faculty/davism/early.ps The early history of automated deduction].&lt;br /&gt;
# J.P. Delahaye [http://interstices.info/jcms/int_63417/du-reve-a-la-realite-des-preuves Du rêve à la réalité des preuves]. &amp;#039;&amp;#039;Interstices&amp;#039;&amp;#039;, 8 de julio de 2012.&lt;br /&gt;
# J. Germoni [http://images.math.cnrs.fr/Coq-et-caracteres.html Coq et caractères: Preuve formelle du théorème de Feit et Thompson]. &amp;#039;&amp;#039;Images des Mathématiques&amp;#039;&amp;#039;, CNRS, 23 de noviembre de 2012. &lt;br /&gt;
# H. Geuvers [http://www.ias.ac.in/sadhana/Pdf2009Feb/3.pdf Proof assistants: History, ideas and future]. &amp;#039;&amp;#039;Sadhana&amp;#039;&amp;#039;, Vol. 34-1, pp. 3-25, février 2009.&lt;br /&gt;
# G. Gonthier [http://www.ams.org/notices/200811/tx081101382p.pdf The four-color theorem]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1382-1393, 2008.&lt;br /&gt;
# T. Hales. [http://www.ams.org/notices/200811/tx081101370p.pdf Formal proof]. &amp;#039;&amp;#039;Notices of AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) pp. 1370-1380.&lt;br /&gt;
# J. Harrison. [http://www.cl.cam.ac.uk/~jrh13/papers/ab.html A short survey of automated reasoning]. &amp;#039;&amp;#039;Lecture Notes in Computer Science&amp;#039;&amp;#039;, Vol. 4545, pp. 334-349, 2007.&lt;br /&gt;
# J. Harrison. [http://www.ams.org/notices/200811/tx081101395p.pdf Formal proof: Theory and practice]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, N. 11 (2008) p.1395-1406. &lt;br /&gt;
# G. Kolata. [http://www.nytimes.com/library/cyber/week/1210math.html Computer math proof shows reasoning power]. &amp;#039;&amp;#039;The New York Times&amp;#039;&amp;#039;, 10 de diciembre de 1996.&lt;br /&gt;
# D. MacKenzie [https://backspaces.net/temp/Spring2010Seminar/18%20unconventional%20essays%20on%20the%20nature%20of%20mathematics.pdf#page=147 Computers and the sociology of mathematical proof].&lt;br /&gt;
# G. Sutcliffe. [http://www.cs.miami.edu/~tptp/OverviewOfATP.html What is automated theorem proving?].&lt;br /&gt;
# F. Wiedijk [http://www.cs.ru.nl/~freek/100/ Formalizing the «top 100» of mathematical theorems].&lt;br /&gt;
# F. Wiedijk [http://www.ams.org/notices/200811/tx081101408p.pdf Formal proof - Getting started]. &amp;#039;&amp;#039;Notices of the AMS&amp;#039;&amp;#039;, Vol. 55, n° 11, pp. 1408-1414, 2008.&lt;br /&gt;
# F. Wiedijk, [http://www.cs.ru.nl/~freek/pubs/qed2.ps.gz The QED manifesto revisited]. &amp;#039;&amp;#039;Studies in Logic, Grammar and Rhetoric&amp;#039;&amp;#039;, Vol. 10(23), pp. 121-133, 2007.&lt;br /&gt;
&lt;br /&gt;
== Referencias sobre Isabelle/HOL ==&lt;br /&gt;
# B. Grechuk [http://dream.inf.ed.ac.uk/projects/isabelle/Isabelle_Primer.pdf Isabelle primer for mathematicians].&lt;br /&gt;
# T. Nipkow [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle2013-2/doc/prog-prove.pdf Programming and proving in Isabelle/HOL]. 5 de diciembre de 2013.&lt;br /&gt;
# T. Nipkow, M. Wenzel y L.C. Paulson [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle2013-2/doc/tutorial.pdf A proof assistant for higher-order logic]. Springer-Verlag. 5 de diciembre de 2013.&lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/library/HOL/HOL/document.pdf Isabelle/HOL — Higher-Order Logic]. 12 de febrero de 2013.&lt;br /&gt;
# [http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation.html Tutorials and manuals for Isabelle2013].&lt;br /&gt;
&lt;br /&gt;
== Lecturas complementarias ==&lt;br /&gt;
=== Programación funcional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/i1m/temas/2012-13-IM-temas-PF.pdf  Temas de &amp;quot;Programación funcional&amp;quot;]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# J.A. Alonso y M.J. Hidalgo [http://www.cs.us.es/~jalonso/publicaciones/Piensa_en_Haskell.pdf Piensa en Haskell (Ejercicios de programación funcional con Haskell)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# G. Hutton [http://goo.gl/pKqG Programming in Haskell]. Cambridge University Press, 2007. &lt;br /&gt;
# M. Lipovača [http://aprendehaskell.es ¡Aprende Haskell por el bien de todos!].&lt;br /&gt;
&lt;br /&gt;
=== Lógica computacional ===&lt;br /&gt;
# J.A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/temas/temas-LI-2012-13.pdf Temas de &amp;quot;Lógica informática&amp;quot; (2012-13)]. Publicaciones del Grupo de Lógica Computacional. Universidad de Sevilla, 2012.&lt;br /&gt;
# R. Bornat [http://bit.ly/oithic Proof and disproof in formal logic: an introduction for programmers]. Oxford University Press, 2005.&lt;br /&gt;
# K. Broda, S. Eisenbach, H. Khoshnevisan y S. Vickers [http://pubs.doc.ic.ac.uk/reasoned-programming/reasoned-programming.pdf Reasoned programming]. Imperial College, 1994.&lt;br /&gt;
# K. Doets y J. van Eijck [http://www.ldc.usb.ve/~astorga/Haskell.Road.pdf The Haskell Road to Logic, Maths and Programming].&lt;br /&gt;
# M. Huth y M. Ryan [http://goo.gl/TMqOo Logic in computer science: Modelling and reasoning about systems]. Cambridge University Press, 2004. (Incluye el [http://www.cs.bham.ac.uk/research/lics/tutor/index.html tutor en la Red]).&lt;br /&gt;
&lt;br /&gt;
== Cursos relacionados ==&lt;br /&gt;
=== Cursos con Isabelle/HOL ===&lt;br /&gt;
# Jeremy Avigad. [http://www.phil.cmu.edu/~avigad/formal/ Logic and Formal Verification]. (Carnegie Mellon, 2009).&lt;br /&gt;
# Clemens Ballarin. [http://cl-informatik.uibk.ac.at/teaching/ss08/atp/introduction.php Automatic Deduction]. (Univ de Innsbruck, 2008).&lt;br /&gt;
# Clemens Ballarin. [http://www4.in.tum.de/~ballarin/belgrade08-tut/ Introduction to the Isabelle Proof Assistant]. (Belgrado, 2008). &lt;br /&gt;
# Clemens Ballarin y Gerwin Klein [http://isabelle.in.tum.de/coursematerial/IJCAR04 Introduction to the Isabelle Proof Assistant]. (en el IJCAR-2004).&lt;br /&gt;
# Clemens Ballarin y Tjark Weber. [http://cl-informatik.uibk.ac.at/teaching/ws06/atp/introduction.php Automated Theorem Proving in Isabelle/HOL]. (Univ. de Innsbruck, 2006-07).&lt;br /&gt;
# A.D. Brucker, D. Basin, J.G. Smaus y B. Wolff. [http://archiv.infsec.ethz.ch/education/permanent/csmr.html Computer-supported Modeling and Reasoning]. (ETH Zurich, 2011).&lt;br /&gt;
# Mads Dam. [http://www.csc.kth.se/utbildning/kth/kurser/DD2453/aform07/ Advanced formal methods]. (KTH Royal Institute of Technology, 2007).&lt;br /&gt;
# Jacques Fleuriot y Paul Jackson. [http://www.inf.ed.ac.uk/teaching/courses/ar/slides/ Automated reasoning]. (Univ. de Edimburgo, 2012-13).&lt;br /&gt;
# Thomas Genet [http://www.irisa.fr/celtique/genet/ACF Software formal analysis and design]. (Univ. de Rennes)&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~kleing/teaching/thprv-04 Theorem Proving - Principles, Techniques, Applications]. (NICTA, 2004).&lt;br /&gt;
# Gerwin Klein. [http://www.cse.unsw.edu.au/~cs4161/index.html Advanced Topics in Software Verification]. (NICTA, 2012).&lt;br /&gt;
# Joao Marcos. [http://www.dimap.ufrn.br/~jmarcos/courses/LC/Ementa.htm Lógica computacional: Demonstração assistida e semi-automática de teoremas].(UFRN, 2000).&lt;br /&gt;
# Tobias Nipkow. [http://www4.informatik.tu-muenchen.de/~nipkow/semantics/ Semantics of programming languages]. (Univ. de Munich, 2012-13).&lt;br /&gt;
# Tobias Nipkow [http://isabelle.in.tum.de/coursematerial/PSV2009-1 Theorem Proving with Isabelle/HOL An Intensive Course]. &lt;br /&gt;
# Larry Paulson. [http://www.cl.cam.ac.uk/teaching/0910/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2009-10).&lt;br /&gt;
# Arnd Poetzsch-Heffter. [https://softech.informatik.uni-kl.de/Homepage/SVHOL10 Specification and Verification with Higher-Order Logic]. &lt;br /&gt;
# Jeremy G. Siek. [http://www.cs.colorado.edu/~siek/7000/spring07/ Practical Theorem Proving with Isabelle/Isar]. (Univ. de Colorado, 2007).&lt;br /&gt;
# Jeremy G. Siek. [http://ecee.colorado.edu/~siek/ecen5013/spring11/ Theorem proving in Isabelle]. (Univ. de Colorado, 2011).&lt;br /&gt;
# Jan-Georg Smaus. [http://www.informatik.uni-freiburg.de/~ki/teaching/ws0910/csmr/lecture.html Computer-supported modeling and reasoning]. (Univ. de Feiburgo, 2009).&lt;br /&gt;
# Christian Sternagel [http://cl-informatik.uibk.ac.at/teaching/ss11/eve/content.php Experiments in Verification – Introduction to Isabelle/HOL]. (Univ. de Innsbruck, 2011-12).&lt;br /&gt;
# Tjark Weber. [http://www.cl.cam.ac.uk/teaching/1011/L21/ Interactive Formal Verification]. (Univ. de Cambridge, 2010-11).&lt;br /&gt;
&lt;br /&gt;
=== Otros cursos ===&lt;br /&gt;
# José A. Alonso [http://www.cs.us.es/~jalonso/cursos/li/ Lógica informática] (Univ. de Sevilla, 2012-13).&lt;br /&gt;
# Yves Bertot, Pierre Casteran, Benjamin Gregoire, Pierre Letouzey y Assia Mahboubi [http://www.di.ens.fr/~zappa/teaching/coq/ecole11 Modelling and verifying algorithms in Coq: an introduction]. (INRIA Paris-Rocquencourt, 14-18 noviembre 2011).&lt;br /&gt;
# Pierre Castéran [http://www.labri.fr/perso/casteran/FM/Logique/index.html Logic (Master In Verification)] (Univ. de Burdeos, 2011-12).&lt;br /&gt;
# Nuno Gaspar [http://www-sop.inria.fr/members/Nuno.Gaspar/teaching/coq2012.php Verification with the Coq Proof Assistant] (INRIA Sophia Antipolis, 2012-13).&lt;br /&gt;
# Michael Genesereth [http://logic.stanford.edu/classes/cs157/2011/cs157.html Computational Logic] (Univ. de Stanford, 2011-12).&lt;br /&gt;
# Ian Hodkinson [http://www.doc.ic.ac.uk/~imh/teaching/140_logic/logic.html Logic] (Imperial College, Londres, 2010-11).&lt;br /&gt;
# Peter Lucas [http://www.cs.ru.nl/~peterl/teaching/KeR/ Knowledge Representation and Reasoning] (Radboud University # egen, 2011-12).&lt;br /&gt;
# Larry Paulson [http://www.cl.cam.ac.uk/Teaching/current/LogicProof/ Logic and Proof] (Univ. de Cambridge, 2011-12).&lt;br /&gt;
# Riccardo Pucella [http://www.ccs.neu.edu/home/riccardo/courses/csu290-sp09/index.html Logic and Computation] (Northeastern University, 2009). Curso con ACL2.&lt;br /&gt;
&lt;br /&gt;
== Bibliotecas de ejemplos de verificación ==&lt;br /&gt;
# [http://afp.sourceforge.net Archive of Formal Proofs].&lt;br /&gt;
# [http://www.cs.ru.nl/~freek/100 Formalizing 100 Theorems].&lt;br /&gt;
# [http://toccata.lri.fr/gallery Gallery of verified programs].&lt;br /&gt;
# [http://www.cs.nott.ac.uk/~lad/research/challenges/ Induction Challenge Problems].&lt;br /&gt;
# [http://automatedreasoning.net/ Larry Wos&amp;#039; Notebooks].&lt;br /&gt;
# [http://www.cs.miami.edu/~tptp/ The TPTP Problem Library for Automated Theorem Proving].&lt;br /&gt;
# [http://www.macs.hw.ac.uk/vstte10/Competition.html The 1st Verified Software Competition].&lt;br /&gt;
# [https://sites.google.com/site/vstte2012/compet The 2nd Verified Software Competition].&lt;br /&gt;
# [http://verifythis.cost-ic0701.org VerifyThis (A collection of verification benchmarks].&lt;br /&gt;
&lt;br /&gt;
== Artículos recientes ==&lt;br /&gt;
Están en orden cronológico inverso a la fecha de su reseña en [http://www.glc.us.es/~jalonso/vestigium/tag/resena Vestigium]:&lt;br /&gt;
# Joachim Breitner, Brian Huffman, Neil Mitchell y Christian Sternagel [http://bit.ly/19fiWAY Certified HLints with Isabelle/HOLCF-Prelude].&lt;br /&gt;
# Peter Lammich [http://bit.ly/ZfSQrQ Automatic data refinement].&lt;br /&gt;
# Assia Mahboubi [http://bit.ly/18vyjm7 The rooster and the butterflies (a machine-checked proof of the Jordan-Hölder theorem for finite groups)].&lt;br /&gt;
# Nathan Wetzler, Marijn J. H. Heule y Warren A. Hunt Jr. [http://bit.ly/114oyZV Mechanical verification of SAT refutations with extended resolution].&lt;br /&gt;
# Johannes Hölzl, Fabian Immler y Brian Huffman [http://bit.ly/13H0REu Type classes and filters for mathematical analysis in Isabelle/HOL]&lt;br /&gt;
# M. J. H. Heule, W. A. Hunt, Jr. y N. Wetzler [http://bit.ly/10fv8wO Verifying refutations with extended resolution]. &lt;br /&gt;
# C. Lüth y M. Ring [http://bit.ly/10EcFWj A Web interface for Isabelle: The next generation]. &lt;br /&gt;
# L. Liu, O. Hasan y S. Tahar [http://bit.ly/18P9CSv On the formalization of continuous-time Markov chains in HOL].&lt;br /&gt;
# A. Asperti y W. Ricciotti [http://bit.ly/17H2mqy Formalizing Turing machines].&lt;br /&gt;
# A. Lochbihler [http://bit.ly/YwuCeL Light-weight containers for Isabelle: efficient, extensible, nestable].&lt;br /&gt;
# L. Noschinski [http://bit.ly/10XLrRA Graph theory].&lt;br /&gt;
# G. Gonthier et als. [http://bit.ly/19kPEP4 A machine-checked proof of the odd order theorem].&lt;br /&gt;
# C. Doczkal, J.O. Kaiser y G. Smolka [http://goo.gl/LdihL A constructive theory of regular languages in Coq].&lt;br /&gt;
# C. Sternagel [http://goo.gl/gwcwL A formal proof of Kruskal’s tree theorem in Isabelle/HOL].&lt;br /&gt;
# C. Sternagel y R. Thiemann [http://goo.gl/CUF3e Formalizing Knuth-Bendix orders and Knuth-Bendix completion]. &lt;br /&gt;
# C. Lange, C. Rowat, W. Windsteiger y M. Kerber [http://goo.gl/9JAfX Developing an auction theory toolbox].&lt;br /&gt;
# M. Spasić y F. Marić [http://goo.gl/6OfmQ Formalization of incremental simplex algorithm by stepwise refinement]. &lt;br /&gt;
# J.C. Blanchette, A. Popescu y D. Traytel [http://goo.gl/Guxky Coinductive pearl: Modular first-order logic completeness].&lt;br /&gt;
# J. Esparza et als. [http://goo.gl/HUOl8 A fully verified executable LTL model checker].&lt;br /&gt;
# M. Kerber, C. Lange y C. Rowat. [http://goo.gl/RV54S ForMaRE - formal mathematical reasoning in economics].&lt;br /&gt;
# J. Urban. [http://goo.gl/Y7sIq AI over large formal knowledge bases: The first decade].&lt;br /&gt;
# S. Boldo, C. Lelay y G. Melquiond. [http://goo.gl/vvqNg Formalization of real analysis: A survey of proof assistants and libraries].&lt;br /&gt;
# F. Haftmann, A. Krauss, O. Kunčar y T. Nipkow [http://goo.gl/bEFYa Data refinement in Isabelle/HOL].&lt;br /&gt;
# A.C. Rocha y M. Ayala. [http://goo.gl/xTyvE Formalizing the confluence of orthogonal rewriting systems].&lt;br /&gt;
# Z. Shi et als. [http://goo.gl/zCYHj Formalization of the complex number theory in HOL4].&lt;br /&gt;
# F. Loulergue y V. Niculescu [http://goo.gl/kM0dI Programming and reasonning with PowerLists in Coq]. &lt;br /&gt;
# J. Heras, F.J. Martín y V. Pascual. [http://goo.gl/KkU6s A hierarchy of mathematical structures in ACL2].&lt;br /&gt;
# J. Xu, X. Zhang y C. Urban [http://www.inf.kcl.ac.uk/staff/urbanc/Publications/tm.pdf Mechanising Turing Machines and Computability Theory in Isabelle/HOL]&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=MediaWiki:Sidebar&amp;diff=199</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=MediaWiki:Sidebar&amp;diff=199"/>
		<updated>2018-07-15T15:43:51Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Temas|Temas&lt;br /&gt;
** Ejercicios|Ejercicios&lt;br /&gt;
** Documentación|Documentación&lt;br /&gt;
** https://tarski.cs.us.es/~jalonso/vestigium/tag/ra2012/|Diario&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=MediaWiki:Sidebar&amp;diff=198</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=MediaWiki:Sidebar&amp;diff=198"/>
		<updated>2018-07-15T15:39:28Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Temas|&amp;lt;i class=&amp;quot;fa fa-car&amp;quot;&amp;gt;Temas&amp;lt;/i&amp;gt;&lt;br /&gt;
** Ejercicios|Ejercicios&lt;br /&gt;
** Documentación|Documentación&lt;br /&gt;
** http://goo.gl/YdTZW|Diario&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=MediaWiki:Sidebar&amp;diff=197</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=MediaWiki:Sidebar&amp;diff=197"/>
		<updated>2018-07-15T15:30:10Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** Temas|&amp;lt;i class=&amp;quot;fa fa-navicon fa-lg&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;Temas&lt;br /&gt;
** Ejercicios|Ejercicios&lt;br /&gt;
** Documentación|Documentación&lt;br /&gt;
** http://goo.gl/YdTZW|Diario&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Ejercicios_RA2013&amp;diff=196</id>
		<title>Ejercicios RA2013</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Ejercicios_RA2013&amp;diff=196"/>
		<updated>2018-07-15T12:14:22Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: /* Ejercicios de Demostración asistida por ordenador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Ejercicios de &amp;#039;&amp;#039;Demostración asistida por ordenador&amp;#039;&amp;#039; ==&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;
* &amp;#039;&amp;#039;&amp;#039;Relación 1&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica proposicional con Isabelle/HOL. ([[RA12_Relación_1 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 2&amp;#039;&amp;#039;&amp;#039;: Argumentación proposicional con Isabelle/HOL. ([[RA12_Relación_2 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 3&amp;#039;&amp;#039;&amp;#039;: Eliminación de conectivas. ([[RA12_Relación_3 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 4&amp;#039;&amp;#039;&amp;#039;: Deducción natural en lógica de primer con Isabelle/HOL. ([[RA12_Relación_4 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 5&amp;#039;&amp;#039;&amp;#039;: Argumentación en lógica de primer con Isabelle/HOL. ([[RA12_Relación_5 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 6&amp;#039;&amp;#039;&amp;#039;: Argumentación en lógica de primer orden e igualdad con Isabelle/HOL. ([[RA12_Relación_6 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 7&amp;#039;&amp;#039;&amp;#039;: Programación funcional en Isabelle/HOL. ([[RA12_Relación_7 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 8&amp;#039;&amp;#039;&amp;#039;: Razonamiento sobre programas en Isabelle/HOL. ([[RA12_Relación_8 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 9&amp;#039;&amp;#039;&amp;#039;: Cons inverso. ([[RA12_Relación_9 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 10&amp;#039;&amp;#039;&amp;#039;: Cuantificadores sobre listas. ([[RA12_Relación_10 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 11&amp;#039;&amp;#039;&amp;#039;: Sustitución, inversión y eliminación. ([[RA12_Relación_11 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 12&amp;#039;&amp;#039;&amp;#039;: Menor posición válida. ([[RA12_Relación_12 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 13&amp;#039;&amp;#039;&amp;#039;: Número de elementos válidos. ([[RA12_Relación_13 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 14&amp;#039;&amp;#039;&amp;#039;: Contador de occurrencias. ([[RA12_Relación_14 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 15&amp;#039;&amp;#039;&amp;#039;: Suma y aplanamiento de listas. ([[RA12_Relación_15 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 16&amp;#039;&amp;#039;&amp;#039;: Conjuntos mediante listas. ([[RA12_Relación_16 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 17&amp;#039;&amp;#039;&amp;#039;: Ordenación de listas por inserción. ([[RA12_Relación_17 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 18&amp;#039;&amp;#039;&amp;#039;: Ordenación de listas por mezcla. ([[RA12_Relación_18 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 19&amp;#039;&amp;#039;&amp;#039;: Recorridos de árboles. ([[RA12_Relación_19 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 20&amp;#039;&amp;#039;&amp;#039;: Plegados de listas y de árboles. ([[RA12_Relación_20 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 21&amp;#039;&amp;#039;&amp;#039;: Árboles binarios completos. ([[RA12_Relación_21 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 22&amp;#039;&amp;#039;&amp;#039;: Diagramas de decisión binarios. ([[RA12_Relación_22 |Enunciado]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Relación 23&amp;#039;&amp;#039;&amp;#039;: Representación de fórmulas proposicionales mediante polinomios. ([[RA12_Relación_23 |Enunciado]]).&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_17&amp;diff=194</id>
		<title>RA12 Relación 17</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_17&amp;diff=194"/>
		<updated>2018-07-15T12:04:10Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R17: Ordenación de listas por inserción *}&lt;br /&gt;
&lt;br /&gt;
theory R17&lt;br /&gt;
imports Main&lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  En esta relación de ejercicios se define el algoritmo de ordenación de&lt;br /&gt;
  listas por inserción y se demuestra que es correcto.&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Definir la función&lt;br /&gt;
     inserta :: nat ⇒ nat list ⇒ nat list&lt;br /&gt;
  tal que (inserta a xs) es la lista obtenida insertando a delante del&lt;br /&gt;
  primer elemento de xs que es mayor o igual que a. Por ejemplo,&lt;br /&gt;
     inserta 3 [2,5,1,7] = [2,3,5,1,7]&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun inserta :: &amp;quot;nat ⇒ nat list ⇒ nat list&amp;quot; where&lt;br /&gt;
  &amp;quot;inserta a xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;inserta 3 [2,5,1,7]&amp;quot; -- &amp;quot;= [2,3,5,1,7]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Definir la función&lt;br /&gt;
     ordena :: nat list ⇒ nat list&lt;br /&gt;
  tal que (ordena xs) es la lista obtenida ordenando xs por inserción. &lt;br /&gt;
  Por ejemplo, &lt;br /&gt;
     ordena [3,2,5,3] = [2,3,3,5]&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun ordena :: &amp;quot;nat list ⇒ nat list&amp;quot; where&lt;br /&gt;
  &amp;quot;ordena xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;ordena [3,2,5,3]&amp;quot; -- &amp;quot;[2,3,3,5]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Definir la función&lt;br /&gt;
     menor :: nat ⇒ nat list ⇒ bool&lt;br /&gt;
  tal que (menor a xs) se verifica si a es menor o igual que todos los&lt;br /&gt;
  elementos de xs.Por ejemplo,  &lt;br /&gt;
     menor 2 [3,2,5] = True&lt;br /&gt;
     menor 2 [3,0,5] = False&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun menor :: &amp;quot;nat ⇒ nat list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;menor a xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;menor 2 [3,2,5]&amp;quot; -- &amp;quot;= True&amp;quot;&lt;br /&gt;
value &amp;quot;menor 2 [3,0,5]&amp;quot; -- &amp;quot;= False&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Definir la función&lt;br /&gt;
     ordenada :: nat list ⇒ bool&lt;br /&gt;
  tal que (ordenada xs) se verifica si xs es una lista ordenada de&lt;br /&gt;
  manera creciente. Por ejemplo,  &lt;br /&gt;
     ordenada [2,3,3,5] = True &lt;br /&gt;
     ordenada [2,4,3,5] = False &lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun ordenada :: &amp;quot;nat list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;ordenada xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;ordenada [2,3,3,5]&amp;quot; -- &amp;quot;= True&amp;quot; &lt;br /&gt;
value &amp;quot;ordenada [2,4,3,5]&amp;quot; -- &amp;quot;= False&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Demostrar que si y es una cota inferior de xs y x ≤ y,&lt;br /&gt;
  entonces x es una cota inferior de xs.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma menor_menor: &lt;br /&gt;
  assumes &amp;quot;x ≤ y&amp;quot;  &lt;br /&gt;
  shows   &amp;quot;menor y xs ⟶ menor x xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Demostrar el siguiente teorema de corrección: x es una&lt;br /&gt;
  cota inferior de la lista obtenida insertando y en zs syss x ≤ y y x&lt;br /&gt;
  es una cota inferior de zs.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma menor_inserta:&lt;br /&gt;
  &amp;quot;menor x (inserta y zs) = (x ≤ y ∧ menor x zs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Demostrar que al insertar un elemento la lista obtenida&lt;br /&gt;
  está ordenada syss lo estaba la original.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ordenada_inserta:&lt;br /&gt;
  &amp;quot;ordenada (inserta a xs) = ordenada xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Demostrar que, para toda lista xs, (ordena xs) está&lt;br /&gt;
  ordenada. &lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
theorem ordenada_ordena:&lt;br /&gt;
  &amp;quot;ordenada (ordena xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Nota. El teorema anterior no garantiza que ordena sea correcta, ya que&lt;br /&gt;
  puede que (ordena xs) no tenga los mismos elementos que xs. Por&lt;br /&gt;
  ejemplo, si se define (ordena xs) como [] se tiene que (ordena xs)&lt;br /&gt;
  está ordenada pero no es una ordenación de xs. Para ello, definimos la&lt;br /&gt;
  función cuenta.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Definir la función&lt;br /&gt;
     cuenta :: nat list =&amp;gt; nat =&amp;gt; nat&lt;br /&gt;
  tal que (cuenta xs y) es el número de veces que aparece el elemento y&lt;br /&gt;
  en la lista xs. Por ejemplo, &lt;br /&gt;
     cuenta [1,3,4,3,5] 3 = 2&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun cuenta :: &amp;quot;nat list =&amp;gt; nat =&amp;gt; nat&amp;quot; where&lt;br /&gt;
  &amp;quot;cuenta xs y = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;cuenta [1,3,4,3,5] 3&amp;quot; -- &amp;quot;= 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Demostrar que el número de veces que aparece y en &lt;br /&gt;
  (inserta x xs) es &lt;br /&gt;
  * uno más el número de veces que aparece en xs, si y = x; &lt;br /&gt;
  * el número de veces que aparece en xs, si y ≠ x; &lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma cuenta_inserta:&lt;br /&gt;
  &amp;quot;cuenta (inserta x xs) y =&lt;br /&gt;
   (if x=y then Suc (cuenta xs y) else cuenta xs y)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Demostrar que el número de veces que aparece y en &lt;br /&gt;
  (ordena xs) es el número de veces que aparece en xs.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
theorem cuenta_ordena:&lt;br /&gt;
  &amp;quot;cuenta (ordena xs) y = cuenta xs y&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_22&amp;diff=195</id>
		<title>RA12 Relación 22</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_22&amp;diff=195"/>
		<updated>2018-07-15T12:04:10Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «&amp;quot;isar&amp;quot;» por «&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R22: Diagramas de decisión binarios *}&lt;br /&gt;
&lt;br /&gt;
theory R22&lt;br /&gt;
imports Main &lt;br /&gt;
begin &lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Las funciones booleanas se pueden representar mediante diagramas de&lt;br /&gt;
  decisión binarios (DDB). Por ejemplo, la función f definida por la&lt;br /&gt;
  tabla de la izquierda se representa por el DDB de la derecha&lt;br /&gt;
     +---+---+---+----------+            p       &lt;br /&gt;
     | p | q | r | f(p,q,r) |           / \      &lt;br /&gt;
     +---+---+---+----------+          /   \     &lt;br /&gt;
     | F | F | * | V        |         q     q    &lt;br /&gt;
     | F | V | * | F        |        / \   / \   &lt;br /&gt;
     | V | F | * | F        |       V   F F   r  &lt;br /&gt;
     | V | V | F | F        |                / \ &lt;br /&gt;
     | V | V | V | V        |               F   V&lt;br /&gt;
     +---+---+---+----------+&lt;br /&gt;
  Para cada variable, si su valor es falso se evalúa su hijo izquierdo y&lt;br /&gt;
  si es verdadero se evalúa su hijo derecho.&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Definir el tipo de datos ddb para representar los&lt;br /&gt;
  diagramas de decisión binarios. Por ejemplo, el DDB anterior se&lt;br /&gt;
  representa por&lt;br /&gt;
     N (N (H True) (H False)) (N (H False) (N (H False) (H True)))&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
datatype ddb = H bool | N ddb ddb&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;N (N (H True) (H False)) (N (H False) (N (H False) (H True)))&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Definir ddb1 para representar el DDB del ejercicio 1.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
abbreviation ddb1 :: ddb where&lt;br /&gt;
  &amp;quot;ddb1 ≡ N (N (H True) (H False)) (N (H False) (N (H False) (H True)))&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Definir int1,..., int8 para representar las&lt;br /&gt;
  interpretaciones del ejercicio 1.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
abbreviation int1 :: &amp;quot;nat ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;int1 x ≡ False&amp;quot;&lt;br /&gt;
abbreviation int2 :: &amp;quot;nat ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;int2 ≡ int1 (2 := True)&amp;quot;&lt;br /&gt;
abbreviation int3 :: &amp;quot;nat ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;int3 ≡ int1 (1 := True)&amp;quot;&lt;br /&gt;
abbreviation int4 :: &amp;quot;nat ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;int4 ≡ int1 (1 := True, 2 := True)&amp;quot;&lt;br /&gt;
abbreviation int5 :: &amp;quot;nat ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;int5 ≡ int1 (0 := True)&amp;quot;&lt;br /&gt;
abbreviation int6 :: &amp;quot;nat ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;int6 ≡ int1 (0 := True, 2 := True)&amp;quot;&lt;br /&gt;
abbreviation int7 :: &amp;quot;nat ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;int7 ≡ int1 (0 := True, 1 := True)&amp;quot;&lt;br /&gt;
abbreviation int8 :: &amp;quot;nat ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;int8 ≡ int1 (0 := True, 1 := True, 2 := True)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Definir la función&lt;br /&gt;
     valor :: &amp;quot;(nat ⇒ bool) ⇒ nat ⇒ ddb ⇒ bool&amp;quot;&lt;br /&gt;
  tal que (valor i n d) es el valor del DDB d en la interpretación i a&lt;br /&gt;
  partir de la variable de índice n. Por ejemplo,&lt;br /&gt;
     valor int1 0 ddb1 = True&lt;br /&gt;
     valor int2 0 ddb1 = True&lt;br /&gt;
     valor int3 0 ddb1 = False&lt;br /&gt;
     valor int4 0 ddb1 = False&lt;br /&gt;
     valor int5 0 ddb1 = False&lt;br /&gt;
     valor int6 0 ddb1 = False&lt;br /&gt;
     valor int7 0 ddb1 = False&lt;br /&gt;
     valor int8 0 ddb1 = True&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun valor :: &amp;quot;(nat ⇒ bool) ⇒ nat ⇒ ddb ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;valor i n a = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Definir la función&lt;br /&gt;
     ddb_op_un :: &amp;quot;(bool ⇒ bool) ⇒ ddb ⇒ ddb&lt;br /&gt;
  tal que (ddb_op_un f d) es el diagrama obtenido aplicando el operador&lt;br /&gt;
  unitario f a cada hoja de DDB d de forma que se conserve el valor; es&lt;br /&gt;
  decir, &lt;br /&gt;
     valor i n (ddb_op_un f d) = f (valor i n d)&amp;quot;&lt;br /&gt;
  Por ejemplo,&lt;br /&gt;
     value &amp;quot;ddb_op_un (λx. ¬x) ddb1&amp;quot;&lt;br /&gt;
     = N (N (H False) (H True)) (N (H True) (N (H True) (H False)))&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun ddb_op_un :: &amp;quot;(bool ⇒ bool) ⇒ ddb ⇒ ddb&amp;quot; where&lt;br /&gt;
  &amp;quot;ddb_op_un f a = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Demostrar que la definición de ddb_op_un es correcta; es&lt;br /&gt;
  decir, &lt;br /&gt;
     valor i n (ddb_op_un f d) = f (valor i n d)&amp;quot;&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem ddb_op_un_correcto:&lt;br /&gt;
  &amp;quot;valor i n (ddb_op_un f d) = f (valor i n d)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Definir la función&lt;br /&gt;
     ddb_op_bin :: &amp;quot;(bool ⇒ bool ⇒ bool) ⇒ ddb ⇒ ddb ⇒ ddb&amp;quot; &lt;br /&gt;
  tal que (ddb_op_bin f d1 d2) es el diagrama obtenido aplicando el&lt;br /&gt;
  operador binario f a los DDB d1 y d2 de forma que se conserve el&lt;br /&gt;
  valor; es decir, &lt;br /&gt;
     valor i n (ddb_op_bin f d1 d2) = f (valor i n d1) (valor i n d2)&lt;br /&gt;
  Por ejemplo,&lt;br /&gt;
     ddb_op_bin (op ∧) ddb1 (N (H True) (H False))&lt;br /&gt;
     = N (N (H True) (H False)) (N (H False) (N (H False) (H False)))&lt;br /&gt;
     ddb_op_bin (op ∧) ddb1 (N (H False) (H True))&lt;br /&gt;
     = N (N (H False) (H False)) (N (H False) (N (H False) (H True)))&lt;br /&gt;
     ddb_op_bin (op ∨) ddb1 (N (H True) (H False))&lt;br /&gt;
     = N (N (H True) (H True)) (N (H False) (N (H False) (H True)))&lt;br /&gt;
     ddb_op_bin (op ∨) ddb1 (N (H False) (H True))&lt;br /&gt;
     = N (N (H True) (H False)) (N (H True) (N (H True) (H True)))&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun ddb_op_bin :: &amp;quot;(bool ⇒ bool ⇒ bool) ⇒ ddb ⇒ ddb ⇒ ddb&amp;quot; where&lt;br /&gt;
  &amp;quot;ddb_op_bin f d1 d2 = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Demostrar que la definición de ddb_op_bin es correcta; &lt;br /&gt;
  es decir, &lt;br /&gt;
     valor i n (ddb_op_bin f d1 d2) = f (valor i n d1) (valor i n d2)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem ddb_op_bin_correcto:&lt;br /&gt;
  &amp;quot;valor i n (ddb_op_bin f d1 d2) = f (valor i n d1) (valor i n d2)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Definir la función&lt;br /&gt;
     ddb_and :: &amp;quot;ddb ⇒ ddb ⇒ ddb&amp;quot;&lt;br /&gt;
  tal que (ddb_and d1 d2) es el diagrama correspondiente a la conjunción&lt;br /&gt;
  de los DDB d1 y d2 de forma que se conserva el valor; es decir, &lt;br /&gt;
     valor i n (ddb_and d1 d2) = (valor i n d1 ∧ valor i n d2)&lt;br /&gt;
  Por ejemplo,&lt;br /&gt;
     ddb_and ddb1 (N (H True) (H False))&lt;br /&gt;
     = N (N (H True) (H False)) (N (H False) (N (H False) (H False)))&lt;br /&gt;
     ddb_and ddb1 (N (H False) (H True))&lt;br /&gt;
     = N (N (H False) (H False)) (N (H False) (N (H False) (H True)))&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
definition ddb_and :: &amp;quot;ddb ⇒ ddb ⇒ ddb&amp;quot; where&lt;br /&gt;
  &amp;quot;ddb_and ≡ undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Demostrar que la definición de ddb_and es correcta; &lt;br /&gt;
  es decir, &lt;br /&gt;
     valor i n (ddb_and d1 d2) = (valor i n d1 ∧ valor i n d2)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem ddb_and_correcta:&lt;br /&gt;
  &amp;quot;valor i n (ddb_and d1 d2) = (valor i n d1 ∧ valor i n d2)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Definir la función&lt;br /&gt;
     ddb_or :: &amp;quot;ddb ⇒ ddb ⇒ ddb&amp;quot;&lt;br /&gt;
  tal que (ddb_or d1 d2) es el diagrama correspondiente a la disyunción&lt;br /&gt;
  de los DDB d1 y d2 de forma que se conserva el valor; es decir, &lt;br /&gt;
     valor i n (ddb_or d1 d2) = (valor i n d1 ∨ valor i n d2)&lt;br /&gt;
  Por ejemplo,&lt;br /&gt;
     ddb_or ddb1 (N (H True) (H False))&lt;br /&gt;
     = N (N (H True) (H True)) (N (H False) (N (H False) (H True)))&lt;br /&gt;
     ddb_or ddb1 (N (H False) (H True))&lt;br /&gt;
     = N (N (H True) (H False)) (N (H True) (N (H True) (H True)))&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
definition ddb_or :: &amp;quot;ddb ⇒ ddb ⇒ ddb&amp;quot; where&lt;br /&gt;
  &amp;quot;ddb_or ≡ undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Demostrar que la definición de ddb_or es correcta; &lt;br /&gt;
  es decir, &lt;br /&gt;
     valor i n (ddb_or d1 d2) = (valor i n d1 ∨ valor i n d2)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem ddb_or_correcta:&lt;br /&gt;
  &amp;quot;valor i n (ddb_or d1 d2) = (valor i n d1 ∨ valor i n d2)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 13. Definir la función&lt;br /&gt;
     ddb_not :: &amp;quot;ddb ⇒ ddb&amp;quot;&lt;br /&gt;
  tal que (ddb_not d) es el diagrama correspondiente a la negación&lt;br /&gt;
  del DDB d de forma que se conserva el valor; es decir, &lt;br /&gt;
     valor i n (ddb_or d1 d2) = (valor i n d1 ∨ valor i n d2)&lt;br /&gt;
  Por ejemplo,&lt;br /&gt;
     ddb_not ddb1&lt;br /&gt;
     = N (N (H False) (H True)) (N (H True) (N (H True) (H False)))&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
definition ddb_not :: &amp;quot;ddb ⇒ ddb&amp;quot; where&lt;br /&gt;
  &amp;quot;ddb_not ≡ undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 14. Demostrar que la definición de ddb_not es correcta; &lt;br /&gt;
  es decir, &lt;br /&gt;
     valor i n (ddb_not d) = (¬ valor i n d)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem ddb_not_correcta: &lt;br /&gt;
  &amp;quot;valor i n (ddb_not d) = (¬ valor i n d)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 15. Definir la función&lt;br /&gt;
     xor :: &amp;quot;bool ⇒ bool ⇒ bool&amp;quot; &lt;br /&gt;
  tal que (xor x y) es la disyunción excluyente de x e y. Por ejemplo,&lt;br /&gt;
     xor True False = True&lt;br /&gt;
     xor True True  = False&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
definition xor :: &amp;quot;bool ⇒ bool ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;xor x y ≡ undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 16. Definir la función&lt;br /&gt;
     ddb_xor :: &amp;quot;ddb ⇒ ddb ⇒ ddb&amp;quot;&lt;br /&gt;
  tal que (ddb_xor d1 d2) es el diagrama correspondiente a la disyunción&lt;br /&gt;
  excluyente de los DDB d1 y d2. Por ejemplo,&lt;br /&gt;
     ddb_xor ddb1 (N (H True) (H False))&lt;br /&gt;
     = N (N (H True) (H True)) (N (H False) (N (H False) (H True)))&lt;br /&gt;
     ddb_xor ddb1 (N (H False) (H True))&lt;br /&gt;
     = N (N (H True) (H False)) (N (H True) (N (H True) (H True)))&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
definition ddb_xor :: &amp;quot;ddb ⇒ ddb ⇒ ddb&amp;quot; where&lt;br /&gt;
  &amp;quot;ddb_xor ≡ undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 17. Demostrar que la definición de ddb_xor es correcta; &lt;br /&gt;
  es decir, &lt;br /&gt;
     valor i n (ddb_xor d1 d2) = xor (valor i n d1) (valor i n d2)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem ddb_xor_correcta: &lt;br /&gt;
  &amp;quot;valor i n (ddb_xor d1 d2) = xor (valor i n d1) (valor i n d2)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 18. Definir la función&lt;br /&gt;
     ddb_var :: &amp;quot;nat ⇒ ddb&amp;quot; where&lt;br /&gt;
  tal que (ddb_var n) es el diagrama equivalente a la variable p(n). Por&lt;br /&gt;
  ejemplo, &lt;br /&gt;
     ddb_var 0&lt;br /&gt;
     = N (H False) (H True)&lt;br /&gt;
     ddb_var 1&lt;br /&gt;
     = N (N (H False) (H True)) (N (H False) (H True))&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun ddb_var :: &amp;quot;nat ⇒ ddb&amp;quot; where&lt;br /&gt;
  &amp;quot;ddb_var n = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 19. Demostrar que la definición de ddb_var es correcta; &lt;br /&gt;
  es decir, &lt;br /&gt;
     &amp;quot;valor i 0 (ddb_var n) = i n&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma ddb_var_correcta: &lt;br /&gt;
  &amp;quot;valor i 0 (ddb_var n) = i n&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 20. Definir el tipo de las fórmulas proposicionales&lt;br /&gt;
  contruidas con la constante T, las variables (Var n) y las conectivas&lt;br /&gt;
  Not, And, Or y Xor.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
datatype form = T &lt;br /&gt;
              | Var nat&lt;br /&gt;
              | Not form&lt;br /&gt;
              | And form form &lt;br /&gt;
              | Or  form form &lt;br /&gt;
              | Xor form form&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 21. Definir la función&lt;br /&gt;
     valor_fla :: &amp;quot;(nat ⇒ bool) ⇒ form ⇒ bool&amp;quot;&lt;br /&gt;
  tal que (valor_fla i f) es el valor de la fórmula f en la&lt;br /&gt;
  interpretación i. Por ejemplo,&lt;br /&gt;
     valor_fla (λn. True) (Xor T T)        = False&lt;br /&gt;
     valor_fla (λn. False) (Xor T (Var 1)) = True&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun valor_fla :: &amp;quot;(nat ⇒ bool) ⇒ form ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;valor_fla i f = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 22. Definir la función&lt;br /&gt;
     ddb_fla :: &amp;quot;form ⇒ ddb&amp;quot;&lt;br /&gt;
  tal que (ddb_fla f) es el DDB equivalente a la fórmula f; es decir,&lt;br /&gt;
     valor i 0 (ddb_fla f) = valor_fla i f&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun ddb_fla :: &amp;quot;form ⇒ ddb&amp;quot; where&lt;br /&gt;
  &amp;quot;ddb_fla f = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 23. Demostrar que la definición de ddb_fla es correcta; es&lt;br /&gt;
  decir, &lt;br /&gt;
     valor i 0 (ddb_fla f) = valor_fla i f&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem ddb_fla_correcta: &lt;br /&gt;
  &amp;quot;valor e 0 (ddb_fla f) = valor_fla e f&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Referencias:&lt;br /&gt;
  · J.A. Alonso, F.J. Martín y J.L. Ruiz &amp;quot;Diagramas de decisión&lt;br /&gt;
    binarios&amp;quot;. En &lt;br /&gt;
       http://www.cs.us.es/cursos/lp-2005/temas/tema-07.pdf &lt;br /&gt;
  · Wikipedia &amp;quot;Binary decision diagram&amp;quot;. En&lt;br /&gt;
       http://en.wikipedia.org/wiki/Binary_decision_diagram&lt;br /&gt;
*} &lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_2&amp;diff=193</id>
		<title>RA12 Relación 2</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_2&amp;diff=193"/>
		<updated>2018-07-15T12:04:03Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «&amp;quot;isar&amp;quot;» por «&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R2: Argumentación proposicional *}&lt;br /&gt;
&lt;br /&gt;
theory R2&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  El objetivo de esta relación formalizar y demostrar la corrección de&lt;br /&gt;
  los argumentos usando sólo las reglas básicas de deducción natural de&lt;br /&gt;
  la lógica proposicional (sin usar el método auto). &lt;br /&gt;
&lt;br /&gt;
  Las reglas básicas de la deducción natural son las siguientes:&lt;br /&gt;
  · conjI:      ⟦P; Q⟧ ⟹ P ∧ Q&lt;br /&gt;
  · conjunct1:  P ∧ Q ⟹ P&lt;br /&gt;
  · conjunct2:  P ∧ Q ⟹ Q  &lt;br /&gt;
  · notnotD:    ¬¬ P ⟹ P&lt;br /&gt;
  · notnotI:    P ⟹ ¬¬ P&lt;br /&gt;
  · mp:         ⟦P ⟶ Q; P⟧ ⟹ Q &lt;br /&gt;
  · mt:         ⟦F ⟶ G; ¬G⟧ ⟹ ¬F &lt;br /&gt;
  · impI:       (P ⟹ Q) ⟹ P ⟶ Q&lt;br /&gt;
  · disjI1:     P ⟹ P ∨ Q&lt;br /&gt;
  · disjI2:     Q ⟹ P ∨ Q&lt;br /&gt;
  · disjE:      ⟦P ∨ Q; P ⟹ R; Q ⟹ R⟧ ⟹ R &lt;br /&gt;
  · FalseE:     False ⟹ P&lt;br /&gt;
  · notE:       ⟦¬P; P⟧ ⟹ R&lt;br /&gt;
  · notI:       (P ⟹ False) ⟹ ¬P&lt;br /&gt;
  · iffI:       ⟦P ⟹ Q; Q ⟹ P⟧ ⟹ P = Q&lt;br /&gt;
  · iffD1:      ⟦Q = P; Q⟧ ⟹ P &lt;br /&gt;
  · iffD2:      ⟦P = Q; Q⟧ ⟹ P&lt;br /&gt;
  · ccontr:     (¬P ⟹ False) ⟹ P&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Se usarán las reglas notnotI y mt que demostramos a continuación.&lt;br /&gt;
  *}&lt;br /&gt;
&lt;br /&gt;
lemma notnotI: &amp;quot;P ⟹ ¬¬ P&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
lemma mt: &amp;quot;⟦F ⟶ G; ¬G⟧ ⟹ ¬F&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Cuando tanto la temperatura como la presión atmosférica permanecen&lt;br /&gt;
     contantes, no llueve. La temperatura permanece constante. Por lo&lt;br /&gt;
     tanto, en caso de que llueva, la presión atmosférica no permanece&lt;br /&gt;
     constante. &lt;br /&gt;
  Usar T para &amp;quot;La temperatura permanece constante&amp;quot;,&lt;br /&gt;
       P para &amp;quot;La presión atmosférica permanece constante&amp;quot; y&lt;br /&gt;
       L para &amp;quot;Llueve&amp;quot;.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Siempre que un número x es divisible por 10, acaba en 0. El número&lt;br /&gt;
     x no acaba en 0. Por lo tanto, x no es divisible por 10. &lt;br /&gt;
  Usar D para &amp;quot;el número es divisible por 10&amp;quot; y&lt;br /&gt;
       C para &amp;quot;el número acaba en cero&amp;quot;.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     En cierto experimento, cuando hemos empleado un fármaco A, el&lt;br /&gt;
     paciente ha mejorado considerablemente en el caso, y sólo en el&lt;br /&gt;
     caso, en que no se haya empleado también un fármaco B. Además, o se&lt;br /&gt;
     ha empleado el fármaco A o se ha empleado el fármaco B. En&lt;br /&gt;
     consecuencia, podemos afirmar que si no hemos empleado el fármaco&lt;br /&gt;
     B, el paciente ha mejorado considerablemente. &lt;br /&gt;
  Usar A: Hemos empleado el fármaco A.&lt;br /&gt;
       B: Hemos empleado el fármaco B.&lt;br /&gt;
       M: El paciente ha mejorado notablemente.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento&lt;br /&gt;
     Si no está el mañana ni el ayer escrito, entonces no está el mañana&lt;br /&gt;
     escrito. &lt;br /&gt;
  Usar M: El mañana está escrito.&lt;br /&gt;
       A: El ayer está escrito.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Me matan si no trabajo y si trabajo me matan. Me matan siempre me&lt;br /&gt;
     matan. &lt;br /&gt;
  Usar M: Me matan.&lt;br /&gt;
       T: Trabajo.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Si te llamé por teléfono, entonces recibiste mi llamada y no es&lt;br /&gt;
     cierto que no te avisé del peligro que corrías. Por consiguiente,&lt;br /&gt;
     como te llamé, es cierto que te avisé del peligro que corrías.&lt;br /&gt;
  Usar T: Te llamé por teléfono.&lt;br /&gt;
       R: Recibiste mi llamada.&lt;br /&gt;
       P: Te avisé del peligro que corrías.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Si no hay control de nacimientos, entonces la población crece&lt;br /&gt;
     ilimitadamente; pero si la población crece ilimitadamente,&lt;br /&gt;
     aumentará el índice de pobreza. Por consiguiente, si no hay control&lt;br /&gt;
     de nacimientos, aumentará el índice de pobreza. &lt;br /&gt;
  Usar N: Hay control de nacimientos. &lt;br /&gt;
       P: La población crece ilimitadamente,&lt;br /&gt;
       I: Aumentará el índice de pobreza. &lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Si el general era leal, hubiera obedecido las órdenes, y si era&lt;br /&gt;
     inteligente las hubiera comprendido. O el general desobedeció las&lt;br /&gt;
     órdenes o no las comprendió. Luego, el general era desleal o no era&lt;br /&gt;
     inteligente. &lt;br /&gt;
  Usar L: El general es leal.&lt;br /&gt;
       O: El general obedece las órdenes.&lt;br /&gt;
       I: El general es inteligente.&lt;br /&gt;
       C: El general comprende las órdenes.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Si Dios fuera capaz de evitar el mal y quisiera hacerlo, lo&lt;br /&gt;
     haría. Si Dios fuera incapaz de evitar el mal, no sería&lt;br /&gt;
     omnipotente; si no quisiera evitar el mal sería malévolo. Dios no&lt;br /&gt;
     evita el mal. Si Dios existe, es omnipotente y no es&lt;br /&gt;
     malévolo. Luego, Dios no existe. &lt;br /&gt;
  Usar C: Dios es capaz de evitar el mal.&lt;br /&gt;
       Q: Dios quiere evitar el mal.&lt;br /&gt;
       O: Dios es omnipotente.&lt;br /&gt;
       M: Dios es malévolo.&lt;br /&gt;
       P: Dios evita el mal.&lt;br /&gt;
       E: Dios existe.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Nadie más que Pedro, Quintín y Raúl están bajo sospecha y al menos&lt;br /&gt;
     uno es traidor. Pedro nunca trabaja sin llevar al menos un cómplice&lt;br /&gt;
     (que puede ser Quintín o Raúl). Raúl es leal. Por lo tanto,&lt;br /&gt;
     Pedro es traidor.&lt;br /&gt;
  Usar p: Pedro es traidor.&lt;br /&gt;
       q : Quintín es traidor.&lt;br /&gt;
       r : Raúl es traidor. &lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Si la válvula está abierta o la monitorización está preparada,&lt;br /&gt;
     entonces se envía una señal de reconocimiento y un mensaje de&lt;br /&gt;
     funcionamiento al controlador del ordenador. Si se envía un mensaje &lt;br /&gt;
     de funcionamiento al controlador del ordenador o el sistema está en &lt;br /&gt;
     estado normal, entonces se aceptan las órdenes del operador. Por lo&lt;br /&gt;
     tanto, si la válvula está abierta, entonces se aceptan las órdenes&lt;br /&gt;
     del operador. &lt;br /&gt;
  Usar A: La válvula está abierta.&lt;br /&gt;
       P : La monitorización está preparada.&lt;br /&gt;
       R : Envía una señal de reconocimiento.&lt;br /&gt;
       F : Envía un mensaje de funcionamiento.&lt;br /&gt;
       N : El sistema está en estado normal.&lt;br /&gt;
       O : Se aceptan órdenes del operador.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Si trabajo gano dinero, pero si no trabajo gozo de la vida. Sin&lt;br /&gt;
     embargo, si trabajo no gozo de la vida, mientras que si no trabajo&lt;br /&gt;
     no gano dinero. Por lo tanto, gozo de la vida si y sólo si no gano&lt;br /&gt;
  dinero. &lt;br /&gt;
  Usar p: Trabajo&lt;br /&gt;
       q: Gano dinero.&lt;br /&gt;
       r: Gozo de la vida.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=GLC_T2R1&amp;diff=192</id>
		<title>GLC T2R1</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=GLC_T2R1&amp;diff=192"/>
		<updated>2018-07-15T12:03:30Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «lang=&amp;quot;isar&amp;quot;» por «lang=&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* T4R1: Deducción natural de primer orden *}&lt;br /&gt;
&lt;br /&gt;
theory T4R1&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Demostrar o refutar los siguientes lemas usando sólo las reglas&lt;br /&gt;
  básicas de deducción natural de la lógica proposicional, de los&lt;br /&gt;
  cuantificadores y de la igualdad: &lt;br /&gt;
  · conjI:      ⟦P; Q⟧ ⟹ P ∧ Q&lt;br /&gt;
  · conjunct1:  P ∧ Q ⟹ P&lt;br /&gt;
  · conjunct2:  P ∧ Q ⟹ Q  &lt;br /&gt;
  · notnotD:    ¬¬ P ⟹ P&lt;br /&gt;
  · mp:         ⟦P ⟶ Q; P⟧ ⟹ Q &lt;br /&gt;
  · impI:       (P ⟹ Q) ⟹ P ⟶ Q&lt;br /&gt;
  · disjI1:     P ⟹ P ∨ Q&lt;br /&gt;
  · disjI2:     Q ⟹ P ∨ Q&lt;br /&gt;
  · disjE:      ⟦P ∨ Q; P ⟹ R; Q ⟹ R⟧ ⟹ R &lt;br /&gt;
  · FalseE:     False ⟹ P&lt;br /&gt;
  · notE:       ⟦¬P; P⟧ ⟹ R&lt;br /&gt;
  · notI:       (P ⟹ False) ⟹ ¬P&lt;br /&gt;
  · iffI:       ⟦P ⟹ Q; Q ⟹ P⟧ ⟹ P = Q&lt;br /&gt;
  · iffD1:      ⟦Q = P; Q⟧ ⟹ P &lt;br /&gt;
  · iffD2:      ⟦P = Q; Q⟧ ⟹ P&lt;br /&gt;
  · ccontr:     (¬P ⟹ False) ⟹ P&lt;br /&gt;
&lt;br /&gt;
  · allI:       ⟦∀x. P x; P x ⟹ R⟧ ⟹ R&lt;br /&gt;
  · allE:       (⋀x. P x) ⟹ ∀x. P x&lt;br /&gt;
  · exI:        P x ⟹ ∃x. P x&lt;br /&gt;
  · exE:        ⟦∃x. P x; ⋀x. P x ⟹ Q⟧ ⟹ Q&lt;br /&gt;
&lt;br /&gt;
  · refl:       t = t&lt;br /&gt;
  · subst:      ⟦s = t; P s⟧ ⟹ P t&lt;br /&gt;
  · trans:      ⟦r = s; s = t⟧ ⟹ r = t&lt;br /&gt;
  · sym:        s = t ⟹ t = s&lt;br /&gt;
  · not_sym:    t ≠ s ⟹ s ≠ t&lt;br /&gt;
  · ssubst:     ⟦t = s; P s⟧ ⟹ P t&lt;br /&gt;
  · box_equals: ⟦a = b; a = c; b = d⟧ ⟹ a: = d&lt;br /&gt;
  · arg_cong:   x = y ⟹ f x = f y&lt;br /&gt;
  · fun_cong:   f = g ⟹ f x = g x&lt;br /&gt;
  · cong:       ⟦f = g; x = y⟧ ⟹ f x = g y&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Se usarán las reglas notnotI y mt que demostramos a continuación.&lt;br /&gt;
  *}&lt;br /&gt;
&lt;br /&gt;
lemma notnotI: &amp;quot;P ⟹ ¬¬ P&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
lemma mt: &amp;quot;⟦F ⟶ G; ¬G⟧ ⟹ ¬F&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Demostrar&lt;br /&gt;
       ∀x. P x ⟶ Q x ⊢ (∀x. P x) ⟶ (∀x. Q x)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_1a: &lt;br /&gt;
  &amp;quot;∀x. P x ⟶ Q x ⟹ (∀x. P x) ⟶ (∀x. Q x)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_1b: &lt;br /&gt;
  assumes &amp;quot;∀x. P x ⟶ Q x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(∀x. P x) ⟶ (∀x. Q x)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  show &amp;quot;∀x. Q x&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    fix a&lt;br /&gt;
    have &amp;quot;P a&amp;quot; using `∀x. P x` ..&lt;br /&gt;
    have &amp;quot;P a ⟶ Q a&amp;quot; using assms(1) ..&lt;br /&gt;
    thus &amp;quot;Q a&amp;quot; using `P a` ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_1c: &lt;br /&gt;
  assumes &amp;quot;∀x. P x ⟶ Q x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(∀x. P x) ⟶ (∀x. Q x)&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  show &amp;quot;∀x. Q x&amp;quot;&lt;br /&gt;
  proof (rule allI)&lt;br /&gt;
    fix a&lt;br /&gt;
    have &amp;quot;P a&amp;quot; using `∀x. P x` by (rule allE)&lt;br /&gt;
    have &amp;quot;P a ⟶ Q a&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
    thus &amp;quot;Q a&amp;quot; using `P a` by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Demostrar&lt;br /&gt;
       ∃x. ¬(P x) ⊢ ¬(∀x. P x)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_2a: &amp;quot;∃x. ¬(P x) ⟹ ¬(∀x. P x)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_2b: &lt;br /&gt;
  assumes &amp;quot;∃x. ¬(P x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(∀x. P x)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  obtain a where &amp;quot;¬(P a)&amp;quot; using assms(1) .. &lt;br /&gt;
  have &amp;quot;P a&amp;quot; using `∀x. P x` ..&lt;br /&gt;
  with `¬(P a)` show False ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_2c: &lt;br /&gt;
  assumes &amp;quot;∃x. ¬(P x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(∀x. P x)&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  obtain a where &amp;quot;¬(P a)&amp;quot; using assms(1) by (rule exE)&lt;br /&gt;
  have &amp;quot;P a&amp;quot; using `∀x. P x` by (rule allE)&lt;br /&gt;
  with `¬(P a)` show False by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Demostrar&lt;br /&gt;
       ∀x. P x ⊢ ∀y. P y&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_3a: &amp;quot;∀x. P x  ⟹ ∀y. P y&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_3b: &lt;br /&gt;
  assumes &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀y. P y&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  fix a&lt;br /&gt;
  show &amp;quot;P a&amp;quot; using assms ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_3c: &lt;br /&gt;
  assumes &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀y. P y&amp;quot;&lt;br /&gt;
proof (rule allI)&lt;br /&gt;
  fix a&lt;br /&gt;
  show &amp;quot;P a&amp;quot; using assms by (rule allE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Demostrar&lt;br /&gt;
       ∀x. P x ⟶ Q x ⊢ (∀x. ¬(Q x)) ⟶ (∀x. ¬ (P x))&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_4a: &lt;br /&gt;
  &amp;quot;∀x. P x ⟶ Q x ⟹ (∀x. ¬(Q x)) ⟶ (∀x. ¬ (P x))&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_4b: &lt;br /&gt;
  assumes &amp;quot;∀x. P x ⟶ Q x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(∀x. ¬(Q x)) ⟶ (∀x. ¬ (P x))&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;∀x. ¬(Q x)&amp;quot;&lt;br /&gt;
  show &amp;quot;∀x. ¬(P x)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    fix a&lt;br /&gt;
    show &amp;quot;¬(P a)&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;P a&amp;quot;&lt;br /&gt;
      have &amp;quot;P a ⟶ Q a&amp;quot; using assms ..&lt;br /&gt;
      hence &amp;quot;Q a&amp;quot; using `P a` ..&lt;br /&gt;
      have &amp;quot;¬(Q a)&amp;quot; using `∀x. ¬(Q x)` ..&lt;br /&gt;
      thus False using `Q a` ..&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_4c: &lt;br /&gt;
  assumes &amp;quot;∀x. P x ⟶ Q x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(∀x. ¬(Q x)) ⟶ (∀x. ¬ (P x))&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;∀x. ¬(Q x)&amp;quot;&lt;br /&gt;
  show &amp;quot;∀x. ¬(P x)&amp;quot;&lt;br /&gt;
  proof (rule allI)&lt;br /&gt;
    fix a&lt;br /&gt;
    show &amp;quot;¬(P a)&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;P a&amp;quot;&lt;br /&gt;
      have &amp;quot;P a ⟶ Q a&amp;quot; using assms by (rule allE)&lt;br /&gt;
      hence &amp;quot;Q a&amp;quot; using `P a` by (rule mp)&lt;br /&gt;
      have &amp;quot;¬(Q a)&amp;quot; using `∀x. ¬(Q x)` by (rule allE) &lt;br /&gt;
      thus False using `Q a` by (rule notE)&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Demostrar&lt;br /&gt;
       ∀x. P x  ⟶ ¬(Q x) ⊢ ¬(∃x. P x ∧ Q x)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_5a: &lt;br /&gt;
  &amp;quot;∀x. P x  ⟶ ¬(Q x) ⟹ ¬(∃x. P x ∧ Q x)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_5b: &lt;br /&gt;
  assumes &amp;quot;∀x. P x  ⟶ ¬(Q x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(∃x. P x ∧ Q x)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;∃x. P x ∧ Q x&amp;quot;&lt;br /&gt;
  then obtain a where &amp;quot;P a ∧ Q a&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;P a&amp;quot; ..&lt;br /&gt;
  have &amp;quot;P a ⟶ ¬(Q a)&amp;quot; using assms ..&lt;br /&gt;
  hence &amp;quot;¬(Q a)&amp;quot; using `P a` ..&lt;br /&gt;
  have &amp;quot;Q a&amp;quot; using `P a ∧ Q a` ..&lt;br /&gt;
  with `¬(Q a)` show False ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_5c: &lt;br /&gt;
  assumes &amp;quot;∀x. P x  ⟶ ¬(Q x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(∃x. P x ∧ Q x)&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume &amp;quot;∃x. P x ∧ Q x&amp;quot;&lt;br /&gt;
  then obtain a where &amp;quot;P a ∧ Q a&amp;quot; by (rule exE)&lt;br /&gt;
  hence &amp;quot;P a&amp;quot; by (rule conjunct1)&lt;br /&gt;
  have &amp;quot;P a ⟶ ¬(Q a)&amp;quot; using assms by (rule allE)&lt;br /&gt;
  hence &amp;quot;¬(Q a)&amp;quot; using `P a` by (rule mp)&lt;br /&gt;
  have &amp;quot;Q a&amp;quot; using `P a ∧ Q a` by (rule conjunct2)&lt;br /&gt;
  with `¬(Q a)` show False by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Demostrar&lt;br /&gt;
       ∀x y. P x y ⊢ ∀u v. P u v&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_6a: &lt;br /&gt;
  &amp;quot;∀x y. P x y ⟹ ∀u v. P u v&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_6b: &lt;br /&gt;
  assumes &amp;quot;∀x y. P x y&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀u v. P u v&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  fix a &lt;br /&gt;
  show &amp;quot;∀v. P a v&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    fix b&lt;br /&gt;
    have &amp;quot;∀y. P a y&amp;quot; using assms .. &lt;br /&gt;
    thus &amp;quot;P a b&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada simplificada es&amp;quot;&lt;br /&gt;
lemma ejercicio_6b2: &lt;br /&gt;
  assumes &amp;quot;∀x y. P x y&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀u v. P u v&amp;quot;&lt;br /&gt;
proof (rule allI)+&lt;br /&gt;
  fix a b&lt;br /&gt;
  have &amp;quot;∀y. P a y&amp;quot; using assms .. &lt;br /&gt;
  thus &amp;quot;P a b&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_6c: &lt;br /&gt;
  assumes &amp;quot;∀x y. P x y&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀u v. P u v&amp;quot;&lt;br /&gt;
proof (rule allI)+&lt;br /&gt;
  fix a b&lt;br /&gt;
  have &amp;quot;∀y. P a y&amp;quot; using assms by (rule allE) &lt;br /&gt;
  thus &amp;quot;P a b&amp;quot; by (rule allE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Demostrar&lt;br /&gt;
       ∃x y. P x y ⟹ ∃u v. P u v&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_7a: &lt;br /&gt;
  &amp;quot;∃x y. P x y ⟹ ∃u v. P u v&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_7b: &lt;br /&gt;
  assumes &amp;quot;∃x y. P x y&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃u v. P u v&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where &amp;quot;∃y. P a y&amp;quot; using assms ..&lt;br /&gt;
  then obtain b where &amp;quot;P a b&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;∃v. P a v&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;∃u v. P u v&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Demostrar&lt;br /&gt;
       ∃x. ∀y. P x y ⊢ ∀y. ∃x. P x y&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_8a: &lt;br /&gt;
  &amp;quot;∃x. ∀y. P x y ⟹ ∀y. ∃x. P x y&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_8b: &lt;br /&gt;
  assumes &amp;quot;∃x. ∀y. P x y&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀y. ∃x. P x y&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  fix b&lt;br /&gt;
  obtain a where &amp;quot;∀y. P a y&amp;quot; using assms ..&lt;br /&gt;
  hence &amp;quot;P a b&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;∃x. P x b&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_8c: &lt;br /&gt;
  assumes &amp;quot;∃x. ∀y. P x y&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀y. ∃x. P x y&amp;quot;&lt;br /&gt;
proof (rule allI)&lt;br /&gt;
  fix b&lt;br /&gt;
  obtain a where &amp;quot;∀y. P a y&amp;quot; using assms by (rule exE)&lt;br /&gt;
  hence &amp;quot;P a b&amp;quot; by (rule allE)&lt;br /&gt;
  thus &amp;quot;∃x. P x b&amp;quot; by (rule exI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Demostrar&lt;br /&gt;
       ∃x. P a ⟶ Q x ⊢ P a ⟶ (∃x. Q x)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_9a: &lt;br /&gt;
  &amp;quot;∃x. P a ⟶ Q x ⟹ P a ⟶ (∃x. Q x)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_9b: &lt;br /&gt;
  assumes &amp;quot;∃x. P a ⟶ Q x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;P a ⟶ (∃x. Q x)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;P a&amp;quot;&lt;br /&gt;
  obtain b where &amp;quot;P a ⟶ Q b&amp;quot; using assms ..&lt;br /&gt;
  hence &amp;quot;Q b&amp;quot; using `P a` ..&lt;br /&gt;
  thus &amp;quot;∃x. Q x&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_9c: &lt;br /&gt;
  assumes &amp;quot;∃x. P a ⟶ Q x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;P a ⟶ (∃x. Q x)&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;P a&amp;quot;&lt;br /&gt;
  obtain b where &amp;quot;P a ⟶ Q b&amp;quot; using assms by (rule exE)&lt;br /&gt;
  hence &amp;quot;Q b&amp;quot; using `P a` by (rule mp)&lt;br /&gt;
  thus &amp;quot;∃x. Q x&amp;quot; by (rule exI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Demostrar&lt;br /&gt;
       P a ⟶ (∃x. Q x) ⊢ ∃x. P a ⟶ Q x &lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_10a: &lt;br /&gt;
  &amp;quot;P a ⟶ (∃x. Q x) ⟹ ∃x. P a ⟶ Q x&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_10b: &lt;br /&gt;
  fixes P Q :: &amp;quot;&amp;#039;b ⇒ bool&amp;quot; &lt;br /&gt;
  assumes &amp;quot;P a ⟶ (∃x. Q x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. P a ⟶ Q x&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;¬(P a) ∨ P a&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;∃x. P a ⟶ Q x&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;¬(P a)&amp;quot;&lt;br /&gt;
    have &amp;quot;P a ⟶ Q a&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;P a&amp;quot;&lt;br /&gt;
      with `¬(P a)` show &amp;quot;Q a&amp;quot; ..&lt;br /&gt;
    qed&lt;br /&gt;
    thus &amp;quot;∃x. P a ⟶ Q x&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;P a&amp;quot;&lt;br /&gt;
    with assms have &amp;quot;∃x. Q x&amp;quot; by (rule mp)&lt;br /&gt;
    then obtain b where &amp;quot;Q b&amp;quot; .. &lt;br /&gt;
    have &amp;quot;P a ⟶ Q b&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;P a&amp;quot;&lt;br /&gt;
      note `Q b` &lt;br /&gt;
      thus &amp;quot;Q b&amp;quot; .&lt;br /&gt;
    qed&lt;br /&gt;
    thus &amp;quot;∃x. P a ⟶ Q x&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_10c: &lt;br /&gt;
  fixes P Q :: &amp;quot;&amp;#039;b ⇒ bool&amp;quot; &lt;br /&gt;
  assumes &amp;quot;P a ⟶ (∃x. Q x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. P a ⟶ Q x&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;¬(P a) ∨ P a&amp;quot; by (rule excluded_middle)&lt;br /&gt;
  thus &amp;quot;∃x. P a ⟶ Q x&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;¬(P a)&amp;quot;&lt;br /&gt;
    have &amp;quot;P a ⟶ Q a&amp;quot;&lt;br /&gt;
    proof (rule impI)&lt;br /&gt;
      assume &amp;quot;P a&amp;quot;&lt;br /&gt;
      with `¬(P a)` show &amp;quot;Q a&amp;quot; by (rule notE)&lt;br /&gt;
    qed&lt;br /&gt;
    thus &amp;quot;∃x. P a ⟶ Q x&amp;quot; by (rule exI)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;P a&amp;quot;&lt;br /&gt;
    with assms have &amp;quot;∃x. Q x&amp;quot; by (rule mp)&lt;br /&gt;
    then obtain b where &amp;quot;Q b&amp;quot; by (rule exE)&lt;br /&gt;
    have &amp;quot;P a ⟶ Q b&amp;quot;&lt;br /&gt;
    proof (rule impI)&lt;br /&gt;
      assume &amp;quot;P a&amp;quot;&lt;br /&gt;
      note `Q b` &lt;br /&gt;
      thus &amp;quot;Q b&amp;quot; by this&lt;br /&gt;
    qed&lt;br /&gt;
    thus &amp;quot;∃x. P a ⟶ Q x&amp;quot; by (rule exI)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Demostrar&lt;br /&gt;
       (∃x. P x) ⟶ Q a ⊢ ∀x. P x ⟶ Q a&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_11a: &lt;br /&gt;
  &amp;quot;(∃x. P x) ⟶ Q a ⟹ ∀x. P x ⟶ Q a&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_11b: &lt;br /&gt;
  assumes &amp;quot;(∃x. P x) ⟶ Q a&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. P x ⟶ Q a&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  fix b&lt;br /&gt;
  show &amp;quot;P b ⟶ Q a&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;P b&amp;quot;&lt;br /&gt;
    hence &amp;quot;∃x. P x&amp;quot; ..&lt;br /&gt;
    with assms show &amp;quot;Q a&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_11c: &lt;br /&gt;
  assumes &amp;quot;(∃x. P x) ⟶ Q a&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. P x ⟶ Q a&amp;quot;&lt;br /&gt;
proof (rule allI)&lt;br /&gt;
  fix b&lt;br /&gt;
  show &amp;quot;P b ⟶ Q a&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume &amp;quot;P b&amp;quot;&lt;br /&gt;
    hence &amp;quot;∃x. P x&amp;quot; by (rule exI)&lt;br /&gt;
    with assms show &amp;quot;Q a&amp;quot; by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Demostrar&lt;br /&gt;
       ∀x. P x ⟶ Q a ⊢ ∃ x. P x ⟶ Q a&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_12a: &lt;br /&gt;
  &amp;quot;∀x. P x ⟶ Q a ⟹ ∃x. P x ⟶ Q a&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_12b: &lt;br /&gt;
  assumes &amp;quot;∀x. P x ⟶ Q a&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. P x ⟶ Q a&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;P b ⟶ Q a&amp;quot; using assms ..&lt;br /&gt;
  thus &amp;quot;∃x. P x ⟶ Q a&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_12c: &lt;br /&gt;
  assumes &amp;quot;∀x. P x ⟶ Q a&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. P x ⟶ Q a&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;P b ⟶ Q a&amp;quot; using assms by (rule allE)&lt;br /&gt;
  thus &amp;quot;∃x. P x ⟶ Q a&amp;quot; by (rule exI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 13. Demostrar&lt;br /&gt;
       (∀x. P x) ∨ (∀x. Q x) ⊢ ∀x. P x ∨ Q x&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_13a: &lt;br /&gt;
  &amp;quot;(∀x. P x) ∨ (∀x. Q x) ⟹ ∀x. P x ∨ Q x&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_13b: &lt;br /&gt;
  assumes &amp;quot;(∀x. P x) ∨ (∀x. Q x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. P x ∨ Q x&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  fix a&lt;br /&gt;
  note assms&lt;br /&gt;
  thus &amp;quot;P a ∨ Q a&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
    hence &amp;quot;P a&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;P a ∨ Q a&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;∀x. Q x&amp;quot;&lt;br /&gt;
    hence &amp;quot;Q a&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;P a ∨ Q a&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_13c: &lt;br /&gt;
  assumes &amp;quot;(∀x. P x) ∨ (∀x. Q x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. P x ∨ Q x&amp;quot;&lt;br /&gt;
proof (rule  allI)&lt;br /&gt;
  fix a&lt;br /&gt;
  note assms&lt;br /&gt;
  thus &amp;quot;P a ∨ Q a&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
    hence &amp;quot;P a&amp;quot; by (rule allE)&lt;br /&gt;
    thus &amp;quot;P a ∨ Q a&amp;quot; by (rule disjI1)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;∀x. Q x&amp;quot;&lt;br /&gt;
    hence &amp;quot;Q a&amp;quot; by (rule allE)&lt;br /&gt;
    thus &amp;quot;P a ∨ Q a&amp;quot; by (rule disjI2)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 14. Demostrar&lt;br /&gt;
       ∃x. P x ∧ Q x ⊢ (∃x. P x) ∧ (∃x. Q x)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_14a: &lt;br /&gt;
  &amp;quot;∃x. P x ∧ Q x ⟹ (∃x. P x) ∧ (∃x. Q x)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_14b: &lt;br /&gt;
  assumes &amp;quot;∃x. P x ∧ Q x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(∃x. P x) ∧ (∃x. Q x)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  obtain a where &amp;quot;P a ∧ Q a&amp;quot; using assms ..&lt;br /&gt;
  hence &amp;quot;P a&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;∃x. P x&amp;quot; ..&lt;br /&gt;
next&lt;br /&gt;
  obtain a where &amp;quot;P a ∧ Q a&amp;quot; using assms ..&lt;br /&gt;
  hence &amp;quot;Q a&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;∃x. Q x&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_14c: &lt;br /&gt;
  assumes &amp;quot;∃x. P x ∧ Q x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(∃x. P x) ∧ (∃x. Q x)&amp;quot;&lt;br /&gt;
proof (rule conjI)&lt;br /&gt;
  obtain a where &amp;quot;P a ∧ Q a&amp;quot; using assms by (rule exE)&lt;br /&gt;
  hence &amp;quot;P a&amp;quot; by (rule conjunct1)&lt;br /&gt;
  thus &amp;quot;∃x. P x&amp;quot; by (rule exI)&lt;br /&gt;
next&lt;br /&gt;
  obtain a where &amp;quot;P a ∧ Q a&amp;quot; using assms by (rule exE)&lt;br /&gt;
  hence &amp;quot;Q a&amp;quot; by (rule conjunct2)&lt;br /&gt;
  thus &amp;quot;∃x. Q x&amp;quot; by (rule exI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 15. Demostrar&lt;br /&gt;
       ∀x y. P y ⟶ Q x ⊢ (∃y. P y) ⟶ (∀x. Q x)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_15a: &lt;br /&gt;
  &amp;quot;∀x y. P y ⟶ Q x ⟹ (∃y. P y) ⟶ (∀x. Q x)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_15b: &lt;br /&gt;
  assumes &amp;quot;∀x y. P y ⟶ Q x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(∃y. P y) ⟶ (∀x. Q x)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;∃y. P y&amp;quot;&lt;br /&gt;
  then obtain b where &amp;quot;P b&amp;quot; ..&lt;br /&gt;
  show &amp;quot;∀x. Q x&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    fix a&lt;br /&gt;
    have &amp;quot;∀y. P y ⟶ Q a&amp;quot; using assms ..&lt;br /&gt;
    hence &amp;quot;P b ⟶ Q a&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;Q a&amp;quot; using `P b` ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_15c: &lt;br /&gt;
  assumes &amp;quot;∀x y. P y ⟶ Q x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(∃y. P y) ⟶ (∀x. Q x)&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;∃y. P y&amp;quot;&lt;br /&gt;
  then obtain b where &amp;quot;P b&amp;quot; by (rule exE)&lt;br /&gt;
  show &amp;quot;∀x. Q x&amp;quot;&lt;br /&gt;
  proof (rule allI)&lt;br /&gt;
    fix a&lt;br /&gt;
    have &amp;quot;∀y. P y ⟶ Q a&amp;quot; using assms by (rule allE)&lt;br /&gt;
    hence &amp;quot;P b ⟶ Q a&amp;quot; by (rule allE)&lt;br /&gt;
    thus &amp;quot;Q a&amp;quot; using `P b` by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 16. Demostrar&lt;br /&gt;
       ¬(∀x. ¬(P x)) ⊢ ∃x. P x&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_16a: &lt;br /&gt;
  &amp;quot;¬(∀x. ¬(P x)) ⟹ ∃x. P x&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_16b: &lt;br /&gt;
  assumes &amp;quot;¬(∀x. ¬(P x))&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
proof (rule ccontr)&lt;br /&gt;
  assume &amp;quot;¬(∃x. P x)&amp;quot;&lt;br /&gt;
  have &amp;quot;∀x. ¬(P x)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    fix a&lt;br /&gt;
    show &amp;quot;¬(P a)&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;P a&amp;quot;&lt;br /&gt;
      hence &amp;quot;∃x. P x&amp;quot; ..&lt;br /&gt;
      with `¬(∃x. P x)` show False ..&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
  with assms show False ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_16c: &lt;br /&gt;
  assumes &amp;quot;¬(∀x. ¬(P x))&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
proof (rule ccontr)&lt;br /&gt;
  assume &amp;quot;¬(∃x. P x)&amp;quot;&lt;br /&gt;
  have &amp;quot;∀x. ¬(P x)&amp;quot;&lt;br /&gt;
  proof (rule allI)&lt;br /&gt;
    fix a&lt;br /&gt;
    show &amp;quot;¬(P a)&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;P a&amp;quot;&lt;br /&gt;
      hence &amp;quot;∃x. P x&amp;quot; by (rule exI)&lt;br /&gt;
      with `¬(∃x. P x)` show False by (rule notE)&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
  with assms show False by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 17. Demostrar&lt;br /&gt;
       ∀x. ¬(P x) ⊢ ¬(∃x. P x)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_17a: &lt;br /&gt;
  &amp;quot;∀x. ¬(P x) ⟹ ¬(∃x. P x)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_17b: &lt;br /&gt;
  assumes &amp;quot;∀x. ¬(P x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(∃x. P x)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
  then obtain a where &amp;quot;P a&amp;quot; ..&lt;br /&gt;
  have &amp;quot;¬(P a)&amp;quot; using assms ..&lt;br /&gt;
  thus False using `P a` ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_17c: &lt;br /&gt;
  assumes &amp;quot;∀x. ¬(P x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(∃x. P x)&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
  then obtain a where &amp;quot;P a&amp;quot; by (rule exE)&lt;br /&gt;
  have &amp;quot;¬(P a)&amp;quot; using assms by (rule allE)&lt;br /&gt;
  thus False using `P a` by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 18. Demostrar&lt;br /&gt;
       ∃x. P x ⊢ ¬(∀x. ¬(P x))&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_18a: &lt;br /&gt;
  &amp;quot;∃x. P x ⟹ ¬(∀x. ¬(P x))&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_18b: &lt;br /&gt;
  assumes &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(∀x. ¬(P x))&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;∀x. ¬(P x)&amp;quot;&lt;br /&gt;
  obtain a where &amp;quot;P a&amp;quot; using assms ..&lt;br /&gt;
  have &amp;quot;¬(P a)&amp;quot; using `∀x. ¬(P x)` ..&lt;br /&gt;
  thus False using `P a` ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_18c: &lt;br /&gt;
  assumes &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(∀x. ¬(P x))&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume &amp;quot;∀x. ¬(P x)&amp;quot;&lt;br /&gt;
  obtain a where &amp;quot;P a&amp;quot; using assms by (rule exE)&lt;br /&gt;
  have &amp;quot;¬(P a)&amp;quot; using `∀x. ¬(P x)` by (rule allE)&lt;br /&gt;
  thus False using `P a` by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 19. Demostrar&lt;br /&gt;
       P a ⟶ (∀x. Q x) ⊢ ∀x. P a ⟶ Q x&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_19a:&lt;br /&gt;
  &amp;quot;P a ⟶ (∀x. Q x) ⟹ ∀x. P a ⟶ Q x&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_19b: &lt;br /&gt;
  assumes &amp;quot;P a ⟶ (∀x. Q x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. P a ⟶ Q x&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  fix b&lt;br /&gt;
  show &amp;quot;P a ⟶ Q b&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;P a&amp;quot;&lt;br /&gt;
    with assms have &amp;quot;∀x. Q x&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;Q b&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_19c: &lt;br /&gt;
  assumes &amp;quot;P a ⟶ (∀x. Q x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. P a ⟶ Q x&amp;quot;&lt;br /&gt;
proof (rule allI)&lt;br /&gt;
  fix b&lt;br /&gt;
  show &amp;quot;P a ⟶ Q b&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume &amp;quot;P a&amp;quot;&lt;br /&gt;
    with assms have &amp;quot;∀x. Q x&amp;quot; by (rule mp)&lt;br /&gt;
    thus &amp;quot;Q b&amp;quot; by (rule allE)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 20. Demostrar&lt;br /&gt;
       {∀x y z. R x y ∧ R y z ⟶ R x z, &lt;br /&gt;
        ∀x. ¬(R x x)}&lt;br /&gt;
       ⊢ ∀x y. R x y ⟶ ¬(R y x)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_20a: &lt;br /&gt;
  &amp;quot;⟦∀x y z. R x y ∧ R y z ⟶ R x z; ∀x. ¬(R x x)⟧ ⟹ ∀x y. R x y ⟶ ¬(R y x)&amp;quot;&lt;br /&gt;
by metis&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_20b: &lt;br /&gt;
  assumes &amp;quot;∀x y z. R x y ∧ R y z ⟶ R x z&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. ¬(R x x)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;∀x y. R x y ⟶ ¬(R y x)&amp;quot;&lt;br /&gt;
proof (rule allI)+&lt;br /&gt;
  fix a b&lt;br /&gt;
  show &amp;quot;R a b ⟶ ¬(R b a)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;R a b&amp;quot;&lt;br /&gt;
    show &amp;quot;¬(R b a)&amp;quot;&lt;br /&gt;
    proof &lt;br /&gt;
      assume &amp;quot;R b a&amp;quot;&lt;br /&gt;
      show False&lt;br /&gt;
      proof -&lt;br /&gt;
        have &amp;quot;R a b ∧ R b a&amp;quot; using `R a b` `R b a` ..&lt;br /&gt;
        have &amp;quot;∀y z. R a y ∧ R y z ⟶ R a z&amp;quot; using assms(1) ..&lt;br /&gt;
        hence &amp;quot;∀z. R a b ∧ R b z ⟶ R a z&amp;quot; ..&lt;br /&gt;
        hence &amp;quot;R a b ∧ R b a ⟶ R a a&amp;quot; ..&lt;br /&gt;
        hence &amp;quot;R a a&amp;quot; using `R a b ∧ R b a` ..&lt;br /&gt;
        have &amp;quot;¬(R a a)&amp;quot; using assms(2) ..&lt;br /&gt;
        thus False using `R a a` ..&lt;br /&gt;
      qed&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_20c: &lt;br /&gt;
  assumes &amp;quot;∀x y z. R x y ∧ R y z ⟶ R x z&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. ¬(R x x)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;∀x y. R x y ⟶ ¬(R y x)&amp;quot;&lt;br /&gt;
proof (rule allI)+&lt;br /&gt;
  fix a b&lt;br /&gt;
  show &amp;quot;R a b ⟶ ¬(R b a)&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume &amp;quot;R a b&amp;quot;&lt;br /&gt;
    show &amp;quot;¬(R b a)&amp;quot;&lt;br /&gt;
    proof (rule notI)&lt;br /&gt;
      assume &amp;quot;R b a&amp;quot;&lt;br /&gt;
      show False&lt;br /&gt;
      proof -&lt;br /&gt;
        have &amp;quot;R a b ∧ R b a&amp;quot; using `R a b` `R b a` by (rule conjI)&lt;br /&gt;
        have &amp;quot;∀y z. R a y ∧ R y z ⟶ R a z&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
        hence &amp;quot;∀z. R a b ∧ R b z ⟶ R a z&amp;quot; by (rule allE)&lt;br /&gt;
        hence &amp;quot;R a b ∧ R b a ⟶ R a a&amp;quot; by (rule allE)&lt;br /&gt;
        hence &amp;quot;R a a&amp;quot; using `R a b ∧ R b a` by (rule mp)&lt;br /&gt;
        have &amp;quot;¬(R a a)&amp;quot; using assms(2) by (rule allE)&lt;br /&gt;
        thus False using `R a a` by (rule notE)&lt;br /&gt;
      qed&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 21. Demostrar&lt;br /&gt;
     {∀x. P x ∨ Q x, ∃x. ¬(Q x), ∀x. R x ⟶ ¬(P x)} ⊢ ∃x. ¬(R x)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_21a:&lt;br /&gt;
  &amp;quot;⟦∀x. P x ∨ Q x; ∃x. ¬(Q x); ∀x. R x ⟶ ¬(P x)⟧ ⟹ ∃x. ¬(R x)&amp;quot; &lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_21b:&lt;br /&gt;
  assumes &amp;quot;∀x. P x ∨ Q x&amp;quot; &lt;br /&gt;
          &amp;quot;∃x. ¬(Q x)&amp;quot; &lt;br /&gt;
          &amp;quot;∀x. R x ⟶ ¬(P x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. ¬(R x)&amp;quot; &lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where &amp;quot;¬(Q a)&amp;quot; using assms(2) ..&lt;br /&gt;
  have &amp;quot;P a ∨ Q a&amp;quot; using assms(1) ..&lt;br /&gt;
  hence &amp;quot;P a&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;P a&amp;quot;&lt;br /&gt;
    thus &amp;quot;P a&amp;quot; .&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;Q a&amp;quot;&lt;br /&gt;
    with `¬(Q a)` show &amp;quot;P a&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
  hence &amp;quot;¬¬(P a)&amp;quot; by (rule notnotI)&lt;br /&gt;
  have &amp;quot;R a ⟶ ¬(P a)&amp;quot; using assms(3) ..&lt;br /&gt;
  hence &amp;quot;¬(R a)&amp;quot; using `¬¬(P a)` by (rule mt)&lt;br /&gt;
  thus &amp;quot;∃x. ¬(R x)&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_21c:&lt;br /&gt;
  assumes &amp;quot;∀x. P x ∨ Q x&amp;quot; &lt;br /&gt;
          &amp;quot;∃x. ¬(Q x)&amp;quot; &lt;br /&gt;
          &amp;quot;∀x. R x ⟶ ¬(P x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. ¬(R x)&amp;quot; &lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where &amp;quot;¬(Q a)&amp;quot; using assms(2) by (rule exE)&lt;br /&gt;
  have &amp;quot;P a ∨ Q a&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
  hence &amp;quot;P a&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;P a&amp;quot;&lt;br /&gt;
    thus &amp;quot;P a&amp;quot; by this&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;Q a&amp;quot;&lt;br /&gt;
    with `¬(Q a)` show &amp;quot;P a&amp;quot; by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
  hence &amp;quot;¬¬(P a)&amp;quot; by (rule notnotI)&lt;br /&gt;
  have &amp;quot;R a ⟶ ¬(P a)&amp;quot; using assms(3) by (rule allE)&lt;br /&gt;
  hence &amp;quot;¬(R a)&amp;quot; using `¬¬(P a)` by (rule mt)&lt;br /&gt;
  thus &amp;quot;∃x. ¬(R x)&amp;quot; by (rule exI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 22. Demostrar&lt;br /&gt;
     {∀x. P x ⟶ Q x ∨ R x, ¬(∃x. P x ∧ R x)} ⊢ ∀x. P x ⟶ Q x&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_22a:&lt;br /&gt;
  &amp;quot;⟦∀x. P x ⟶ Q x ∨ R x; ¬(∃x. P x ∧ R x)⟧ ⟹ ∀x. P x ⟶ Q x&amp;quot;&lt;br /&gt;
by auto &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_22b:&lt;br /&gt;
  assumes &amp;quot;∀x. P x ⟶ Q x ∨ R x&amp;quot; &lt;br /&gt;
          &amp;quot;¬(∃x. P x ∧ R x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. P x ⟶ Q x&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  fix a&lt;br /&gt;
  show &amp;quot;P a ⟶ Q a&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;P a&amp;quot;&lt;br /&gt;
    have &amp;quot;P a ⟶ Q a ∨ R a&amp;quot; using assms(1) ..&lt;br /&gt;
    hence &amp;quot;Q a ∨ R a&amp;quot; using `P a` ..&lt;br /&gt;
    thus &amp;quot;Q a&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;Q a&amp;quot;&lt;br /&gt;
      thus &amp;quot;Q a&amp;quot; .&lt;br /&gt;
    next&lt;br /&gt;
      assume &amp;quot;R a&amp;quot;&lt;br /&gt;
      with `P a` have &amp;quot;P a ∧ R a&amp;quot; ..&lt;br /&gt;
      hence &amp;quot;∃x. P x ∧ R x&amp;quot; ..&lt;br /&gt;
      with assms(2) show &amp;quot;Q a&amp;quot; ..&lt;br /&gt;
    qed&lt;br /&gt;
  qed &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_22c:&lt;br /&gt;
  assumes &amp;quot;∀x. P x ⟶ Q x ∨ R x&amp;quot; &lt;br /&gt;
          &amp;quot;¬(∃x. P x ∧ R x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. P x ⟶ Q x&amp;quot;&lt;br /&gt;
proof (rule allI)&lt;br /&gt;
  fix a&lt;br /&gt;
  show &amp;quot;P a ⟶ Q a&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume &amp;quot;P a&amp;quot;&lt;br /&gt;
    have &amp;quot;P a ⟶ Q a ∨ R a&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
    hence &amp;quot;Q a ∨ R a&amp;quot; using `P a` by (rule mp)&lt;br /&gt;
    thus &amp;quot;Q a&amp;quot;&lt;br /&gt;
    proof (rule disjE)&lt;br /&gt;
      assume &amp;quot;Q a&amp;quot;&lt;br /&gt;
      thus &amp;quot;Q a&amp;quot; by this&lt;br /&gt;
    next&lt;br /&gt;
      assume &amp;quot;R a&amp;quot;&lt;br /&gt;
      with `P a` have &amp;quot;P a ∧ R a&amp;quot; by (rule conjI)&lt;br /&gt;
      hence &amp;quot;∃x. P x ∧ R x&amp;quot; by (rule exI)&lt;br /&gt;
      with assms(2) show &amp;quot;Q a&amp;quot; by (rule notE)&lt;br /&gt;
    qed&lt;br /&gt;
  qed &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 23. Demostrar&lt;br /&gt;
     ∃x y. R x y ∨ R y x ⊢ ∃x y. R x y&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_23a:&lt;br /&gt;
  &amp;quot;∃x y. R x y ∨ R y x ⟹ ∃x y. R x y&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_23b:&lt;br /&gt;
  assumes &amp;quot;∃x y. R x y ∨ R y x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x y. R x y&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where &amp;quot;∃y. R a y ∨ R y a&amp;quot; using assms ..&lt;br /&gt;
  then obtain b where &amp;quot;R a b ∨ R b a&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;∃x y. R x y&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;R a b&amp;quot;&lt;br /&gt;
    hence &amp;quot;∃y. R a y&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;∃ x y. R x y&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;R b a&amp;quot;&lt;br /&gt;
    hence &amp;quot;∃y. R b y&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;∃ x y. R x y&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_23c:&lt;br /&gt;
  assumes &amp;quot;∃x y. R x y ∨ R y x&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x y. R x y&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where &amp;quot;∃y. R a y ∨ R y a&amp;quot; using assms by (rule exE)&lt;br /&gt;
  then obtain b where &amp;quot;R a b ∨ R b a&amp;quot; by (rule exE)&lt;br /&gt;
  thus &amp;quot;∃x y. R x y&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;R a b&amp;quot;&lt;br /&gt;
    hence &amp;quot;∃y. R a y&amp;quot; by (rule exI)&lt;br /&gt;
    thus &amp;quot;∃ x y. R x y&amp;quot; by (rule exI)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;R b a&amp;quot;&lt;br /&gt;
    hence &amp;quot;∃y. R b y&amp;quot; by (rule exI)&lt;br /&gt;
    thus &amp;quot;∃ x y. R x y&amp;quot; by (rule exI)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 24. Demostrar&lt;br /&gt;
       (∃x. ∀y. P x y) ⟶ (∀y. ∃x. P x y)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_24a: &amp;quot;(∃x. ∀y. P x y) ⟶ (∀y. ∃x. P x y)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_24b: &amp;quot;(∃x. ∀y. P x y) ⟶ (∀y. ∃x. P x y)&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;∃x. ∀y. P x y&amp;quot;&lt;br /&gt;
  then obtain a where &amp;quot;∀y. P a y&amp;quot; ..&lt;br /&gt;
  show &amp;quot;∀y. ∃x. P x y&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    fix b&lt;br /&gt;
    have &amp;quot;P a b&amp;quot; using `∀y. P a y` ..&lt;br /&gt;
    thus &amp;quot;∃x. P x b&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_24c: &amp;quot;(∃x. ∀y. P x y) ⟶ (∀y. ∃x. P x y)&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;∃x. ∀y. P x y&amp;quot;&lt;br /&gt;
  then obtain a where &amp;quot;∀y. P a y&amp;quot; by (rule exE)&lt;br /&gt;
  show &amp;quot;∀y. ∃x. P x y&amp;quot;&lt;br /&gt;
  proof (rule allI)&lt;br /&gt;
    fix b&lt;br /&gt;
    have &amp;quot;P a b&amp;quot; using `∀y. P a y` by (rule allE)&lt;br /&gt;
    thus &amp;quot;∃x. P x b&amp;quot; by (rule exI)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 25. Demostrar&lt;br /&gt;
       (∀x. P x ⟶ Q) ⟷ ((∃x. P x) ⟶ Q)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_25a: &amp;quot;(∀x. P x ⟶ Q) ⟷ ((∃x. P x) ⟶ Q)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_25b: &amp;quot;(∀x. P x ⟶ Q) ⟷ ((∃x. P x) ⟶ Q)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;∀x. P x ⟶ Q&amp;quot;&lt;br /&gt;
  show &amp;quot;(∃x. P x) ⟶ Q&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
    then obtain a where &amp;quot;P a&amp;quot; ..&lt;br /&gt;
    have &amp;quot;P a ⟶ Q&amp;quot; using `∀x. P x ⟶ Q` ..&lt;br /&gt;
    thus &amp;quot;Q&amp;quot; using `P a` ..&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;(∃x. P x) ⟶ Q&amp;quot;&lt;br /&gt;
  show &amp;quot;∀x. P x ⟶ Q&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    fix b&lt;br /&gt;
    show &amp;quot;P b ⟶ Q&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;P b&amp;quot;&lt;br /&gt;
      hence &amp;quot;∃x. P x&amp;quot; ..&lt;br /&gt;
      with `(∃x. P x) ⟶ Q` show &amp;quot;Q&amp;quot; ..&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_25c: &amp;quot;(∀x. P x ⟶ Q) ⟷ ((∃x. P x) ⟶ Q)&amp;quot;&lt;br /&gt;
proof (rule iffI)&lt;br /&gt;
  assume &amp;quot;∀x. P x ⟶ Q&amp;quot;&lt;br /&gt;
  show &amp;quot;(∃x. P x) ⟶ Q&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
    then obtain a where &amp;quot;P a&amp;quot; by (rule exE)&lt;br /&gt;
    have &amp;quot;P a ⟶ Q&amp;quot; using `∀x. P x ⟶ Q` by (rule allE)&lt;br /&gt;
    thus &amp;quot;Q&amp;quot; using `P a` by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;(∃x. P x) ⟶ Q&amp;quot;&lt;br /&gt;
  show &amp;quot;∀x. P x ⟶ Q&amp;quot;&lt;br /&gt;
  proof (rule allI)&lt;br /&gt;
    fix b&lt;br /&gt;
    show &amp;quot;P b ⟶ Q&amp;quot;&lt;br /&gt;
    proof (rule impI)&lt;br /&gt;
      assume &amp;quot;P b&amp;quot;&lt;br /&gt;
      hence &amp;quot;∃x. P x&amp;quot; by (rule exI)&lt;br /&gt;
      with `(∃x. P x) ⟶ Q` show &amp;quot;Q&amp;quot; by (rule mp)&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 26. Demostrar&lt;br /&gt;
       ((∀x. P x) ∧ (∀x. Q x)) ⟷ (∀x. P x ∧ Q x)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_26a: &amp;quot;((∀x. P x) ∧ (∀x. Q x)) ⟷ (∀x. P x ∧ Q x)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_26b: &amp;quot;((∀x. P x) ∧ (∀x. Q x)) ⟷ (∀x. P x ∧ Q x)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;(∀x. P x) ∧ (∀x. Q x)&amp;quot;&lt;br /&gt;
  show &amp;quot;∀x. P x ∧ Q x&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    fix a&lt;br /&gt;
    have &amp;quot;∀x. P x&amp;quot; using `(∀x. P x) ∧ (∀x. Q x)` ..&lt;br /&gt;
    have &amp;quot;∀x. Q x&amp;quot; using `(∀x. P x) ∧ (∀x. Q x)` ..&lt;br /&gt;
    hence &amp;quot;Q a&amp;quot; .. &lt;br /&gt;
    have &amp;quot;P a&amp;quot; using `∀x. P x` ..&lt;br /&gt;
    thus &amp;quot;P a ∧ Q a&amp;quot; using `Q a` ..&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;∀x. P x ∧ Q x&amp;quot;&lt;br /&gt;
  have &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    fix a&lt;br /&gt;
    have &amp;quot;P a ∧ Q a&amp;quot; using `∀x. P x ∧ Q x` .. &lt;br /&gt;
    thus &amp;quot;P a&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
  moreover have &amp;quot;∀x. Q x&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    fix a&lt;br /&gt;
    have &amp;quot;P a ∧ Q a&amp;quot; using `∀x. P x ∧ Q x` .. &lt;br /&gt;
    thus &amp;quot;Q a&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
  ultimately show &amp;quot;(∀x. P x) ∧ (∀x. Q x)&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_26c: &amp;quot;((∀x. P x) ∧ (∀x. Q x)) = (∀x. P x ∧ Q x)&amp;quot;&lt;br /&gt;
proof (rule iffI)&lt;br /&gt;
  assume &amp;quot;(∀x. P x) ∧ (∀x. Q x)&amp;quot;&lt;br /&gt;
  show &amp;quot;∀x. P x ∧ Q x&amp;quot;&lt;br /&gt;
  proof (rule allI)&lt;br /&gt;
    fix a&lt;br /&gt;
    have &amp;quot;∀x. P x&amp;quot; using `(∀x. P x) ∧ (∀x. Q x)` by (rule conjunct1)&lt;br /&gt;
    have &amp;quot;∀x. Q x&amp;quot; using `(∀x. P x) ∧ (∀x. Q x)` by (rule conjunct2)&lt;br /&gt;
    hence &amp;quot;Q a&amp;quot; by (rule allE)&lt;br /&gt;
    have &amp;quot;P a&amp;quot; using `∀x. P x` by (rule allE)&lt;br /&gt;
    thus &amp;quot;P a ∧ Q a&amp;quot; using `Q a` by (rule conjI)&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;∀x. P x ∧ Q x&amp;quot;&lt;br /&gt;
  have &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
  proof (rule allI)&lt;br /&gt;
    fix a&lt;br /&gt;
    have &amp;quot;P a ∧ Q a&amp;quot; using `∀x. P x ∧ Q x` by (rule allE) &lt;br /&gt;
    thus &amp;quot;P a&amp;quot; by (rule conjunct1)&lt;br /&gt;
  qed&lt;br /&gt;
  moreover have &amp;quot;∀x. Q x&amp;quot;&lt;br /&gt;
  proof (rule allI)&lt;br /&gt;
    fix a&lt;br /&gt;
    have &amp;quot;P a ∧ Q a&amp;quot; using `∀x. P x ∧ Q x` by (rule allE) &lt;br /&gt;
    thus &amp;quot;Q a&amp;quot; by (rule conjunct2)&lt;br /&gt;
  qed&lt;br /&gt;
  ultimately show &amp;quot;(∀x. P x) ∧ (∀x. Q x)&amp;quot; by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 27. Demostrar o refutar&lt;br /&gt;
       ((∀x. P x) ∨ (∀x. Q x)) ⟷ (∀x. P x ∨ Q x)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_27: &amp;quot;((∀x. P x) ∨ (∀x. Q x)) ⟷ (∀x. P x ∨ Q x)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
(*&lt;br /&gt;
Auto Quickcheck found a counterexample:&lt;br /&gt;
P = {a\&amp;lt;^isub&amp;gt;1}&lt;br /&gt;
Q = {a\&amp;lt;^isub&amp;gt;2}&lt;br /&gt;
*)&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 28. Demostrar o refutar&lt;br /&gt;
       ((∃x. P x) ∨ (∃x. Q x)) ⟷ (∃x. P x ∨ Q x)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_28a: &lt;br /&gt;
  &amp;quot;((∃x. P x) ∨ (∃x. Q x)) ⟷ (∃x. P x ∨ Q x)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_28b: &lt;br /&gt;
  &amp;quot;((∃x. P x) ∨ (∃x. Q x)) ⟷ (∃x. P x ∨ Q x)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;(∃x. P x) ∨ (∃x. Q x)&amp;quot;&lt;br /&gt;
  thus &amp;quot;∃x. P x ∨ Q x&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
    then obtain a where &amp;quot;P a&amp;quot; ..&lt;br /&gt;
    hence &amp;quot;P a ∨ Q a&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;∃x. P x ∨ Q x&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;∃x. Q x&amp;quot;&lt;br /&gt;
    then obtain a where &amp;quot;Q a&amp;quot; ..&lt;br /&gt;
    hence &amp;quot;P a ∨ Q a&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;∃x. P x ∨ Q x&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;∃x. P x ∨ Q x&amp;quot;&lt;br /&gt;
  then obtain a where &amp;quot;P a ∨ Q a&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;(∃x. P x) ∨ (∃x. Q x)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;P a&amp;quot;&lt;br /&gt;
    hence &amp;quot;∃x. P x&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;(∃x. P x) ∨ (∃x. Q x)&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;Q a&amp;quot;&lt;br /&gt;
    hence &amp;quot;∃x. Q x&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;(∃x. P x) ∨ (∃x. Q x)&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_28c: &lt;br /&gt;
  &amp;quot;((∃x. P x) ∨ (∃x. Q x)) ⟷ (∃x. P x ∨ Q x)&amp;quot;&lt;br /&gt;
proof (rule iffI)&lt;br /&gt;
  assume &amp;quot;(∃x. P x) ∨ (∃x. Q x)&amp;quot;&lt;br /&gt;
  thus &amp;quot;∃x. P x ∨ Q x&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;∃x. P x&amp;quot;&lt;br /&gt;
    then obtain a where &amp;quot;P a&amp;quot; by (rule exE)&lt;br /&gt;
    hence &amp;quot;P a ∨ Q a&amp;quot; by (rule disjI1)&lt;br /&gt;
    thus &amp;quot;∃x. P x ∨ Q x&amp;quot; by (rule exI)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;∃x. Q x&amp;quot;&lt;br /&gt;
    then obtain a where &amp;quot;Q a&amp;quot; by (rule exE)&lt;br /&gt;
    hence &amp;quot;P a ∨ Q a&amp;quot; by (rule disjI2)&lt;br /&gt;
    thus &amp;quot;∃x. P x ∨ Q x&amp;quot; by (rule exI)&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;∃x. P x ∨ Q x&amp;quot;&lt;br /&gt;
  then obtain a where &amp;quot;P a ∨ Q a&amp;quot; by (rule exE)&lt;br /&gt;
  thus &amp;quot;(∃x. P x) ∨ (∃x. Q x)&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;P a&amp;quot;&lt;br /&gt;
    hence &amp;quot;∃x. P x&amp;quot; by (rule exI)&lt;br /&gt;
    thus &amp;quot;(∃x. P x) ∨ (∃x. Q x)&amp;quot; by (rule disjI1)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;Q a&amp;quot;&lt;br /&gt;
    hence &amp;quot;∃x. Q x&amp;quot; by (rule exI)&lt;br /&gt;
    thus &amp;quot;(∃x. P x) ∨ (∃x. Q x)&amp;quot; by (rule disjI2)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 29. Demostrar o refutar&lt;br /&gt;
       (∀x. ∃y. P x y) ⟶ (∃y. ∀x. P x y)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_29: &lt;br /&gt;
  &amp;quot;(∀x. ∃y. P x y) ⟶ (∃y. ∀x. P x y)&amp;quot;&lt;br /&gt;
quickcheck&lt;br /&gt;
(*&lt;br /&gt;
Quickcheck found a counterexample:&lt;br /&gt;
&lt;br /&gt;
P = (λx. undefined)(a\&amp;lt;^isub&amp;gt; := {b}, b := {a})&lt;br /&gt;
*)&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 30. Demostrar o refutar&lt;br /&gt;
       (¬(∀x. P x)) ⟷ (∃x. ¬P x)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_30a: &lt;br /&gt;
  &amp;quot;(¬(∀x. P x)) ⟷ (∃x. ¬P x)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_30b: &lt;br /&gt;
  &amp;quot;(¬(∀x. P x)) ⟷ (∃x. ¬P x)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;¬(∀x. P x)&amp;quot;&lt;br /&gt;
  show &amp;quot;∃x. ¬P x&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬(∃x. ¬P x)&amp;quot;&lt;br /&gt;
    have &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      fix a&lt;br /&gt;
      show &amp;quot;P a&amp;quot;&lt;br /&gt;
      proof (rule ccontr)&lt;br /&gt;
        assume &amp;quot;¬P a&amp;quot;&lt;br /&gt;
        hence &amp;quot;∃x. ¬P x&amp;quot; ..&lt;br /&gt;
        with `¬(∃x. ¬P x)` show False ..&lt;br /&gt;
      qed&lt;br /&gt;
    qed&lt;br /&gt;
    with `¬(∀x. P x)` show False ..&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;∃x. ¬P x&amp;quot;&lt;br /&gt;
  then obtain a where &amp;quot;¬P a&amp;quot; ..&lt;br /&gt;
  show &amp;quot;¬(∀x. P x)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
    hence &amp;quot;P a&amp;quot; ..&lt;br /&gt;
    with `¬P a` show False ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_30c: &lt;br /&gt;
  &amp;quot;(¬(∀x. P x)) ⟷ (∃x. ¬P x)&amp;quot;&lt;br /&gt;
proof (rule iffI)&lt;br /&gt;
  assume &amp;quot;¬(∀x. P x)&amp;quot;&lt;br /&gt;
  show &amp;quot;∃x. ¬P x&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬(∃x. ¬P x)&amp;quot;&lt;br /&gt;
    have &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
    proof (rule allI)&lt;br /&gt;
      fix a&lt;br /&gt;
      show &amp;quot;P a&amp;quot;&lt;br /&gt;
      proof (rule ccontr)&lt;br /&gt;
        assume &amp;quot;¬P a&amp;quot;&lt;br /&gt;
        hence &amp;quot;∃x. ¬P x&amp;quot; by (rule exI)&lt;br /&gt;
        with `¬(∃x. ¬P x)` show False by (rule notE) &lt;br /&gt;
      qed&lt;br /&gt;
    qed&lt;br /&gt;
    with `¬(∀x. P x)` show False by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;∃x. ¬P x&amp;quot;&lt;br /&gt;
  then obtain a where &amp;quot;¬P a&amp;quot; by (rule exE)&lt;br /&gt;
  show &amp;quot;¬(∀x. P x)&amp;quot;&lt;br /&gt;
  proof (rule notI)&lt;br /&gt;
    assume &amp;quot;∀x. P x&amp;quot;&lt;br /&gt;
    hence &amp;quot;P a&amp;quot; by (rule allE)&lt;br /&gt;
    show False using `¬P a` `P a` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
section {* Ejercicios sobre igualdad *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 31. Demostrar o refutar&lt;br /&gt;
       P a ⟹ ∀x. x = a ⟶ P x&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_31a:&lt;br /&gt;
  &amp;quot;P a ⟹ ∀x. x = a ⟶ P x&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_31b:&lt;br /&gt;
  assumes &amp;quot;P a&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. x = a ⟶ P x&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  fix b&lt;br /&gt;
  show &amp;quot;b = a ⟶ P b&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;b = a&amp;quot;&lt;br /&gt;
    thus &amp;quot;P b&amp;quot; using assms by (rule ssubst)&lt;br /&gt;
  qed &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_31c:&lt;br /&gt;
  assumes &amp;quot;P a&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. x = a ⟶ P x&amp;quot;&lt;br /&gt;
proof (rule allI)&lt;br /&gt;
  fix b&lt;br /&gt;
  show &amp;quot;b = a ⟶ P b&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume &amp;quot;b = a&amp;quot;&lt;br /&gt;
    thus &amp;quot;P b&amp;quot; using assms by (rule ssubst)&lt;br /&gt;
  qed &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 32. Demostrar o refutar&lt;br /&gt;
       ∃x y. R x y ∨ R y x; ¬(∃x. R x x)⟧ ⟹ ∃x y. x ≠ y&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_32a:&lt;br /&gt;
  fixes R :: &amp;quot;&amp;#039;c ⇒ &amp;#039;c ⇒ bool&amp;quot;&lt;br /&gt;
  assumes &amp;quot;∃x y. R x y ∨ R y x&amp;quot;&lt;br /&gt;
          &amp;quot;¬(∃x. R x x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃(x::&amp;#039;c) y. x ≠ y&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by metis&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_32b:&lt;br /&gt;
  fixes R :: &amp;quot;&amp;#039;c ⇒ &amp;#039;c ⇒ bool&amp;quot;&lt;br /&gt;
  assumes &amp;quot;∃x y. R x y ∨ R y x&amp;quot;&lt;br /&gt;
          &amp;quot;¬(∃x. R x x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃(x::&amp;#039;c) y. x ≠ y&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where &amp;quot;∃y. R a y ∨ R y a&amp;quot; using assms(1) ..&lt;br /&gt;
  then obtain b where &amp;quot;R a b ∨ R b a&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;a ≠ b&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;R a b&amp;quot;&lt;br /&gt;
    show &amp;quot;a ≠ b&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;a = b&amp;quot;&lt;br /&gt;
      hence &amp;quot;R b b&amp;quot; using `R a b` by (rule subst)&lt;br /&gt;
      hence &amp;quot;∃x. R x x&amp;quot; ..&lt;br /&gt;
      with assms(2) show False ..&lt;br /&gt;
    qed&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;R b a&amp;quot;&lt;br /&gt;
    show &amp;quot;a ≠ b&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;a = b&amp;quot;&lt;br /&gt;
      hence &amp;quot;R a a&amp;quot; using `R b a` by (rule ssubst)&lt;br /&gt;
      hence &amp;quot;∃x. R x x&amp;quot; ..&lt;br /&gt;
      with assms(2) show False ..&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
  hence &amp;quot;∃y. a ≠ y&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;∃(x::&amp;#039;c) y. x ≠ y&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_32c:&lt;br /&gt;
  fixes R :: &amp;quot;&amp;#039;c ⇒ &amp;#039;c ⇒ bool&amp;quot;&lt;br /&gt;
  assumes &amp;quot;∃x y. R x y ∨ R y x&amp;quot;&lt;br /&gt;
          &amp;quot;¬(∃x. R x x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃(x::&amp;#039;c) y. x ≠ y&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where &amp;quot;∃y. R a y ∨ R y a&amp;quot; using assms(1) by (rule exE)&lt;br /&gt;
  then obtain b where &amp;quot;R a b ∨ R b a&amp;quot; by (rule exE)&lt;br /&gt;
  hence &amp;quot;a ≠ b&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;R a b&amp;quot;&lt;br /&gt;
    show &amp;quot;a ≠ b&amp;quot;&lt;br /&gt;
    proof (rule notI)&lt;br /&gt;
      assume &amp;quot;a = b&amp;quot;&lt;br /&gt;
      hence &amp;quot;R b b&amp;quot; using `R a b` by (rule subst)&lt;br /&gt;
      hence &amp;quot;∃x. R x x&amp;quot; by (rule exI)&lt;br /&gt;
      with assms(2) show False by (rule notE)&lt;br /&gt;
    qed&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;R b a&amp;quot;&lt;br /&gt;
    show &amp;quot;a ≠ b&amp;quot;&lt;br /&gt;
    proof (rule notI)&lt;br /&gt;
      assume &amp;quot;a = b&amp;quot;&lt;br /&gt;
      hence &amp;quot;R a a&amp;quot; using `R b a` by (rule ssubst)&lt;br /&gt;
      hence &amp;quot;∃x. R x x&amp;quot; by (rule exI)&lt;br /&gt;
      with assms(2) show False by (rule notE)&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
  hence &amp;quot;∃y. a ≠ y&amp;quot; by (rule exI)&lt;br /&gt;
  thus &amp;quot;∃(x::&amp;#039;c) y. x ≠ y&amp;quot; by (rule exI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 33. Demostrar o refutar&lt;br /&gt;
     {∀x. P a x x, &lt;br /&gt;
      ∀x y z. P x y z ⟶ P (f x) y (f z)} &lt;br /&gt;
     ⊢ P (f a) a (f a)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_33a:&lt;br /&gt;
  &amp;quot;⟦∀x. P a x x; ∀x y z. P x y z ⟶ P (f x) y (f z)⟧ ⟹ P (f a) a (f a)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructura es&amp;quot;&lt;br /&gt;
lemma ejercicio_33b:&lt;br /&gt;
  assumes &amp;quot;∀x. P a x x&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y z. P x y z ⟶ P (f x) y (f z)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;P (f a) a (f a)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;P a a a&amp;quot; using assms(1) ..&lt;br /&gt;
  have &amp;quot;∀y z. P a y z ⟶ P (f a) y (f z)&amp;quot; using assms(2) ..&lt;br /&gt;
  hence &amp;quot;∀z. P a a z ⟶ P (f a) a (f z)&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;P a a a ⟶ P (f a) a (f a)&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;P (f a) a (f a)&amp;quot; using `P a a a` ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_33c:&lt;br /&gt;
  assumes &amp;quot;∀x. P a x x&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y z. P x y z ⟶ P (f x) y (f z)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;P (f a) a (f a)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;P a a a&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
  have &amp;quot;∀y z. P a y z ⟶ P (f a) y (f z)&amp;quot; using assms(2) by (rule allE)&lt;br /&gt;
  hence &amp;quot;∀z. P a a z ⟶ P (f a) a (f z)&amp;quot; by (rule allE)&lt;br /&gt;
  hence &amp;quot;P a a a ⟶ P (f a) a (f a)&amp;quot; by (rule allE)&lt;br /&gt;
  thus &amp;quot;P (f a) a (f a)&amp;quot; using `P a a a` by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 34. Demostrar o refutar&lt;br /&gt;
     {∀x. P a x x, &lt;br /&gt;
      ∀x y z. P x y z ⟶ P (f x) y (f z)⟧&lt;br /&gt;
     ⊢ ∃z. P (f a) z (f (f a))&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_34a:&lt;br /&gt;
  &amp;quot;⟦∀x. P a x x; ∀x y z. P x y z ⟶ P (f x) y (f z)⟧&lt;br /&gt;
   ⟹ ∃z. P (f a) z (f (f a))&amp;quot;&lt;br /&gt;
by metis&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructura es&amp;quot;&lt;br /&gt;
lemma ejercicio_34b:&lt;br /&gt;
  assumes &amp;quot;∀x. P a x x&amp;quot; &lt;br /&gt;
          &amp;quot;∀x y z. P x y z ⟶ P (f x) y (f z)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃z. P (f a) z (f (f a))&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;P a (f a) (f a)&amp;quot; using assms(1) ..&lt;br /&gt;
  have &amp;quot;∀y z. P a y z ⟶ P (f a) y (f z)&amp;quot; using assms(2) ..&lt;br /&gt;
  hence &amp;quot;∀z. P a (f a) z ⟶ P (f a) (f a) (f z)&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;P a (f a) (f a) ⟶ P (f a) (f a) (f (f a))&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;P (f a) (f a) (f (f a))&amp;quot; using `P a (f a) (f a)` ..&lt;br /&gt;
  thus &amp;quot;∃z. P (f a) z (f (f a))&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_34c:&lt;br /&gt;
  assumes &amp;quot;∀x. P a x x&amp;quot; &lt;br /&gt;
          &amp;quot;∀x y z. P x y z ⟶ P (f x) y (f z)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃z. P (f a) z (f (f a))&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;P a (f a) (f a)&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
  have &amp;quot;∀y z. P a y z ⟶ P (f a) y (f z)&amp;quot; using assms(2) by (rule allE)&lt;br /&gt;
  hence &amp;quot;∀z. P a (f a) z ⟶ P (f a) (f a) (f z)&amp;quot; by (rule allE)&lt;br /&gt;
  hence &amp;quot;P a (f a) (f a) ⟶ P (f a) (f a) (f (f a))&amp;quot; by (rule allE)&lt;br /&gt;
  hence &amp;quot;P (f a) (f a) (f (f a))&amp;quot; using `P a (f a) (f a)` by (rule mp)&lt;br /&gt;
  thus &amp;quot;∃z. P (f a) z (f (f a))&amp;quot; by (rule exI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 35. Demostrar o refutar&lt;br /&gt;
     {∀y. Q a y, &lt;br /&gt;
      ∀x y. Q x y ⟶ Q (s x) (s y)} &lt;br /&gt;
     ⊢ ∃z. Qa z ∧ Q z (s (s a))&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_35a:&lt;br /&gt;
  &amp;quot;⟦∀y. Q a y; ∀x y. Q x y ⟶ Q (s x) (s y)⟧ ⟹ ∃z. Q a z ∧ Q z (s (s a))&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructura es&amp;quot;&lt;br /&gt;
lemma ejercicio_35b:&lt;br /&gt;
  assumes &amp;quot;∀y. Q a y&amp;quot; &lt;br /&gt;
          &amp;quot;∀x y. Q x y ⟶ Q (s x) (s y)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;∃z. Q a z ∧ Q z (s (s a))&amp;quot;&lt;br /&gt;
proof - &lt;br /&gt;
  have &amp;quot;Q a (s a)&amp;quot; using assms(1) ..&lt;br /&gt;
  have &amp;quot;∀y. Q a y ⟶ Q (s a) (s y)&amp;quot; using assms(2) ..&lt;br /&gt;
  hence &amp;quot;Q a (s a) ⟶ Q (s a) (s (s a))&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;Q (s a) (s (s a))&amp;quot; using `Q a (s a)` ..&lt;br /&gt;
  with `Q a (s a)` have &amp;quot;Q a (s a) ∧ Q (s a) (s (s a))&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;∃z. Q a z ∧ Q z (s (s a))&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_35c:&lt;br /&gt;
  assumes &amp;quot;∀y. Q a y&amp;quot; &lt;br /&gt;
          &amp;quot;∀x y. Q x y ⟶ Q (s x) (s y)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;∃z. Q a z ∧ Q z (s (s a))&amp;quot;&lt;br /&gt;
proof - &lt;br /&gt;
  have &amp;quot;Q a (s a)&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
  have &amp;quot;∀y. Q a y ⟶ Q (s a) (s y)&amp;quot; using assms(2) by (rule allE)&lt;br /&gt;
  hence &amp;quot;Q a (s a) ⟶ Q (s a) (s (s a))&amp;quot; by (rule allE)&lt;br /&gt;
  hence &amp;quot;Q (s a) (s (s a))&amp;quot; using `Q a (s a)` by (rule mp)&lt;br /&gt;
  with `Q a (s a)` have &amp;quot;Q a (s a) ∧ Q (s a) (s (s a))&amp;quot; by (rule conjI)&lt;br /&gt;
  thus &amp;quot;∃z. Q a z ∧ Q z (s (s a))&amp;quot; by (rule exI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 36. Demostrar o refutar&lt;br /&gt;
     {x = f x, odd (f x)} ⊢ odd x&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_36a:&lt;br /&gt;
  &amp;quot;⟦x = f x; odd (f x)⟧ ⟹ odd x&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración semiautomática es&amp;quot;&lt;br /&gt;
lemma ejercicio_36b:&lt;br /&gt;
  &amp;quot;⟦x = f x; odd (f x)⟧ ⟹ odd x&amp;quot;&lt;br /&gt;
by (rule ssubst)&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_36c:&lt;br /&gt;
  assumes &amp;quot;x = f x&amp;quot; &lt;br /&gt;
          &amp;quot;odd (f x)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;odd x&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;odd x&amp;quot; using assms by (rule ssubst)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 37. Demostrar o refutar&lt;br /&gt;
     {x = f x, triple (f x) (f x) x} ⊢ triple x x x&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_37a:&lt;br /&gt;
  &amp;quot;⟦x = f x; triple (f x) (f x) x⟧ ⟹ triple x x x&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración semiautomática es&amp;quot;&lt;br /&gt;
lemma ejercicio_37b:&lt;br /&gt;
  &amp;quot;⟦x = f x; triple (f x) (f x) x⟧ ⟹ triple x x x&amp;quot;&lt;br /&gt;
by (rule ssubst)&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_37c:&lt;br /&gt;
  assumes &amp;quot;x = f x&amp;quot; &lt;br /&gt;
          &amp;quot;triple (f x) (f x) x&amp;quot; &lt;br /&gt;
  shows   &amp;quot;triple x x x&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;triple x x x&amp;quot; using assms by (rule ssubst)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Rel_2&amp;diff=191</id>
		<title>Rel 2</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Rel_2&amp;diff=191"/>
		<updated>2018-07-15T12:03:17Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «&amp;quot;isar&amp;quot;» por «&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* Relación 2: Razonamiento sobre programas *}&lt;br /&gt;
&lt;br /&gt;
theory R2_Razonamiento_sobre_programas&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;
     sumaImpares :: nat ⇒ nat&lt;br /&gt;
  tal que (sumaImpares n) es la suma de los n primeros números&lt;br /&gt;
  impares. Por ejemplo,&lt;br /&gt;
     sumaImpares 5  =  25&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun sumaImpares :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;sumaImpares n = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;sumaImpares 5&amp;quot; -- &amp;quot;= 25&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Demostrar que &lt;br /&gt;
     sumaImpares n = n*n&lt;br /&gt;
  ------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;sumaImpares n = n*n&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. 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;
fun sumaPotenciasDeDosMasUno :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;sumaPotenciasDeDosMasUno n = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;sumaPotenciasDeDosMasUno 3&amp;quot; -- &amp;quot;= 16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Demostrar que &lt;br /&gt;
     sumaPotenciasDeDosMasUno n = 2^(n+1)&lt;br /&gt;
  ------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;sumaPotenciasDeDosMasUno n = 2^(n+1)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Definir la función&lt;br /&gt;
     copia :: nat ⇒ &amp;#039;a ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (copia n x) es la lista formado por n copias del elemento&lt;br /&gt;
  x. Por ejemplo, &lt;br /&gt;
     copia 3 x = [x,x,x]&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun copia :: &amp;quot;nat ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;copia n x = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;copia 3 x&amp;quot; -- &amp;quot;= [x,x,x]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. 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;
&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 xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;todos (λx. x&amp;gt;(1::nat)) [2,6,4]&amp;quot; -- &amp;quot;= True&amp;quot;&lt;br /&gt;
value &amp;quot;todos (λx. x&amp;gt;(2::nat)) [2,6,4]&amp;quot; -- &amp;quot;= False&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Demostrar que todos los elementos de (copia n x) son&lt;br /&gt;
  iguales a x. &lt;br /&gt;
  ------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;todos (λy. y=x) (copia n x)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Definir la función&lt;br /&gt;
    factR :: nat ⇒ nat&lt;br /&gt;
  tal que (factR n) es el factorial de n. Por ejemplo,&lt;br /&gt;
    factR 4 = 24&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun factR :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;factR n = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;factR 4&amp;quot; -- &amp;quot;= 24&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Se considera la siguiente definición iterativa de la&lt;br /&gt;
  función factorial &lt;br /&gt;
     factI :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
     factI n = factI&amp;#039; n 1&lt;br /&gt;
     &lt;br /&gt;
     factI&amp;#039; :: nat ⇒ nat ⇒ nat&amp;quot; where&lt;br /&gt;
     factI&amp;#039; 0       x = x&lt;br /&gt;
     factI&amp;#039; (Suc n) x = factI&amp;#039; n (Suc n)*x&lt;br /&gt;
  Demostrar que, para todo n y todo x, se tiene &lt;br /&gt;
     factI&amp;#039; n x = x * factR n&lt;br /&gt;
  ------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
fun factI&amp;#039; :: &amp;quot;nat ⇒ nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;factI&amp;#039; 0       x = x&amp;quot;&lt;br /&gt;
| &amp;quot;factI&amp;#039; (Suc n) x = factI&amp;#039; n (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; -- &amp;quot;= 24&amp;quot;&lt;br /&gt;
     &lt;br /&gt;
lemma fact: &amp;quot;factI&amp;#039; n x = x * factR n&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Demostrar que&lt;br /&gt;
     factI n = factR n&lt;br /&gt;
  ------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
corollary &amp;quot;factI n = factR n&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. 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;
&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 xs y = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;amplia [d,a] t&amp;quot; -- &amp;quot;= [d,a,t]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Demostrar que &lt;br /&gt;
     amplia xs y = xs @ [y]&lt;br /&gt;
  ------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;amplia xs y = xs @ [y]&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_9&amp;diff=190</id>
		<title>RA12 Relación 9</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_9&amp;diff=190"/>
		<updated>2018-07-15T12:03:07Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R9: Cons inverso *}&lt;br /&gt;
&lt;br /&gt;
theory R9&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Definir recursivamente la función &lt;br /&gt;
     snoc :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot;&lt;br /&gt;
  tal que (snoc xs a) es la lista obtenida al añadir el elemento a al&lt;br /&gt;
  final de la lista xs. Por ejemplo, &lt;br /&gt;
     value &amp;quot;snoc [2,5] (3::int)&amp;quot; == [2,5,3]&lt;br /&gt;
&lt;br /&gt;
  Nota: No usar @.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun snoc :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;snoc xs a = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Demostrar el siguiente teorema &lt;br /&gt;
     snoc xs a = xs @ [a]&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma snoc_append: &lt;br /&gt;
  &amp;quot;snoc xs a = xs @ [a]&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Demostrar el siguiente teorema &lt;br /&gt;
     rev (x # xs) = snoc (rev xs) x&amp;quot;&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem rev_cons: &lt;br /&gt;
  &amp;quot;rev (x # xs) = snoc (rev xs) x&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_6&amp;diff=189</id>
		<title>RA12 Relación 6</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_6&amp;diff=189"/>
		<updated>2018-07-15T12:02:24Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R6: Argumentación en lógica de primer orden con igualdad *}&lt;br /&gt;
&lt;br /&gt;
theory R6&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  El objetivo de esta relación es formalizar y decidir la corrección&lt;br /&gt;
  de los argumentos. En el caso de que sea correcto, demostrarlo usando&lt;br /&gt;
  sólo las reglas básicas de deducción natural de la lógica de primer&lt;br /&gt;
  orden (sin usar el método auto). En el caso de que sea incorrecto,&lt;br /&gt;
  calcular un contraejemplo con QuickCheck. &lt;br /&gt;
&lt;br /&gt;
  Las reglas básicas de la deducción natural son las siguientes:&lt;br /&gt;
  · conjI:      ⟦P; Q⟧ ⟹ P ∧ Q&lt;br /&gt;
  · conjunct1:  P ∧ Q ⟹ P&lt;br /&gt;
  · conjunct2:  P ∧ Q ⟹ Q  &lt;br /&gt;
  · notnotD:    ¬¬ P ⟹ P&lt;br /&gt;
  · notnotI:    P ⟹ ¬¬ P&lt;br /&gt;
  · mp:         ⟦P ⟶ Q; P⟧ ⟹ Q &lt;br /&gt;
  · mt:         ⟦F ⟶ G; ¬G⟧ ⟹ ¬F &lt;br /&gt;
  · impI:       (P ⟹ Q) ⟹ P ⟶ Q&lt;br /&gt;
  · disjI1:     P ⟹ P ∨ Q&lt;br /&gt;
  · disjI2:     Q ⟹ P ∨ Q&lt;br /&gt;
  · disjE:      ⟦P ∨ Q; P ⟹ R; Q ⟹ R⟧ ⟹ R &lt;br /&gt;
  · FalseE:     False ⟹ P&lt;br /&gt;
  · notE:       ⟦¬P; P⟧ ⟹ R&lt;br /&gt;
  · notI:       (P ⟹ False) ⟹ ¬P&lt;br /&gt;
  · iffI:       ⟦P ⟹ Q; Q ⟹ P⟧ ⟹ P = Q&lt;br /&gt;
  · iffD1:      ⟦Q = P; Q⟧ ⟹ P &lt;br /&gt;
  · iffD2:      ⟦P = Q; Q⟧ ⟹ P&lt;br /&gt;
  · ccontr:     (¬P ⟹ False) ⟹ P&lt;br /&gt;
  · excluded_middle: ¬P ∨ P&lt;br /&gt;
&lt;br /&gt;
  · allI:       ⟦∀x. P x; P x ⟹ R⟧ ⟹ R&lt;br /&gt;
  · allE:       (⋀x. P x) ⟹ ∀x. P x&lt;br /&gt;
  · exI:        P x ⟹ ∃x. P x&lt;br /&gt;
  · exE:        ⟦∃x. P x; ⋀x. P x ⟹ Q⟧ ⟹ Q&lt;br /&gt;
&lt;br /&gt;
  · refl:       t = t&lt;br /&gt;
  · subst:      ⟦s = t; P s⟧ ⟹ P t&lt;br /&gt;
&lt;br /&gt;
  · trans:      ⟦r = s; s = t⟧ ⟹ r = t&lt;br /&gt;
  · sym:        s = t ⟹ t = s&lt;br /&gt;
  · not_sym:    t ≠ s ⟹ s ≠ t&lt;br /&gt;
  · ssubst:     ⟦t = s; P s⟧ ⟹ P t&lt;br /&gt;
  · box_equals: ⟦a = b; a = c; b = d⟧ ⟹ a: = d&lt;br /&gt;
  · arg_cong:   x = y ⟹ f x = f y&lt;br /&gt;
  · fun_cong:   f = g ⟹ f x = g x&lt;br /&gt;
  · cong:       ⟦f = g; x = y⟧ ⟹ f x = g y&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Se usarán, además, siquientes reglas que demostramos a continuación.&lt;br /&gt;
  *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Rosa ama a Curro. Paco no simpatiza con Ana. Quien no simpatiza con&lt;br /&gt;
     Ana ama a Rosa. Si una persona ama a otra, la segunda ama a la&lt;br /&gt;
     primera. Hay como máximo una persona que ama a Rosa. Por tanto,&lt;br /&gt;
     Paco es Curro. &lt;br /&gt;
  Usar A(x,y) para x ama a y &lt;br /&gt;
       S(x,y) para x simpatiza con y &lt;br /&gt;
       a      para Ana&lt;br /&gt;
       c      para Curro&lt;br /&gt;
       p      para Paco &lt;br /&gt;
       r      para Rosa&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Sólo hay un sofista que enseña gratuitamente, y éste es&lt;br /&gt;
     Sócrates. Sócrates argumenta mejor que ningún otro sofista. Platón&lt;br /&gt;
     argumenta mejor que algún sofista que enseña gratuitamente. Si una&lt;br /&gt;
     persona argumenta mejor que otra segunda, entonces la segunda no&lt;br /&gt;
     argumenta mejor que la primera. Por consiguiente, Platón no es un&lt;br /&gt;
     sofista. &lt;br /&gt;
  Usar G(x)   para x enseña gratuitamente&lt;br /&gt;
       M(x,y) para x argumenta mejor que y&lt;br /&gt;
       S(x)   para x es un sofista&lt;br /&gt;
       p      para Platón&lt;br /&gt;
       s      para Sócrates&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Todos los filósofos se han preguntado qué es la filosofía. Los que&lt;br /&gt;
     se preguntan qué es la filosofía se vuelven locos. Nietzsche es&lt;br /&gt;
     filósofo. El maestro de Nietzsche no acabó loco. Por tanto,&lt;br /&gt;
     Nietzsche y su maestro son diferentes personas. &lt;br /&gt;
  Usar F(x) para x es filósofo&lt;br /&gt;
       L(x) para x se vuelve loco&lt;br /&gt;
       P(x) para x se ha preguntado qué es la filosofía.&lt;br /&gt;
       m    para el maestro de Nietzsche&lt;br /&gt;
       n    para Nietzsche&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Los padres son mayores que los hijos. Juan es el padre de Luis. Por&lt;br /&gt;
     tanto, Juan es mayor que Luis.&lt;br /&gt;
  Usar M(x,y) para x es mayor que y&lt;br /&gt;
       p(x)   para el padre de x&lt;br /&gt;
       j      para Juan&lt;br /&gt;
       l      para Luis&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     El esposo de la hermana de Toni es Roberto. La hermana de Toni es&lt;br /&gt;
     María. Por tanto, el esposo de María es Roberto. &lt;br /&gt;
  Usar e(x) para el esposo de x&lt;br /&gt;
       h    para la hermana de Toni&lt;br /&gt;
       m    para María&lt;br /&gt;
       r    para Roberto&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Luis y Jaime tienen el mismo padre. La madre de Rosa es&lt;br /&gt;
     Eva. Eva ama a Carlos. Carlos es el padre de Jaime. Por tanto,&lt;br /&gt;
     la madre de Rosa ama al padre de Luis.&lt;br /&gt;
  Usar A(x,y) para x ama a y&lt;br /&gt;
       m(x)   para la madre de x&lt;br /&gt;
       p(x)   para el padre de x&lt;br /&gt;
       c      para Carlos&lt;br /&gt;
       e      para Eva&lt;br /&gt;
       j      para Jaime&lt;br /&gt;
       l      para Luis&lt;br /&gt;
       r      para Rosa&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Si dos personas son hermanos, entonces tienen la misma madre y el&lt;br /&gt;
     mismo padre. Juan es hermano de Luis. Por tanto, la madre del padre&lt;br /&gt;
     de Juan es la madre del padre de Luis.&lt;br /&gt;
  Usar H(x,y) para x es hermano de y&lt;br /&gt;
       m(x)   para la madre de x&lt;br /&gt;
       p(x)   para el padre de x&lt;br /&gt;
       j      para Juan&lt;br /&gt;
       l      para Luis&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Todos los miembros del claustro son asturianos. El secretario forma&lt;br /&gt;
     parte del claustro. El señor Martínez es el secretario. Por tanto,&lt;br /&gt;
     el señor Martínez es asturiano.&lt;br /&gt;
  Usar C(x) para x es miembro del claustro&lt;br /&gt;
       A(x) para x es asturiano&lt;br /&gt;
       s    para el secretario&lt;br /&gt;
       m    para el señor Martínez&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Eduardo pudo haber visto al asesino. Antonio fue el primer testigo&lt;br /&gt;
     de la defensa. O Eduardo estaba en clase o Antonio dio falso&lt;br /&gt;
     testimonio. Nadie en clase pudo haber visto al asesino. Luego, el&lt;br /&gt;
     primer testigo de la defensa dio falso testimonio. &lt;br /&gt;
  Usar C(x) para x estaba en clase&lt;br /&gt;
       F(x) para x dio falso testimonio&lt;br /&gt;
       V(x) para x pudo haber visto al asesino&lt;br /&gt;
       a    para Antonio&lt;br /&gt;
       e    para Eduardo&lt;br /&gt;
       p    para el primer testigo de la defensa&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     La luna hoy es redonda. La luna de hace dos semanas tenía forma de&lt;br /&gt;
     cuarto creciente. Luna no hay más que una, es decir, siempre es la&lt;br /&gt;
     misma. Luego existe algo que es a la vez redondo y con forma de&lt;br /&gt;
     cuarto creciente. &lt;br /&gt;
  Usar L(x) para la luna del momento x&lt;br /&gt;
       R(x) para x es redonda&lt;br /&gt;
       C(x) para x tiene forma de cuarto creciente&lt;br /&gt;
       h    para hoy&lt;br /&gt;
       d    para hace dos semanas&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Juana sólo tiene un marido. Juana está casada con Tomás. Tomás es&lt;br /&gt;
     delgado y Guillermo no. Luego, Juana no está casada con Guillermo. &lt;br /&gt;
  Usar D(x)   para x es delgado&lt;br /&gt;
       C(x,y) para x está casada con y&lt;br /&gt;
       g      para Guillermo&lt;br /&gt;
       j      para Juana&lt;br /&gt;
       t      para Tomás&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Sultán no es Chitón. Sultán no obtendrá un plátano a menos que&lt;br /&gt;
     pueda resolver cualquier problema. Si el chimpancé Chitón trabaja&lt;br /&gt;
     más que Sultán resolverá problemas que Sultán no puede resolver. &lt;br /&gt;
     Todos los chimpancés distintos de Sultán trabajan más que Sultán. &lt;br /&gt;
     Por consiguiente, Sultán no obtendrá un plátano.&lt;br /&gt;
  Usar Pl(x)  para x obtiene el plátano&lt;br /&gt;
       Pr(x)  para x es un problema&lt;br /&gt;
       R(x,y) para x resuelve y&lt;br /&gt;
       T(x,y) para x trabaja más que y&lt;br /&gt;
       c      para Chitón&lt;br /&gt;
       s      para Sultán&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=GLC_T1R1&amp;diff=187</id>
		<title>GLC T1R1</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=GLC_T1R1&amp;diff=187"/>
		<updated>2018-07-15T12:01:30Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «&amp;quot;isar&amp;quot;» por «&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* T1R1: Deducción natural proposicional *}&lt;br /&gt;
&lt;br /&gt;
theory T1R1&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  El objetivo de esta relación es lemas usando sólo las reglas básicas&lt;br /&gt;
  de deducción natural de la lógica proposicional. &lt;br /&gt;
&lt;br /&gt;
  Los ejercicios son los de la asignatura de &amp;quot;Lógica informática&amp;quot; que se&lt;br /&gt;
  encuentran en http://goo.gl/yrPLn&lt;br /&gt;
&lt;br /&gt;
  Las reglas básicas de la deducción natural son las siguientes:&lt;br /&gt;
  · conjI:      ⟦P; Q⟧ ⟹ P ∧ Q&lt;br /&gt;
  · conjunct1:  P ∧ Q ⟹ P&lt;br /&gt;
  · conjunct2:  P ∧ Q ⟹ Q  &lt;br /&gt;
  · notnotD:    ¬¬ P ⟹ P&lt;br /&gt;
  · notnotI:    P ⟹ ¬¬ P&lt;br /&gt;
  · mp:         ⟦P ⟶ Q; P⟧ ⟹ Q &lt;br /&gt;
  · mt:         ⟦F ⟶ G; ¬G⟧ ⟹ ¬F &lt;br /&gt;
  · impI:       (P ⟹ Q) ⟹ P ⟶ Q&lt;br /&gt;
  · disjI1:     P ⟹ P ∨ Q&lt;br /&gt;
  · disjI2:     Q ⟹ P ∨ Q&lt;br /&gt;
  · disjE:      ⟦P ∨ Q; P ⟹ R; Q ⟹ R⟧ ⟹ R &lt;br /&gt;
  · FalseE:     False ⟹ P&lt;br /&gt;
  · notE:       ⟦¬P; P⟧ ⟹ R&lt;br /&gt;
  · notI:       (P ⟹ False) ⟹ ¬P&lt;br /&gt;
  · iffI:       ⟦P ⟹ Q; Q ⟹ P⟧ ⟹ P = Q&lt;br /&gt;
  · iffD1:      ⟦Q = P; Q⟧ ⟹ P &lt;br /&gt;
  · iffD2:      ⟦P = Q; Q⟧ ⟹ P&lt;br /&gt;
  · ccontr:     (¬P ⟹ False) ⟹ P&lt;br /&gt;
  · excluded_middle: ¬P ∨ P&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Se usarán las reglas notnotI y mt que demostramos a continuación.&lt;br /&gt;
  *}&lt;br /&gt;
&lt;br /&gt;
lemma notnotI: &amp;quot;P ⟹ ¬¬ P&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
lemma mt: &amp;quot;⟦F ⟶ G; ¬G⟧ ⟹ ¬F&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
section {* Implicaciones *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Demostrar&lt;br /&gt;
       p ⟶ q, p ⊢ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_1_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ q&amp;quot; and&lt;br /&gt;
          2: &amp;quot;p&amp;quot;&lt;br /&gt;
  shows &amp;quot;q&amp;quot;&lt;br /&gt;
proof - &lt;br /&gt;
   show &amp;quot;q&amp;quot; using 1 2 by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_1_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;p&amp;quot;&lt;br /&gt;
  shows &amp;quot;q&amp;quot;&lt;br /&gt;
proof - &lt;br /&gt;
   show &amp;quot;q&amp;quot; using assms ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_1_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;p&amp;quot;&lt;br /&gt;
  shows &amp;quot;q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Demostrar&lt;br /&gt;
     p ⟶ q, q ⟶ r, p ⊢ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_2_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ q&amp;quot; and &lt;br /&gt;
          2: &amp;quot;q ⟶ r&amp;quot; and &lt;br /&gt;
          3: &amp;quot;p&amp;quot; &lt;br /&gt;
  shows &amp;quot;r&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have 4: &amp;quot;q&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
  show &amp;quot;r&amp;quot; using 2 4 by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_2_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
          &amp;quot;p&amp;quot; &lt;br /&gt;
  shows &amp;quot;r&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;q&amp;quot; using assms(1,3) ..&lt;br /&gt;
  show &amp;quot;r&amp;quot; using assms(2) `q` ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_2_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
          &amp;quot;p&amp;quot; &lt;br /&gt;
  shows &amp;quot;r&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Demostrar&lt;br /&gt;
     p ⟶ (q ⟶ r), p ⟶ q, p ⊢ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_3_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ (q ⟶ r)&amp;quot; and &lt;br /&gt;
          2: &amp;quot;p ⟶ q&amp;quot; and  &lt;br /&gt;
          3: &amp;quot;p&amp;quot;&lt;br /&gt;
  shows &amp;quot;r&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have 4: &amp;quot;q&amp;quot; using 2 3 by (rule mp)&lt;br /&gt;
  have 5: &amp;quot;q ⟶ r&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
  show &amp;quot;r&amp;quot; using 5 4 by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_3_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
          &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;r&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;q&amp;quot; using assms(2,3) ..&lt;br /&gt;
  have &amp;quot;q ⟶ r&amp;quot; using assms(1,3) ..&lt;br /&gt;
  thus &amp;quot;r&amp;quot; using `q` ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_3_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
          &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;r&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Demostrar&lt;br /&gt;
     p ⟶ q, q ⟶ r ⊢ p ⟶ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_4_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ q&amp;quot; and &lt;br /&gt;
          2: &amp;quot;q ⟶ r&amp;quot; &lt;br /&gt;
  shows &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 3: &amp;quot;p&amp;quot;&lt;br /&gt;
  have 4: &amp;quot;q&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
  show &amp;quot;r&amp;quot; using 2 4 by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_4_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;q ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  with assms(1) have &amp;quot;q&amp;quot; ..&lt;br /&gt;
  with assms(2) show &amp;quot;r&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_4_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;q ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Demostrar&lt;br /&gt;
     p ⟶ (q ⟶ r) ⊢ q ⟶ (p ⟶ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_5_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 2: &amp;quot;q&amp;quot;&lt;br /&gt;
  show &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume 3: &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;q ⟶ r&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
    thus &amp;quot;r&amp;quot; using 2 by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_5_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;q&amp;quot;&lt;br /&gt;
  show &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    with assms(1) have &amp;quot;q ⟶ r&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;r&amp;quot; using `q` ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_5_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Demostrar&lt;br /&gt;
     p ⟶ (q ⟶ r) ⊢ (p ⟶ q) ⟶ (p ⟶ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_6_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ⟶ q) ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 2: &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
  show &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume 3: &amp;quot;p&amp;quot;&lt;br /&gt;
    have 4: &amp;quot;q&amp;quot; using 2 3 by (rule mp)&lt;br /&gt;
    have 5: &amp;quot;q ⟶ r&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
    show &amp;quot;r&amp;quot; using 5 4 by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_6_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ⟶ q) ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
  show &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    with `p ⟶ q` have &amp;quot;q&amp;quot; ..&lt;br /&gt;
    have &amp;quot;q ⟶ r&amp;quot; using assms(1) `p` ..&lt;br /&gt;
    thus &amp;quot;r&amp;quot; using `q` ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_6_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ⟶ q) ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Demostrar&lt;br /&gt;
     p ⊢ q ⟶ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_7_1:&lt;br /&gt;
  assumes 1: &amp;quot;p&amp;quot;  &lt;br /&gt;
  shows      &amp;quot;q ⟶ p&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 2: &amp;quot;q&amp;quot;&lt;br /&gt;
  show &amp;quot;p&amp;quot; using 1 by this&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_7_2:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot;  &lt;br /&gt;
  shows   &amp;quot;q ⟶ p&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;q&amp;quot;&lt;br /&gt;
  show &amp;quot;p&amp;quot; using assms(1) .&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_7_3:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot;  &lt;br /&gt;
  shows   &amp;quot;q ⟶ p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Demostrar&lt;br /&gt;
     ⊢ p ⟶ (q ⟶ p)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_8_1:&lt;br /&gt;
  &amp;quot;p ⟶ (q ⟶ p)&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
  show &amp;quot;q ⟶ p&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume 2: &amp;quot;q&amp;quot;&lt;br /&gt;
    show &amp;quot;p&amp;quot; using 1 by this&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_8_2:&lt;br /&gt;
  &amp;quot;p ⟶ (q ⟶ p)&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  show &amp;quot;q ⟶ p&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    show &amp;quot;p&amp;quot; using `p` .&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_8_3:&lt;br /&gt;
  &amp;quot;p ⟶ (q ⟶ p)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Demostrar&lt;br /&gt;
     p ⟶ q ⊢ (q ⟶ r) ⟶ (p ⟶ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_9_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ q&amp;quot; &lt;br /&gt;
  shows      &amp;quot;(q ⟶ r) ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 2: &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
  show &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume 3: &amp;quot;p&amp;quot;&lt;br /&gt;
    have 4: &amp;quot;q&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
    show &amp;quot;r&amp;quot; using 2 4 by (rule mp) &lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_9_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(q ⟶ r) ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
  show &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    with assms(1) have &amp;quot;q&amp;quot; ..&lt;br /&gt;
    with `q ⟶ r` show &amp;quot;r&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_9_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(q ⟶ r) ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Demostrar&lt;br /&gt;
     p ⟶ (q ⟶ (r ⟶ s)) ⊢ r ⟶ (q ⟶ (p ⟶ s))&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_10_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ (q ⟶ (r ⟶ s))&amp;quot; &lt;br /&gt;
  shows      &amp;quot;r ⟶ (q ⟶ (p ⟶ s))&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  { assume 2: &amp;quot;r&amp;quot;&lt;br /&gt;
    { assume 3: &amp;quot;q&amp;quot;&lt;br /&gt;
      { assume 4: &amp;quot;p&amp;quot;&lt;br /&gt;
        have 5: &amp;quot;q ⟶ (r ⟶ s)&amp;quot; using 1 4 by (rule mp)&lt;br /&gt;
        have 6: &amp;quot;r ⟶ s&amp;quot; using 5 3 by (rule mp)&lt;br /&gt;
        have 7: &amp;quot;s&amp;quot; using 6 2 by (rule mp) }&lt;br /&gt;
      hence 8: &amp;quot;p ⟶ s&amp;quot; by (rule impI) }&lt;br /&gt;
    hence 9: &amp;quot;q ⟶ (p ⟶ s)&amp;quot; by (rule impI) }&lt;br /&gt;
  thus 10: &amp;quot;r ⟶ (q ⟶ (p ⟶ s))&amp;quot; by (rule impI) &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;Una variante de la demostración anterior es&amp;quot;&lt;br /&gt;
lemma ejercicio_10_1b:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ (q ⟶ (r ⟶ s))&amp;quot; &lt;br /&gt;
  shows      &amp;quot;r ⟶ (q ⟶ (p ⟶ s))&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 2: &amp;quot;r&amp;quot;&lt;br /&gt;
  show &amp;quot;q ⟶ (p ⟶ s)&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume 3: &amp;quot;q&amp;quot;&lt;br /&gt;
    show &amp;quot;p ⟶ s&amp;quot;&lt;br /&gt;
    proof (rule impI)&lt;br /&gt;
      assume 4: &amp;quot;p&amp;quot;&lt;br /&gt;
      have 5: &amp;quot;q ⟶ (r ⟶ s)&amp;quot; using 1 4 by (rule mp)&lt;br /&gt;
      have 6: &amp;quot;r ⟶ s&amp;quot; using 5 3 by (rule mp)&lt;br /&gt;
      show &amp;quot;s&amp;quot; using 6 2 by (rule mp)&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_10_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ (r ⟶ s))&amp;quot; &lt;br /&gt;
  shows   &amp;quot;r ⟶ (q ⟶ (p ⟶ s))&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;r&amp;quot;&lt;br /&gt;
  show &amp;quot;q ⟶ (p ⟶ s)&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    show &amp;quot;p ⟶ s&amp;quot;&lt;br /&gt;
    proof &lt;br /&gt;
      assume &amp;quot;p&amp;quot;&lt;br /&gt;
      with assms(1) have &amp;quot;q ⟶ (r ⟶ s)&amp;quot; ..&lt;br /&gt;
      hence &amp;quot;r ⟶ s&amp;quot; using `q` ..&lt;br /&gt;
      thus &amp;quot;s&amp;quot; using `r` ..&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_10_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ (r ⟶ s))&amp;quot; &lt;br /&gt;
  shows   &amp;quot;r ⟶ (q ⟶ (p ⟶ s))&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Demostrar&lt;br /&gt;
     ⊢ (p ⟶ (q ⟶ r)) ⟶ ((p ⟶ q) ⟶ (p ⟶ r))&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_11_1:&lt;br /&gt;
  &amp;quot;(p ⟶ (q ⟶ r)) ⟶ ((p ⟶ q) ⟶ (p ⟶ r))&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  { assume 1: &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
    { assume 2: &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
      { assume 3: &amp;quot;p&amp;quot;&lt;br /&gt;
        have 4: &amp;quot;q&amp;quot; using 2 3 by (rule mp)&lt;br /&gt;
        have 5: &amp;quot;q ⟶ r&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
        have 6: &amp;quot;r&amp;quot; using 5 4 by (rule mp) }&lt;br /&gt;
      hence 7: &amp;quot;p ⟶ r&amp;quot; by (rule impI) }&lt;br /&gt;
    hence 8: &amp;quot;(p ⟶ q) ⟶ (p ⟶ r)&amp;quot; by (rule impI) }&lt;br /&gt;
  thus &amp;quot;(p ⟶ (q ⟶ r)) ⟶ ((p ⟶ q) ⟶ (p ⟶ r))&amp;quot; by (rule impI)&lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_11_2:&lt;br /&gt;
  &amp;quot;(p ⟶ (q ⟶ r)) ⟶ ((p ⟶ q) ⟶ (p ⟶ r))&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
  { assume &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
    { assume &amp;quot;p&amp;quot;&lt;br /&gt;
      with `p ⟶ q` have &amp;quot;q&amp;quot; ..&lt;br /&gt;
      have &amp;quot;q ⟶ r&amp;quot; using `p ⟶ (q ⟶ r)` `p` ..&lt;br /&gt;
      hence &amp;quot;r&amp;quot; using `q` .. }&lt;br /&gt;
    hence &amp;quot;p ⟶ r&amp;quot; .. }&lt;br /&gt;
  thus &amp;quot;(p ⟶ q) ⟶ (p ⟶ r)&amp;quot; .. &lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_11_3:&lt;br /&gt;
  &amp;quot;(p ⟶ (q ⟶ r)) ⟶ ((p ⟶ q) ⟶ (p ⟶ r))&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Demostrar&lt;br /&gt;
     (p ⟶ q) ⟶ r ⊢ p ⟶ (q ⟶ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_12_1:&lt;br /&gt;
  assumes 1: &amp;quot;(p ⟶ q) ⟶ r&amp;quot; &lt;br /&gt;
  shows      &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  { assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
    { assume 3: &amp;quot;q&amp;quot;&lt;br /&gt;
      { assume 4: &amp;quot;p&amp;quot;&lt;br /&gt;
        have 5: &amp;quot;q&amp;quot; using 3 by this } &lt;br /&gt;
      hence 6: &amp;quot;p ⟶ q&amp;quot; by (rule impI)&lt;br /&gt;
      have 7: &amp;quot;r&amp;quot; using 1 6 by (rule mp) } &lt;br /&gt;
    hence 8: &amp;quot;q ⟶ r&amp;quot; by (rule impI) } &lt;br /&gt;
  thus 9: &amp;quot;p ⟶ (q ⟶ r)&amp;quot; by (rule impI) &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_12_2:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ q) ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  { assume &amp;quot;q&amp;quot;&lt;br /&gt;
    { assume &amp;quot;p&amp;quot;&lt;br /&gt;
      have &amp;quot;q&amp;quot; using `q` . } &lt;br /&gt;
    hence &amp;quot;p ⟶ q&amp;quot; ..&lt;br /&gt;
    with assms(1) have &amp;quot;r&amp;quot; .. } &lt;br /&gt;
  thus &amp;quot;q ⟶ r&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_12_3:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ q) ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
section {* Conjunciones *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 13. Demostrar&lt;br /&gt;
     p, q ⊢  p ∧ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_13_1:&lt;br /&gt;
  assumes 1: &amp;quot;p&amp;quot; and &lt;br /&gt;
          2: &amp;quot;q&amp;quot; &lt;br /&gt;
  shows &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;p ∧ q&amp;quot; using assms by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_13_2:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot;&lt;br /&gt;
          &amp;quot;q&amp;quot; &lt;br /&gt;
  shows &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  show &amp;quot;p&amp;quot; using assms(1) .&lt;br /&gt;
next&lt;br /&gt;
  show &amp;quot;q&amp;quot; using assms(2) .&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_13_3:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot;&lt;br /&gt;
          &amp;quot;q&amp;quot; &lt;br /&gt;
  shows &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 14. Demostrar&lt;br /&gt;
     p ∧ q ⊢ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_14_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ∧ q&amp;quot;  &lt;br /&gt;
  shows      &amp;quot;p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_14_2:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot;  &lt;br /&gt;
  shows   &amp;quot;p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;p&amp;quot; using assms ..&lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_14_3:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot;  &lt;br /&gt;
  shows   &amp;quot;p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 15. Demostrar&lt;br /&gt;
     p ∧ q ⊢ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_15_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows      &amp;quot;q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_15_2:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;q&amp;quot; using assms ..&lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_15_3:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 16. Demostrar&lt;br /&gt;
     p ∧ (q ∧ r) ⊢ (p ∧ q) ∧ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_16_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ∧ (q ∧ r)&amp;quot;&lt;br /&gt;
  shows      &amp;quot;(p ∧ q) ∧ r&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have 2: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
  have 3: &amp;quot;q ∧ r&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
  have 4: &amp;quot;q&amp;quot; using 3 by (rule conjunct1)&lt;br /&gt;
  have 5: &amp;quot;p ∧ q&amp;quot; using 2 4 by (rule conjI)&lt;br /&gt;
  have 6: &amp;quot;r&amp;quot; using 3 by (rule conjunct2)&lt;br /&gt;
  show 7: &amp;quot;(p ∧ q) ∧ r&amp;quot; using 5 6 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_16_2:&lt;br /&gt;
  assumes &amp;quot;p ∧ (q ∧ r)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(p ∧ q) ∧ r&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  show &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    show &amp;quot;p&amp;quot; using assms ..&lt;br /&gt;
  next&lt;br /&gt;
    have &amp;quot;q ∧ r&amp;quot; using assms ..&lt;br /&gt;
    thus &amp;quot;q&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
    have &amp;quot;q ∧ r&amp;quot; using assms ..&lt;br /&gt;
    thus &amp;quot;r&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_16_3:&lt;br /&gt;
  assumes &amp;quot;p ∧ (q ∧ r)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(p ∧ q) ∧ r&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 17. Demostrar&lt;br /&gt;
     (p ∧ q) ∧ r ⊢ p ∧ (q ∧ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_17_1:&lt;br /&gt;
  assumes 1: &amp;quot;(p ∧ q) ∧ r&amp;quot; &lt;br /&gt;
  shows      &amp;quot;p ∧ (q ∧ r)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have 2: &amp;quot;p ∧ q&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
  have 3: &amp;quot;p&amp;quot; using 2 by (rule conjunct1)&lt;br /&gt;
  have 4: &amp;quot;q&amp;quot; using 2 by (rule conjunct2)&lt;br /&gt;
  have 5: &amp;quot;r&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
  have 6: &amp;quot;q ∧ r&amp;quot; using 4 5 by (rule conjI)&lt;br /&gt;
  show 7: &amp;quot;p ∧ (q ∧ r)&amp;quot; using 3 6 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_17_2:&lt;br /&gt;
  assumes &amp;quot;(p ∧ q) ∧ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ (q ∧ r)&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  have &amp;quot;p ∧ q&amp;quot; using assms ..&lt;br /&gt;
  thus &amp;quot;p&amp;quot; ..&lt;br /&gt;
next&lt;br /&gt;
  show &amp;quot;q ∧ r&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    have &amp;quot;p ∧ q&amp;quot; using assms ..&lt;br /&gt;
    thus &amp;quot;q&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    show &amp;quot;r&amp;quot; using assms ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_17_3:&lt;br /&gt;
  assumes &amp;quot;(p ∧ q) ∧ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ (q ∧ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 18. Demostrar&lt;br /&gt;
     p ∧ q ⊢ p ⟶ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_18_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows      &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
  show &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_18_2:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  show &amp;quot;q&amp;quot; using assms ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_18_3:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 19. Demostrar&lt;br /&gt;
     (p ⟶ q) ∧ (p ⟶ r) ⊢ p ⟶ q ∧ r   &lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_19_1:&lt;br /&gt;
  assumes 1: &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot; &lt;br /&gt;
  shows      &amp;quot;p ⟶ q ∧ r&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
  have 3: &amp;quot;p ⟶ q&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
  have 4: &amp;quot;q&amp;quot; using 3 2 by (rule mp)&lt;br /&gt;
  have 5: &amp;quot;p ⟶ r&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
  have 6: &amp;quot;r&amp;quot; using 5 2 by (rule mp)&lt;br /&gt;
  show 7: &amp;quot;q ∧ r&amp;quot; using 4 6 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_19_2:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ q ∧ r&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  show &amp;quot;q ∧ r&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    have &amp;quot;p ⟶ q&amp;quot; using assms ..&lt;br /&gt;
    thus &amp;quot;q&amp;quot; using `p` ..&lt;br /&gt;
  next&lt;br /&gt;
    have &amp;quot;p ⟶ r&amp;quot; using assms ..&lt;br /&gt;
    thus &amp;quot;r&amp;quot; using `p` ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_19_3:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ q ∧ r&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 20. Demostrar&lt;br /&gt;
     p ⟶ q ∧ r ⊢ (p ⟶ q) ∧ (p ⟶ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_20_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ q ∧ r&amp;quot; &lt;br /&gt;
  shows      &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot;&lt;br /&gt;
proof (rule conjI)&lt;br /&gt;
  show &amp;quot;p ⟶ q&amp;quot; &lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∧ r&amp;quot; using 1 2 by (rule mp)&lt;br /&gt;
    thus &amp;quot;q&amp;quot; by (rule conjunct1)&lt;br /&gt;
  qed&lt;br /&gt;
next &lt;br /&gt;
  show &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume 3: &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∧ r&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
    thus &amp;quot;r&amp;quot; by (rule conjunct2)&lt;br /&gt;
  qed&lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_20_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q ∧ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  show &amp;quot;p ⟶ q&amp;quot; &lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∧ r&amp;quot; using assms `p` ..&lt;br /&gt;
    thus &amp;quot;q&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
next &lt;br /&gt;
  show &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∧ r&amp;quot; using assms `p` ..&lt;br /&gt;
    thus &amp;quot;r&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_20_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q ∧ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 21. Demostrar&lt;br /&gt;
     p ⟶ (q ⟶ r) ⊢ p ∧ q ⟶ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_21_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ⟶ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows      &amp;quot;p ∧ q ⟶ r&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 2: &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
  have 3: &amp;quot;p&amp;quot; using 2 by (rule conjunct1)&lt;br /&gt;
  have 4: &amp;quot;q&amp;quot; using 2 by (rule conjunct2)&lt;br /&gt;
  have 5: &amp;quot;q ⟶ r&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
  show 6: &amp;quot;r&amp;quot; using 5 4 by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_21_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ q ⟶ r&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
  hence &amp;quot;p&amp;quot; ..&lt;br /&gt;
  have &amp;quot;q&amp;quot; using `p ∧ q` ..&lt;br /&gt;
  have &amp;quot;q ⟶ r&amp;quot; using assms(1) `p` ..&lt;br /&gt;
  thus &amp;quot;r&amp;quot; using `q` ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_21_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ q ⟶ r&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 22. Demostrar&lt;br /&gt;
     p ∧ q ⟶ r ⊢ p ⟶ (q ⟶ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_22_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ∧ q ⟶ r&amp;quot; &lt;br /&gt;
  shows      &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
  { assume 3: &amp;quot;q&amp;quot;&lt;br /&gt;
    have 4: &amp;quot;p ∧ q&amp;quot; using 2 3 by (rule conjI)&lt;br /&gt;
    have &amp;quot;r&amp;quot; using 1 4 by (rule mp) } &lt;br /&gt;
  thus &amp;quot;q ⟶ r&amp;quot; by (rule impI)  &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_22_2:&lt;br /&gt;
  assumes &amp;quot;p ∧ q ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  show &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    with `p` have &amp;quot;p ∧ q&amp;quot; ..&lt;br /&gt;
    with  assms(1) show &amp;quot;r&amp;quot; .. &lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_22_3:&lt;br /&gt;
  assumes &amp;quot;p ∧ q ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 23. Demostrar&lt;br /&gt;
     (p ⟶ q) ⟶ r ⊢ p ∧ q ⟶ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_23_1:&lt;br /&gt;
  assumes 1: &amp;quot;(p ⟶ q) ⟶ r&amp;quot; &lt;br /&gt;
  shows      &amp;quot;p ∧ q ⟶ r&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 2: &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
  have 3: &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume 4: &amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;q&amp;quot; using 2 by (rule conjunct2)&lt;br /&gt;
  qed&lt;br /&gt;
  show &amp;quot;r&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_23_2:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ q) ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ q ⟶ r&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
  have &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;q&amp;quot; using `p ∧ q` ..&lt;br /&gt;
  qed&lt;br /&gt;
  with assms show &amp;quot;r&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_23_3:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ q) ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ q ⟶ r&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 24. Demostrar&lt;br /&gt;
     p ∧ (q ⟶ r) ⊢ (p ⟶ q) ⟶ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_24_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ∧ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows      &amp;quot;(p ⟶ q) ⟶ r&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume 2: &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
  have 3: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
  have 4: &amp;quot;q&amp;quot; using 2 3 by (rule mp)&lt;br /&gt;
  have 5: &amp;quot;q ⟶ r&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
  thus &amp;quot;r&amp;quot; using 4 by (rule mp) &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_24_2:&lt;br /&gt;
  assumes &amp;quot;p ∧ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ⟶ q) ⟶ r&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
  have &amp;quot;p&amp;quot; using assms ..&lt;br /&gt;
  with `p ⟶ q` have &amp;quot;q&amp;quot; ..&lt;br /&gt;
  have &amp;quot;q ⟶ r&amp;quot; using assms ..&lt;br /&gt;
  thus &amp;quot;r&amp;quot; using `q` ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_24_3:&lt;br /&gt;
  assumes &amp;quot;p ∧ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ⟶ q) ⟶ r&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
section {* Disyunciones *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 25. Demostrar&lt;br /&gt;
     p ⊢ p ∨ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_25_1:&lt;br /&gt;
  assumes 1: &amp;quot;p&amp;quot;&lt;br /&gt;
  shows      &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_25_2:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;p ∨ q&amp;quot; using assms ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_25_3:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 26. Demostrar&lt;br /&gt;
     q ⊢ p ∨ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_26_1:&lt;br /&gt;
  assumes 1: &amp;quot;q&amp;quot;&lt;br /&gt;
  shows      &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI2)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_26_2:&lt;br /&gt;
  assumes &amp;quot;q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;p ∨ q&amp;quot; using assms ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_26_3:&lt;br /&gt;
  assumes &amp;quot;q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 27. Demostrar&lt;br /&gt;
     p ∨ q ⊢ q ∨ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_27_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  shows      &amp;quot;q ∨ p&amp;quot;&lt;br /&gt;
using 1&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  thus &amp;quot;q ∨ p&amp;quot; by (rule disjI2)&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;q&amp;quot;&lt;br /&gt;
  thus &amp;quot;q ∨ p&amp;quot; by (rule disjI1)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_27_2:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;q ∨ p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  thus &amp;quot;q ∨ p&amp;quot; ..&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;q&amp;quot;&lt;br /&gt;
  thus &amp;quot;q ∨ p&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_27_3:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;q ∨ p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 28. Demostrar&lt;br /&gt;
     q ⟶ r ⊢ p ∨ q ⟶ p ∨ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_28_1:&lt;br /&gt;
  assumes 1: &amp;quot;q ⟶ r&amp;quot; &lt;br /&gt;
  shows      &amp;quot;p ∨ q ⟶ p ∨ r&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  thus &amp;quot;p ∨ r&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    thus &amp;quot;p ∨ r&amp;quot; by (rule disjI1)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;r&amp;quot; using assms `q` by (rule mp)&lt;br /&gt;
    thus &amp;quot;p ∨ r&amp;quot; by (rule disjI2)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_28_2:&lt;br /&gt;
  assumes &amp;quot;q ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∨ q ⟶ p ∨ r&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  thus &amp;quot;p ∨ r&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    thus &amp;quot;p ∨ r&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;r&amp;quot; using assms `q` ..&lt;br /&gt;
    thus &amp;quot;p ∨ r&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_28_3:&lt;br /&gt;
  assumes &amp;quot;q ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∨ q ⟶ p ∨ r&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 29. Demostrar&lt;br /&gt;
     p ∨ p ⊢ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_29_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ∨ p&amp;quot;&lt;br /&gt;
  shows      &amp;quot;p&amp;quot;&lt;br /&gt;
using 1&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  thus &amp;quot;p&amp;quot; by this&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  thus &amp;quot;p&amp;quot; by this&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_29_2:&lt;br /&gt;
  assumes &amp;quot;p ∨ p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  thus &amp;quot;p&amp;quot; .&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  thus &amp;quot;p&amp;quot; .&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_29_3:&lt;br /&gt;
  assumes &amp;quot;p ∨ p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 30. Demostrar&lt;br /&gt;
     p ⊢ p ∨ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_30_1:&lt;br /&gt;
  assumes 1: &amp;quot;p&amp;quot; &lt;br /&gt;
  shows      &amp;quot;p ∨ p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;p ∨ p&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_30_2:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∨ p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;p ∨ p&amp;quot; using assms ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_30_3:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∨ p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 31. Demostrar&lt;br /&gt;
     p ∨ (q ∨ r) ⊢ (p ∨ q) ∨ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_31_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ∨ (q ∨ r)&amp;quot; &lt;br /&gt;
  shows      &amp;quot;(p ∨ q) ∨ r&amp;quot;&lt;br /&gt;
using 1&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  hence &amp;quot;p ∨ q&amp;quot; by (rule disjI1)&lt;br /&gt;
  thus &amp;quot;(p ∨ q) ∨ r&amp;quot; by (rule disjI1)&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;q ∨ r&amp;quot;&lt;br /&gt;
  thus &amp;quot;(p ∨ q) ∨ r&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    hence &amp;quot;p ∨ q&amp;quot; by (rule disjI2)&lt;br /&gt;
    thus &amp;quot;(p ∨ q) ∨ r&amp;quot; by (rule disjI1)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;r&amp;quot;&lt;br /&gt;
    thus &amp;quot;(p ∨ q) ∨ r&amp;quot; by (rule disjI2)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_31_2:&lt;br /&gt;
  assumes &amp;quot;p ∨ (q ∨ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ∨ q) ∨ r&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  hence &amp;quot;p ∨ q&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;(p ∨ q) ∨ r&amp;quot; ..&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;q ∨ r&amp;quot;&lt;br /&gt;
  thus &amp;quot;(p ∨ q) ∨ r&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    hence &amp;quot;p ∨ q&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;(p ∨ q) ∨ r&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;r&amp;quot;&lt;br /&gt;
    thus &amp;quot;(p ∨ q) ∨ r&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_31_3:&lt;br /&gt;
  assumes &amp;quot;p ∨ (q ∨ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ∨ q) ∨ r&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 32. Demostrar&lt;br /&gt;
     (p ∨ q) ∨ r ⊢ p ∨ (q ∨ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_32_1:&lt;br /&gt;
  assumes 1: &amp;quot;(p ∨ q) ∨ r&amp;quot; &lt;br /&gt;
  shows      &amp;quot;p ∨ (q ∨ r)&amp;quot;&lt;br /&gt;
using 1&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  assume &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  thus &amp;quot;p ∨ (q ∨ r)&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    thus &amp;quot;p ∨ (q ∨ r)&amp;quot; by (rule disjI1)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    hence &amp;quot;q ∨ r&amp;quot; by (rule disjI1)&lt;br /&gt;
    thus &amp;quot;p ∨ (q ∨ r)&amp;quot; by (rule disjI2)&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;r&amp;quot;&lt;br /&gt;
  hence &amp;quot;q ∨ r&amp;quot; by (rule disjI2)&lt;br /&gt;
  thus &amp;quot;p ∨ (q ∨ r)&amp;quot; by (rule disjI2)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_32_2:&lt;br /&gt;
  assumes &amp;quot;(p ∨ q) ∨ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∨ (q ∨ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  thus &amp;quot;p ∨ (q ∨ r)&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    thus &amp;quot;p ∨ (q ∨ r)&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    hence &amp;quot;q ∨ r&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;p ∨ (q ∨ r)&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;r&amp;quot;&lt;br /&gt;
  hence &amp;quot;q ∨ r&amp;quot; .. &lt;br /&gt;
  thus &amp;quot;p ∨ (q ∨ r)&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_32_3:&lt;br /&gt;
  assumes &amp;quot;(p ∨ q) ∨ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∨ (q ∨ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 33. Demostrar&lt;br /&gt;
     p ∧ (q ∨ r) ⊢ (p ∧ q) ∨ (p ∧ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_33_1:&lt;br /&gt;
  assumes 1: &amp;quot;p ∧ (q ∨ r)&amp;quot; &lt;br /&gt;
  shows      &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have 2: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
  have 3: &amp;quot;q ∨ r&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
  thus &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;p ∧ q&amp;quot; using 2 4 by (rule conjI)&lt;br /&gt;
    thus &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; by (rule disjI1)&lt;br /&gt;
  next&lt;br /&gt;
    assume 5: &amp;quot;r&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∨ r&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
    thus &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot;&lt;br /&gt;
    proof (rule disjE)&lt;br /&gt;
      assume &amp;quot;q&amp;quot;&lt;br /&gt;
      have &amp;quot;p ∧ q&amp;quot; using `p` `q` by (rule conjI) &lt;br /&gt;
      thus &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; by (rule disjI1)&lt;br /&gt;
    next&lt;br /&gt;
      assume &amp;quot;r&amp;quot;&lt;br /&gt;
      have &amp;quot;p ∧ r&amp;quot; using `p` `r` by (rule conjI) &lt;br /&gt;
      thus &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; by (rule disjI2)&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_33_2:&lt;br /&gt;
  assumes &amp;quot;p ∧ (q ∨ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;p&amp;quot; using assms ..&lt;br /&gt;
  have &amp;quot;q ∨ r&amp;quot; using assms .. &lt;br /&gt;
  thus &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    with `p` have &amp;quot;p ∧ q&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;r&amp;quot;&lt;br /&gt;
    hence &amp;quot;q ∨ r&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot;&lt;br /&gt;
    proof &lt;br /&gt;
      assume &amp;quot;q&amp;quot;&lt;br /&gt;
      with `p` have &amp;quot;p ∧ q&amp;quot; ..&lt;br /&gt;
      thus &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; ..&lt;br /&gt;
    next&lt;br /&gt;
      assume &amp;quot;r&amp;quot;&lt;br /&gt;
      with `p` have &amp;quot;p ∧ r&amp;quot; ..&lt;br /&gt;
      thus &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; ..&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_33_3:&lt;br /&gt;
  assumes &amp;quot;p ∧ (q ∨ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 34. Demostrar&lt;br /&gt;
     (p ∧ q) ∨ (p ∧ r) ⊢ p ∧ (q ∨ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_34_1:&lt;br /&gt;
  assumes &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ (q ∨ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  assume 1: &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
  show &amp;quot;p ∧ (q ∨ r)&amp;quot;&lt;br /&gt;
  proof (rule conjI)&lt;br /&gt;
    show &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
  next&lt;br /&gt;
    have &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
    thus &amp;quot;q ∨ r&amp;quot; by (rule disjI1)&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  assume 2: &amp;quot;p ∧ r&amp;quot;&lt;br /&gt;
  hence 3: &amp;quot;p&amp;quot; by (rule conjunct1)&lt;br /&gt;
  have &amp;quot;r&amp;quot; using 2 by (rule conjunct2)&lt;br /&gt;
  hence 4: &amp;quot;q ∨ r&amp;quot; by (rule disjI2)&lt;br /&gt;
  show &amp;quot;p ∧ (q ∨ r)&amp;quot; using 3 4 by (rule conjI) &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_34_2:&lt;br /&gt;
  assumes &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ (q ∨ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
  show &amp;quot;p ∧ (q ∨ r)&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    show &amp;quot;p&amp;quot; using `p ∧ q` ..&lt;br /&gt;
  next&lt;br /&gt;
    have &amp;quot;q&amp;quot; using `p ∧ q` ..&lt;br /&gt;
    thus &amp;quot;q ∨ r&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;p ∧ r&amp;quot;&lt;br /&gt;
  hence &amp;quot;p&amp;quot; ..&lt;br /&gt;
  have &amp;quot;r&amp;quot; using `p ∧ r` ..&lt;br /&gt;
  hence &amp;quot;q ∨ r&amp;quot; .. &lt;br /&gt;
  with `p` show &amp;quot;p ∧ (q ∨ r)&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_34_3:&lt;br /&gt;
  assumes &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ (q ∨ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 35. Demostrar&lt;br /&gt;
     p ∨ (q ∧ r) ⊢ (p ∨ q) ∧ (p ∨ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_35_1:&lt;br /&gt;
  assumes &amp;quot;p ∨ (q ∧ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    show &amp;quot;p ∨ q&amp;quot; using `p` ..&lt;br /&gt;
  next&lt;br /&gt;
    show &amp;quot;p ∨ r&amp;quot; using `p` ..&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;q ∧ r&amp;quot;&lt;br /&gt;
  show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    have &amp;quot;q&amp;quot; using `q ∧ r` ..&lt;br /&gt;
    thus &amp;quot;p ∨ q&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    have &amp;quot;r&amp;quot; using `q ∧ r` ..&lt;br /&gt;
    thus &amp;quot;p ∨ r&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_35_2:&lt;br /&gt;
  assumes &amp;quot;p ∨ (q ∧ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot;&lt;br /&gt;
  proof (rule conjI)&lt;br /&gt;
    show &amp;quot;p ∨ q&amp;quot; using `p` by (rule disjI1)&lt;br /&gt;
  next&lt;br /&gt;
    show &amp;quot;p ∨ r&amp;quot; using `p` by (rule disjI1)&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;q ∧ r&amp;quot;&lt;br /&gt;
  show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot;&lt;br /&gt;
  proof (rule conjI)&lt;br /&gt;
    have &amp;quot;q&amp;quot; using `q ∧ r` ..&lt;br /&gt;
    thus &amp;quot;p ∨ q&amp;quot; by (rule disjI2)&lt;br /&gt;
  next&lt;br /&gt;
    have &amp;quot;r&amp;quot; using `q ∧ r` by (rule conjunct2)&lt;br /&gt;
    thus &amp;quot;p ∨ r&amp;quot; by (rule disjI2)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_35_3:&lt;br /&gt;
  assumes &amp;quot;p ∨ (q ∧ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 36. Demostrar&lt;br /&gt;
     (p ∨ q) ∧ (p ∨ r) ⊢ p ∨ (q ∧ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_36_1:&lt;br /&gt;
  assumes &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∨ (q ∧ r)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;p ∨ q&amp;quot; using assms ..&lt;br /&gt;
  thus &amp;quot;p ∨ (q ∧ r)&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    thus &amp;quot;p ∨ (q ∧ r)&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;p ∨ r&amp;quot; using assms ..&lt;br /&gt;
    thus &amp;quot;p ∨ (q ∧ r)&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;p&amp;quot;&lt;br /&gt;
      thus &amp;quot;p ∨ (q ∧ r)&amp;quot; ..&lt;br /&gt;
    next&lt;br /&gt;
      assume &amp;quot;r&amp;quot;&lt;br /&gt;
      with `q` have &amp;quot;q ∧ r&amp;quot; ..&lt;br /&gt;
      thus &amp;quot;p ∨ (q ∧ r)&amp;quot; ..&lt;br /&gt;
    qed &lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_36_2:&lt;br /&gt;
  assumes &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∨ (q ∧ r)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;p ∨ q&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
  thus &amp;quot;p ∨ (q ∧ r)&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    thus &amp;quot;p ∨ (q ∧ r)&amp;quot; by (rule disjI1)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;p ∨ r&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
    thus &amp;quot;p ∨ (q ∧ r)&amp;quot;&lt;br /&gt;
    proof (rule disjE)&lt;br /&gt;
      assume &amp;quot;p&amp;quot;&lt;br /&gt;
      thus &amp;quot;p ∨ (q ∧ r)&amp;quot; by (rule disjI1)&lt;br /&gt;
    next&lt;br /&gt;
      assume &amp;quot;r&amp;quot;&lt;br /&gt;
      have &amp;quot;q ∧ r&amp;quot; using `q` `r` by (rule conjI)&lt;br /&gt;
      thus &amp;quot;p ∨ (q ∧ r)&amp;quot; by (rule disjI2)&lt;br /&gt;
    qed &lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_36_3:&lt;br /&gt;
  assumes &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∨ (q ∧ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 37. Demostrar&lt;br /&gt;
     (p ⟶ r) ∧ (q ⟶ r) ⊢ p ∨ q ⟶ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_37_1:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ r) ∧ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∨ q ⟶ r&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  thus &amp;quot;r&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;p ⟶ r&amp;quot; using assms ..&lt;br /&gt;
    thus &amp;quot;r&amp;quot; using `p` ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;q ⟶ r&amp;quot; using assms ..&lt;br /&gt;
    thus &amp;quot;r&amp;quot; using `q` ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_37_2:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ r) ∧ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∨ q ⟶ r&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  thus &amp;quot;r&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;p ⟶ r&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
    thus &amp;quot;r&amp;quot; using `p` by (rule mp)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;q ⟶ r&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
    thus &amp;quot;r&amp;quot; using `q` by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_37_3:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ r) ∧ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∨ q ⟶ r&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 38. Demostrar&lt;br /&gt;
     p ∨ q ⟶ r ⊢ (p ⟶ r) ∧ (q ⟶ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_38_1:&lt;br /&gt;
  assumes &amp;quot;p ∨ q ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ⟶ r) ∧ (q ⟶ r)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  show &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    hence &amp;quot;p ∨ q&amp;quot; ..&lt;br /&gt;
    with assms show &amp;quot;r&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  show &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    hence &amp;quot;p ∨ q&amp;quot; ..&lt;br /&gt;
    with assms show &amp;quot;r&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_38_2:&lt;br /&gt;
  assumes &amp;quot;p ∨ q ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ⟶ r) ∧ (q ⟶ r)&amp;quot;&lt;br /&gt;
proof (rule conjI)&lt;br /&gt;
  show &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    hence &amp;quot;p ∨ q&amp;quot; by (rule disjI1)&lt;br /&gt;
    show &amp;quot;r&amp;quot; using assms `p ∨ q` by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  show &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    hence &amp;quot;p ∨ q&amp;quot; by (rule disjI2)&lt;br /&gt;
    show &amp;quot;r&amp;quot; using assms `p ∨ q` by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_38_3:&lt;br /&gt;
  assumes &amp;quot;p ∨ q ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ⟶ r) ∧ (q ⟶ r)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
section {* Negación *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 39. Demostrar&lt;br /&gt;
     p ⊢ ¬¬p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_39_1:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬¬p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  show &amp;quot;¬¬p&amp;quot; using assms by (rule notnotI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_39_2:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬¬p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 40. Demostrar&lt;br /&gt;
     ¬p ⊢ p ⟶ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_40_1:&lt;br /&gt;
  assumes &amp;quot;¬p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  with assms(1) show &amp;quot;q&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_40_2:&lt;br /&gt;
  assumes &amp;quot;¬p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  show &amp;quot;q&amp;quot; using assms(1) `p` by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_40_3:&lt;br /&gt;
  assumes &amp;quot;¬p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 41. Demostrar&lt;br /&gt;
     p ⟶ q ⊢ ¬q ⟶ ¬p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_41_1:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
  with assms(1) show &amp;quot;¬p&amp;quot; by (rule mt)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_41_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
  show &amp;quot;¬p&amp;quot; using assms(1) `¬q` by (rule mt)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_41_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 42. Demostrar&lt;br /&gt;
     p ∨ q, ¬q ⊢ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_42_1:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
          &amp;quot;¬q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p&amp;quot;&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  thus &amp;quot;p&amp;quot; .&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;q&amp;quot;&lt;br /&gt;
  with assms(2) show &amp;quot;p&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_42_2:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
          &amp;quot;¬q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p&amp;quot;&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  thus &amp;quot;p&amp;quot; by this&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;q&amp;quot;&lt;br /&gt;
  show &amp;quot;p&amp;quot; using assms(2) `q` by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_42_3:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
          &amp;quot;¬q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 42. Demostrar&lt;br /&gt;
     p ∨ q, ¬p ⊢ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_43_1:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
          &amp;quot;¬p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q&amp;quot;&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  with assms(2) show &amp;quot;q&amp;quot; ..&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;q&amp;quot;&lt;br /&gt;
  thus &amp;quot;q&amp;quot; .&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_43_2:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
          &amp;quot;¬p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q&amp;quot;&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  show &amp;quot;q&amp;quot; using assms(2) `p` by (rule notE)&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;q&amp;quot;&lt;br /&gt;
  thus &amp;quot;q&amp;quot; by this&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_43_3:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
          &amp;quot;¬p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 44. Demostrar&lt;br /&gt;
     p ∨ q ⊢ ¬(¬p ∧ ¬q)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_44_1:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(¬p ∧ ¬q)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;¬p ∧ ¬q&amp;quot;&lt;br /&gt;
  note `p ∨ q`&lt;br /&gt;
  thus &amp;quot;False&amp;quot; &lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;¬p&amp;quot; using `¬p ∧ ¬q` .. &lt;br /&gt;
    thus &amp;quot;False&amp;quot; using `p` ..&lt;br /&gt;
  next &lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;¬q&amp;quot; using `¬p ∧ ¬q` .. &lt;br /&gt;
    thus &amp;quot;False&amp;quot; using `q` ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_44_2:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(¬p ∧ ¬q)&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume &amp;quot;¬p ∧ ¬q&amp;quot;&lt;br /&gt;
  note `p ∨ q`&lt;br /&gt;
  thus &amp;quot;False&amp;quot; &lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;¬p&amp;quot; using `¬p ∧ ¬q` by (rule conjunct1) &lt;br /&gt;
    thus &amp;quot;False&amp;quot; using `p` by (rule notE)&lt;br /&gt;
  next &lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;¬q&amp;quot; using `¬p ∧ ¬q` by (rule conjunct2)&lt;br /&gt;
    thus &amp;quot;False&amp;quot; using `q` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_44_3:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(¬p ∧ ¬q)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 45. Demostrar&lt;br /&gt;
     p ∧ q ⊢ ¬(¬p ∨ ¬q)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_45_1:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(¬p ∨ ¬q)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
  thus &amp;quot;False&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    have &amp;quot;p&amp;quot; using assms ..&lt;br /&gt;
    with `¬p` show &amp;quot;False&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
    have &amp;quot;q&amp;quot; using assms ..&lt;br /&gt;
    with `¬q` show &amp;quot;False&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_45_2:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(¬p ∨ ¬q)&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
  thus &amp;quot;False&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    have &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
    show &amp;quot;False&amp;quot; using `¬p` `p` by (rule notE)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
    have &amp;quot;q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
    show &amp;quot;False&amp;quot; using `¬q` `q` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_45_3:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(¬p ∨ ¬q)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 46. Demostrar&lt;br /&gt;
     ¬(p ∨ q) ⊢ ¬p ∧ ¬q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_46_1:&lt;br /&gt;
  assumes &amp;quot;¬(p ∨ q)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬p ∧ ¬q&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  show &amp;quot;¬p&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    hence &amp;quot;p ∨ q&amp;quot; ..&lt;br /&gt;
    with assms show &amp;quot;False&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  show &amp;quot;¬q&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    hence &amp;quot;p ∨ q&amp;quot; ..&lt;br /&gt;
    with assms show &amp;quot;False&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_46_2:&lt;br /&gt;
  assumes &amp;quot;¬(p ∨ q)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬p ∧ ¬q&amp;quot;&lt;br /&gt;
proof (rule conjI)&lt;br /&gt;
  show &amp;quot;¬p&amp;quot;&lt;br /&gt;
  proof (rule notI)&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    hence &amp;quot;p ∨ q&amp;quot; by (rule disjI1)&lt;br /&gt;
    show &amp;quot;False&amp;quot; using assms `p ∨ q` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  show &amp;quot;¬q&amp;quot;&lt;br /&gt;
  proof (rule notI)&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    hence &amp;quot;p ∨ q&amp;quot; by (rule disjI2)&lt;br /&gt;
    show &amp;quot;False&amp;quot; using assms `p ∨ q` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_46_3:&lt;br /&gt;
  assumes &amp;quot;¬(p ∨ q)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬p ∧ ¬q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 47. Demostrar&lt;br /&gt;
     ¬p ∧ ¬q ⊢ ¬(p ∨ q)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_47_1:&lt;br /&gt;
  assumes &amp;quot;¬p ∧ ¬q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(p ∨ q)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  thus False&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;¬p&amp;quot; using assms ..&lt;br /&gt;
    thus False using `p` ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;¬q&amp;quot; using assms ..&lt;br /&gt;
    thus False using `q` ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_47_2:&lt;br /&gt;
  assumes &amp;quot;¬p ∧ ¬q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(p ∨ q)&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  thus False&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;¬p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
    thus False using `p` by (rule notE)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;¬q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
    thus False using `q` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_47_3:&lt;br /&gt;
  assumes &amp;quot;¬p ∧ ¬q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(p ∨ q)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 48. Demostrar&lt;br /&gt;
     ¬p ∨ ¬q ⊢ ¬(p ∧ q)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_48_1:&lt;br /&gt;
  assumes &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(p ∧ q)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
  note `¬p ∨ ¬ q`&lt;br /&gt;
  thus False&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    have &amp;quot;p&amp;quot; using `p ∧ q` ..&lt;br /&gt;
    with `¬p` show False ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
    have &amp;quot;q&amp;quot; using `p ∧ q` ..&lt;br /&gt;
    with `¬q` show False ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_48_2:&lt;br /&gt;
  assumes &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(p ∧ q)&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
  note `¬p ∨ ¬ q`&lt;br /&gt;
  thus False&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    have &amp;quot;p&amp;quot; using `p ∧ q` by (rule conjunct1)&lt;br /&gt;
    show False using `¬p` `p` by (rule notE)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
    have &amp;quot;q&amp;quot; using `p ∧ q` by (rule conjunct2)&lt;br /&gt;
    show False using `¬q` `q` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_48_3:&lt;br /&gt;
  assumes &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(p ∧ q)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 49. Demostrar&lt;br /&gt;
     ⊢ ¬(p ∧ ¬p)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_49_1:&lt;br /&gt;
  &amp;quot;¬(p ∧ ¬p)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;p ∧ ¬p&amp;quot;&lt;br /&gt;
  hence &amp;quot;p&amp;quot; ..&lt;br /&gt;
  have &amp;quot;¬p&amp;quot; using `p ∧ ¬p` ..&lt;br /&gt;
  thus False using `p` .. &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_49_2:&lt;br /&gt;
  &amp;quot;¬(p ∧ ¬p)&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume &amp;quot;p ∧ ¬p&amp;quot;&lt;br /&gt;
  hence &amp;quot;p&amp;quot; by (rule conjunct1)&lt;br /&gt;
  have &amp;quot;¬p&amp;quot; using `p ∧ ¬p` by (rule conjunct2)&lt;br /&gt;
  thus False using `p` by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_49_3:&lt;br /&gt;
  &amp;quot;¬(p ∧ ¬p)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 50. Demostrar&lt;br /&gt;
     p ∧ ¬p ⊢ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_50_1:&lt;br /&gt;
  assumes &amp;quot;p ∧ ¬p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;p&amp;quot; using assms ..&lt;br /&gt;
  have &amp;quot;¬p&amp;quot; using assms ..&lt;br /&gt;
  thus &amp;quot;q&amp;quot; using `p` ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_50_2:&lt;br /&gt;
  assumes &amp;quot;p ∧ ¬p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
  have &amp;quot;¬p&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
  thus &amp;quot;q&amp;quot; using `p` by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_50_3:&lt;br /&gt;
  assumes &amp;quot;p ∧ ¬p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 51. Demostrar&lt;br /&gt;
     ¬¬p ⊢ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_51_1:&lt;br /&gt;
  assumes &amp;quot;¬¬p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by (rule notnotD)&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_51_2:&lt;br /&gt;
  assumes &amp;quot;¬¬p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 52. Demostrar&lt;br /&gt;
     ⊢ p ∨ ¬p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_52_1:&lt;br /&gt;
  &amp;quot;p ∨ ¬p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;¬¬p ∨ ¬p&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;p ∨ ¬p&amp;quot; by simp&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_52_2:&lt;br /&gt;
  &amp;quot;p ∨ ¬p&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;¬¬p ∨ ¬p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
  thus &amp;quot;p ∨ ¬p&amp;quot; by simp&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_52_3:&lt;br /&gt;
  &amp;quot;p ∨ ¬p&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 53. Demostrar&lt;br /&gt;
     ⊢ ((p ⟶ q) ⟶ p) ⟶ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_53_1:&lt;br /&gt;
  &amp;quot;((p ⟶ q) ⟶ p) ⟶ p&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;(p ⟶ q) ⟶ p&amp;quot;&lt;br /&gt;
  show &amp;quot;p&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    have &amp;quot;¬(p ⟶ q)&amp;quot; using `(p ⟶ q) ⟶ p` `¬p` by (rule mt)&lt;br /&gt;
    have &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;p&amp;quot;&lt;br /&gt;
      with `¬p` show &amp;quot;q&amp;quot; ..&lt;br /&gt;
    qed&lt;br /&gt;
    show False using `¬(p ⟶ q)` `p ⟶ q` .. &lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_53_2:&lt;br /&gt;
  &amp;quot;((p ⟶ q) ⟶ p) ⟶ p&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;(p ⟶ q) ⟶ p&amp;quot;&lt;br /&gt;
  show &amp;quot;p&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    have &amp;quot;¬(p ⟶ q)&amp;quot; using `(p ⟶ q) ⟶ p` `¬p` by (rule mt)&lt;br /&gt;
    have &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
    proof (rule impI)&lt;br /&gt;
      assume &amp;quot;p&amp;quot;&lt;br /&gt;
      show &amp;quot;q&amp;quot; using `¬p` `p` by (rule notE)&lt;br /&gt;
    qed&lt;br /&gt;
    show False using `¬(p ⟶ q)` `p ⟶ q` by (rule notE) &lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_53_3:&lt;br /&gt;
  &amp;quot;((p ⟶ q) ⟶ p) ⟶ p&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 54. Demostrar&lt;br /&gt;
     ¬q ⟶ ¬p ⊢ p ⟶ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_54_1:&lt;br /&gt;
  assumes &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  show &amp;quot;q&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
    with assms have &amp;quot;¬p&amp;quot; ..&lt;br /&gt;
    thus False using `p` ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_54_2:&lt;br /&gt;
  assumes &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;p&amp;quot;&lt;br /&gt;
  show &amp;quot;q&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
    have &amp;quot;¬p&amp;quot; using assms `¬q` by (rule mp)&lt;br /&gt;
    thus False using `p` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_54_3:&lt;br /&gt;
  assumes &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 55. Demostrar&lt;br /&gt;
     ¬(¬p ∧ ¬q) ⊢ p ∨ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_55_1:&lt;br /&gt;
  assumes &amp;quot;¬(¬p ∧ ¬q)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;¬p ∨ p&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    have &amp;quot;¬q ∨ q&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
      with `¬p` have &amp;quot;¬p ∧ ¬q&amp;quot; ..&lt;br /&gt;
      with assms show &amp;quot;p ∨ q&amp;quot; ..&lt;br /&gt;
    next&lt;br /&gt;
      assume &amp;quot;q&amp;quot;&lt;br /&gt;
      thus &amp;quot;p ∨ q&amp;quot; ..&lt;br /&gt;
    qed&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    thus &amp;quot;p ∨ q&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_55_2:&lt;br /&gt;
  assumes &amp;quot;¬(¬p ∧ ¬q)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;¬p ∨ p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
  thus &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    have &amp;quot;¬q ∨ q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
    thus &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
      have &amp;quot;¬p ∧ ¬q&amp;quot; using `¬p` `¬q` by (rule conjI)&lt;br /&gt;
      show &amp;quot;p ∨ q&amp;quot; using assms `¬p ∧ ¬q` by (rule notE)&lt;br /&gt;
    next&lt;br /&gt;
      assume &amp;quot;q&amp;quot;&lt;br /&gt;
      thus &amp;quot;p ∨ q&amp;quot; by (rule disjI2)&lt;br /&gt;
    qed&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    thus &amp;quot;p ∨ q&amp;quot; by (rule disjI1)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_55_3:&lt;br /&gt;
  assumes &amp;quot;¬(¬p ∧ ¬q)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 56. Demostrar&lt;br /&gt;
     ¬(¬p ∨ ¬q) ⊢ p ∧ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_56_1:&lt;br /&gt;
  assumes &amp;quot;¬(¬p ∨ ¬q)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  show &amp;quot;p&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    hence &amp;quot;¬p ∨ ¬q&amp;quot; ..&lt;br /&gt;
    with assms show False ..&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  show &amp;quot;q&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
    hence &amp;quot;¬p ∨ ¬q&amp;quot; ..&lt;br /&gt;
    with assms show False ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_56_2:&lt;br /&gt;
  assumes &amp;quot;¬(¬p ∨ ¬q)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
proof (rule conjI)&lt;br /&gt;
  show &amp;quot;p&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    hence &amp;quot;¬p ∨ ¬q&amp;quot; by (rule disjI1)&lt;br /&gt;
    show False using assms `¬p ∨ ¬q` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  show &amp;quot;q&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
    hence &amp;quot;¬p ∨ ¬q&amp;quot; by (rule disjI2)&lt;br /&gt;
    show False using assms `¬p ∨ ¬q` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_56_3:&lt;br /&gt;
  assumes &amp;quot;¬(¬p ∨ ¬q)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 57. Demostrar&lt;br /&gt;
     ¬(p ∧ q) ⊢ ¬p ∨ ¬q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_57_1:&lt;br /&gt;
  assumes &amp;quot;¬(p ∧ q)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;¬p ∨ p&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    thus &amp;quot;¬p ∨ ¬q&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;¬q ∨ q&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;¬p ∨ ¬q&amp;quot; &lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
      thus &amp;quot;¬p ∨ ¬q&amp;quot; ..&lt;br /&gt;
    next&lt;br /&gt;
      assume &amp;quot;q&amp;quot;&lt;br /&gt;
      with `p` have &amp;quot;p ∧ q&amp;quot; ..&lt;br /&gt;
      with assms show &amp;quot;¬p ∨ ¬q&amp;quot; ..&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_57_2:&lt;br /&gt;
  assumes &amp;quot;¬(p ∧ q)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;¬p ∨ p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
  thus &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    thus &amp;quot;¬p ∨ ¬q&amp;quot; by (rule disjI1)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;¬q ∨ q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
    thus &amp;quot;¬p ∨ ¬q&amp;quot; &lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
      thus &amp;quot;¬p ∨ ¬q&amp;quot; by (rule disjI2)&lt;br /&gt;
    next&lt;br /&gt;
      assume &amp;quot;q&amp;quot;&lt;br /&gt;
      have &amp;quot;p ∧ q&amp;quot; using `p` `q` by (rule conjI)&lt;br /&gt;
      show &amp;quot;¬p ∨ ¬q&amp;quot; using assms `p ∧ q` by (rule notE) &lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_57_3:&lt;br /&gt;
  assumes &amp;quot;¬(p ∧ q)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 58. Demostrar&lt;br /&gt;
     ⊢ (p ⟶ q) ∨ (q ⟶ p)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_58_1:&lt;br /&gt;
  &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;¬p ∨ p&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    have &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;p&amp;quot;&lt;br /&gt;
      with `¬p` show &amp;quot;q&amp;quot; ..&lt;br /&gt;
    qed&lt;br /&gt;
    thus &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;q ⟶ p&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;q&amp;quot;&lt;br /&gt;
      show &amp;quot;p&amp;quot; using `p` .&lt;br /&gt;
    qed&lt;br /&gt;
    thus &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_58_2:&lt;br /&gt;
  &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;¬p ∨ p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
  thus &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    have &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
    proof (rule impI)&lt;br /&gt;
      assume &amp;quot;p&amp;quot;&lt;br /&gt;
      show &amp;quot;q&amp;quot; using `¬p` `p` by (rule notE)&lt;br /&gt;
    qed&lt;br /&gt;
    thus &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; by (rule disjI1)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;q ⟶ p&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;q&amp;quot;&lt;br /&gt;
      show &amp;quot;p&amp;quot; using `p` by this&lt;br /&gt;
    qed&lt;br /&gt;
    thus &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; by (rule disjI2)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_58_3:&lt;br /&gt;
  &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_8&amp;diff=186</id>
		<title>RA12 Relación 8</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_8&amp;diff=186"/>
		<updated>2018-07-15T12:00:39Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «&amp;quot;isar&amp;quot;» por «&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R8: Razonamiento sobre programas en Isabelle/HOL *}&lt;br /&gt;
&lt;br /&gt;
theory R8&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;
     sumaImpares :: nat ⇒ nat&lt;br /&gt;
  tal que (sumaImpares n) es la suma de los n primeros números&lt;br /&gt;
  impares. Por ejemplo,&lt;br /&gt;
     sumaImpares 5  =  25&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun sumaImpares :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;sumaImpares n = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;sumaImpares 5&amp;quot; -- &amp;quot;= 25&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Demostrar que &lt;br /&gt;
     sumaImpares n = n*n&lt;br /&gt;
  ------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;sumaImpares n = n*n&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. 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;
fun sumaPotenciasDeDosMasUno :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;sumaPotenciasDeDosMasUno n = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;sumaPotenciasDeDosMasUno 3&amp;quot; -- &amp;quot;= 16&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Demostrar que &lt;br /&gt;
     sumaPotenciasDeDosMasUno n = 2^(n+1)&lt;br /&gt;
  ------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;sumaPotenciasDeDosMasUno n = 2^(n+1)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Definir la función&lt;br /&gt;
     copia :: nat ⇒ &amp;#039;a ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (copia n x) es la lista formado por n copias del elemento&lt;br /&gt;
  x. Por ejemplo, &lt;br /&gt;
     copia 3 x = [x,x,x]&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun copia :: &amp;quot;nat ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;copia n x = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;copia 3 x&amp;quot; -- &amp;quot;= [x,x,x]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. 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;
&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 xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;todos (λx. x&amp;gt;(1::nat)) [2,6,4]&amp;quot; -- &amp;quot;= True&amp;quot;&lt;br /&gt;
value &amp;quot;todos (λx. x&amp;gt;(2::nat)) [2,6,4]&amp;quot; -- &amp;quot;= False&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Demostrar que todos los elementos de (copia n x) son&lt;br /&gt;
  iguales a x. &lt;br /&gt;
  ------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;todos (λy. y=x) (copia n x)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Definir la función&lt;br /&gt;
    factR :: nat ⇒ nat&lt;br /&gt;
  tal que (factR n) es el factorial de n. Por ejemplo,&lt;br /&gt;
    factR 4 = 24&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun factR :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;factR n = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;factR 4&amp;quot; -- &amp;quot;= 24&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Se considera la siguiente definición iterativa de la&lt;br /&gt;
  función factorial &lt;br /&gt;
     factI :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
     factI n = factI&amp;#039; n 1&lt;br /&gt;
     &lt;br /&gt;
     factI&amp;#039; :: nat ⇒ nat ⇒ nat&amp;quot; where&lt;br /&gt;
     factI&amp;#039; 0       x = x&lt;br /&gt;
     factI&amp;#039; (Suc n) x = factI&amp;#039; n (Suc n)*x&lt;br /&gt;
  Demostrar que, para todo n y todo x, se tiene &lt;br /&gt;
     factI&amp;#039; n x = x * factR n&lt;br /&gt;
  ------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
fun factI&amp;#039; :: &amp;quot;nat ⇒ nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;factI&amp;#039; 0       x = x&amp;quot;&lt;br /&gt;
| &amp;quot;factI&amp;#039; (Suc n) x = factI&amp;#039; n (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; -- &amp;quot;= 24&amp;quot;&lt;br /&gt;
     &lt;br /&gt;
lemma fact: &amp;quot;factI&amp;#039; n x = x * factR n&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Demostrar que&lt;br /&gt;
     factI n = factR n&lt;br /&gt;
  ------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
corollary &amp;quot;factI n = factR n&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. 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;
&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 xs y = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;amplia [d,a] t&amp;quot; -- &amp;quot;= [d,a,t]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Demostrar que &lt;br /&gt;
     amplia xs y = xs @ [y]&lt;br /&gt;
  ------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;amplia xs y = xs @ [y]&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_12&amp;diff=185</id>
		<title>RA12 Relación 12</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_12&amp;diff=185"/>
		<updated>2018-07-15T12:00:38Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «&amp;quot;isar&amp;quot;» por «&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R12: Menor posición válida *}&lt;br /&gt;
&lt;br /&gt;
theory R12&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Definir la función&lt;br /&gt;
     menorValida :: &amp;quot;(&amp;#039;a ⇒ bool) ⇒ &amp;#039;a list ⇒ nat&amp;quot;&lt;br /&gt;
  tal que (menorValida p xs) es el índice del primer elemento de una&lt;br /&gt;
  lista xs que satisface el predicado p y es la longitud de xs si&lt;br /&gt;
  ningún elemento satisface el predicado p. Por ejemplo, &lt;br /&gt;
     menorValida (λx. 4&amp;lt;x) [1::nat, 3, 5, 3, 1]     = 2&lt;br /&gt;
     menorValida (λx. 6&amp;lt;x) [1::nat, 3, 5, 3, 1]     = 5&lt;br /&gt;
     menorValida (λx. 1&amp;lt;length x) [[], [1, 2], [3]] = 1&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun menorValida :: &amp;quot;(&amp;#039;a ⇒ bool) ⇒ &amp;#039;a list ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;menorValida P xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Demostrar que menorValida devuelve la longitud de la&lt;br /&gt;
  lista syss ningún elemento satisface el predicado dado.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;(menorValida P xs = length xs) = list_all (λ x. (¬ P x)) xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Demostrar si n es el valor de (menorValida P xs),&lt;br /&gt;
  entonces ninguno de los primeros n elementos de la lista xs verifica&lt;br /&gt;
  la propiedad P. &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;list_all (λx. ¬ P x) (take (menorValida P xs) xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. ¿Cómo se puede relacionar &lt;br /&gt;
    &amp;quot;menorValida (λx. P x ∨ Q x) xs&amp;quot; &lt;br /&gt;
  con &lt;br /&gt;
    &amp;quot;menorValida P xs&amp;quot; y &amp;quot;menorValida Q xs&amp;quot;? &lt;br /&gt;
  ¿Se puede decir algo parecido con la conjunción de P y Q?  &lt;br /&gt;
  Prueba tus conjeturas.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5.  Si P implica Q, ¿qué relación puede deducirse entre &lt;br /&gt;
  &amp;quot;menorValida P xs&amp;quot; y &amp;quot;menorValida Q xs&amp;quot;? Prueba tu conjetura.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=Rel_3&amp;diff=183</id>
		<title>Rel 3</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=Rel_3&amp;diff=183"/>
		<updated>2018-07-15T12:00:21Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «lang=&amp;quot;isar&amp;quot;» por «lang=&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* T3R1: Deducción natural proposicional *}&lt;br /&gt;
&lt;br /&gt;
theory T3R1&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  El objetivo de esta relación es demostrar cada uno de los ejercicios&lt;br /&gt;
  usando sólo las reglas básicas de deducción natural de la lógica&lt;br /&gt;
  proposicional (sin usar el método auto).&lt;br /&gt;
&lt;br /&gt;
  Las reglas básicas de la deducción natural son las siguientes:&lt;br /&gt;
  · conjI:      ⟦P; Q⟧ ⟹ P ∧ Q&lt;br /&gt;
  · conjunct1:  P ∧ Q ⟹ P&lt;br /&gt;
  · conjunct2:  P ∧ Q ⟹ Q  &lt;br /&gt;
  · notnotD:    ¬¬ P ⟹ P&lt;br /&gt;
  · notnotI:    P ⟹ ¬¬ P&lt;br /&gt;
  · mp:         ⟦P ⟶ Q; P⟧ ⟹ Q &lt;br /&gt;
  · mt:         ⟦F ⟶ G; ¬G⟧ ⟹ ¬F &lt;br /&gt;
  · impI:       (P ⟹ Q) ⟹ P ⟶ Q&lt;br /&gt;
  · disjI1:     P ⟹ P ∨ Q&lt;br /&gt;
  · disjI2:     Q ⟹ P ∨ Q&lt;br /&gt;
  · disjE:      ⟦P ∨ Q; P ⟹ R; Q ⟹ R⟧ ⟹ R &lt;br /&gt;
  · FalseE:     False ⟹ P&lt;br /&gt;
  · notE:       ⟦¬P; P⟧ ⟹ R&lt;br /&gt;
  · notI:       (P ⟹ False) ⟹ ¬P&lt;br /&gt;
  · iffI:       ⟦P ⟹ Q; Q ⟹ P⟧ ⟹ P = Q&lt;br /&gt;
  · iffD1:      ⟦Q = P; Q⟧ ⟹ P &lt;br /&gt;
  · iffD2:      ⟦P = Q; Q⟧ ⟹ P&lt;br /&gt;
  · ccontr:     (¬P ⟹ False) ⟹ P&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Se usarán las reglas notnotI y mt que demostramos a continuación. *}&lt;br /&gt;
&lt;br /&gt;
lemma notnotI: &amp;quot;P ⟹ ¬¬ P&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
lemma mt: &amp;quot;⟦F ⟶ G; ¬G⟧ ⟹ ¬F&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
section {* Implicaciones *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Demostrar&lt;br /&gt;
       p ⟶ q, p ⊢ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_1:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;p&amp;quot;&lt;br /&gt;
  shows &amp;quot;q&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Demostrar&lt;br /&gt;
     p ⟶ q, q ⟶ r, p ⊢ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_2:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
          &amp;quot;p&amp;quot; &lt;br /&gt;
  shows &amp;quot;r&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Demostrar&lt;br /&gt;
     p ⟶ (q ⟶ r), p ⟶ q, p ⊢ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_3:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
          &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;p&amp;quot;&lt;br /&gt;
  shows &amp;quot;r&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Demostrar&lt;br /&gt;
     p ⟶ q, q ⟶ r ⊢ p ⟶ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_4:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
          &amp;quot;q ⟶ r&amp;quot; &lt;br /&gt;
  shows &amp;quot;p ⟶ r&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Demostrar&lt;br /&gt;
     p ⟶ (q ⟶ r) ⊢ q ⟶ (p ⟶ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_5:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Demostrar&lt;br /&gt;
     p ⟶ (q ⟶ r) ⊢ (p ⟶ q) ⟶ (p ⟶ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_6:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ⟶ q) ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Demostrar&lt;br /&gt;
     p ⊢ q ⟶ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_7:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot;  &lt;br /&gt;
  shows   &amp;quot;q ⟶ p&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Demostrar&lt;br /&gt;
     ⊢ p ⟶ (q ⟶ p)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_8:&lt;br /&gt;
  &amp;quot;p ⟶ (q ⟶ p)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Demostrar&lt;br /&gt;
     p ⟶ q ⊢ (q ⟶ r) ⟶ (p ⟶ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_9:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(q ⟶ r) ⟶ (p ⟶ r)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Demostrar&lt;br /&gt;
     p ⟶ (q ⟶ (r ⟶ s)) ⊢ r ⟶ (q ⟶ (p ⟶ s))&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_10:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ (r ⟶ s))&amp;quot; &lt;br /&gt;
  shows   &amp;quot;r ⟶ (q ⟶ (p ⟶ s))&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Demostrar&lt;br /&gt;
     ⊢ (p ⟶ (q ⟶ r)) ⟶ ((p ⟶ q) ⟶ (p ⟶ r))&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_11:&lt;br /&gt;
  &amp;quot;(p ⟶ (q ⟶ r)) ⟶ ((p ⟶ q) ⟶ (p ⟶ r))&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Demostrar&lt;br /&gt;
     (p ⟶ q) ⟶ r ⊢ p ⟶ (q ⟶ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_12:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ q) ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
section {* Conjunciones *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 13. Demostrar&lt;br /&gt;
     p, q ⊢  p ∧ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_13:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot;&lt;br /&gt;
          &amp;quot;q&amp;quot; &lt;br /&gt;
  shows &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 14. Demostrar&lt;br /&gt;
     p ∧ q ⊢ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_14:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot;  &lt;br /&gt;
  shows   &amp;quot;p&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 15. Demostrar&lt;br /&gt;
     p ∧ q ⊢ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_15:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 16. Demostrar&lt;br /&gt;
     p ∧ (q ∧ r) ⊢ (p ∧ q) ∧ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_16:&lt;br /&gt;
  assumes &amp;quot;p ∧ (q ∧ r)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(p ∧ q) ∧ r&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 17. Demostrar&lt;br /&gt;
     (p ∧ q) ∧ r ⊢ p ∧ (q ∧ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_17:&lt;br /&gt;
  assumes &amp;quot;(p ∧ q) ∧ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ (q ∧ r)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 18. Demostrar&lt;br /&gt;
     p ∧ q ⊢ p ⟶ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_18:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 19. Demostrar&lt;br /&gt;
     (p ⟶ q) ∧ (p ⟶ r) ⊢ p ⟶ q ∧ r   &lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_19:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ q ∧ r&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 20. Demostrar&lt;br /&gt;
     p ⟶ q ∧ r ⊢ (p ⟶ q) ∧ (p ⟶ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_20:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q ∧ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 21. Demostrar&lt;br /&gt;
     p ⟶ (q ⟶ r) ⊢ p ∧ q ⟶ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_21:&lt;br /&gt;
  assumes &amp;quot;p ⟶ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ q ⟶ r&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 22. Demostrar&lt;br /&gt;
     p ∧ q ⟶ r ⊢ p ⟶ (q ⟶ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_22:&lt;br /&gt;
  assumes &amp;quot;p ∧ q ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ (q ⟶ r)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 23. Demostrar&lt;br /&gt;
     (p ⟶ q) ⟶ r ⊢ p ∧ q ⟶ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_23:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ q) ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ q ⟶ r&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 24. Demostrar&lt;br /&gt;
     p ∧ (q ⟶ r) ⊢ (p ⟶ q) ⟶ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_24:&lt;br /&gt;
  assumes &amp;quot;p ∧ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ⟶ q) ⟶ r&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
section {* Disyunciones *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 25. Demostrar&lt;br /&gt;
     p ⊢ p ∨ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_25:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 26. Demostrar&lt;br /&gt;
     q ⊢ p ∨ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_26:&lt;br /&gt;
  assumes &amp;quot;q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 27. Demostrar&lt;br /&gt;
     p ∨ q ⊢ q ∨ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_27:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;q ∨ p&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 28. Demostrar&lt;br /&gt;
     q ⟶ r ⊢ p ∨ q ⟶ p ∨ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_28:&lt;br /&gt;
  assumes &amp;quot;q ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∨ q ⟶ p ∨ r&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 29. Demostrar&lt;br /&gt;
     p ∨ p ⊢ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_29:&lt;br /&gt;
  assumes &amp;quot;p ∨ p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 30. Demostrar&lt;br /&gt;
     p ⊢ p ∨ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_30:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∨ p&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 31. Demostrar&lt;br /&gt;
     p ∨ (q ∨ r) ⊢ (p ∨ q) ∨ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_31:&lt;br /&gt;
  assumes &amp;quot;p ∨ (q ∨ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ∨ q) ∨ r&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 32. Demostrar&lt;br /&gt;
     (p ∨ q) ∨ r ⊢ p ∨ (q ∨ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_32:&lt;br /&gt;
  assumes &amp;quot;(p ∨ q) ∨ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∨ (q ∨ r)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 33. Demostrar&lt;br /&gt;
     p ∧ (q ∨ r) ⊢ (p ∧ q) ∨ (p ∧ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_33:&lt;br /&gt;
  assumes &amp;quot;p ∧ (q ∨ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 34. Demostrar&lt;br /&gt;
     (p ∧ q) ∨ (p ∧ r) ⊢ p ∧ (q ∨ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_34:&lt;br /&gt;
  assumes &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ (q ∨ r)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 35. Demostrar&lt;br /&gt;
     p ∨ (q ∧ r) ⊢ (p ∨ q) ∧ (p ∨ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_35:&lt;br /&gt;
  assumes &amp;quot;p ∨ (q ∧ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 36. Demostrar&lt;br /&gt;
     (p ∨ q) ∧ (p ∨ r) ⊢ p ∨ (q ∧ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_36:&lt;br /&gt;
  assumes &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∨ (q ∧ r)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 37. Demostrar&lt;br /&gt;
     (p ⟶ r) ∧ (q ⟶ r) ⊢ p ∨ q ⟶ r&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_37:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ r) ∧ (q ⟶ r)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∨ q ⟶ r&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 38. Demostrar&lt;br /&gt;
     p ∨ q ⟶ r ⊢ (p ⟶ r) ∧ (q ⟶ r)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_38:&lt;br /&gt;
  assumes &amp;quot;p ∨ q ⟶ r&amp;quot; &lt;br /&gt;
  shows   &amp;quot;(p ⟶ r) ∧ (q ⟶ r)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
section {* Negaciones *}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 39. Demostrar&lt;br /&gt;
     p ⊢ ¬¬p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_39:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬¬p&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 40. Demostrar&lt;br /&gt;
     ¬p ⊢ p ⟶ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_40:&lt;br /&gt;
  assumes &amp;quot;¬p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 41. Demostrar&lt;br /&gt;
     p ⟶ q ⊢ ¬q ⟶ ¬p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_41:&lt;br /&gt;
  assumes &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 42. Demostrar&lt;br /&gt;
     p∨q, ¬q ⊢ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_42:&lt;br /&gt;
  assumes &amp;quot;p∨q&amp;quot;&lt;br /&gt;
          &amp;quot;¬q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 42. Demostrar&lt;br /&gt;
     p ∨ q, ¬p ⊢ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_43:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
          &amp;quot;¬p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 40. Demostrar&lt;br /&gt;
     p ∨ q ⊢ ¬(¬p ∧ ¬q)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_44:&lt;br /&gt;
  assumes &amp;quot;p ∨ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(¬p ∧ ¬q)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 45. Demostrar&lt;br /&gt;
     p ∧ q ⊢ ¬(¬p ∨ ¬q)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_45:&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(¬p ∨ ¬q)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 46. Demostrar&lt;br /&gt;
     ¬(p ∨ q) ⊢ ¬p ∧ ¬q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_46:&lt;br /&gt;
  assumes &amp;quot;¬(p ∨ q)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬p ∧ ¬q&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 47. Demostrar&lt;br /&gt;
     ¬p ∧ ¬q ⊢ ¬(p ∨ q)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_47:&lt;br /&gt;
  assumes &amp;quot;¬p ∧ ¬q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(p ∨ q)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 48. Demostrar&lt;br /&gt;
     ¬p ∨ ¬q ⊢ ¬(p ∧ q)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_48:&lt;br /&gt;
  assumes &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(p ∧ q)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 49. Demostrar&lt;br /&gt;
     ⊢ ¬(p ∧ ¬p)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_49:&lt;br /&gt;
  &amp;quot;¬(p ∧ ¬p)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 50. Demostrar&lt;br /&gt;
     p ∧ ¬p ⊢ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_50:&lt;br /&gt;
  assumes &amp;quot;p ∧ ¬p&amp;quot; &lt;br /&gt;
  shows   &amp;quot;q&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 51. Demostrar&lt;br /&gt;
     ¬¬p ⊢ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_51:&lt;br /&gt;
  assumes &amp;quot;¬¬p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 52. Demostrar&lt;br /&gt;
     ⊢ p ∨ ¬p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_52:&lt;br /&gt;
  &amp;quot;p ∨ ¬p&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 53. Demostrar&lt;br /&gt;
     ⊢ ((p ⟶ q) ⟶ p) ⟶ p&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_53:&lt;br /&gt;
  &amp;quot;((p ⟶ q) ⟶ p) ⟶ p&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 54. Demostrar&lt;br /&gt;
     ¬q ⟶ ¬p ⊢ p ⟶ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_54:&lt;br /&gt;
  assumes &amp;quot;¬q ⟶ ¬p&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 55. Demostrar&lt;br /&gt;
     ¬(¬p ∧ ¬q) ⊢ p ∨ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_55:&lt;br /&gt;
  assumes &amp;quot;¬(¬p ∧ ¬q)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 56. Demostrar&lt;br /&gt;
     ¬(¬p ∨ ¬q) ⊢ p ∧ q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_56:&lt;br /&gt;
  assumes &amp;quot;¬(¬p ∨ ¬q)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 57. Demostrar&lt;br /&gt;
     ¬(p ∧ q) ⊢ ¬p ∨ ¬q&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_57:&lt;br /&gt;
  assumes &amp;quot;¬(p ∧ q)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 58. Demostrar&lt;br /&gt;
     ⊢ (p ⟶ q) ∨ (q ⟶ p)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_58:&lt;br /&gt;
  &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=GLC_T1R2&amp;diff=182</id>
		<title>GLC T1R2</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=GLC_T1R2&amp;diff=182"/>
		<updated>2018-07-15T12:00:12Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «&amp;quot;isar&amp;quot;» por «&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* T1R2: Argumentación proposicional *}&lt;br /&gt;
&lt;br /&gt;
theory T1R2&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  El objetivo de esta es relación formalizar y demostrar la corrección&lt;br /&gt;
  de los argumentos usando sólo las reglas básicas de deducción natural&lt;br /&gt;
  de la lógica proposicional (sin usar el método auto). &lt;br /&gt;
&lt;br /&gt;
  Las reglas básicas de la deducción natural son las siguientes:&lt;br /&gt;
  · conjI:      ⟦P; Q⟧ ⟹ P ∧ Q&lt;br /&gt;
  · conjunct1:  P ∧ Q ⟹ P&lt;br /&gt;
  · conjunct2:  P ∧ Q ⟹ Q  &lt;br /&gt;
  · notnotD:    ¬¬ P ⟹ P&lt;br /&gt;
  · notnotI:    P ⟹ ¬¬ P&lt;br /&gt;
  · mp:         ⟦P ⟶ Q; P⟧ ⟹ Q &lt;br /&gt;
  · mt:         ⟦F ⟶ G; ¬G⟧ ⟹ ¬F &lt;br /&gt;
  · impI:       (P ⟹ Q) ⟹ P ⟶ Q&lt;br /&gt;
  · disjI1:     P ⟹ P ∨ Q&lt;br /&gt;
  · disjI2:     Q ⟹ P ∨ Q&lt;br /&gt;
  · disjE:      ⟦P ∨ Q; P ⟹ R; Q ⟹ R⟧ ⟹ R &lt;br /&gt;
  · FalseE:     False ⟹ P&lt;br /&gt;
  · notE:       ⟦¬P; P⟧ ⟹ R&lt;br /&gt;
  · notI:       (P ⟹ False) ⟹ ¬P&lt;br /&gt;
  · iffI:       ⟦P ⟹ Q; Q ⟹ P⟧ ⟹ P = Q&lt;br /&gt;
  · iffD1:      ⟦Q = P; Q⟧ ⟹ P &lt;br /&gt;
  · iffD2:      ⟦P = Q; Q⟧ ⟹ P&lt;br /&gt;
  · ccontr:     (¬P ⟹ False) ⟹ P&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Se usarán las reglas notnotI y mt que demostramos a continuación.&lt;br /&gt;
  *}&lt;br /&gt;
&lt;br /&gt;
lemma notnotI: &amp;quot;P ⟹ ¬¬ P&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
lemma mt: &amp;quot;⟦F ⟶ G; ¬G⟧ ⟹ ¬F&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Cuando tanto la temperatura como la presión atmosférica permanecen&lt;br /&gt;
     contantes, no llueve. La temperatura permanece constante. Por lo&lt;br /&gt;
     tanto, en caso de que llueva, la presión atmosférica no permanece&lt;br /&gt;
     constante. &lt;br /&gt;
  Usar T para &amp;quot;La temperatura permanece constante&amp;quot;,&lt;br /&gt;
       P para &amp;quot;La presión atmosférica permanece constante&amp;quot; y&lt;br /&gt;
       L para &amp;quot;Llueve&amp;quot;.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_1_1:&lt;br /&gt;
  &amp;quot;⟦T ∧ P ⟶ ¬L; T⟧ ⟹ L ⟶ ¬P&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_1_2:&lt;br /&gt;
  assumes &amp;quot;T ∧ P ⟶ ¬L&amp;quot;&lt;br /&gt;
          &amp;quot;T&amp;quot;&lt;br /&gt;
  shows   &amp;quot;L ⟶ ¬P&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;L&amp;quot;&lt;br /&gt;
  show &amp;quot;¬P&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;P&amp;quot;&lt;br /&gt;
    with `T` have &amp;quot;T ∧ P&amp;quot; ..&lt;br /&gt;
    with assms(1) have &amp;quot;¬L&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;False&amp;quot; using `L` .. &lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_1_3:&lt;br /&gt;
  assumes &amp;quot;T ∧ P ⟶ ¬L&amp;quot;&lt;br /&gt;
          &amp;quot;T&amp;quot;&lt;br /&gt;
  shows   &amp;quot;L ⟶ ¬P&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;L&amp;quot;&lt;br /&gt;
  show &amp;quot;¬P&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;P&amp;quot;&lt;br /&gt;
    with `T` have &amp;quot;T ∧ P&amp;quot; by (rule conjI)&lt;br /&gt;
    with assms(1) have &amp;quot;¬L&amp;quot; by (rule mp)&lt;br /&gt;
    thus &amp;quot;False&amp;quot; using `L` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Siempre que un número x es divisible por 10, acaba en 0. El número&lt;br /&gt;
     x no acaba en 0. Por lo tanto, x no es divisible por 10. &lt;br /&gt;
  Usar D para &amp;quot;el número es divisible por 10&amp;quot; y&lt;br /&gt;
       C para &amp;quot;el número acaba en cero&amp;quot;.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_2_1:&lt;br /&gt;
  &amp;quot;⟦C ⟶ D; ¬D⟧ ⟹ ¬C&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_2_2:&lt;br /&gt;
  assumes &amp;quot;C ⟶ D&amp;quot; &lt;br /&gt;
          &amp;quot;¬D&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬C&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;C&amp;quot;&lt;br /&gt;
  with assms(1) have &amp;quot;D&amp;quot; .. &lt;br /&gt;
  with assms(2) show False ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_2_3:&lt;br /&gt;
  assumes &amp;quot;C ⟶ D&amp;quot; &lt;br /&gt;
          &amp;quot;¬D&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬C&amp;quot;&lt;br /&gt;
proof &lt;br /&gt;
  assume &amp;quot;C&amp;quot;&lt;br /&gt;
  with assms(1) have &amp;quot;D&amp;quot; by (rule mp)&lt;br /&gt;
  with assms(2) show False by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     En cierto experimento, cuando hemos empleado un fármaco A, el&lt;br /&gt;
     paciente ha mejorado considerablemente en el caso, y sólo en el&lt;br /&gt;
     caso, en que no se haya empleado también un fármaco B. Además, o se&lt;br /&gt;
     ha empleado el fármaco A o se ha empleado el fármaco B. En&lt;br /&gt;
     consecuencia, podemos afirmar que si no hemos empleado el fármaco&lt;br /&gt;
     B, el paciente ha mejorado considerablemente. &lt;br /&gt;
  Usar A: Hemos empleado el fármaco A.&lt;br /&gt;
       B: Hemos empleado el fármaco B.&lt;br /&gt;
       M: El paciente ha mejorado notablemente.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_3_1:&lt;br /&gt;
  assumes &amp;quot;A ⟶ (M ⟷ ¬B)&amp;quot;&lt;br /&gt;
          &amp;quot;A ∨ B&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬B ⟶ M&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_3_2:&lt;br /&gt;
  assumes &amp;quot;A ⟶ (M ⟷ ¬B)&amp;quot;&lt;br /&gt;
          &amp;quot;A ∨ B&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬B ⟶ M&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;¬B&amp;quot;&lt;br /&gt;
  note `A ∨ B`&lt;br /&gt;
  hence &amp;quot;A&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;A&amp;quot;&lt;br /&gt;
    thus &amp;quot;A&amp;quot; .&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;B&amp;quot;&lt;br /&gt;
    with `¬B` show &amp;quot;A&amp;quot; .. &lt;br /&gt;
  qed&lt;br /&gt;
  have &amp;quot;M ⟷ ¬B&amp;quot; using assms(1) `A` ..&lt;br /&gt;
  thus &amp;quot;M&amp;quot; using `¬B` ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_3_3:&lt;br /&gt;
  assumes &amp;quot;A ⟶ (M ⟷ ¬B)&amp;quot;&lt;br /&gt;
          &amp;quot;A ∨ B&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬B ⟶ M&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;¬B&amp;quot;&lt;br /&gt;
  note `A ∨ B`&lt;br /&gt;
  hence &amp;quot;A&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;A&amp;quot;&lt;br /&gt;
    thus &amp;quot;A&amp;quot; by this&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;B&amp;quot;&lt;br /&gt;
    with `¬B` show &amp;quot;A&amp;quot; by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
  have &amp;quot;M ⟷ ¬B&amp;quot; using assms(1) `A` by (rule mp)&lt;br /&gt;
  thus &amp;quot;M&amp;quot; using `¬B` by (rule iffD2)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento&lt;br /&gt;
     Si no está el mañana ni el ayer escrito, entonces no está el mañana&lt;br /&gt;
     escrito. &lt;br /&gt;
  Usar M: El mañana está escrito.&lt;br /&gt;
       A: El ayer está escrito.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es:&amp;quot;&lt;br /&gt;
lemma ejercicio_4_1:&lt;br /&gt;
  &amp;quot;¬M ∧ ¬A ⟹ ¬M&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es:&amp;quot;&lt;br /&gt;
lemma ejercicio_4_2:&lt;br /&gt;
  assumes &amp;quot;¬M ∧ ¬A&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬M&amp;quot;&lt;br /&gt;
using assms ..&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es:&amp;quot;&lt;br /&gt;
lemma ejercicio_4_3:&lt;br /&gt;
  assumes &amp;quot;¬M ∧ ¬A&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬M&amp;quot;&lt;br /&gt;
using assms by (rule conjunct1)&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Me matan si no trabajo y si trabajo me matan. Me matan siempre me&lt;br /&gt;
     matan. &lt;br /&gt;
  Usar M: Me matan.&lt;br /&gt;
       T: Trabajo.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_5_1: &lt;br /&gt;
  &amp;quot;(¬T ⟶ M) ∧ (T ⟶ M) ⟹ M&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_5_2: &lt;br /&gt;
  assumes &amp;quot;(¬T ⟶ M) ∧ (T ⟶ M)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;M&amp;quot;&lt;br /&gt;
proof - &lt;br /&gt;
  have &amp;quot;¬T ∨ T&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;M&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;¬T&amp;quot;&lt;br /&gt;
    have &amp;quot;¬T ⟶ M&amp;quot; using assms ..&lt;br /&gt;
    thus &amp;quot;M&amp;quot; using `¬T` ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;T&amp;quot;&lt;br /&gt;
    have &amp;quot;T ⟶ M&amp;quot; using assms ..&lt;br /&gt;
    thus &amp;quot;M&amp;quot; using `T` ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_5_3: &lt;br /&gt;
  assumes &amp;quot;(¬T ⟶ M) ∧ (T ⟶ M)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;M&amp;quot;&lt;br /&gt;
proof - &lt;br /&gt;
  have &amp;quot;¬T ∨ T&amp;quot; by (rule excluded_middle)&lt;br /&gt;
  thus &amp;quot;M&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;¬T&amp;quot;&lt;br /&gt;
    have &amp;quot;¬T ⟶ M&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
    thus &amp;quot;M&amp;quot; using `¬T` by (rule mp)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;T&amp;quot;&lt;br /&gt;
    have &amp;quot;T ⟶ M&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
    thus &amp;quot;M&amp;quot; using `T` by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Si te llamé por teléfono, entonces recibiste mi llamada y no es&lt;br /&gt;
     cierto que no te avisé del peligro que corrías. Por consiguiente,&lt;br /&gt;
     como te llamé, es cierto que te avisé del peligro que corrías.&lt;br /&gt;
  Usar T: Te llamé por teléfono.&lt;br /&gt;
       R: Recibiste mi llamada.&lt;br /&gt;
       P: Te avisé del peligro que corrías.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es:&amp;quot;&lt;br /&gt;
lemma ejercicio_6_1:&lt;br /&gt;
  &amp;quot;T ⟶ R ∧ ¬¬A ⟹ T ⟶ A&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es:&amp;quot;&lt;br /&gt;
lemma ejercicio_6_2:&lt;br /&gt;
  assumes &amp;quot;T ⟶ R ∧ ¬¬A&amp;quot; &lt;br /&gt;
  shows   &amp;quot;T ⟶ A&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;T&amp;quot;&lt;br /&gt;
  with assms have &amp;quot;R ∧ ¬¬A&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;¬¬A&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;A&amp;quot; by (rule notnotD)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es:&amp;quot;&lt;br /&gt;
lemma ejercicio_6_3:&lt;br /&gt;
  assumes &amp;quot;T ⟶ R ∧ ¬¬A&amp;quot; &lt;br /&gt;
  shows   &amp;quot;T ⟶ A&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;T&amp;quot;&lt;br /&gt;
  with assms(1) have &amp;quot;R ∧ ¬¬A&amp;quot; by (rule mp)&lt;br /&gt;
  hence &amp;quot;¬¬A&amp;quot; by (rule conjunct2)&lt;br /&gt;
  thus &amp;quot;A&amp;quot; by (rule notnotD)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Si no hay control de nacimientos, entonces la población crece&lt;br /&gt;
     ilimitadamente; pero si la población crece ilimitadamente,&lt;br /&gt;
     aumentará el índice de pobreza. Por consiguiente, si no hay control&lt;br /&gt;
     de nacimientos, aumentará el índice de pobreza. &lt;br /&gt;
  Usar N: Hay control de nacimientos. &lt;br /&gt;
       P: La población crece ilimitadamente,&lt;br /&gt;
       I: Aumentará el índice de pobreza. &lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_7_1:&lt;br /&gt;
  &amp;quot;⟦¬N ⟶ P; P ⟶ I⟧ ⟹ ¬N ⟶ I&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_7_2:&lt;br /&gt;
  assumes &amp;quot;¬N ⟶ P&amp;quot; &lt;br /&gt;
          &amp;quot;P ⟶ I&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬N ⟶ I&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;¬N&amp;quot;&lt;br /&gt;
  with assms(1) have &amp;quot;P&amp;quot; ..&lt;br /&gt;
  with assms(2) show &amp;quot;I&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_7_3:&lt;br /&gt;
  assumes &amp;quot;¬N ⟶ P&amp;quot; &lt;br /&gt;
          &amp;quot;P ⟶ I&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬N ⟶ I&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;¬N&amp;quot;&lt;br /&gt;
  with assms(1) have &amp;quot;P&amp;quot; by (rule mp)&lt;br /&gt;
  with assms(2) show &amp;quot;I&amp;quot; by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Si el general era leal, hubiera obedecido las órdenes, y si era&lt;br /&gt;
     inteligente las hubiera comprendido. O el general desobedeció las&lt;br /&gt;
     órdenes o no las comprendió. Luego, el general era desleal o no era&lt;br /&gt;
     inteligente. &lt;br /&gt;
  Usar L:  El general es leal.&lt;br /&gt;
       Ob: El general obedece las órdenes.&lt;br /&gt;
       I:  El general es inteligente.&lt;br /&gt;
       C:  El general comprende las órdenes.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_8_1:&lt;br /&gt;
  &amp;quot;⟦(L ⟶ Ob) ∧ (I ⟶ C); ¬Ob ∨ ¬C⟧ ⟹ ¬L ∨ ¬I&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_8_2:&lt;br /&gt;
  assumes &amp;quot;(L ⟶ Ob) ∧ (I ⟶ C)&amp;quot; &lt;br /&gt;
          &amp;quot;¬Ob ∨ ¬C&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬L ∨ ¬I&amp;quot;&lt;br /&gt;
using assms(2)&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;¬Ob&amp;quot;&lt;br /&gt;
  have &amp;quot;L ⟶ Ob&amp;quot; using assms(1) ..&lt;br /&gt;
  hence &amp;quot;¬L&amp;quot; using `¬Ob` by (rule mt)&lt;br /&gt;
  thus &amp;quot;¬L ∨ ¬I&amp;quot; ..&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;¬C&amp;quot;&lt;br /&gt;
  have &amp;quot;I ⟶ C&amp;quot; using assms(1) ..&lt;br /&gt;
  hence &amp;quot;¬I&amp;quot; using `¬C` by (rule mt)&lt;br /&gt;
  thus &amp;quot;¬L ∨ ¬I&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_8_3:&lt;br /&gt;
  assumes &amp;quot;(L ⟶ Ob) ∧ (I ⟶ C)&amp;quot; &lt;br /&gt;
          &amp;quot;¬Ob ∨ ¬C&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬L ∨ ¬I&amp;quot;&lt;br /&gt;
using assms(2)&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  assume &amp;quot;¬Ob&amp;quot;&lt;br /&gt;
  have &amp;quot;L ⟶ Ob&amp;quot; using assms(1) by (rule conjunct1)&lt;br /&gt;
  hence &amp;quot;¬L&amp;quot; using `¬Ob` by (rule mt)&lt;br /&gt;
  thus &amp;quot;¬L ∨ ¬I&amp;quot; by (rule disjI1)&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;¬C&amp;quot;&lt;br /&gt;
  have &amp;quot;I ⟶ C&amp;quot; using assms(1) by (rule conjunct2)&lt;br /&gt;
  hence &amp;quot;¬I&amp;quot; using `¬C` by (rule mt)&lt;br /&gt;
  thus &amp;quot;¬L ∨ ¬I&amp;quot; by (rule disjI2)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Si Dios fuera capaz de evitar el mal y quisiera hacerlo, lo&lt;br /&gt;
     haría. Si Dios fuera incapaz de evitar el mal, no sería&lt;br /&gt;
     omnipotente; si no quisiera evitar el mal sería malévolo. Dios no&lt;br /&gt;
     evita el mal. Si Dios existe, es omnipotente y no es&lt;br /&gt;
     malévolo. Luego, Dios no existe. &lt;br /&gt;
  Usar C:  Dios es capaz de evitar el mal.&lt;br /&gt;
       Q:  Dios quiere evitar el mal.&lt;br /&gt;
       Om: Dios es omnipotente.&lt;br /&gt;
       M:  Dios es malévolo.&lt;br /&gt;
       P:  Dios evita el mal.&lt;br /&gt;
       E:  Dios existe.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_9_1:&lt;br /&gt;
  &amp;quot;⟦C ∧ Q ⟶ P; (¬C ⟶ ¬Om) ∧ (¬Q ⟶ M); ¬P; E ⟶ Om ∧ ¬M⟧ ⟹ ¬E&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_9_2:&lt;br /&gt;
  assumes &amp;quot;C ∧ Q ⟶ P&amp;quot; &lt;br /&gt;
          &amp;quot;(¬C ⟶ ¬Om) ∧ (¬Q ⟶ M)&amp;quot; &lt;br /&gt;
          &amp;quot;¬P&amp;quot; &lt;br /&gt;
          &amp;quot;E ⟶ Om ∧ ¬M&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬E&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;E&amp;quot;&lt;br /&gt;
  have &amp;quot;Om ∧ ¬M&amp;quot; using assms(4) `E` ..&lt;br /&gt;
  hence &amp;quot;Om&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;¬¬Om&amp;quot; by (rule notnotI)&lt;br /&gt;
  have &amp;quot;¬C ⟶ ¬Om&amp;quot; using assms(2) ..&lt;br /&gt;
  hence &amp;quot;¬¬C&amp;quot; using `¬¬Om` by (rule mt)&lt;br /&gt;
  hence &amp;quot;C&amp;quot; by (rule notnotD)&lt;br /&gt;
  have &amp;quot;¬M&amp;quot; using `Om ∧ ¬M` ..&lt;br /&gt;
  have &amp;quot;¬Q ⟶ M&amp;quot; using assms(2) ..&lt;br /&gt;
  hence &amp;quot;¬¬Q&amp;quot; using `¬M` by (rule mt)&lt;br /&gt;
  hence &amp;quot;Q&amp;quot; by (rule notnotD)&lt;br /&gt;
  with `C` have &amp;quot;C ∧ Q&amp;quot; ..&lt;br /&gt;
  with assms(1) have &amp;quot;P&amp;quot; ..&lt;br /&gt;
  with assms(3) show False ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_9_3:&lt;br /&gt;
  assumes &amp;quot;C ∧ Q ⟶ P&amp;quot; &lt;br /&gt;
          &amp;quot;(¬C ⟶ ¬Om) ∧ (¬Q ⟶ M)&amp;quot; &lt;br /&gt;
          &amp;quot;¬P&amp;quot; &lt;br /&gt;
          &amp;quot;E ⟶ Om ∧ ¬M&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬E&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume &amp;quot;E&amp;quot;&lt;br /&gt;
  with assms(4) have &amp;quot;Om ∧ ¬M&amp;quot; by (rule mp)&lt;br /&gt;
  hence &amp;quot;Om&amp;quot; by (rule conjunct1)&lt;br /&gt;
  hence &amp;quot;¬¬Om&amp;quot; by (rule notnotI)&lt;br /&gt;
  have &amp;quot;¬C ⟶ ¬Om&amp;quot; using assms(2) by (rule conjunct1)&lt;br /&gt;
  hence &amp;quot;¬¬C&amp;quot; using `¬¬Om` by (rule mt)&lt;br /&gt;
  hence &amp;quot;C&amp;quot; by (rule notnotD)&lt;br /&gt;
  have &amp;quot;¬M&amp;quot; using `Om ∧ ¬M` by (rule conjunct2)&lt;br /&gt;
  have &amp;quot;¬Q ⟶ M&amp;quot; using assms(2) by (rule conjunct2)&lt;br /&gt;
  hence &amp;quot;¬¬Q&amp;quot; using `¬M` by (rule mt)&lt;br /&gt;
  hence &amp;quot;Q&amp;quot; by (rule notnotD)&lt;br /&gt;
  with `C` have &amp;quot;C ∧ Q&amp;quot; by (rule conjI)&lt;br /&gt;
  with assms(1) have &amp;quot;P&amp;quot; by (rule mp)&lt;br /&gt;
  with assms(3) show False by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Si la válvula está abierta o la monitorización está preparada,&lt;br /&gt;
     entonces se envía una señal de reconocimiento y un mensaje de&lt;br /&gt;
     funcionamiento al controlador del ordenador. Si se envía un mensaje &lt;br /&gt;
     de funcionamiento al controlador del ordenador o el sistema está en &lt;br /&gt;
     estado normal, entonces se aceptan las órdenes del operador. Por lo&lt;br /&gt;
     tanto, si la válvula está abierta, entonces se aceptan las órdenes&lt;br /&gt;
     del operador. &lt;br /&gt;
  Usar A : La válvula está abierta.&lt;br /&gt;
       P : La monitorización está preparada.&lt;br /&gt;
       R : Envía una señal de reconocimiento.&lt;br /&gt;
       F : Envía un mensaje de funcionamiento.&lt;br /&gt;
       N : El sistema está en estado normal.&lt;br /&gt;
       O : Se aceptan órdenes del operador.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_10_1:&lt;br /&gt;
  &amp;quot;⟦A ∨ P ⟶ R ∧ F; F ∨ N ⟶ Or⟧ ⟹ A ⟶ Or&amp;quot;&lt;br /&gt;
by auto  &lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_10_2:&lt;br /&gt;
  assumes &amp;quot;A ∨ P ⟶ R ∧ F&amp;quot; &lt;br /&gt;
          &amp;quot;F ∨ N ⟶ Or&amp;quot; &lt;br /&gt;
  shows   &amp;quot;A ⟶ Or&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;A&amp;quot;&lt;br /&gt;
  hence &amp;quot;A ∨ P&amp;quot; ..&lt;br /&gt;
  with assms(1) have &amp;quot;R ∧ F&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;F&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;F ∨ N&amp;quot; ..&lt;br /&gt;
  with assms(2) show &amp;quot;Or&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_10_3:&lt;br /&gt;
  assumes &amp;quot;A ∨ P ⟶ R ∧ F&amp;quot; &lt;br /&gt;
          &amp;quot;F ∨ N ⟶ Or&amp;quot; &lt;br /&gt;
  shows   &amp;quot;A ⟶ Or&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;A&amp;quot;&lt;br /&gt;
  hence &amp;quot;A ∨ P&amp;quot; by (rule disjI1)&lt;br /&gt;
  with assms(1) have &amp;quot;R ∧ F&amp;quot; by (rule mp)&lt;br /&gt;
  hence &amp;quot;F&amp;quot; by (rule conjunct2)&lt;br /&gt;
  hence &amp;quot;F ∨ N&amp;quot; by (rule disjI1)&lt;br /&gt;
  with assms(2) show &amp;quot;Or&amp;quot; by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Si trabajo gano dinero, pero si no trabajo gozo de la vida. Sin&lt;br /&gt;
     embargo, si trabajo no gozo de la vida, mientras que si no trabajo&lt;br /&gt;
     no gano dinero. Por lo tanto, gozo de la vida si y sólo si no gano&lt;br /&gt;
  dinero. &lt;br /&gt;
  Usar p: Trabajo&lt;br /&gt;
       q: Gano dinero.&lt;br /&gt;
       r: Gozo de la vida.&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_11_1:&lt;br /&gt;
  &amp;quot;⟦(p ⟶ q) ∧ (¬p ⟶ r); (p ⟶ ¬r) ∧ (¬p ⟶ ¬q)⟧ ⟹ r ⟷ ¬q&amp;quot;  &lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_11_2:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ q) ∧ (¬p ⟶ r)&amp;quot; &lt;br /&gt;
          &amp;quot;(p ⟶ ¬r) ∧ (¬p ⟶ ¬q)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;r ⟷ ¬q&amp;quot;  &lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;r&amp;quot;&lt;br /&gt;
  hence &amp;quot;¬¬r&amp;quot; by (rule notnotI)&lt;br /&gt;
  have &amp;quot;p ⟶ ¬r&amp;quot; using assms(2) ..&lt;br /&gt;
  hence &amp;quot;¬p&amp;quot; using `¬¬r` by (rule mt)&lt;br /&gt;
  have &amp;quot;¬p ⟶ ¬q&amp;quot; using assms(2) ..&lt;br /&gt;
  thus &amp;quot;¬q&amp;quot; using `¬p` ..&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have &amp;quot;p ⟶ q&amp;quot; using assms(1) ..&lt;br /&gt;
  hence &amp;quot;¬p&amp;quot; using `¬q` by (rule mt)&lt;br /&gt;
  have &amp;quot;¬p ⟶ r&amp;quot; using assms(1) ..&lt;br /&gt;
  thus &amp;quot;r&amp;quot; using  `¬p` ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_11_3:&lt;br /&gt;
  assumes &amp;quot;(p ⟶ q) ∧ (¬p ⟶ r)&amp;quot; &lt;br /&gt;
          &amp;quot;(p ⟶ ¬r) ∧ (¬p ⟶ ¬q)&amp;quot; &lt;br /&gt;
  shows   &amp;quot;r ⟷ ¬q&amp;quot;  &lt;br /&gt;
proof (rule iffI)&lt;br /&gt;
  assume &amp;quot;r&amp;quot;&lt;br /&gt;
  hence &amp;quot;¬¬r&amp;quot; by (rule notnotI)&lt;br /&gt;
  have &amp;quot;p ⟶ ¬r&amp;quot; using assms(2) by (rule conjunct1)&lt;br /&gt;
  hence &amp;quot;¬p&amp;quot; using `¬¬r` by (rule mt)&lt;br /&gt;
  have &amp;quot;¬p ⟶ ¬q&amp;quot; using assms(2) by (rule conjunct2)&lt;br /&gt;
  thus &amp;quot;¬q&amp;quot; using `¬p` by (rule mp)&lt;br /&gt;
next&lt;br /&gt;
  assume &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have &amp;quot;p ⟶ q&amp;quot; using assms(1) by (rule conjunct1)&lt;br /&gt;
  hence &amp;quot;¬p&amp;quot; using `¬q` by (rule mt)&lt;br /&gt;
  have &amp;quot;¬p ⟶ r&amp;quot; using assms(1) by (rule conjunct2)&lt;br /&gt;
  thus &amp;quot;r&amp;quot; using  `¬p` by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_19&amp;diff=181</id>
		<title>RA12 Relación 19</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_19&amp;diff=181"/>
		<updated>2018-07-15T11:59:17Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «lang=&amp;quot;isar&amp;quot;» por «lang=&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R19: Recorridos de árboles *}&lt;br /&gt;
&lt;br /&gt;
theory R19&lt;br /&gt;
imports Main &lt;br /&gt;
begin &lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Definir el tipo de datos arbol para representar los&lt;br /&gt;
  árboles binarios que tiene información en los nodos y en las hojas. &lt;br /&gt;
  Por ejemplo, el árbol&lt;br /&gt;
          e&lt;br /&gt;
         / \&lt;br /&gt;
        /   \&lt;br /&gt;
       c     g&lt;br /&gt;
      / \   / \&lt;br /&gt;
     a   d f   h &lt;br /&gt;
  se representa por &amp;quot;N e (N c (H a) (H d)) (N g (H f) (H h))&amp;quot;.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
datatype &amp;#039;a arbol = H &amp;quot;&amp;#039;a&amp;quot; | N &amp;quot;&amp;#039;a&amp;quot; &amp;quot;&amp;#039;a arbol&amp;quot; &amp;quot;&amp;#039;a arbol&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;N e (N c (H a) (H d)) (N g (H f) (H h))&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Definir la función &lt;br /&gt;
     preOrden :: &amp;quot;&amp;#039;a arbol ⇒ &amp;#039;a list&amp;quot;&lt;br /&gt;
  tal que (preOrden a) es el recorrido pre orden del árbol a. Por&lt;br /&gt;
  ejemplo, &lt;br /&gt;
     preOrden (N e (N c (H a) (H d)) (N g (H f) (H h)))&lt;br /&gt;
     = [e,c,a,d,g,f,h] &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun preOrden :: &amp;quot;&amp;#039;a arbol ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;preOrden t = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;preOrden (N e (N c (H a) (H d)) (N g (H f) (H h)))&amp;quot; &lt;br /&gt;
-- &amp;quot;= [e,c,a,d,g,f,h]&amp;quot; &lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Definir la función &lt;br /&gt;
     postOrden :: &amp;quot;&amp;#039;a arbol ⇒ &amp;#039;a list&amp;quot;&lt;br /&gt;
  tal que (postOrden a) es el recorrido post orden del árbol a. Por&lt;br /&gt;
  ejemplo, &lt;br /&gt;
     postOrden (N e (N c (H a) (H d)) (N g (H f) (H h)))&lt;br /&gt;
     = [e,c,a,d,g,f,h] &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun postOrden :: &amp;quot;&amp;#039;a arbol ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;postOrden t = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;postOrden (N e (N c (H a) (H d)) (N g (H f) (H h)))&amp;quot; &lt;br /&gt;
-- &amp;quot;[a,d,c,f,h,g,e]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Definir la función &lt;br /&gt;
     inOrden :: &amp;quot;&amp;#039;a arbol ⇒ &amp;#039;a list&amp;quot;&lt;br /&gt;
  tal que (inOrden a) es el recorrido in orden del árbol a. Por&lt;br /&gt;
  ejemplo, &lt;br /&gt;
     inOrden (N e (N c (H a) (H d)) (N g (H f) (H h)))&lt;br /&gt;
     = [a,c,d,e,f,g,h]&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun inOrden :: &amp;quot;&amp;#039;a arbol ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;inOrden t = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;inOrden (N e (N c (H a) (H d)) (N g (H f) (H h)))&amp;quot; &lt;br /&gt;
-- &amp;quot;[a,c,d,e,f,g,h]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Definir la función &lt;br /&gt;
     espejo :: &amp;quot;&amp;#039;a arbol ⇒ &amp;#039;a arbol&amp;quot;&lt;br /&gt;
  tal que (espejo a) es la imagen especular del árbol a. Por ejemplo, &lt;br /&gt;
     espejo (N e (N c (H a) (H d)) (N g (H f) (H h)))&lt;br /&gt;
     = N e (N g (H h) (H f)) (N c (H d) (H a))&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun espejo :: &amp;quot;&amp;#039;a arbol ⇒ &amp;#039;a arbol&amp;quot; where&lt;br /&gt;
  &amp;quot;espejo t = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;espejo (N e (N c (H a) (H d)) (N g (H f) (H h)))&amp;quot; &lt;br /&gt;
-- &amp;quot;N e (N g (H h) (H f)) (N c (H d) (H a))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Demostrar que&lt;br /&gt;
     preOrden (espejo a) = rev (postOrden a)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma  &amp;quot;preOrden (espejo a) = rev (postOrden a)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Demostrar que&lt;br /&gt;
     postOrden (espejo a) = rev (preOrden a)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;postOrden (espejo a) = rev (preOrden a)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Demostrar que&lt;br /&gt;
     inOrden (espejo a) = rev (inOrden a)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem &amp;quot;inOrden (espejo a) = rev (inOrden a)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Definir la función &lt;br /&gt;
     raiz :: &amp;quot;&amp;#039;a arbol ⇒ &amp;#039;a&amp;quot;&lt;br /&gt;
  tal que (raiz a) es la raiz del árbol a. Por ejemplo, &lt;br /&gt;
     raiz (N e (N c (H a) (H d)) (N g (H f) (H h))) = e&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun raiz :: &amp;quot;&amp;#039;a arbol ⇒ &amp;#039;a&amp;quot; where&lt;br /&gt;
  &amp;quot;raiz t = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;raiz (N e (N c (H a) (H d)) (N g (H f) (H h)))&amp;quot; -- &amp;quot;= e&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Definir la función &lt;br /&gt;
     extremo_izquierda :: &amp;quot;&amp;#039;a arbol ⇒ &amp;#039;a&amp;quot;&lt;br /&gt;
  tal que (extremo_izquierda a) es el nodo más a la izquierda del árbol&lt;br /&gt;
  a. Por ejemplo,  &lt;br /&gt;
     extremo_izquierda (N e (N c (H a) (H d)) (N g (H f) (H h))) = a&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun extremo_izquierda :: &amp;quot;&amp;#039;a arbol ⇒ &amp;#039;a&amp;quot; where&lt;br /&gt;
  &amp;quot;extremo_izquierda t = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;extremo_izquierda (N e (N c (H a) (H d)) (N g (H f) (H h)))&amp;quot; -- &amp;quot;= a&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Definir la función &lt;br /&gt;
     extremo_derecha :: &amp;quot;&amp;#039;a arbol ⇒ &amp;#039;a&amp;quot;&lt;br /&gt;
  tal que (extremo_derecha a) es el nodo más a la derecha del árbol&lt;br /&gt;
  a. Por ejemplo,  &lt;br /&gt;
     extremo_derecha (N e (N c (H a) (H d)) (N g (H f) (H h))) = h&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun extremo_derecha :: &amp;quot;&amp;#039;a arbol ⇒ &amp;#039;a&amp;quot; where&lt;br /&gt;
  &amp;quot;extremo_derecha t = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;extremo_derecha (N e (N c (H a) (H d)) (N g (H f) (H h)))&amp;quot; -- &amp;quot;= h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Demostrar o refutar&lt;br /&gt;
     last (inOrden a) = extremo_derecha a&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem &amp;quot;last (inOrden a) = extremo_derecha a&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 13. Demostrar o refutar&lt;br /&gt;
     hd (inOrden a) = extremo_izquierda a&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem &amp;quot;hd (inOrden a) = extremo_izquierda a&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 14. Demostrar o refutar&lt;br /&gt;
     hd (preOrden a) = last (postOrden a)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem &amp;quot;hd (preOrden a) = last (postOrden a)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 15. Demostrar o refutar&lt;br /&gt;
     hd (preOrden a) = raiz a&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem &amp;quot;hd (preOrden a) = raiz a&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 16. Demostrar o refutar&lt;br /&gt;
     hd (inOrden a) = raiz a&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem &amp;quot;hd (inOrden a) = raiz a&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 17. Demostrar o refutar&lt;br /&gt;
     last (postOrden a) = raiz a&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
theorem &amp;quot;last (postOrden a) = raiz a&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_7&amp;diff=180</id>
		<title>RA12 Relación 7</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_7&amp;diff=180"/>
		<updated>2018-07-15T11:58:36Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «&amp;quot;isar&amp;quot;» por «&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R7: Programación funcional en Isabelle/HOL *}&lt;br /&gt;
&lt;br /&gt;
theory R7&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {* ----------------------------------------------------------------&lt;br /&gt;
  Ejercicio 1. Definir, por recursión, la función&lt;br /&gt;
     longitud :: &amp;#039;a list ⇒ nat&lt;br /&gt;
  tal que (longitud xs) es la longitud de la listas xs. Por ejemplo,&lt;br /&gt;
     longitud [4,2,5] = 3&lt;br /&gt;
  ------------------------------------------------------------------- *}&lt;br /&gt;
&lt;br /&gt;
fun longitud :: &amp;quot;&amp;#039;a list ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;longitud xs = undefined&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
value &amp;quot;longitud [4,2,5]&amp;quot; -- &amp;quot;= 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Definir la función&lt;br /&gt;
     fun intercambia :: &amp;#039;a × &amp;#039;b ⇒ &amp;#039;b × &amp;#039;a&lt;br /&gt;
  tal que (intercambia p) es el par obtenido intercambiando las&lt;br /&gt;
  componentes del par p. Por ejemplo,&lt;br /&gt;
     intercambia (u,v) = (v,u)&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun intercambia :: &amp;quot;&amp;#039;a × &amp;#039;b ⇒ &amp;#039;b × &amp;#039;a&amp;quot; where&lt;br /&gt;
  &amp;quot;intercambia (x,y) = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;intercambia (u,v)&amp;quot; -- &amp;quot;= (v,u)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Definir, por recursión, la función&lt;br /&gt;
     inversa :: &amp;#039;a list ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (inversa xs) es la lista obtenida invirtiendo el orden de los&lt;br /&gt;
  elementos de xs. Por ejemplo,&lt;br /&gt;
     inversa [a,d,c] = [c,d,a]&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun inversa :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;inversa xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;inversa [a,d,c]&amp;quot; -- &amp;quot;= [c,d,a]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Definir la función&lt;br /&gt;
     repite :: nat ⇒ &amp;#039;a ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (repite n x) es la lista formada por n copias del elemento&lt;br /&gt;
  x. Por ejemplo, &lt;br /&gt;
     repite 3 a = [a,a,a]&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun repite :: &amp;quot;nat ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;repite n x = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;repite 3 a&amp;quot; -- &amp;quot;= [a,a,a]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Definir la función&lt;br /&gt;
     conc :: &amp;#039;a list ⇒ &amp;#039;a list ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (conc xs ys) es la concatención de las listas xs e ys. Por&lt;br /&gt;
  ejemplo, &lt;br /&gt;
     conc [a,d] [b,d,a,c] = [a,d,b,d,a,c]&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun conc :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;conc xs ys = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;conc [a,d] [b,d,a,c]&amp;quot; -- &amp;quot;= [a,d,b,d,a,c]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Definir la función&lt;br /&gt;
     coge :: nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (coge n xs) es la lista de los n primeros elementos de xs. Por &lt;br /&gt;
  ejemplo, &lt;br /&gt;
     coge 2 [a,c,d,b,e] = [a,c]&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun coge :: &amp;quot;nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;coge n xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;coge 2 [a,c,d,b,e]&amp;quot; -- &amp;quot;= [a,c]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Definir la función&lt;br /&gt;
     elimina :: nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (elimina n xs) es la lista obtenida eliminando los n primeros&lt;br /&gt;
  elementos de xs. Por ejemplo, &lt;br /&gt;
     elimina 2 [a,c,d,b,e] = [d,b,e]&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun elimina :: &amp;quot;nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;elimina n xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;elimina 2 [a,c,d,b,e]&amp;quot; -- &amp;quot;= [d,b,e]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Definir la función&lt;br /&gt;
     esVacia :: &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (esVacia xs) se verifica si xs es la lista vacía. Por ejemplo,&lt;br /&gt;
     esVacia []  = True&lt;br /&gt;
     esVacia [1] = False&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun esVacia :: &amp;quot;&amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;esVacia xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;esVacia []&amp;quot;  -- &amp;quot;= True&amp;quot;&lt;br /&gt;
value &amp;quot;esVacia [1]&amp;quot; -- &amp;quot;= False&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Definir la función&lt;br /&gt;
     inversaAc :: &amp;#039;a list ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (inversaAc xs) es a inversa de xs calculada usando&lt;br /&gt;
  acumuladores. Por ejemplo, &lt;br /&gt;
     inversaAc [a,c,b,e] = [e,b,c,a]&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun inversaAcAux :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;inversaAcAux xs ys = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fun inversaAc :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;inversaAc xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;inversaAc [a,c,b,e]&amp;quot; -- &amp;quot;= [e,b,c,a]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Definir la función&lt;br /&gt;
     sum :: nat list ⇒ nat&lt;br /&gt;
  tal que (sum xs) es la suma de los elementos de xs. Por ejemplo,&lt;br /&gt;
     sum [3,2,5] = 10&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun sum :: &amp;quot;nat list ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;sum xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;sum [3,2,5]&amp;quot; -- &amp;quot;= 10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Definir la función&lt;br /&gt;
     map :: (&amp;#039;a ⇒ &amp;#039;b) ⇒ &amp;#039;a list ⇒ &amp;#039;b list&lt;br /&gt;
  tal que (map f xs) es la lista obtenida aplicando la función f a los&lt;br /&gt;
  elementos de xs. Por ejemplo,&lt;br /&gt;
     map (λx. 2*x) [3,2,5] = [6,4,10]&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
fun map :: &amp;quot;(&amp;#039;a ⇒ &amp;#039;b) ⇒ &amp;#039;a list ⇒ &amp;#039;b list&amp;quot; where&lt;br /&gt;
  &amp;quot;map f xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;map (λx. 2*x) [3::nat,2,5]&amp;quot; -- &amp;quot;= [6,4,10]&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>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=GLC_T2R2a&amp;diff=179</id>
		<title>GLC T2R2a</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=GLC_T2R2a&amp;diff=179"/>
		<updated>2018-07-15T11:58:29Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «&amp;quot;isar&amp;quot;» por «&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* T2R2a: Argumentación en lógica de primer orden *}&lt;br /&gt;
&lt;br /&gt;
theory T2R2a&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  El objetivo de esta relación es formalizar y demostrar la corrección&lt;br /&gt;
  de los argumentos usando sólo las reglas básicas de deducción natural&lt;br /&gt;
  de la lógica de primer orden (sin usar el método auto). &lt;br /&gt;
&lt;br /&gt;
  Las reglas básicas de la deducción natural son las siguientes:&lt;br /&gt;
  · conjI:      ⟦P; Q⟧ ⟹ P ∧ Q&lt;br /&gt;
  · conjunct1:  P ∧ Q ⟹ P&lt;br /&gt;
  · conjunct2:  P ∧ Q ⟹ Q  &lt;br /&gt;
  · notnotD:    ¬¬ P ⟹ P&lt;br /&gt;
  · notnotI:    P ⟹ ¬¬ P&lt;br /&gt;
  · mp:         ⟦P ⟶ Q; P⟧ ⟹ Q &lt;br /&gt;
  · mt:         ⟦F ⟶ G; ¬G⟧ ⟹ ¬F &lt;br /&gt;
  · impI:       (P ⟹ Q) ⟹ P ⟶ Q&lt;br /&gt;
  · disjI1:     P ⟹ P ∨ Q&lt;br /&gt;
  · disjI2:     Q ⟹ P ∨ Q&lt;br /&gt;
  · disjE:      ⟦P ∨ Q; P ⟹ R; Q ⟹ R⟧ ⟹ R &lt;br /&gt;
  · FalseE:     False ⟹ P&lt;br /&gt;
  · notE:       ⟦¬P; P⟧ ⟹ R&lt;br /&gt;
  · notI:       (P ⟹ False) ⟹ ¬P&lt;br /&gt;
  · iffI:       ⟦P ⟹ Q; Q ⟹ P⟧ ⟹ P = Q&lt;br /&gt;
  · iffD1:      ⟦Q = P; Q⟧ ⟹ P &lt;br /&gt;
  · iffD2:      ⟦P = Q; Q⟧ ⟹ P&lt;br /&gt;
  · ccontr:     (¬P ⟹ False) ⟹ P&lt;br /&gt;
  · excluded_middle: ¬P ∨ P&lt;br /&gt;
&lt;br /&gt;
  · allI:       ⟦∀x. P x; P x ⟹ R⟧ ⟹ R&lt;br /&gt;
  · allE:       (⋀x. P x) ⟹ ∀x. P x&lt;br /&gt;
  · exI:        P x ⟹ ∃x. P x&lt;br /&gt;
  · exE:        ⟦∃x. P x; ⋀x. P x ⟹ Q⟧ ⟹ Q&lt;br /&gt;
&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  Se usarán las reglas notnotI y mt que demostramos a continuación.&lt;br /&gt;
  *}&lt;br /&gt;
&lt;br /&gt;
lemma notnotI: &amp;quot;P ⟹ ¬¬ P&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
lemma mt: &amp;quot;⟦F ⟶ G; ¬G⟧ ⟹ ¬F&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
lemma no_ex: &amp;quot;¬(∃x. P(x)) ⟹ ∀x. ¬P(x)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
lemma no_para_todo: &amp;quot;¬(∀x. P(x)) ⟹ ∃x. ¬P(x)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Formalizar, y demostrar la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Sócrates es un hombre. &lt;br /&gt;
     Los hombres son mortales. &lt;br /&gt;
     Luego, Sócrates es mortal.&lt;br /&gt;
  Usar s    para Sócrates&lt;br /&gt;
       H(x) para x es un hombre          &lt;br /&gt;
       M(x) para x es mortal&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_1a:&lt;br /&gt;
  &amp;quot;⟦H(s); ∀x. H(x) ⟶ M(x)⟧ ⟹ M(s)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_1b:&lt;br /&gt;
  assumes &amp;quot;H(s)&amp;quot; &lt;br /&gt;
          &amp;quot;∀x. H(x) ⟶ M(x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;M(s)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;H(s) ⟶ M(s)&amp;quot; using assms(2) ..&lt;br /&gt;
  thus &amp;quot;M(s)&amp;quot; using assms(1) ..  &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_1c:&lt;br /&gt;
  assumes &amp;quot;H(s)&amp;quot; &lt;br /&gt;
          &amp;quot;∀x. H(x) ⟶ M(x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;M(s)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;H(s) ⟶ M(s)&amp;quot; using assms(2) by (rule allE)&lt;br /&gt;
  thus &amp;quot;M(s)&amp;quot; using assms(1) by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Hay estudiantes inteligentes y hay estudiantes trabajadores. Por&lt;br /&gt;
     tanto, hay estudiantes inteligentes y trabajadores.&lt;br /&gt;
  Usar I(x) para x es inteligente&lt;br /&gt;
       T(x) para x es trabajador&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La refutación automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_2a:&lt;br /&gt;
  &amp;quot;(∃x. I(x)) ∧ (∃x. T(x)) ⟹ ∃x. I(x) ∧ T(x)&amp;quot;&lt;br /&gt;
quickcheck&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
El argumento es incorrecto como muestra el siguiente contraejemplo:&lt;br /&gt;
   I = {a1}&lt;br /&gt;
   T = {a2}&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Todos los participantes son vencedores. Hay como máximo un&lt;br /&gt;
     vencedor. Hay como máximo un participante. Por lo tanto, hay&lt;br /&gt;
     exactamente un participante. &lt;br /&gt;
  Usar P(x) para x es un participante&lt;br /&gt;
       V(x) para x es un vencedor&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La refutación automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_3a: &lt;br /&gt;
  &amp;quot;⟦∀x. P(x) ⟶ V(x); &lt;br /&gt;
    ∀x y. V(x) ∧ V(y) ⟶ x=y; &lt;br /&gt;
    ∀x y. P(x) ∧ P(y) ⟶ x=y⟧&lt;br /&gt;
   ⟹ ∃x. P(x) ∧ (∀y. P(y) ⟶ x=y)&amp;quot;&lt;br /&gt;
quickcheck  &lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
El argumento es incorrecto como muestra el siguiente contraejemplo:&lt;br /&gt;
   V = {}&lt;br /&gt;
   P = {}&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Todo aquel que entre en el país y no sea un VIP será cacheado por&lt;br /&gt;
     un aduanero. Hay un contrabandista que entra en el país y que solo&lt;br /&gt;
     podrá ser cacheado por contrabandistas. Ningún contrabandista es un&lt;br /&gt;
     VIP. Por tanto, algún aduanero es contrabandista.&lt;br /&gt;
  Usar A(x)    para x es aduanero&lt;br /&gt;
       Ca(x,y) para x cachea a y&lt;br /&gt;
       Co(x)   para x es contrabandista&lt;br /&gt;
       E(x)    para x entra en el pais&lt;br /&gt;
       V(x)    para x es un VIP&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_4a:&lt;br /&gt;
  &amp;quot;⟦∀x. E(x) ∧ ¬V(x) ⟶ (∃y. A(y) ∧ Ca(y,x));&lt;br /&gt;
    ∃x. Co(x) ∧ E(x) ∧ (∀y. Ca(y,x) ⟶ Co(y));&lt;br /&gt;
    ¬(∃x. Co(x) ∧ V(x))⟧&lt;br /&gt;
   ⟹ ∃x. A(x) ∧ Co(x)&amp;quot;&lt;br /&gt;
by metis&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_4b:&lt;br /&gt;
  assumes &amp;quot;∀x. E(x) ∧ ¬V(x) ⟶ (∃y. A(y) ∧ Ca(y,x))&amp;quot;&lt;br /&gt;
           &amp;quot;∃x. Co(x) ∧ E(x) ∧ (∀y. Ca(y,x) ⟶ Co(y))&amp;quot;&lt;br /&gt;
           &amp;quot;¬(∃x. Co(x) ∧ V(x))&amp;quot;&lt;br /&gt;
  shows    &amp;quot;∃x. A(x) ∧ Co(x)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where a: &amp;quot;Co(a) ∧ E(a) ∧ (∀y. Ca(y,a) ⟶ Co(y))&amp;quot; &lt;br /&gt;
    using assms(2) ..&lt;br /&gt;
  have &amp;quot;∃y. A(y) ∧ Ca(y,a)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;E(a) ∧ ¬V(a) ⟶ (∃y. A(y) ∧ Ca(y,a))&amp;quot; using assms(1) ..&lt;br /&gt;
    moreover&lt;br /&gt;
    have &amp;quot;E(a) ∧ ¬V(a)&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      have &amp;quot;E(a) ∧ (∀y. Ca(y,a) ⟶ Co(y))&amp;quot; using a ..&lt;br /&gt;
      thus &amp;quot;E(a)&amp;quot; ..&lt;br /&gt;
    next&lt;br /&gt;
      have &amp;quot;∀x. ¬(Co(x) ∧ V(x))&amp;quot; using assms(3) by (rule no_ex)&lt;br /&gt;
      hence &amp;quot;¬(Co(a) ∧ V(a))&amp;quot; ..&lt;br /&gt;
      have &amp;quot;Co(a)&amp;quot; using a ..&lt;br /&gt;
      show &amp;quot;¬V(a)&amp;quot; &lt;br /&gt;
      proof&lt;br /&gt;
        assume &amp;quot;V(a)&amp;quot;&lt;br /&gt;
        with `Co(a)` have &amp;quot;Co(a) ∧ V(a)&amp;quot; ..&lt;br /&gt;
        with `¬(Co(a) ∧ V(a))` show False ..&lt;br /&gt;
      qed&lt;br /&gt;
    qed&lt;br /&gt;
    ultimately show &amp;quot;∃y. A(y) ∧ Ca(y,a)&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
  then obtain b where &amp;quot;A(b) ∧ Ca(b,a)&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;A(b)&amp;quot; ..&lt;br /&gt;
  moreover&lt;br /&gt;
  have &amp;quot;Co(b)&amp;quot;&lt;br /&gt;
    proof -&lt;br /&gt;
      have &amp;quot;E(a) ∧ (∀y. Ca(y,a) ⟶ Co(y))&amp;quot; using a ..&lt;br /&gt;
      hence &amp;quot;∀y. Ca(y,a) ⟶ Co(y)&amp;quot; ..&lt;br /&gt;
      hence &amp;quot;Ca(b,a) ⟶ Co(b)&amp;quot; ..&lt;br /&gt;
      have &amp;quot;Ca(b,a)&amp;quot; using `A(b) ∧ Ca(b,a)` ..&lt;br /&gt;
      with `Ca(b,a) ⟶ Co(b)` show &amp;quot;Co(b)&amp;quot; ..&lt;br /&gt;
    qed&lt;br /&gt;
  ultimately have &amp;quot;A(b) ∧ Co(b)&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;∃x. A(x) ∧ Co(x)&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_4c:&lt;br /&gt;
  assumes &amp;quot;∀x. E(x) ∧ ¬V(x) ⟶ (∃y. A(y) ∧ Ca(y,x))&amp;quot;&lt;br /&gt;
           &amp;quot;∃x. Co(x) ∧ E(x) ∧ (∀y. Ca(y,x) ⟶ Co(y))&amp;quot;&lt;br /&gt;
           &amp;quot;¬(∃x. Co(x) ∧ V(x))&amp;quot;&lt;br /&gt;
  shows    &amp;quot;∃x. A(x) ∧ Co(x)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where a: &amp;quot;Co(a) ∧ E(a) ∧ (∀y. Ca(y,a) ⟶ Co(y))&amp;quot; &lt;br /&gt;
    using assms(2) by (rule exE)&lt;br /&gt;
  have &amp;quot;∃y. A(y) ∧ Ca(y,a)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;E(a) ∧ ¬V(a) ⟶ (∃y. A(y) ∧ Ca(y,a))&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
    moreover&lt;br /&gt;
    have &amp;quot;E(a) ∧ ¬V(a)&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      have &amp;quot;E(a) ∧ (∀y. Ca(y,a) ⟶ Co(y))&amp;quot; using a by (rule conjunct2)&lt;br /&gt;
      thus &amp;quot;E(a)&amp;quot; by (rule conjunct1)&lt;br /&gt;
    next&lt;br /&gt;
      have &amp;quot;∀x. ¬(Co(x) ∧ V(x))&amp;quot; using assms(3) by (rule no_ex)&lt;br /&gt;
      hence &amp;quot;¬(Co(a) ∧ V(a))&amp;quot; by (rule allE)&lt;br /&gt;
      have &amp;quot;Co(a)&amp;quot; using a by (rule conjunct1)&lt;br /&gt;
      show &amp;quot;¬V(a)&amp;quot; &lt;br /&gt;
      proof (rule notI)&lt;br /&gt;
        assume &amp;quot;V(a)&amp;quot;&lt;br /&gt;
        with `Co(a)` have &amp;quot;Co(a) ∧ V(a)&amp;quot; by (rule conjI)&lt;br /&gt;
        with `¬(Co(a) ∧ V(a))` show False by (rule notE)&lt;br /&gt;
      qed&lt;br /&gt;
    qed&lt;br /&gt;
    ultimately show &amp;quot;∃y. A(y) ∧ Ca(y,a)&amp;quot; by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
  then obtain b where &amp;quot;A(b) ∧ Ca(b,a)&amp;quot; by (rule exE)&lt;br /&gt;
  hence &amp;quot;A(b)&amp;quot; by (rule conjunct1)&lt;br /&gt;
  moreover&lt;br /&gt;
  have &amp;quot;Co(b)&amp;quot;&lt;br /&gt;
    proof -&lt;br /&gt;
      have &amp;quot;E(a) ∧ (∀y. Ca(y,a) ⟶ Co(y))&amp;quot; using a by (rule conjunct2)&lt;br /&gt;
      hence &amp;quot;∀y. Ca(y,a) ⟶ Co(y)&amp;quot; by (rule conjunct2)&lt;br /&gt;
      hence &amp;quot;Ca(b,a) ⟶ Co(b)&amp;quot; by (rule allE)&lt;br /&gt;
      have &amp;quot;Ca(b,a)&amp;quot; using `A(b) ∧ Ca(b,a)` by (rule conjunct2)&lt;br /&gt;
      with `Ca(b,a) ⟶ Co(b)` show &amp;quot;Co(b)&amp;quot; by (rule mp)&lt;br /&gt;
    qed&lt;br /&gt;
  ultimately have &amp;quot;A(b) ∧ Co(b)&amp;quot; by (rule conjI)&lt;br /&gt;
  thus &amp;quot;∃x. A(x) ∧ Co(x)&amp;quot; by (rule exI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Juan teme a María. Pedro es temido por Juan. Luego, alguien teme a&lt;br /&gt;
     María y a Pedro.&lt;br /&gt;
  Usar j      para Juan  &lt;br /&gt;
       m      para María&lt;br /&gt;
       p      para Pedro&lt;br /&gt;
       T(x,y) para x teme a y&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_5a:&lt;br /&gt;
  &amp;quot;⟦T(j,m); T(j,p)⟧ ⟹ ∃x. T(x,m) ∧ T(x,p)&amp;quot;&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_5b:&lt;br /&gt;
  assumes &amp;quot;T(j,m)&amp;quot; &lt;br /&gt;
          &amp;quot;T(j,p)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. T(x,m) ∧ T(x,p)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  show &amp;quot;T(j,m) ∧ T(j,p)&amp;quot; using assms ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_5c:&lt;br /&gt;
  assumes &amp;quot;T(j,m)&amp;quot; &lt;br /&gt;
          &amp;quot;T(j,p)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. T(x,m) ∧ T(x,p)&amp;quot;&lt;br /&gt;
proof (rule exI)&lt;br /&gt;
  show &amp;quot;T(j,m) ∧ T(j,p)&amp;quot; using assms by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Los hermanos tienen el mismo padre. Juan es hermano de Luis. Carlos&lt;br /&gt;
     es padre de Luis. Por tanto, Carlos es padre de Juan.&lt;br /&gt;
  Usar H(x,y) para x es hermano de y&lt;br /&gt;
       P(x,y) para x es padre de y&lt;br /&gt;
       j      para Juan&lt;br /&gt;
       l      para Luis&lt;br /&gt;
       c      para Carlos&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_6a:&lt;br /&gt;
  assumes &amp;quot;∀x y. H(x,y) ⟶ H(y,x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y z. H(x,y) ∧ P(z,x) ⟶ P(z,y)&amp;quot;&lt;br /&gt;
          &amp;quot;H(j,l)&amp;quot;&lt;br /&gt;
          &amp;quot;P(c,l)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;P(c,j)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by metis&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_6b:&lt;br /&gt;
  fixes H P :: &amp;quot;&amp;#039;a × &amp;#039;a ⇒ bool&amp;quot; &lt;br /&gt;
  assumes &amp;quot;∀x y. H(x,y) ⟶ H(y,x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y z. H(x,y) ∧ P(z,x) ⟶ P(z,y)&amp;quot;&lt;br /&gt;
          &amp;quot;H(j,l)&amp;quot;&lt;br /&gt;
          &amp;quot;P(c,l)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;P(c,j)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;H(l,j) ∧ P(c,l) ⟶ P(c,j)&amp;quot; &lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;∀y z. H(l,y) ∧ P(z,l) ⟶ P(z,y)&amp;quot; using assms(2) ..&lt;br /&gt;
    hence &amp;quot;∀z. H(l,j) ∧ P(z,l) ⟶ P(z,j)&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;H(l,j) ∧ P(c,l) ⟶ P(c,j)&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
  moreover&lt;br /&gt;
  have &amp;quot;H(l,j) ∧ P(c,l)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    have &amp;quot;∀y. H(j,y) ⟶ H(y,j)&amp;quot; using assms(1) ..&lt;br /&gt;
    hence &amp;quot;H(j,l) ⟶ H(l,j)&amp;quot; .. &lt;br /&gt;
    thus &amp;quot;H(l,j)&amp;quot; using assms(3) ..&lt;br /&gt;
  next&lt;br /&gt;
    show &amp;quot;P(c,l)&amp;quot; using assms(4) .&lt;br /&gt;
  qed&lt;br /&gt;
  ultimately show &amp;quot;P(c,j)&amp;quot; .. &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_6c:&lt;br /&gt;
  fixes H P :: &amp;quot;&amp;#039;a × &amp;#039;a ⇒ bool&amp;quot; &lt;br /&gt;
  assumes &amp;quot;∀x y. H(x,y) ⟶ H(y,x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y z. H(x,y) ∧ P(z,x) ⟶ P(z,y)&amp;quot;&lt;br /&gt;
          &amp;quot;H(j,l)&amp;quot;&lt;br /&gt;
          &amp;quot;P(c,l)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;P(c,j)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;H(l,j) ∧ P(c,l) ⟶ P(c,j)&amp;quot; &lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;∀y z. H(l,y) ∧ P(z,l) ⟶ P(z,y)&amp;quot; using assms(2) by (rule allE)&lt;br /&gt;
    hence &amp;quot;∀z. H(l,j) ∧ P(z,l) ⟶ P(z,j)&amp;quot; by (rule allE)&lt;br /&gt;
    thus &amp;quot;H(l,j) ∧ P(c,l) ⟶ P(c,j)&amp;quot; by (rule allE)&lt;br /&gt;
  qed&lt;br /&gt;
  moreover&lt;br /&gt;
  have &amp;quot;H(l,j) ∧ P(c,l)&amp;quot;&lt;br /&gt;
  proof (rule conjI)&lt;br /&gt;
    have &amp;quot;∀y. H(j,y) ⟶ H(y,j)&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
    hence &amp;quot;H(j,l) ⟶ H(l,j)&amp;quot; by (rule allE)&lt;br /&gt;
    thus &amp;quot;H(l,j)&amp;quot; using assms(3) by (rule mp)&lt;br /&gt;
  next&lt;br /&gt;
    show &amp;quot;P(c,l)&amp;quot; using assms(4) by this&lt;br /&gt;
  qed&lt;br /&gt;
  ultimately show &amp;quot;P(c,j)&amp;quot; by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     La existencia de algún canal de TV pública, supone un acicate para&lt;br /&gt;
     cualquier canal de TV privada; el que un canal de TV tenga un&lt;br /&gt;
     acicate, supone una gran satisfacción para cualquiera de sus&lt;br /&gt;
     directivos; en Madrid hay varios canales públicos de TV; TV5 es un&lt;br /&gt;
     canal de TV privada; por tanto, todos los directivos de TV5 están&lt;br /&gt;
     satisfechos. &lt;br /&gt;
  Usar Pu(x)  para x es un canal de TV pública&lt;br /&gt;
       Pr(x)  para x es un canal de TV privada&lt;br /&gt;
       A(x)   para x posee un acicate&lt;br /&gt;
       D(x,y) para x es un directivo del canal y&lt;br /&gt;
       S(x)   para x está satisfecho &lt;br /&gt;
       t      para TV5&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_7a:&lt;br /&gt;
  assumes &amp;quot;(∃x. Pu(x)) ⟶ (∀x. Pr(x) ⟶ A(x))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. A(x) ⟶ (∀y. D(y,x) ⟶ S(y))&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. Pu(x)&amp;quot;&lt;br /&gt;
          &amp;quot;Pr(t)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. D(x,t) ⟶ S(x)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_7b:&lt;br /&gt;
  assumes &amp;quot;(∃x. Pu(x)) ⟶ (∀x. Pr(x) ⟶ A(x))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. A(x) ⟶ (∀y. D(y,x) ⟶ S(y))&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. Pu(x)&amp;quot;&lt;br /&gt;
          &amp;quot;Pr(t)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. D(x,t) ⟶ S(x)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  fix a &lt;br /&gt;
  show &amp;quot;D(a,t) ⟶ S(a)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;D(a,t)&amp;quot;&lt;br /&gt;
    have &amp;quot;∀x. Pr(x) ⟶ A(x)&amp;quot; using assms(1) assms(3) ..&lt;br /&gt;
    hence &amp;quot;Pr(t) ⟶ A(t)&amp;quot; ..&lt;br /&gt;
    hence &amp;quot;A(t)&amp;quot; using assms(4) ..&lt;br /&gt;
    have &amp;quot;A(t) ⟶ (∀y. D(y,t) ⟶ S(y))&amp;quot; using assms(2) ..&lt;br /&gt;
    hence &amp;quot;∀y. D(y,t) ⟶ S(y)&amp;quot; using `A(t)` ..&lt;br /&gt;
    hence &amp;quot;D(a,t) ⟶ S(a)&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;S(a)&amp;quot; using `D(a,t)` ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_7c:&lt;br /&gt;
  assumes &amp;quot;(∃x. Pu(x)) ⟶ (∀x. Pr(x) ⟶ A(x))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. A(x) ⟶ (∀y. D(y,x) ⟶ S(y))&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. Pu(x)&amp;quot;&lt;br /&gt;
          &amp;quot;Pr(t)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. D(x,t) ⟶ S(x)&amp;quot;&lt;br /&gt;
proof (rule allI)&lt;br /&gt;
  fix a &lt;br /&gt;
  show &amp;quot;D(a,t) ⟶ S(a)&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume &amp;quot;D(a,t)&amp;quot;&lt;br /&gt;
    have &amp;quot;∀x. Pr(x) ⟶ A(x)&amp;quot; using assms(1) assms(3) by (rule mp)&lt;br /&gt;
    hence &amp;quot;Pr(t) ⟶ A(t)&amp;quot; by (rule allE)&lt;br /&gt;
    hence &amp;quot;A(t)&amp;quot; using assms(4) by (rule mp)&lt;br /&gt;
    have &amp;quot;A(t) ⟶ (∀y. D(y,t) ⟶ S(y))&amp;quot; using assms(2) by (rule allE)&lt;br /&gt;
    hence &amp;quot;∀y. D(y,t) ⟶ S(y)&amp;quot; using `A(t)` by (rule mp)&lt;br /&gt;
    hence &amp;quot;D(a,t) ⟶ S(a)&amp;quot; by (rule allE)&lt;br /&gt;
    thus &amp;quot;S(a)&amp;quot; using `D(a,t)` by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Quien intente entrar en un país y no tenga pasaporte, encontrará&lt;br /&gt;
     algún aduanero que le impida el paso. A algunas personas&lt;br /&gt;
     motorizadas que intentan entrar en un país le impiden el paso&lt;br /&gt;
     únicamente personas motorizadas. Ninguna persona motorizada tiene&lt;br /&gt;
     pasaporte. Por tanto, ciertos aduaneros están motorizados.&lt;br /&gt;
  Usar E(x)   para x entra en un país&lt;br /&gt;
       P(x)   para x tiene pasaporte&lt;br /&gt;
       A(x)   para x es aduanero&lt;br /&gt;
       I(x,y) para x impide el paso a y&lt;br /&gt;
       M(x)   para x está motorizada&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_8a:&lt;br /&gt;
  assumes &amp;quot;∀x. E(x) ∧ ¬P(x) ⟶ (∃y. A(y) ∧ I(y,x))&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. M(x) ∧ E(x) ∧ (∀y. I(y,x) ⟶ M(y))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. M(x) ⟶ ¬P(x)&amp;quot;&lt;br /&gt;
  shows &amp;quot;∃x. A(x) ∧ M(x)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by blast&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_8b:&lt;br /&gt;
  assumes &amp;quot;∀x. E(x) ∧ ¬P(x) ⟶ (∃y. A(y) ∧ I(y,x))&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. M(x) ∧ E(x) ∧ (∀y. I(y,x) ⟶ M(y))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. M(x) ⟶ ¬P(x)&amp;quot;&lt;br /&gt;
  shows &amp;quot;∃x. A(x) ∧ M(x)&amp;quot;&lt;br /&gt;
proof - &lt;br /&gt;
  obtain a where a: &amp;quot;M(a) ∧ E(a) ∧ (∀y. I(y,a) ⟶ M(y))&amp;quot; using assms(2) ..&lt;br /&gt;
  hence &amp;quot;M(a)&amp;quot; ..&lt;br /&gt;
  have &amp;quot;M(a) ⟶ ¬P(a)&amp;quot; using assms(3) ..&lt;br /&gt;
  hence &amp;quot;¬P(a)&amp;quot; using `M(a)` ..&lt;br /&gt;
  have a1: &amp;quot;E(a) ∧ (∀y. I(y,a) ⟶ M(y))&amp;quot; using a ..&lt;br /&gt;
  hence &amp;quot;E(a)&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;E(a) ∧ ¬P(a)&amp;quot; using `¬P(a)` ..&lt;br /&gt;
  have &amp;quot;E(a) ∧ ¬P(a) ⟶ (∃y. A(y) ∧ I(y,a))&amp;quot; using assms(1) ..&lt;br /&gt;
  hence &amp;quot;∃y. A(y) ∧ I(y,a)&amp;quot; using `E(a) ∧ ¬P(a)`..&lt;br /&gt;
  then obtain b where b: &amp;quot;A(b) ∧ I(b,a)&amp;quot; ..&lt;br /&gt;
  have &amp;quot;A(b) ∧ M(b)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    show &amp;quot;A(b)&amp;quot; using b ..&lt;br /&gt;
  next&lt;br /&gt;
    have &amp;quot;I(b,a)&amp;quot; using b ..&lt;br /&gt;
    have &amp;quot;∀y. I(y,a) ⟶ M(y)&amp;quot; using a1 ..&lt;br /&gt;
    hence &amp;quot;I(b,a) ⟶ M(b)&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;M(b)&amp;quot; using `I(b,a)` ..&lt;br /&gt;
  qed&lt;br /&gt;
  thus &amp;quot;∃x. A(x) ∧ M(x)&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_8c:&lt;br /&gt;
  assumes &amp;quot;∀x. E(x) ∧ ¬P(x) ⟶ (∃y. A(y) ∧ I(y,x))&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. M(x) ∧ E(x) ∧ (∀y. I(y,x) ⟶ M(y))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. M(x) ⟶ ¬P(x)&amp;quot;&lt;br /&gt;
  shows &amp;quot;∃x. A(x) ∧ M(x)&amp;quot;&lt;br /&gt;
proof - &lt;br /&gt;
  obtain a where a: &amp;quot;M(a) ∧ E(a) ∧ (∀y. I(y,a) ⟶ M(y))&amp;quot; &lt;br /&gt;
    using assms(2) by (rule exE)&lt;br /&gt;
  hence &amp;quot;M(a)&amp;quot; by (rule conjunct1)&lt;br /&gt;
  have &amp;quot;M(a) ⟶ ¬P(a)&amp;quot; using assms(3) by (rule allE)&lt;br /&gt;
  hence &amp;quot;¬P(a)&amp;quot; using `M(a)` by (rule mp)&lt;br /&gt;
  have a1: &amp;quot;E(a) ∧ (∀y. I(y,a) ⟶ M(y))&amp;quot; using a by (rule conjunct2)&lt;br /&gt;
  hence &amp;quot;E(a)&amp;quot; by (rule conjunct1)&lt;br /&gt;
  hence &amp;quot;E(a) ∧ ¬P(a)&amp;quot; using `¬P(a)` by (rule conjI)&lt;br /&gt;
  have &amp;quot;E(a) ∧ ¬P(a) ⟶ (∃y. A(y) ∧ I(y,a))&amp;quot; &lt;br /&gt;
    using assms(1) by (rule allE)&lt;br /&gt;
  hence &amp;quot;∃y. A(y) ∧ I(y,a)&amp;quot; using `E(a) ∧ ¬P(a)`by (rule mp)&lt;br /&gt;
  then obtain b where b: &amp;quot;A(b) ∧ I(b,a)&amp;quot; by (rule exE)&lt;br /&gt;
  have &amp;quot;A(b) ∧ M(b)&amp;quot;&lt;br /&gt;
  proof (rule conjI)&lt;br /&gt;
    show &amp;quot;A(b)&amp;quot; using b by (rule conjunct1)&lt;br /&gt;
  next&lt;br /&gt;
    have &amp;quot;I(b,a)&amp;quot; using b by (rule conjunct2)&lt;br /&gt;
    have &amp;quot;∀y. I(y,a) ⟶ M(y)&amp;quot; using a1 by (rule conjunct2)&lt;br /&gt;
    hence &amp;quot;I(b,a) ⟶ M(b)&amp;quot; by (rule allE)&lt;br /&gt;
    thus &amp;quot;M(b)&amp;quot; using `I(b,a)`by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
  thus &amp;quot;∃x. A(x) ∧ M(x)&amp;quot; by (rule exI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Los aficionados al fútbol aplauden a cualquier futbolista&lt;br /&gt;
     extranjero. Juanito no aplaude a futbolistas extranjeros. Por&lt;br /&gt;
     tanto, si hay algún futbolista extranjero nacionalizado español,&lt;br /&gt;
     Juanito no es aficionado al fútbol.&lt;br /&gt;
  Usar Af(x)   para x es aficicionado al fútbol&lt;br /&gt;
       Ap(x,y) para x aplaude a y&lt;br /&gt;
       E(x)    para x es un futbolista extranjero&lt;br /&gt;
       N(x)    para x es un futbolista nacionalizado español&lt;br /&gt;
       j       para Juanito&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_9a:&lt;br /&gt;
  assumes &amp;quot;∀x. Af(x) ⟶ (∀y. E(y) ⟶ Ap(x,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. E(x) ⟶ ¬Ap(j,x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(∃x. E(x) ∧ N(x)) ⟶ ¬Af(j)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by blast&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_9b:&lt;br /&gt;
  assumes &amp;quot;∀x. Af(x) ⟶ (∀y. E(y) ⟶ Ap(x,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. E(x) ⟶ ¬Ap(j,x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(∃x. E(x) ∧ N(x)) ⟶ ¬Af(j)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;∃x. E(x) ∧ N(x)&amp;quot;&lt;br /&gt;
  then obtain a where a: &amp;quot;E(a) ∧ N(a)&amp;quot; ..&lt;br /&gt;
  show &amp;quot;¬Af(j)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;Af(j)&amp;quot;&lt;br /&gt;
    have &amp;quot;Af(j) ⟶ (∀y. E(y) ⟶ Ap(j,y))&amp;quot; using assms(1) ..&lt;br /&gt;
    hence &amp;quot;∀y. E(y) ⟶ Ap(j,y)&amp;quot; using `Af(j)` ..&lt;br /&gt;
    hence &amp;quot;E(a) ⟶ Ap(j,a)&amp;quot; ..&lt;br /&gt;
    have &amp;quot;E(a)&amp;quot; using a ..&lt;br /&gt;
    with `E(a) ⟶ Ap(j,a)` have &amp;quot;Ap(j,a)&amp;quot; ..&lt;br /&gt;
    have &amp;quot;E(a) ⟶ ¬Ap(j,a)&amp;quot; using assms(2) ..&lt;br /&gt;
    hence &amp;quot;¬Ap(j,a)&amp;quot; using `E(a)` ..&lt;br /&gt;
    thus False using `Ap(j,a)` ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_9c:&lt;br /&gt;
  assumes &amp;quot;∀x. Af(x) ⟶ (∀y. E(y) ⟶ Ap(x,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. E(x) ⟶ ¬Ap(j,x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;(∃x. E(x) ∧ N(x)) ⟶ ¬Af(j)&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;∃x. E(x) ∧ N(x)&amp;quot;&lt;br /&gt;
  then obtain a where a: &amp;quot;E(a) ∧ N(a)&amp;quot; by (rule exE)&lt;br /&gt;
  show &amp;quot;¬Af(j)&amp;quot;&lt;br /&gt;
  proof (rule notI)&lt;br /&gt;
    assume &amp;quot;Af(j)&amp;quot;&lt;br /&gt;
    have &amp;quot;Af(j) ⟶ (∀y. E(y) ⟶ Ap(j,y))&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
    hence &amp;quot;∀y. E(y) ⟶ Ap(j,y)&amp;quot; using `Af(j)` by (rule mp)&lt;br /&gt;
    hence &amp;quot;E(a) ⟶ Ap(j,a)&amp;quot; by (rule allE)&lt;br /&gt;
    have &amp;quot;E(a)&amp;quot; using a by (rule conjunct1)&lt;br /&gt;
    with `E(a) ⟶ Ap(j,a)` have &amp;quot;Ap(j,a)&amp;quot; by (rule mp)&lt;br /&gt;
    have &amp;quot;E(a) ⟶ ¬Ap(j,a)&amp;quot; using assms(2) by (rule allE)&lt;br /&gt;
    hence &amp;quot;¬Ap(j,a)&amp;quot; using `E(a)` by (rule mp)&lt;br /&gt;
    thus False using `Ap(j,a)` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Ningún aristócrata debe ser condenado a galeras a menos que sus&lt;br /&gt;
     crímenes sean vergonzosos y lleve una vida licenciosa. En la ciudad&lt;br /&gt;
     hay aristócratas que han cometido crímenes vergonzosos aunque su&lt;br /&gt;
     forma de vida no sea licenciosa. Por tanto, hay algún aristócrata&lt;br /&gt;
     que no está condenado a galeras. &lt;br /&gt;
  Usar A(x)  para x es aristócrata&lt;br /&gt;
       G(x)  para x está condenado a galeras&lt;br /&gt;
       L(x)  para x lleva una vida licenciosa&lt;br /&gt;
       V(x)  para x ha cometido crímenes vergonzoso&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_10a:&lt;br /&gt;
  assumes &amp;quot;∀x. A(x) ∧ G(x) ⟶ L(x) ∧ V(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. A(x) ∧ V(x) ∧ ¬L(x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. A(x) ∧ ¬G(x)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by blast&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_10b:&lt;br /&gt;
  assumes &amp;quot;∀x. A(x) ∧ G(x) ⟶ L(x) ∧ V(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. A(x) ∧ V(x) ∧ ¬L(x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. A(x) ∧ ¬G(x)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain b where b: &amp;quot;A(b) ∧ V(b) ∧ ¬L(b)&amp;quot; using assms(2) ..&lt;br /&gt;
  have &amp;quot;A(b) ∧ ¬G(b)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    show &amp;quot;A(b)&amp;quot; using b ..&lt;br /&gt;
  next&lt;br /&gt;
    show &amp;quot;¬G(b)&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;G(b)&amp;quot;&lt;br /&gt;
      have &amp;quot;¬L(b)&amp;quot;&lt;br /&gt;
      proof -&lt;br /&gt;
        have &amp;quot;V(b) ∧ ¬L(b)&amp;quot; using b ..&lt;br /&gt;
        thus &amp;quot;¬L(b)&amp;quot; ..&lt;br /&gt;
      qed&lt;br /&gt;
      moreover have &amp;quot;L(b)&amp;quot;&lt;br /&gt;
      proof -&lt;br /&gt;
        have &amp;quot;A(b) ∧ G(b) ⟶ L(b) ∧ V(b)&amp;quot; using assms(1) ..&lt;br /&gt;
        have &amp;quot;A(b)&amp;quot; using b ..&lt;br /&gt;
        hence &amp;quot;A(b) ∧ G(b)&amp;quot; using `G(b)` ..&lt;br /&gt;
        with `A(b) ∧ G(b) ⟶ L(b) ∧ V(b)` have &amp;quot;L(b) ∧ V(b)&amp;quot; ..&lt;br /&gt;
        thus &amp;quot;L(b)&amp;quot; ..&lt;br /&gt;
      qed&lt;br /&gt;
      ultimately show False ..&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
  thus &amp;quot;∃x. A(x) ∧ ¬G(x)&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_10c:&lt;br /&gt;
  assumes &amp;quot;∀x. A(x) ∧ G(x) ⟶ L(x) ∧ V(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. A(x) ∧ V(x) ∧ ¬L(x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. A(x) ∧ ¬G(x)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain b where b: &amp;quot;A(b) ∧ V(b) ∧ ¬L(b)&amp;quot; using assms(2) by (rule exE)&lt;br /&gt;
  have &amp;quot;A(b) ∧ ¬G(b)&amp;quot;&lt;br /&gt;
  proof (rule conjI)&lt;br /&gt;
    show &amp;quot;A(b)&amp;quot; using b by (rule conjunct1)&lt;br /&gt;
  next&lt;br /&gt;
    show &amp;quot;¬G(b)&amp;quot;&lt;br /&gt;
    proof (rule notI)&lt;br /&gt;
      assume &amp;quot;G(b)&amp;quot;&lt;br /&gt;
      have &amp;quot;¬L(b)&amp;quot;&lt;br /&gt;
      proof -&lt;br /&gt;
        have &amp;quot;V(b) ∧ ¬L(b)&amp;quot; using b by (rule conjunct2)&lt;br /&gt;
        thus &amp;quot;¬L(b)&amp;quot; by (rule conjunct2)&lt;br /&gt;
      qed&lt;br /&gt;
      moreover have &amp;quot;L(b)&amp;quot;&lt;br /&gt;
      proof -&lt;br /&gt;
        have &amp;quot;A(b) ∧ G(b) ⟶ L(b) ∧ V(b)&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
        have &amp;quot;A(b)&amp;quot; using b by (rule conjunct1)&lt;br /&gt;
        hence &amp;quot;A(b) ∧ G(b)&amp;quot; using `G(b)` by (rule conjI)&lt;br /&gt;
        with `A(b) ∧ G(b) ⟶ L(b) ∧ V(b)` have &amp;quot;L(b) ∧ V(b)&amp;quot; by (rule mp)&lt;br /&gt;
        thus &amp;quot;L(b)&amp;quot; by (rule conjunct1)&lt;br /&gt;
      qed&lt;br /&gt;
      ultimately show False by (rule notE)&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
  thus &amp;quot;∃x. A(x) ∧ ¬G(x)&amp;quot; by (rule exI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Todo individuo que esté conforme con el contenido de cualquier&lt;br /&gt;
     acuerdo internacional lo apoya o se inhibe en absoluto de asuntos&lt;br /&gt;
     políticos. Cualquiera que se inhiba de los asuntos políticos, no&lt;br /&gt;
     participará en el próximo referéndum. Todo español, está conforme&lt;br /&gt;
     con el acuerdo internacional de Maastricht, al que sin embargo no&lt;br /&gt;
     apoya. Por tanto, cualquier individuo o no es español, o en otro&lt;br /&gt;
     caso, está conforme con el contenido del acuerdo internacional de&lt;br /&gt;
     Maastricht y no participará en el próximo referéndum. &lt;br /&gt;
  Usar C(x,y) para la persona x conforme con el contenido del acuerdo y&lt;br /&gt;
       A(x,y) para la persona x apoya el acuerdo y&lt;br /&gt;
       I(x)   para la persona x se inibe de asuntos políticos&lt;br /&gt;
       R(x)   para la persona x participará en el próximo referéndum&lt;br /&gt;
       E(x)   para la persona x es española&lt;br /&gt;
       m      para el acuerdo de Maastricht&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_11a:&lt;br /&gt;
  assumes &amp;quot;∀x y. C(x,y) ⟶ A(x,y) ∨ I(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. I(x) ⟶ ¬R(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. E(x) ⟶ C(x,m) ∧ ¬A(x,m)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. ¬E(x) ∨ (C(x,m) ∧ ¬R(x))&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by blast&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_11b:&lt;br /&gt;
  assumes &amp;quot;∀x y. C(x,y) ⟶ A(x,y) ∨ I(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. I(x) ⟶ ¬R(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. E(x) ⟶ C(x,m) ∧ ¬A(x,m)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. ¬E(x) ∨ (C(x,m) ∧ ¬R(x))&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  fix a&lt;br /&gt;
  have &amp;quot;¬E(a) ∨ E(a)&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;¬E(a) ∨ (C(a,m) ∧ ¬R(a))&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;¬E(a)&amp;quot;&lt;br /&gt;
    thus &amp;quot;¬E(a) ∨ (C(a,m) ∧ ¬R(a))&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;E(a)&amp;quot;&lt;br /&gt;
    have &amp;quot;E(a) ⟶ C(a,m) ∧ ¬A(a,m)&amp;quot; using assms(3) ..&lt;br /&gt;
    hence &amp;quot;C(a,m) ∧ ¬A(a,m)&amp;quot; using `E(a)` ..&lt;br /&gt;
    hence &amp;quot;C(a,m)&amp;quot; .. &lt;br /&gt;
    have &amp;quot;∀y. C(a,y) ⟶ A(a,y) ∨ I(a)&amp;quot; using assms(1) ..&lt;br /&gt;
    hence &amp;quot;C(a,m) ⟶ A(a,m) ∨ I(a)&amp;quot; ..&lt;br /&gt;
    hence &amp;quot;A(a,m) ∨ I(a)&amp;quot; using `C(a,m)` ..&lt;br /&gt;
    hence &amp;quot;¬R(a)&amp;quot;&lt;br /&gt;
    proof &lt;br /&gt;
      assume &amp;quot;A(a,m)&amp;quot;&lt;br /&gt;
      have &amp;quot;¬A(a,m)&amp;quot; using `C(a,m) ∧ ¬A(a,m)`..&lt;br /&gt;
      thus &amp;quot;¬R(a)&amp;quot; using `A(a,m)` ..&lt;br /&gt;
    next&lt;br /&gt;
      assume &amp;quot;I(a)&amp;quot;&lt;br /&gt;
      have &amp;quot;I(a) ⟶ ¬R(a)&amp;quot; using assms(2) ..&lt;br /&gt;
      thus &amp;quot;¬R(a)&amp;quot; using `I(a)` ..&lt;br /&gt;
    qed&lt;br /&gt;
    with `C(a,m)` have &amp;quot;C(a,m) ∧ ¬R(a)&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;¬E(a) ∨ (C(a,m) ∧ ¬R(a))&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_11c:&lt;br /&gt;
  assumes &amp;quot;∀x y. C(x,y) ⟶ A(x,y) ∨ I(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. I(x) ⟶ ¬R(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. E(x) ⟶ C(x,m) ∧ ¬A(x,m)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. ¬E(x) ∨ (C(x,m) ∧ ¬R(x))&amp;quot;&lt;br /&gt;
proof (rule allI)&lt;br /&gt;
  fix a&lt;br /&gt;
  have &amp;quot;¬E(a) ∨ E(a)&amp;quot; by (rule excluded_middle)&lt;br /&gt;
  thus &amp;quot;¬E(a) ∨ (C(a,m) ∧ ¬R(a))&amp;quot; &lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;¬E(a)&amp;quot;&lt;br /&gt;
    thus &amp;quot;¬E(a) ∨ (C(a,m) ∧ ¬R(a))&amp;quot; by (rule disjI1)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;E(a)&amp;quot;&lt;br /&gt;
    have &amp;quot;E(a) ⟶ C(a,m) ∧ ¬A(a,m)&amp;quot; using assms(3) by (rule allE)&lt;br /&gt;
    hence &amp;quot;C(a,m) ∧ ¬A(a,m)&amp;quot; using `E(a)` by (rule mp)&lt;br /&gt;
    hence &amp;quot;C(a,m)&amp;quot; by (rule conjunct1)&lt;br /&gt;
    have &amp;quot;∀y. C(a,y) ⟶ A(a,y) ∨ I(a)&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
    hence &amp;quot;C(a,m) ⟶ A(a,m) ∨ I(a)&amp;quot; by (rule allE)&lt;br /&gt;
    hence &amp;quot;A(a,m) ∨ I(a)&amp;quot; using `C(a,m)` by (rule mp)&lt;br /&gt;
    hence &amp;quot;¬R(a)&amp;quot;&lt;br /&gt;
    proof (rule disjE)&lt;br /&gt;
      assume &amp;quot;A(a,m)&amp;quot;&lt;br /&gt;
      have &amp;quot;¬A(a,m)&amp;quot; using `C(a,m) ∧ ¬A(a,m)`by (rule conjunct2)&lt;br /&gt;
      thus &amp;quot;¬R(a)&amp;quot; using `A(a,m)` by (rule notE)&lt;br /&gt;
    next&lt;br /&gt;
      assume &amp;quot;I(a)&amp;quot;&lt;br /&gt;
      have &amp;quot;I(a) ⟶ ¬R(a)&amp;quot; using assms(2) by (rule allE)&lt;br /&gt;
      thus &amp;quot;¬R(a)&amp;quot; using `I(a)` by (rule mp)&lt;br /&gt;
    qed&lt;br /&gt;
    with `C(a,m)` have &amp;quot;C(a,m) ∧ ¬R(a)&amp;quot; by (rule conjI)&lt;br /&gt;
    thus &amp;quot;¬E(a) ∨ (C(a,m) ∧ ¬R(a))&amp;quot; by (rule disjI2)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Toda persona pobre tiene un padre rico. Por tanto, existe una&lt;br /&gt;
     persona rica que tiene un abuelo rico.&lt;br /&gt;
  Usar R(x) para x es rico&lt;br /&gt;
       p(x) para el padre de x&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_12a:&lt;br /&gt;
  assumes &amp;quot;∀x. ¬R(x) ⟶ R(p(x))&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. R(x) ∧ R(p(p(x)))&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by blast&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_12b:&lt;br /&gt;
  assumes &amp;quot;∀x. ¬R(x) ⟶ R(p(x))&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. R(x) ∧ R(p(p(x)))&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;∃x. R(x)&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬(∃x. R(x))&amp;quot;&lt;br /&gt;
    hence &amp;quot;∀x. ¬R(x)&amp;quot; by (rule no_ex)&lt;br /&gt;
    hence &amp;quot;¬R(a)&amp;quot; ..&lt;br /&gt;
    have &amp;quot;¬R(a) ⟶ R(p(a))&amp;quot; using assms ..&lt;br /&gt;
    hence &amp;quot;R(p(a))&amp;quot; using `¬R(a)` ..&lt;br /&gt;
    hence &amp;quot;∃x. R(x)&amp;quot; ..&lt;br /&gt;
    with `¬(∃x. R(x))` show False ..&lt;br /&gt;
  qed&lt;br /&gt;
  then obtain a where &amp;quot;R(a)&amp;quot; ..&lt;br /&gt;
  have &amp;quot;¬R(p(p(a))) ∨ R(p(p(a)))&amp;quot; by (rule excluded_middle)&lt;br /&gt;
  thus &amp;quot;∃x. R(x) ∧ R(p(p(x)))&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;¬R(p(p(a)))&amp;quot;&lt;br /&gt;
    have &amp;quot;R(p(a)) ∧ R(p(p(p(a))))&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      show &amp;quot;R(p(a))&amp;quot;&lt;br /&gt;
      proof (rule ccontr)&lt;br /&gt;
        assume &amp;quot;¬R(p(a))&amp;quot;&lt;br /&gt;
        have &amp;quot;¬R(p(a)) ⟶ R(p(p(a)))&amp;quot; using assms ..&lt;br /&gt;
        hence &amp;quot;R(p(p(a)))&amp;quot; using `¬R(p(a))` ..&lt;br /&gt;
        with `¬R(p(p(a)))` show False ..&lt;br /&gt;
      qed&lt;br /&gt;
    next&lt;br /&gt;
      show &amp;quot;R(p(p(p(a))))&amp;quot;&lt;br /&gt;
      proof -&lt;br /&gt;
        have &amp;quot;¬R(p(p(a))) ⟶ R(p(p(p(a))))&amp;quot; using assms ..&lt;br /&gt;
        thus &amp;quot;R(p(p(p(a))))&amp;quot; using `¬R(p(p(a)))` .. &lt;br /&gt;
      qed&lt;br /&gt;
    qed&lt;br /&gt;
    thus &amp;quot;∃x. R(x) ∧ R(p(p(x)))&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;R(p(p(a)))&amp;quot;&lt;br /&gt;
    with `R(a)` have &amp;quot;R(a) ∧ R(p(p(a)))&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;∃x. R(x) ∧ R(p(p(x)))&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_12c:&lt;br /&gt;
  assumes &amp;quot;∀x. ¬R(x) ⟶ R(p(x))&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. R(x) ∧ R(p(p(x)))&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;∃x. R(x)&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬(∃x. R(x))&amp;quot;&lt;br /&gt;
    hence &amp;quot;∀x. ¬R(x)&amp;quot; by (rule no_ex)&lt;br /&gt;
    hence &amp;quot;¬R(a)&amp;quot; by (rule allE)&lt;br /&gt;
    have &amp;quot;¬R(a) ⟶ R(p(a))&amp;quot; using assms by (rule allE)&lt;br /&gt;
    hence &amp;quot;R(p(a))&amp;quot; using `¬R(a)` by (rule mp)&lt;br /&gt;
    hence &amp;quot;∃x. R(x)&amp;quot; by (rule exI)&lt;br /&gt;
    with `¬(∃x. R(x))` show False by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
  then obtain a where &amp;quot;R(a)&amp;quot; by (rule exE)&lt;br /&gt;
  have &amp;quot;¬R(p(p(a))) ∨ R(p(p(a)))&amp;quot; by (rule excluded_middle)&lt;br /&gt;
  thus &amp;quot;∃x. R(x) ∧ R(p(p(x)))&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;¬R(p(p(a)))&amp;quot;&lt;br /&gt;
    have &amp;quot;R(p(a)) ∧ R(p(p(p(a))))&amp;quot;&lt;br /&gt;
    proof (rule conjI)&lt;br /&gt;
      show &amp;quot;R(p(a))&amp;quot;&lt;br /&gt;
      proof (rule ccontr)&lt;br /&gt;
        assume &amp;quot;¬R(p(a))&amp;quot;&lt;br /&gt;
        have &amp;quot;¬R(p(a)) ⟶ R(p(p(a)))&amp;quot; using assms by (rule allE)&lt;br /&gt;
        hence &amp;quot;R(p(p(a)))&amp;quot; using `¬R(p(a))` by (rule mp)&lt;br /&gt;
        with `¬R(p(p(a)))` show False by (rule notE)&lt;br /&gt;
      qed&lt;br /&gt;
    next&lt;br /&gt;
      show &amp;quot;R(p(p(p(a))))&amp;quot;&lt;br /&gt;
      proof -&lt;br /&gt;
        have &amp;quot;¬R(p(p(a))) ⟶ R(p(p(p(a))))&amp;quot; using assms by (rule allE)&lt;br /&gt;
        thus &amp;quot;R(p(p(p(a))))&amp;quot; using `¬R(p(p(a)))` by (rule mp)&lt;br /&gt;
      qed&lt;br /&gt;
    qed&lt;br /&gt;
    thus &amp;quot;∃x. R(x) ∧ R(p(p(x)))&amp;quot; by (rule exI)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;R(p(p(a)))&amp;quot;&lt;br /&gt;
    with `R(a)` have &amp;quot;R(a) ∧ R(p(p(a)))&amp;quot; by (rule conjI)&lt;br /&gt;
    thus &amp;quot;∃x. R(x) ∧ R(p(p(x)))&amp;quot; by (rule exI)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 13. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Todo deprimido que estima a un submarinista es listo. Cualquiera&lt;br /&gt;
     que se estime a sí mismo es listo. Ningún deprimido se estima a sí&lt;br /&gt;
     mismo. Por tanto, ningún deprimido estima a un submarinista.&lt;br /&gt;
  Usar D(x)   para x está deprimido&lt;br /&gt;
       E(x,y) para x estima a y&lt;br /&gt;
       L(x)   para x es listo&lt;br /&gt;
       S(x)   para x es submarinista&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_13a:&lt;br /&gt;
  assumes &amp;quot;∀x. D(x) ∧ (∃y. S(y) ∧ E(x,y)) ⟶ L(x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. E(x,x) ⟶ L(x)&amp;quot;&lt;br /&gt;
          &amp;quot;¬(∃x. D(x) ∧ E(x,x))&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(∃x. D(x) ∧ (∃y. S(y) ∧ E(x,y)))&amp;quot;&lt;br /&gt;
quickcheck&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  El argumento es incorrecto como muestra el siguiente contraejemplo:&lt;br /&gt;
     Quickcheck found a counterexample:&lt;br /&gt;
     D = {a2}&lt;br /&gt;
     S = {a1}&lt;br /&gt;
     E = {(a2, a1)}&lt;br /&gt;
     L = {a2}&lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 14. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Todos los robots obedecen a los amigos del programador jefe.&lt;br /&gt;
     Alvaro es amigo del programador jefe, pero Benito no le&lt;br /&gt;
     obedece. Por tanto, Benito no es un robot.&lt;br /&gt;
  Usar R(x)    para x es un robot&lt;br /&gt;
       Ob(x,y) para x obedece a y&lt;br /&gt;
       A(x)    para x es amigo del programador jefe&lt;br /&gt;
       b       para Benito&lt;br /&gt;
       a       para Alvaro&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_14a:&lt;br /&gt;
  assumes &amp;quot;∀x y. R(x) ∧ A(y) ⟶ Ob(x,y)&amp;quot;&lt;br /&gt;
          &amp;quot;A(a)&amp;quot;&lt;br /&gt;
          &amp;quot;¬Ob(b,a)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬R(b)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by blast&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_14b:&lt;br /&gt;
  fixes R A :: &amp;quot;&amp;#039;a ⇒ bool&amp;quot; and&lt;br /&gt;
        Ob :: &amp;quot;&amp;#039;a × &amp;#039;a ⇒ bool&amp;quot;&lt;br /&gt;
  assumes &amp;quot;∀x y. R(x) ∧ A(y) ⟶ Ob(x,y)&amp;quot;&lt;br /&gt;
          &amp;quot;A(a)&amp;quot;&lt;br /&gt;
          &amp;quot;¬Ob(b,a)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬R(b)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;R(b)&amp;quot;&lt;br /&gt;
  have &amp;quot;∀y. R(b) ∧ A(y) ⟶ Ob(b,y)&amp;quot; using assms(1) ..&lt;br /&gt;
  hence &amp;quot;R(b) ∧ A(a) ⟶ Ob(b,a)&amp;quot; ..&lt;br /&gt;
  have &amp;quot;R(b) ∧ A(a)&amp;quot; using `R(b)` assms(2) ..&lt;br /&gt;
  with `R(b) ∧ A(a) ⟶ Ob(b,a)` have &amp;quot;Ob(b,a)&amp;quot; ..&lt;br /&gt;
  with assms(3) show False ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_14c:&lt;br /&gt;
  fixes R A :: &amp;quot;&amp;#039;a ⇒ bool&amp;quot; and&lt;br /&gt;
        Ob :: &amp;quot;&amp;#039;a × &amp;#039;a ⇒ bool&amp;quot;&lt;br /&gt;
  assumes &amp;quot;∀x y. R(x) ∧ A(y) ⟶ Ob(x,y)&amp;quot;&lt;br /&gt;
          &amp;quot;A(a)&amp;quot;&lt;br /&gt;
          &amp;quot;¬Ob(b,a)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬R(b)&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume &amp;quot;R(b)&amp;quot;&lt;br /&gt;
  have &amp;quot;∀y. R(b) ∧ A(y) ⟶ Ob(b,y)&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
  hence &amp;quot;R(b) ∧ A(a) ⟶ Ob(b,a)&amp;quot; by (rule allE)&lt;br /&gt;
  have &amp;quot;R(b) ∧ A(a)&amp;quot; using `R(b)` assms(2) by (rule conjI)&lt;br /&gt;
  with `R(b) ∧ A(a) ⟶ Ob(b,a)` have &amp;quot;Ob(b,a)&amp;quot; by (rule mp)&lt;br /&gt;
  with assms(3) show False by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 15. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     En una pecera nadan una serie de peces. Se observa que:&lt;br /&gt;
     * Hay algún pez x que para cualquier pez y, si el pez x no se come&lt;br /&gt;
       al pez y entonces existe un pez z tal que z es un tiburón o bien&lt;br /&gt;
       z protege al pez y. &lt;br /&gt;
     * No hay ningún pez que se coma a todos los demás.&lt;br /&gt;
     * Ningún pez protege a ningún otro.&lt;br /&gt;
     Por tanto, existe algún tiburón en la pecera.&lt;br /&gt;
  Usar C(x,y) para x se come a y &lt;br /&gt;
       P(x,y) para x protege a y&lt;br /&gt;
       T(x)   para x es un tiburón&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_15a:&lt;br /&gt;
  assumes &amp;quot;∃x. ∀y. ¬C(x,y) ⟶ (∃z. T(z) ∨ P(z,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. ∃y. ¬C(x,y)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y. ¬P(x,y)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. T(x)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_15b:&lt;br /&gt;
  assumes &amp;quot;∃x. ∀y. ¬C(x,y) ⟶ (∃z. T(z) ∨ P(z,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. ∃y. ¬C(x,y)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y. ¬P(x,y)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. T(x)&amp;quot;&lt;br /&gt;
proof - &lt;br /&gt;
  obtain a where  a: &amp;quot;∀y. ¬C(a,y) ⟶ (∃z. T(z) ∨ P(z,y))&amp;quot; &lt;br /&gt;
    using assms(1) ..&lt;br /&gt;
  have &amp;quot;∃y. ¬C(a,y)&amp;quot; using assms(2) ..&lt;br /&gt;
  then obtain b where &amp;quot;¬C(a,b)&amp;quot; ..&lt;br /&gt;
  have &amp;quot;¬C(a,b) ⟶ (∃z. T(z) ∨ P(z,b))&amp;quot; using a ..&lt;br /&gt;
  hence &amp;quot;∃z. T(z) ∨ P(z,b)&amp;quot; using `¬C(a,b)` ..&lt;br /&gt;
  then obtain c where &amp;quot;T(c) ∨ P(c,b)&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;∃x. T(x)&amp;quot;&lt;br /&gt;
  proof &lt;br /&gt;
    assume &amp;quot;T(c)&amp;quot;&lt;br /&gt;
    thus &amp;quot;∃x. T(x)&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;P(c,b)&amp;quot;&lt;br /&gt;
    have &amp;quot;∀y. ¬P(c,y)&amp;quot; using assms(3) ..&lt;br /&gt;
    hence &amp;quot;¬P(c,b)&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;∃x. T(x)&amp;quot; using `P(c,b)` ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_15c:&lt;br /&gt;
  assumes &amp;quot;∃x. ∀y. ¬C(x,y) ⟶ (∃z. T(z) ∨ P(z,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. ∃y. ¬C(x,y)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y. ¬P(x,y)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. T(x)&amp;quot;&lt;br /&gt;
proof - &lt;br /&gt;
  obtain a where  a: &amp;quot;∀y. ¬C(a,y) ⟶ (∃z. T(z) ∨ P(z,y))&amp;quot; &lt;br /&gt;
    using assms(1) by (rule exE)&lt;br /&gt;
  have &amp;quot;∃y. ¬C(a,y)&amp;quot; using assms(2) by (rule allE)&lt;br /&gt;
  then obtain b where &amp;quot;¬C(a,b)&amp;quot; by (rule exE)&lt;br /&gt;
  have &amp;quot;¬C(a,b) ⟶ (∃z. T(z) ∨ P(z,b))&amp;quot; using a by (rule allE)&lt;br /&gt;
  hence &amp;quot;∃z. T(z) ∨ P(z,b)&amp;quot; using `¬C(a,b)` by (rule mp)&lt;br /&gt;
  then obtain c where &amp;quot;T(c) ∨ P(c,b)&amp;quot; by (rule exE)&lt;br /&gt;
  thus &amp;quot;∃x. T(x)&amp;quot;&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    assume &amp;quot;T(c)&amp;quot;&lt;br /&gt;
    thus &amp;quot;∃x. T(x)&amp;quot; by (rule exI)&lt;br /&gt;
  next&lt;br /&gt;
    assume &amp;quot;P(c,b)&amp;quot;&lt;br /&gt;
    have &amp;quot;∀y. ¬P(c,y)&amp;quot; using assms(3) by (rule allE)&lt;br /&gt;
    hence &amp;quot;¬P(c,b)&amp;quot; by (rule allE)&lt;br /&gt;
    thus &amp;quot;∃x. T(x)&amp;quot; using `P(c,b)` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_14&amp;diff=178</id>
		<title>RA12 Relación 14</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_14&amp;diff=178"/>
		<updated>2018-07-15T11:57:32Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «lang=&amp;quot;isar&amp;quot;» por «lang=&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R14: Contador de occurrencias *}&lt;br /&gt;
&lt;br /&gt;
theory R14&lt;br /&gt;
imports Main&lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Definir la función &lt;br /&gt;
     veces :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ nat&amp;quot;&lt;br /&gt;
  tal que (veces x ys) es el número de occurrencias del elemento x en la&lt;br /&gt;
  lista ys. Por ejemplo, &lt;br /&gt;
    veces (2::nat) [2,1,2,5,2] = 3&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun veces :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;veces x ys = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Demostrar o refutar:&lt;br /&gt;
     veces a (xs @ ys) = veces a xs + veces a ys&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*} &lt;br /&gt;
&lt;br /&gt;
lemma veces_append:&lt;br /&gt;
  &amp;quot;veces a (xs @ ys) = veces a xs + veces a ys&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Demostrar o refutar:&lt;br /&gt;
     veces a xs = veces a (rev xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*} &lt;br /&gt;
&lt;br /&gt;
lemma veces_rev:&lt;br /&gt;
  &amp;quot;veces a xs = veces a (rev xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Demostrar o refutar:&lt;br /&gt;
    &amp;quot;veces a xs ≤ length xs&amp;quot;.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma veces_le_length_auto:&lt;br /&gt;
  &amp;quot;veces a xs ≤ length xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Sabiendo que la función map aplica una función a todos&lt;br /&gt;
  los elementos de una lista: &lt;br /&gt;
     map f [x\&amp;lt;^isub&amp;gt;1,…,x\&amp;lt;^isub&amp;gt;n] = [f x\&amp;lt;^isub&amp;gt;1,…,f x\&amp;lt;^isub&amp;gt;n], &lt;br /&gt;
  demostrar o refutar&lt;br /&gt;
     veces a (map f xs) = veces (f a) xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma veces_map:&lt;br /&gt;
  &amp;quot;veces a (map f xs) = veces (f a) xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. La función &lt;br /&gt;
     filter :: &amp;quot;(&amp;#039;a ⇒ bool) ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; &lt;br /&gt;
  está definida por&lt;br /&gt;
     filter P []       = []&lt;br /&gt;
     filter P (x # xs) = (if P x then x # filter P xs else filter P xs)&lt;br /&gt;
  Encontrar una expresión e que no contenga filter tal que se verifique&lt;br /&gt;
  la siguiente propiedad: &lt;br /&gt;
     veces a (filter P xs) = e&lt;br /&gt;
  y demostrar la conjetura.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Usando veces, definir la función &lt;br /&gt;
     borraDups :: &amp;quot;&amp;#039;a list ⇒ bool&amp;quot;&lt;br /&gt;
  tal que (borraDups xs) es la lista obtenida eliminando los elementos&lt;br /&gt;
  duplicados de la lista xs. Por ejemplo,  &lt;br /&gt;
     borraDups [1::nat,2,4,2,3] = [1,4,2,3]&lt;br /&gt;
&lt;br /&gt;
  Nota: La función borraDups es equivalente a la predefinida remdups. &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun borraDups :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;borraDups xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Encontrar una expresión e que no contenga la función&lt;br /&gt;
  borraDups tal que se verifique &lt;br /&gt;
     veces x (borraDups xs) = e&lt;br /&gt;
  y demostrar la conjetura.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Usando la función &amp;quot;veces&amp;quot;, definir la función &lt;br /&gt;
     distintos :: &amp;quot;&amp;#039;a list ⇒ bool&amp;quot;&lt;br /&gt;
  tal que (distintos xs) se verifica si cada elemento de xs aparece tan&lt;br /&gt;
  solo una vez. Por ejemplo, &lt;br /&gt;
     distintos [1,4,3]&lt;br /&gt;
     ¬ distintos [1,4,1]&lt;br /&gt;
&lt;br /&gt;
  Nota: La función &amp;quot;distintos&amp;quot; es equivalente a la predefinida &amp;quot;distinct&amp;quot;.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun distintos :: &amp;quot;&amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;distintos xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Demostrar que el valor de &amp;quot;borraDups&amp;quot; verifica&lt;br /&gt;
  &amp;quot;distintos&amp;quot;.  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma distintos_borraDups:&lt;br /&gt;
  &amp;quot;distintos (borraDups xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=GLC_T2R2b&amp;diff=177</id>
		<title>GLC T2R2b</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=GLC_T2R2b&amp;diff=177"/>
		<updated>2018-07-15T11:57:26Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «lang=&amp;quot;isar&amp;quot;» por «lang=&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* T2R2b: Argumentación en lógica de primer orden *}&lt;br /&gt;
&lt;br /&gt;
theory T2R2b&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 16. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Supongamos conocidos los siguientes hechos acerca del número de&lt;br /&gt;
     aprobados de dos asignaturas A y B: &lt;br /&gt;
     * Si todos los alumnos aprueban la asignatura A, entonces todos&lt;br /&gt;
       aprueban la asignatura B.&lt;br /&gt;
     * Si algún delegado de la clase aprueba A y B, entonces todos los &lt;br /&gt;
       alumnos aprueban A.&lt;br /&gt;
     * Si nadie aprueba B, entonces ningún delegado aprueba A.&lt;br /&gt;
     * Si Manuel no aprueba B, entonces nadie aprueba B.&lt;br /&gt;
     Por tanto, si Manuel es un delegado y aprueba la asignatura A,&lt;br /&gt;
     entonces todos los alumnos aprueban las asignaturas A y B.&lt;br /&gt;
  Usar A(x,y) para x aprueba la asignatura y&lt;br /&gt;
       D(x)   para x es delegado&lt;br /&gt;
       m      para Manuel&lt;br /&gt;
       a      para la asignatura A&lt;br /&gt;
       b      para la asignatura B&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_16a:&lt;br /&gt;
  assumes &amp;quot;(∀x. A(x,a)) ⟶ (∀x. A(x,b))&amp;quot;&lt;br /&gt;
          &amp;quot;(∃x. D(x) ∧ A(x,a) ∧ A(x,b)) ⟶ (∀x. A(x,a))&amp;quot;&lt;br /&gt;
          &amp;quot;(∀x. ¬A(x,b)) ⟶ (∀x. D(x) ⟶ ¬A(x,a))&amp;quot;&lt;br /&gt;
          &amp;quot;¬A(m,b) ⟶ (∀x. ¬A(x,b))&amp;quot;&lt;br /&gt;
   shows  &amp;quot;D(m) ∧ A(m,a) ⟶ (∀x. A(x,a) ∧ A(x,b))&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by blast&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_16b:&lt;br /&gt;
  assumes &amp;quot;(∀x. A(x,a)) ⟶ (∀x. A(x,b))&amp;quot;&lt;br /&gt;
          &amp;quot;(∃x. D(x) ∧ A(x,a) ∧ A(x,b)) ⟶ (∀x. A(x,a))&amp;quot;&lt;br /&gt;
          &amp;quot;(∀x. ¬A(x,b)) ⟶ (∀x. D(x) ⟶ ¬A(x,a))&amp;quot;&lt;br /&gt;
          &amp;quot;¬A(m,b) ⟶ (∀x. ¬A(x,b))&amp;quot;&lt;br /&gt;
   shows  &amp;quot;D(m) ∧ A(m,a) ⟶ (∀x. A(x,a) ∧ A(x,b))&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;D(m) ∧ A(m,a)&amp;quot;&lt;br /&gt;
  hence &amp;quot;D(m)&amp;quot; ..&lt;br /&gt;
  have &amp;quot;A(m,a)&amp;quot; using `D(m) ∧ A(m,a)` ..&lt;br /&gt;
  have &amp;quot;A(m,b)&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬A(m,b)&amp;quot;&lt;br /&gt;
    with assms(4) have &amp;quot;∀x. ¬A(x,b)&amp;quot; ..&lt;br /&gt;
    with assms(3) have &amp;quot;∀x. D(x) ⟶ ¬A(x,a)&amp;quot; ..&lt;br /&gt;
    hence &amp;quot;D(m) ⟶ ¬A(m,a)&amp;quot; ..&lt;br /&gt;
    hence &amp;quot;¬A(m,a)&amp;quot; using `D(m)` ..&lt;br /&gt;
    thus False using `A(m,a)` ..&lt;br /&gt;
  qed&lt;br /&gt;
  with `A(m,a)` have &amp;quot;A(m,a) ∧ A(m,b)&amp;quot; ..&lt;br /&gt;
  with `D(m)` have &amp;quot;D(m) ∧ A(m,a) ∧ A(m,b)&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;∃x. D(x) ∧ A(x,a) ∧ A(x,b)&amp;quot; ..&lt;br /&gt;
  with assms(2) have &amp;quot;∀x. A(x,a)&amp;quot; ..&lt;br /&gt;
  with assms(1) have &amp;quot;∀x. A(x,b)&amp;quot; ..&lt;br /&gt;
  show &amp;quot;∀x. A(x,a) ∧ A(x,b)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    fix c&lt;br /&gt;
    show &amp;quot;A(c,a) ∧ A(c,b)&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      show &amp;quot;A(c,a)&amp;quot; using `∀x. A(x,a)` ..&lt;br /&gt;
    next&lt;br /&gt;
      show &amp;quot;A(c,b)&amp;quot; using `∀x. A(x,b)` ..&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_16c:&lt;br /&gt;
  assumes &amp;quot;(∀x. A(x,a)) ⟶ (∀x. A(x,b))&amp;quot;&lt;br /&gt;
          &amp;quot;(∃x. D(x) ∧ A(x,a) ∧ A(x,b)) ⟶ (∀x. A(x,a))&amp;quot;&lt;br /&gt;
          &amp;quot;(∀x. ¬A(x,b)) ⟶ (∀x. D(x) ⟶ ¬A(x,a))&amp;quot;&lt;br /&gt;
          &amp;quot;¬A(m,b) ⟶ (∀x. ¬A(x,b))&amp;quot;&lt;br /&gt;
   shows  &amp;quot;D(m) ∧ A(m,a) ⟶ (∀x. A(x,a) ∧ A(x,b))&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;D(m) ∧ A(m,a)&amp;quot;&lt;br /&gt;
  hence &amp;quot;D(m)&amp;quot; by (rule conjunct1)&lt;br /&gt;
  have &amp;quot;A(m,a)&amp;quot; using `D(m) ∧ A(m,a)` by (rule conjunct2)&lt;br /&gt;
  have &amp;quot;A(m,b)&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬A(m,b)&amp;quot;&lt;br /&gt;
    with assms(4) have &amp;quot;∀x. ¬A(x,b)&amp;quot; by (rule mp)&lt;br /&gt;
    with assms(3) have &amp;quot;∀x. D(x) ⟶ ¬A(x,a)&amp;quot; by (rule mp)&lt;br /&gt;
    hence &amp;quot;D(m) ⟶ ¬A(m,a)&amp;quot; by (rule allE)&lt;br /&gt;
    hence &amp;quot;¬A(m,a)&amp;quot; using `D(m)` by (rule mp)&lt;br /&gt;
    thus False using `A(m,a)` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
  with `A(m,a)` have &amp;quot;A(m,a) ∧ A(m,b)&amp;quot; by (rule conjI)&lt;br /&gt;
  with `D(m)` have &amp;quot;D(m) ∧ A(m,a) ∧ A(m,b)&amp;quot; by (rule conjI)&lt;br /&gt;
  hence &amp;quot;∃x. D(x) ∧ A(x,a) ∧ A(x,b)&amp;quot; by (rule exI)&lt;br /&gt;
  with assms(2) have &amp;quot;∀x. A(x,a)&amp;quot; by (rule mp)&lt;br /&gt;
  with assms(1) have &amp;quot;∀x. A(x,b)&amp;quot; by (rule mp)&lt;br /&gt;
  show &amp;quot;∀x. A(x,a) ∧ A(x,b)&amp;quot;&lt;br /&gt;
  proof (rule allI)&lt;br /&gt;
    fix c&lt;br /&gt;
    show &amp;quot;A(c,a) ∧ A(c,b)&amp;quot;&lt;br /&gt;
    proof (rule conjI)&lt;br /&gt;
      show &amp;quot;A(c,a)&amp;quot; using `∀x. A(x,a)` by (rule allE)&lt;br /&gt;
    next&lt;br /&gt;
      show &amp;quot;A(c,b)&amp;quot; using `∀x. A(x,b)` by (rule allE)&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 17. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     En cierto país oriental se ha celebrado la fase final del&lt;br /&gt;
     campeonato mundial de fútbol. Cierto diario deportivo ha publicado&lt;br /&gt;
     las siguientes estadísticas de tan magno acontecimiento: &lt;br /&gt;
     * A todos los porteros que no vistieron camiseta negra les marcó un&lt;br /&gt;
       gol algún delantero europeo.  &lt;br /&gt;
     * Algún portero jugó con botas blancas y sólo le marcaron goles&lt;br /&gt;
       jugadores con botas blancas.  &lt;br /&gt;
     * Ningún portero se marcó un gol a sí mismo. &lt;br /&gt;
     * Ningún jugador con botas blancas vistió camiseta negra. &lt;br /&gt;
     Por tanto, algún delantero europeo jugó con botas blancas.&lt;br /&gt;
  Usar P(x)   para x es portero&lt;br /&gt;
       D(x)   para x es delantero europeo &lt;br /&gt;
       N(x)   para x viste camiseta negra&lt;br /&gt;
       B(x)   para x juega con botas blancas &lt;br /&gt;
       M(x,y) para x marcó un gol a y&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_17a:&lt;br /&gt;
  assumes &amp;quot;∀x. P(x) ∧ ¬N(x) ⟶ (∃y. D(y) ∧ M(y,x))&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. P(x) ∧ B(x) ∧ (∀y. M(y,x) ⟶ B(y))&amp;quot;&lt;br /&gt;
          &amp;quot;¬(∃x. P(x) ∧ M(x,x))&amp;quot;&lt;br /&gt;
          &amp;quot;¬(∃x. B(x) ∧ N(x))&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. D(x) ∧ B(x)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by blast&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_17b:&lt;br /&gt;
  assumes &amp;quot;∀x. P(x) ∧ ¬N(x) ⟶ (∃y. D(y) ∧ M(y,x))&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. P(x) ∧ B(x) ∧ (∀y. M(y,x) ⟶ B(y))&amp;quot;&lt;br /&gt;
          &amp;quot;¬(∃x. P(x) ∧ M(x,x))&amp;quot;&lt;br /&gt;
          &amp;quot;¬(∃x. B(x) ∧ N(x))&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. D(x) ∧ B(x)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where a: &amp;quot;P(a) ∧ B(a) ∧ (∀y. M(y,a) ⟶ B(y))&amp;quot;&lt;br /&gt;
    using assms(2) ..&lt;br /&gt;
  have &amp;quot;P(a) ∧ ¬N(a)&amp;quot; &lt;br /&gt;
  proof &lt;br /&gt;
    show &amp;quot;P(a)&amp;quot; using a ..&lt;br /&gt;
  next&lt;br /&gt;
    have &amp;quot;B(a) ∧ (∀y. M(y,a) ⟶ B(y))&amp;quot; using a ..&lt;br /&gt;
    hence &amp;quot;B(a)&amp;quot; ..&lt;br /&gt;
    have &amp;quot;∀x. ¬(B(x) ∧ N(x))&amp;quot; using assms(4) by (rule no_ex)&lt;br /&gt;
    hence &amp;quot;¬(B(a) ∧ N(a))&amp;quot; ..&lt;br /&gt;
    show &amp;quot;¬N(a)&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;N(a)&amp;quot;&lt;br /&gt;
      with `B(a)` have &amp;quot;B(a) ∧ N(a)&amp;quot; .. &lt;br /&gt;
      with `¬(B(a) ∧ N(a))` show False ..&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
  hence &amp;quot;∃y. D(y) ∧ M(y,a)&amp;quot; &lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;P(a) ∧ ¬N(a) ⟶ (∃y. D(y) ∧ M(y,a))&amp;quot; using assms(1) ..&lt;br /&gt;
    thus &amp;quot;∃y. D(y) ∧ M(y,a)&amp;quot; using `P(a) ∧ ¬N(a)` ..&lt;br /&gt;
  qed&lt;br /&gt;
  then obtain b where &amp;quot;D(b) ∧ M(b,a)&amp;quot; ..&lt;br /&gt;
  have &amp;quot;D(b) ∧ B(b)&amp;quot; &lt;br /&gt;
  proof&lt;br /&gt;
    show &amp;quot;D(b)&amp;quot; using `D(b) ∧ M(b,a)` ..&lt;br /&gt;
  next&lt;br /&gt;
    have &amp;quot;M(b,a)&amp;quot; using `D(b) ∧ M(b,a)` ..&lt;br /&gt;
    have &amp;quot;B(a) ∧ (∀y. M(y,a) ⟶ B(y))&amp;quot; using a ..&lt;br /&gt;
    hence &amp;quot;∀y. M(y,a) ⟶ B(y)&amp;quot; ..&lt;br /&gt;
    hence &amp;quot;M(b,a) ⟶ B(b)&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;B(b)&amp;quot; using `M(b,a)` ..&lt;br /&gt;
  qed&lt;br /&gt;
  thus &amp;quot;∃x. D(x) ∧ B(x)&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_17c:&lt;br /&gt;
  assumes &amp;quot;∀x. P(x) ∧ ¬N(x) ⟶ (∃y. D(y) ∧ M(y,x))&amp;quot;&lt;br /&gt;
          &amp;quot;∃x. P(x) ∧ B(x) ∧ (∀y. M(y,x) ⟶ B(y))&amp;quot;&lt;br /&gt;
          &amp;quot;¬(∃x. P(x) ∧ M(x,x))&amp;quot;&lt;br /&gt;
          &amp;quot;¬(∃x. B(x) ∧ N(x))&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. D(x) ∧ B(x)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where a: &amp;quot;P(a) ∧ B(a) ∧ (∀y. M(y,a) ⟶ B(y))&amp;quot;&lt;br /&gt;
    using assms(2) by (rule exE)&lt;br /&gt;
  have &amp;quot;P(a) ∧ ¬N(a)&amp;quot; &lt;br /&gt;
  proof (rule conjI)&lt;br /&gt;
    show &amp;quot;P(a)&amp;quot; using a by (rule conjunct1)&lt;br /&gt;
  next&lt;br /&gt;
    have &amp;quot;B(a) ∧ (∀y. M(y,a) ⟶ B(y))&amp;quot; using a by (rule conjunct2)&lt;br /&gt;
    hence &amp;quot;B(a)&amp;quot; by (rule conjunct1)&lt;br /&gt;
    have &amp;quot;∀x. ¬(B(x) ∧ N(x))&amp;quot; using assms(4) by (rule no_ex)&lt;br /&gt;
    hence &amp;quot;¬(B(a) ∧ N(a))&amp;quot; by (rule allE)&lt;br /&gt;
    show &amp;quot;¬N(a)&amp;quot;&lt;br /&gt;
    proof (rule notI)&lt;br /&gt;
      assume &amp;quot;N(a)&amp;quot;&lt;br /&gt;
      with `B(a)` have &amp;quot;B(a) ∧ N(a)&amp;quot; by (rule conjI) &lt;br /&gt;
      with `¬(B(a) ∧ N(a))` show False by (rule notE)&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
  hence &amp;quot;∃y. D(y) ∧ M(y,a)&amp;quot; &lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;P(a) ∧ ¬N(a) ⟶ (∃y. D(y) ∧ M(y,a))&amp;quot; &lt;br /&gt;
      using assms(1) by (rule allE)&lt;br /&gt;
    thus &amp;quot;∃y. D(y) ∧ M(y,a)&amp;quot; using `P(a) ∧ ¬N(a)` by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
  then obtain b where &amp;quot;D(b) ∧ M(b,a)&amp;quot; by (rule exE)&lt;br /&gt;
  have &amp;quot;D(b) ∧ B(b)&amp;quot; &lt;br /&gt;
  proof (rule conjI)&lt;br /&gt;
    show &amp;quot;D(b)&amp;quot; using `D(b) ∧ M(b,a)` by (rule conjunct1)&lt;br /&gt;
  next&lt;br /&gt;
    have &amp;quot;M(b,a)&amp;quot; using `D(b) ∧ M(b,a)` by (rule conjunct2)&lt;br /&gt;
    have &amp;quot;B(a) ∧ (∀y. M(y,a) ⟶ B(y))&amp;quot; using a by (rule conjunct2)&lt;br /&gt;
    hence &amp;quot;∀y. M(y,a) ⟶ B(y)&amp;quot; by (rule conjunct2)&lt;br /&gt;
    hence &amp;quot;M(b,a) ⟶ B(b)&amp;quot; by (rule allE)&lt;br /&gt;
    thus &amp;quot;B(b)&amp;quot; using `M(b,a)` by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
  thus &amp;quot;∃x. D(x) ∧ B(x)&amp;quot; by (rule exI) &lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 18. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Las relaciones de parentesco verifican la siguientes propiedades&lt;br /&gt;
     generales:  &lt;br /&gt;
     * Si x es hermano de y, entonces y es hermano de x. &lt;br /&gt;
     * Todo el mundo es hijo de alguien. &lt;br /&gt;
     * Nadie es hijo del hermano de su padre. &lt;br /&gt;
     * Cualquier padre de una persona es también padre de todos los&lt;br /&gt;
       hermanos de esa persona. &lt;br /&gt;
     * Nadie es hijo ni hermano de sí mismo. &lt;br /&gt;
     Tenemos los siguientes miembros de la familia Peláez: Don Antonio,&lt;br /&gt;
     Don Luis, Antoñito y Manolito y sabemos que Don Antonio y Don Luis&lt;br /&gt;
     son hermanos, Antoñito y Manolito son hermanos, y Antoñito es hijo&lt;br /&gt;
     de Don Antonio. Por tanto, Don Luis no es el padre de Manolito.&lt;br /&gt;
  Usar A       para Don Antonio&lt;br /&gt;
       He(x,y) para x es hermano de y &lt;br /&gt;
       Hi(x,y) para x es hijo de y  &lt;br /&gt;
       L       para Don Luis&lt;br /&gt;
       a       para Antoñito&lt;br /&gt;
       m       para Manolito&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_18a:&lt;br /&gt;
  assumes &amp;quot;∀x y. He(x,y) ⟶ He(y,x)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. ∃y. Hi(x,y)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y z. Hi(x,y) ∧ He(z,y) ⟶ ¬Hi(x,z)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y. Hi(x,y) ⟶ (∀z. He(z,x) ⟶ Hi(z,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. ¬Hi(x,x) ∧ ¬He(x,x)&amp;quot;&lt;br /&gt;
          &amp;quot;He(A,L)&amp;quot;&lt;br /&gt;
          &amp;quot;He(a,m)&amp;quot;&lt;br /&gt;
          &amp;quot;Hi(a,A)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬Hi(m,L)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by blast&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_18b:&lt;br /&gt;
  assumes &amp;quot;∀x y. He(x,y) ⟶ He(y,x)&amp;quot;                  &lt;br /&gt;
          &amp;quot;∀x. ∃y. Hi(x,y)&amp;quot;                          &lt;br /&gt;
          &amp;quot;∀x y z. Hi(x,y) ∧ He(z,y) ⟶ ¬Hi(x,z)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y. Hi(x,y) ⟶ (∀z. He(z,x) ⟶ Hi(z,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. ¬Hi(x,x) ∧ ¬He(x,x)&amp;quot;&lt;br /&gt;
          &amp;quot;He(A,L)&amp;quot;&lt;br /&gt;
          &amp;quot;He(a,m)&amp;quot;&lt;br /&gt;
          &amp;quot;Hi(a,A)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬Hi(m,L)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;Hi(m,L)&amp;quot;&lt;br /&gt;
  have &amp;quot;He(L,A)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;∀y. He(A,y) ⟶ He(y,A)&amp;quot; using assms(1) ..&lt;br /&gt;
    hence &amp;quot;He(A,L) ⟶ He(L,A)&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;He(L,A)&amp;quot; using assms(6) ..&lt;br /&gt;
  qed&lt;br /&gt;
  have &amp;quot;Hi(a,L)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;∀y. Hi(m,y) ⟶ (∀z. He(z,m) ⟶ Hi(z,y))&amp;quot; using assms(4) ..&lt;br /&gt;
    hence &amp;quot;Hi(m,L) ⟶ (∀z. He(z,m) ⟶ Hi(z,L))&amp;quot; ..&lt;br /&gt;
    hence &amp;quot;∀z. He(z,m) ⟶ Hi(z,L)&amp;quot; using `Hi(m,L)` ..&lt;br /&gt;
    hence &amp;quot;He(a,m) ⟶ Hi(a,L)&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;Hi(a,L)&amp;quot; using assms(7) ..&lt;br /&gt;
  qed &lt;br /&gt;
  have &amp;quot;¬Hi(a,L)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;Hi(a,A) ∧ He(L,A)&amp;quot; using assms(8) `He(L,A)` .. &lt;br /&gt;
    have &amp;quot;∀y z. Hi(a,y) ∧ He(z,y) ⟶ ¬Hi(a,z)&amp;quot; using assms(3) ..&lt;br /&gt;
    hence &amp;quot;∀z. Hi(a,A) ∧ He(z,A) ⟶ ¬Hi(a,z)&amp;quot; ..&lt;br /&gt;
    hence &amp;quot;Hi(a,A) ∧ He(L,A) ⟶ ¬Hi(a,L)&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;¬Hi(a,L)&amp;quot; using `Hi(a,A) ∧ He(L,A)` ..&lt;br /&gt;
  qed&lt;br /&gt;
  thus False using `Hi(a,L)` ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_18c:&lt;br /&gt;
  assumes &amp;quot;∀x y. He(x,y) ⟶ He(y,x)&amp;quot;                  &lt;br /&gt;
          &amp;quot;∀x. ∃y. Hi(x,y)&amp;quot;                          &lt;br /&gt;
          &amp;quot;∀x y z. Hi(x,y) ∧ He(z,y) ⟶ ¬Hi(x,z)&amp;quot;&lt;br /&gt;
          &amp;quot;∀x y. Hi(x,y) ⟶ (∀z. He(z,x) ⟶ Hi(z,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. ¬Hi(x,x) ∧ ¬He(x,x)&amp;quot;&lt;br /&gt;
          &amp;quot;He(A,L)&amp;quot;&lt;br /&gt;
          &amp;quot;He(a,m)&amp;quot;&lt;br /&gt;
          &amp;quot;Hi(a,A)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬Hi(m,L)&amp;quot;&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
  assume &amp;quot;Hi(m,L)&amp;quot;&lt;br /&gt;
  have &amp;quot;He(L,A)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;∀y. He(A,y) ⟶ He(y,A)&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
    hence &amp;quot;He(A,L) ⟶ He(L,A)&amp;quot; by (rule allE)&lt;br /&gt;
    thus &amp;quot;He(L,A)&amp;quot; using assms(6) by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
  have &amp;quot;Hi(a,L)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;∀y. Hi(m,y) ⟶ (∀z. He(z,m) ⟶ Hi(z,y))&amp;quot; &lt;br /&gt;
      using assms(4) by (rule allE)&lt;br /&gt;
    hence &amp;quot;Hi(m,L) ⟶ (∀z. He(z,m) ⟶ Hi(z,L))&amp;quot; by (rule allE)&lt;br /&gt;
    hence &amp;quot;∀z. He(z,m) ⟶ Hi(z,L)&amp;quot; using `Hi(m,L)` by (rule mp)&lt;br /&gt;
    hence &amp;quot;He(a,m) ⟶ Hi(a,L)&amp;quot; by (rule allE)&lt;br /&gt;
    thus &amp;quot;Hi(a,L)&amp;quot; using assms(7) by (rule mp)&lt;br /&gt;
  qed &lt;br /&gt;
  have &amp;quot;¬Hi(a,L)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;Hi(a,A) ∧ He(L,A)&amp;quot; using assms(8) `He(L,A)` by (rule conjI) &lt;br /&gt;
    have &amp;quot;∀y z. Hi(a,y) ∧ He(z,y) ⟶ ¬Hi(a,z)&amp;quot; &lt;br /&gt;
      using assms(3) by (rule allE)&lt;br /&gt;
    hence &amp;quot;∀z. Hi(a,A) ∧ He(z,A) ⟶ ¬Hi(a,z)&amp;quot; by (rule allE)&lt;br /&gt;
    hence &amp;quot;Hi(a,A) ∧ He(L,A) ⟶ ¬Hi(a,L)&amp;quot; by (rule allE)&lt;br /&gt;
    thus &amp;quot;¬Hi(a,L)&amp;quot; using `Hi(a,A) ∧ He(L,A)` by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
  thus False using `Hi(a,L)` by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 19. [Problema del apisonador de Schubert (en inglés, &lt;br /&gt;
  &amp;quot;Schubert’s steamroller&amp;quot;)] Formalizar, y decidir la corrección, del&lt;br /&gt;
  siguiente argumento &lt;br /&gt;
     Si uno de los miembros del club afeita a algún otro (incluido a&lt;br /&gt;
     sí mismo), entonces todos los miembros del club lo han afeitado&lt;br /&gt;
     a él (aunque no necesariamente al mismo tiempo). Guido, Lorenzo,&lt;br /&gt;
     Petruccio y Cesare pertenecen al club de barberos. Guido ha&lt;br /&gt;
     afeitado a Cesare. Por tanto, Petruccio ha afeitado a Lorenzo.&lt;br /&gt;
  Usar g      para Guido&lt;br /&gt;
       l      para Lorenzo&lt;br /&gt;
       p      para Petruccio&lt;br /&gt;
       c      para Cesare&lt;br /&gt;
       B(x)   para x es un miembro del club de barberos&lt;br /&gt;
       A(x,y) para x ha afeitado a y&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_19a:&lt;br /&gt;
  assumes &amp;quot;∀x. B(x) ∧ (∃y. B(y) ∧ A(x,y)) ⟶ (∀z. B(z) ⟶ A(z,x))&amp;quot;&lt;br /&gt;
          &amp;quot;B(g)&amp;quot; &lt;br /&gt;
          &amp;quot;B(l)&amp;quot; &lt;br /&gt;
          &amp;quot;B(p)&amp;quot; &lt;br /&gt;
          &amp;quot;B(c)&amp;quot;&lt;br /&gt;
          &amp;quot;A(g,c)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;A(p,l)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by meson&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_19b:&lt;br /&gt;
  assumes &amp;quot;∀x. B(x) ∧ (∃y. B(y) ∧ A(x,y)) ⟶ (∀z. B(z) ⟶ A(z,x))&amp;quot;&lt;br /&gt;
          &amp;quot;B(g)&amp;quot; &lt;br /&gt;
          &amp;quot;B(l)&amp;quot; &lt;br /&gt;
          &amp;quot;B(p)&amp;quot; &lt;br /&gt;
          &amp;quot;B(c)&amp;quot;&lt;br /&gt;
          &amp;quot;A(g,c)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;A(p,l)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;A(l,g)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;B(g) ∧ (∃y. B(y) ∧ A(g,y)) ⟶ (∀z. B(z) ⟶ A(z,g))&amp;quot; &lt;br /&gt;
      using assms(1) ..&lt;br /&gt;
    have &amp;quot;B(c) ∧ A(g,c)&amp;quot; using assms(5,6) ..&lt;br /&gt;
    hence &amp;quot;(∃y. B(y) ∧ A(g,y))&amp;quot; ..&lt;br /&gt;
    with assms(2) have &amp;quot;B(g) ∧ (∃y. B(y) ∧ A(g,y))&amp;quot; .. &lt;br /&gt;
    with `B(g) ∧ (∃y. B(y) ∧ A(g,y)) ⟶ (∀z. B(z) ⟶ A(z,g))` &lt;br /&gt;
    have &amp;quot;(∀z. B(z) ⟶ A(z,g))&amp;quot; ..&lt;br /&gt;
    hence &amp;quot;B(l) ⟶ A(l,g)&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;A(l,g)&amp;quot; using assms(3) ..&lt;br /&gt;
  qed&lt;br /&gt;
  have &amp;quot;B(l) ∧ (∃y. B(y) ∧ A(l,y)) ⟶ (∀z. B(z) ⟶ A(z,l))&amp;quot; &lt;br /&gt;
    using assms(1) ..&lt;br /&gt;
  have &amp;quot;B(g) ∧ A(l,g)&amp;quot; using assms(2) `A(l,g)` ..&lt;br /&gt;
  hence &amp;quot;(∃y. B(y) ∧ A(l,y))&amp;quot; ..&lt;br /&gt;
  with assms(3) have &amp;quot;B(l) ∧ (∃y. B(y) ∧ A(l,y))&amp;quot; .. &lt;br /&gt;
  with `B(l) ∧ (∃y. B(y) ∧ A(l,y)) ⟶ (∀z. B(z) ⟶ A(z,l))` &lt;br /&gt;
  have &amp;quot;(∀z. B(z) ⟶ A(z,l))&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;B(p) ⟶ A(p,l)&amp;quot; ..&lt;br /&gt;
  thus &amp;quot;A(p,l)&amp;quot; using assms(4) ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_19c:&lt;br /&gt;
  assumes &amp;quot;∀x. B(x) ∧ (∃y. B(y) ∧ A(x,y)) ⟶ (∀z. B(z) ⟶ A(z,x))&amp;quot;&lt;br /&gt;
          &amp;quot;B(g)&amp;quot; &lt;br /&gt;
          &amp;quot;B(l)&amp;quot; &lt;br /&gt;
          &amp;quot;B(p)&amp;quot; &lt;br /&gt;
          &amp;quot;B(c)&amp;quot;&lt;br /&gt;
          &amp;quot;A(g,c)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;A(p,l)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;A(l,g)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;B(g) ∧ (∃y. B(y) ∧ A(g,y)) ⟶ (∀z. B(z) ⟶ A(z,g))&amp;quot; &lt;br /&gt;
      using assms(1) by (rule allE)&lt;br /&gt;
    have &amp;quot;B(c) ∧ A(g,c)&amp;quot; using assms(5,6) by (rule conjI)&lt;br /&gt;
    hence &amp;quot;(∃y. B(y) ∧ A(g,y))&amp;quot; by (rule exI)&lt;br /&gt;
    with assms(2) have &amp;quot;B(g) ∧ (∃y. B(y) ∧ A(g,y))&amp;quot; by (rule conjI) &lt;br /&gt;
    with `B(g) ∧ (∃y. B(y) ∧ A(g,y)) ⟶ (∀z. B(z) ⟶ A(z,g))` &lt;br /&gt;
    have &amp;quot;(∀z. B(z) ⟶ A(z,g))&amp;quot; by (rule mp)&lt;br /&gt;
    hence &amp;quot;B(l) ⟶ A(l,g)&amp;quot; by (rule allE)&lt;br /&gt;
    thus &amp;quot;A(l,g)&amp;quot; using assms(3) by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
  have &amp;quot;B(l) ∧ (∃y. B(y) ∧ A(l,y)) ⟶ (∀z. B(z) ⟶ A(z,l))&amp;quot; &lt;br /&gt;
    using assms(1) by (rule allE)&lt;br /&gt;
  have &amp;quot;B(g) ∧ A(l,g)&amp;quot; using assms(2) `A(l,g)` by (rule conjI)&lt;br /&gt;
  hence &amp;quot;(∃y. B(y) ∧ A(l,y))&amp;quot; by (rule exI)&lt;br /&gt;
  with assms(3) have &amp;quot;B(l) ∧ (∃y. B(y) ∧ A(l,y))&amp;quot; by (rule conjI) &lt;br /&gt;
  with `B(l) ∧ (∃y. B(y) ∧ A(l,y)) ⟶ (∀z. B(z) ⟶ A(z,l))` &lt;br /&gt;
  have &amp;quot;(∀z. B(z) ⟶ A(z,l))&amp;quot; by (rule mp)&lt;br /&gt;
  hence &amp;quot;B(p) ⟶ A(p,l)&amp;quot; by (rule allE)&lt;br /&gt;
  thus &amp;quot;A(p,l)&amp;quot; using assms(4) by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 20. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento &lt;br /&gt;
     Carlos afeita a todos los habitantes de Las Chinas que no se&lt;br /&gt;
     afeitan a sí mismo y sólo a ellos. Carlos es un habitante de las&lt;br /&gt;
     Chinas. Por consiguiente, Carlos no afeita a nadie.&lt;br /&gt;
  Usar A(x,y) para x afeita a y&lt;br /&gt;
       C(x)   para x es un habitante de Las Chinas&lt;br /&gt;
       c      para Carlos&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_20a:&lt;br /&gt;
  assumes &amp;quot;∀x. A(c,x) ⟷ C(x) ∧ ¬A(x,x)&amp;quot;&lt;br /&gt;
          &amp;quot;C(c)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(∃x. A(c,x))&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by blast&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_20b:&lt;br /&gt;
  assumes &amp;quot;∀x. A(c,x) ⟷ C(x) ∧ ¬A(x,x)&amp;quot;&lt;br /&gt;
          &amp;quot;C(c)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(∃x. A(c,x))&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have 1: &amp;quot;A(c,c) ⟷ C(c) ∧ ¬A(c,c)&amp;quot; using assms(1) ..&lt;br /&gt;
  have &amp;quot;A(c,c)&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬A(c,c)&amp;quot;&lt;br /&gt;
    with assms(2) have &amp;quot;C(c) ∧ ¬A(c,c)&amp;quot; ..&lt;br /&gt;
    with 1 have &amp;quot;A(c,c)&amp;quot; .. &lt;br /&gt;
    with `¬A(c,c)` show False ..&lt;br /&gt;
  qed&lt;br /&gt;
  have &amp;quot;¬A(c,c)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;C(c) ∧ ¬A(c,c)&amp;quot; using 1 `A(c,c)` ..&lt;br /&gt;
    thus &amp;quot;¬A(c,c)&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
  thus &amp;quot;¬(∃x. A(c,x))&amp;quot; using `A(c,c)` ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_20c:&lt;br /&gt;
  assumes &amp;quot;∀x. A(c,x) ⟷ C(x) ∧ ¬A(x,x)&amp;quot;&lt;br /&gt;
          &amp;quot;C(c)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬(∃x. A(c,x))&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have 1: &amp;quot;A(c,c) ⟷ C(c) ∧ ¬A(c,c)&amp;quot; using assms(1) by (rule allE)&lt;br /&gt;
  have &amp;quot;A(c,c)&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬A(c,c)&amp;quot;&lt;br /&gt;
    with assms(2) have &amp;quot;C(c) ∧ ¬A(c,c)&amp;quot; by (rule conjI)&lt;br /&gt;
    with 1 have &amp;quot;A(c,c)&amp;quot; by (rule iffD2)&lt;br /&gt;
    with `¬A(c,c)` show False by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
  have &amp;quot;¬A(c,c)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;C(c) ∧ ¬A(c,c)&amp;quot; using 1 `A(c,c)` by (rule iffD1)&lt;br /&gt;
    thus &amp;quot;¬A(c,c)&amp;quot; by (rule conjunct2)&lt;br /&gt;
  qed&lt;br /&gt;
  thus &amp;quot;¬(∃x. A(c,x))&amp;quot; using `A(c,c)` by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 21. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento&lt;br /&gt;
     Quien desprecia a todos los fanáticos desprecia también a todos los&lt;br /&gt;
     políticos. Alguien no desprecia a un determinado político. Por&lt;br /&gt;
     consiguiente, hay un fanático al que no todo el mundo desprecia.&lt;br /&gt;
   Usar D(x,y) para x desprecia a y&lt;br /&gt;
        F(x)   para x es fanático&lt;br /&gt;
        P(x)   para x es político&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_21a:&lt;br /&gt;
  assumes &amp;quot;∀x. (∀y. F(y) ⟶ D(x,y)) ⟶  (∀y. P(y) ⟶ D(x,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∃x y. P(y) ∧ ¬D(x,y)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. F(x) ∧ ¬(∀y. D(y,x))&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by blast&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración semiautomática es&amp;quot;&lt;br /&gt;
lemma ejercicio_21b:&lt;br /&gt;
  assumes &amp;quot;∀x. (∀y. F(y) ⟶ D(x,y)) ⟶  (∀y. P(y) ⟶ D(x,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∃x y. P(y) ∧ ¬D(x,y)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. F(x) ∧ ¬(∀y. D(y,x))&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where &amp;quot;∃y. P(y) ∧ ¬D(a,y)&amp;quot; using assms(2) ..&lt;br /&gt;
  then obtain b where &amp;quot;P(b) ∧ ¬D(a,b)&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;¬(∀y. P(y) ⟶ D(a,y))&amp;quot; by auto&lt;br /&gt;
  have &amp;quot;(∀y. F(y) ⟶ D(a,y)) ⟶  (∀y. P(y) ⟶ D(a,y))&amp;quot; using assms(1) ..&lt;br /&gt;
  hence &amp;quot;¬(∀y. F(y) ⟶ D(a,y))&amp;quot; using `¬(∀y. P(y) ⟶ D(a,y))` by (rule mt)&lt;br /&gt;
  hence &amp;quot;∃y. ¬(F(y) ⟶ D(a,y))&amp;quot; by (rule no_para_todo)  &lt;br /&gt;
  then obtain c where &amp;quot;¬(F(c) ⟶ D(a,c))&amp;quot; ..&lt;br /&gt;
  hence &amp;quot;F(c) ∧ ¬(∀y. D(y,c))&amp;quot; by auto&lt;br /&gt;
  thus &amp;quot;∃x. F(x) ∧ ¬(∀y. D(y,x))&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;En la demostración estructurada usaremos el siguiente lema&amp;quot;&lt;br /&gt;
lemma no_implica: &lt;br /&gt;
  assumes &amp;quot;¬(p ⟶ q)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∧ ¬q&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada del lema es&amp;quot;&lt;br /&gt;
lemma no_implica_1: &lt;br /&gt;
  assumes &amp;quot;¬(p ⟶ q)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∧ ¬q&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  show &amp;quot;p&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    have &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;p&amp;quot;&lt;br /&gt;
      with `¬p` show &amp;quot;q&amp;quot; .. &lt;br /&gt;
    qed&lt;br /&gt;
    with assms show False ..&lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  show &amp;quot;¬q&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;p&amp;quot;&lt;br /&gt;
      show &amp;quot;q&amp;quot; using `q` .&lt;br /&gt;
    qed&lt;br /&gt;
    with assms show False ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada del lema es&amp;quot;&lt;br /&gt;
lemma no_implica_2: &lt;br /&gt;
  assumes &amp;quot;¬(p ⟶ q)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∧ ¬q&amp;quot;&lt;br /&gt;
proof (rule conjI)&lt;br /&gt;
  show &amp;quot;p&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬p&amp;quot;&lt;br /&gt;
    have &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
    proof (rule impI)&lt;br /&gt;
      assume &amp;quot;p&amp;quot;&lt;br /&gt;
      with `¬p` show &amp;quot;q&amp;quot; by (rule notE) &lt;br /&gt;
    qed&lt;br /&gt;
    with assms show False by (rule notE) &lt;br /&gt;
  qed&lt;br /&gt;
next&lt;br /&gt;
  show &amp;quot;¬q&amp;quot;&lt;br /&gt;
  proof (rule notI)&lt;br /&gt;
    assume &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
    proof (rule impI)&lt;br /&gt;
      assume &amp;quot;p&amp;quot;&lt;br /&gt;
      show &amp;quot;q&amp;quot; using `q` by this&lt;br /&gt;
    qed&lt;br /&gt;
    with assms show False by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_21c:&lt;br /&gt;
  assumes &amp;quot;∀x. (∀y. F(y) ⟶ D(x,y)) ⟶  (∀y. P(y) ⟶ D(x,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∃x y. P(y) ∧ ¬D(x,y)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. F(x) ∧ ¬(∀y. D(y,x))&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where &amp;quot;∃y. P(y) ∧ ¬D(a,y)&amp;quot; using assms(2) ..&lt;br /&gt;
  then obtain b where b: &amp;quot;P(b) ∧ ¬D(a,b)&amp;quot; ..&lt;br /&gt;
  have &amp;quot;¬(∀y. P(y) ⟶ D(a,y))&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;∀y. P(y) ⟶ D(a,y)&amp;quot;&lt;br /&gt;
    hence &amp;quot;P(b) ⟶ D(a,b)&amp;quot; ..&lt;br /&gt;
    have &amp;quot;P(b)&amp;quot; using b ..&lt;br /&gt;
    with `P(b) ⟶ D(a,b)` have &amp;quot;D(a,b)&amp;quot; ..&lt;br /&gt;
    have &amp;quot;¬D(a,b)&amp;quot; using b ..&lt;br /&gt;
    thus False using `D(a,b)` ..&lt;br /&gt;
  qed&lt;br /&gt;
  have &amp;quot;(∀y. F(y) ⟶ D(a,y)) ⟶  (∀y. P(y) ⟶ D(a,y))&amp;quot; using assms(1) ..&lt;br /&gt;
  hence &amp;quot;¬(∀y. F(y) ⟶ D(a,y))&amp;quot; using `¬(∀y. P(y) ⟶ D(a,y))` by (rule mt)&lt;br /&gt;
  hence &amp;quot;∃y. ¬(F(y) ⟶ D(a,y))&amp;quot; by (rule no_para_todo)  &lt;br /&gt;
  then obtain c where c: &amp;quot;¬(F(c) ⟶ D(a,c))&amp;quot; ..&lt;br /&gt;
  have &amp;quot;F(c) ∧ ¬(∀y. D(y,c))&amp;quot; &lt;br /&gt;
  proof&lt;br /&gt;
    have &amp;quot;F(c) ∧ ¬D(a,c)&amp;quot; using c by (rule no_implica)&lt;br /&gt;
    thus &amp;quot;F(c)&amp;quot; ..&lt;br /&gt;
  next&lt;br /&gt;
    show &amp;quot;¬(∀y. D(y,c))&amp;quot;&lt;br /&gt;
    proof&lt;br /&gt;
      assume &amp;quot;∀y. D(y,c)&amp;quot;&lt;br /&gt;
      hence &amp;quot;D(a,c)&amp;quot; ..&lt;br /&gt;
      have &amp;quot;F(c) ∧ ¬D(a,c)&amp;quot; using c by (rule no_implica)&lt;br /&gt;
      hence &amp;quot;¬D(a,c)&amp;quot; ..&lt;br /&gt;
      thus False using `D(a,c)` ..&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
  thus &amp;quot;∃x. F(x) ∧ ¬(∀y. D(y,x))&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_21d:&lt;br /&gt;
  assumes &amp;quot;∀x. (∀y. F(y) ⟶ D(x,y)) ⟶  (∀y. P(y) ⟶ D(x,y))&amp;quot;&lt;br /&gt;
          &amp;quot;∃x y. P(y) ∧ ¬D(x,y)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∃x. F(x) ∧ ¬(∀y. D(y,x))&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain a where &amp;quot;∃y. P(y) ∧ ¬D(a,y)&amp;quot; using assms(2) by (rule exE)&lt;br /&gt;
  then obtain b where b: &amp;quot;P(b) ∧ ¬D(a,b)&amp;quot; by (rule exE)&lt;br /&gt;
  have &amp;quot;¬(∀y. P(y) ⟶ D(a,y))&amp;quot;&lt;br /&gt;
  proof (rule notI)&lt;br /&gt;
    assume &amp;quot;∀y. P(y) ⟶ D(a,y)&amp;quot;&lt;br /&gt;
    hence &amp;quot;P(b) ⟶ D(a,b)&amp;quot; by (rule allE)&lt;br /&gt;
    have &amp;quot;P(b)&amp;quot; using b by (rule conjunct1)&lt;br /&gt;
    with `P(b) ⟶ D(a,b)` have &amp;quot;D(a,b)&amp;quot; by (rule mp)&lt;br /&gt;
    have &amp;quot;¬D(a,b)&amp;quot; using b by (rule conjunct2)&lt;br /&gt;
    thus False using `D(a,b)` by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
  have &amp;quot;(∀y. F(y) ⟶ D(a,y)) ⟶  (∀y. P(y) ⟶ D(a,y))&amp;quot; &lt;br /&gt;
    using assms(1) by (rule allE)&lt;br /&gt;
  hence &amp;quot;¬(∀y. F(y) ⟶ D(a,y))&amp;quot; using `¬(∀y. P(y) ⟶ D(a,y))` by (rule mt)&lt;br /&gt;
  hence &amp;quot;∃y. ¬(F(y) ⟶ D(a,y))&amp;quot; by (rule no_para_todo)  &lt;br /&gt;
  then obtain c where c: &amp;quot;¬(F(c) ⟶ D(a,c))&amp;quot; by (rule exE)&lt;br /&gt;
  have &amp;quot;F(c) ∧ ¬(∀y. D(y,c))&amp;quot; &lt;br /&gt;
  proof (rule conjI)&lt;br /&gt;
    have &amp;quot;F(c) ∧ ¬D(a,c)&amp;quot; using c by (rule no_implica)&lt;br /&gt;
    thus &amp;quot;F(c)&amp;quot; by (rule conjunct1)&lt;br /&gt;
  next&lt;br /&gt;
    show &amp;quot;¬(∀y. D(y,c))&amp;quot;&lt;br /&gt;
    proof (rule notI)&lt;br /&gt;
      assume &amp;quot;∀y. D(y,c)&amp;quot;&lt;br /&gt;
      hence &amp;quot;D(a,c)&amp;quot; by (rule allE)&lt;br /&gt;
      have &amp;quot;F(c) ∧ ¬D(a,c)&amp;quot; using c by (rule no_implica)&lt;br /&gt;
      hence &amp;quot;¬D(a,c)&amp;quot; by (rule conjunct2)&lt;br /&gt;
      thus False using `D(a,c)` by (rule notE)&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
  thus &amp;quot;∃x. F(x) ∧ ¬(∀y. D(y,x))&amp;quot; by (rule exI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 22. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento&lt;br /&gt;
     El hombre puro ama todo lo que es puro. Por tanto, el hombre puro&lt;br /&gt;
     se ama a sí mismo.&lt;br /&gt;
  Usar A(x,y) para x ama a y&lt;br /&gt;
       H(x)   para x es un hombre&lt;br /&gt;
       P(x)   para x es puro&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_22a:&lt;br /&gt;
  assumes &amp;quot;∀x. H(x) ∧ P(x) ⟶ (∀y. P(y) ⟶ A(x,y))&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. H(x) ∧ P(x) ⟶ A(x,x)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_22b:&lt;br /&gt;
  assumes &amp;quot;∀x. H(x) ∧ P(x) ⟶ (∀y. P(y) ⟶ A(x,y))&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. H(x) ∧ P(x) ⟶ A(x,x)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  fix b&lt;br /&gt;
  show &amp;quot;H(b) ∧ P(b) ⟶ A(b,b)&amp;quot;&lt;br /&gt;
  proof&lt;br /&gt;
    assume &amp;quot;H(b) ∧ P(b)&amp;quot;&lt;br /&gt;
    hence &amp;quot;P(b)&amp;quot; ..&lt;br /&gt;
    have &amp;quot;H(b) ∧ P(b) ⟶ (∀y. P(y) ⟶ A(b,y))&amp;quot; using assms ..&lt;br /&gt;
    hence &amp;quot;∀y. P(y) ⟶ A(b,y)&amp;quot; using `H(b) ∧ P(b)` ..&lt;br /&gt;
    hence &amp;quot;P(b) ⟶ A(b,b)&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;A(b,b)&amp;quot; using `P(b)` ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_22c:&lt;br /&gt;
  assumes &amp;quot;∀x. H(x) ∧ P(x) ⟶ (∀y. P(y) ⟶ A(x,y))&amp;quot;&lt;br /&gt;
  shows   &amp;quot;∀x. H(x) ∧ P(x) ⟶ A(x,x)&amp;quot;&lt;br /&gt;
proof (rule allI)&lt;br /&gt;
  fix b&lt;br /&gt;
  show &amp;quot;H(b) ∧ P(b) ⟶ A(b,b)&amp;quot;&lt;br /&gt;
  proof (rule impI)&lt;br /&gt;
    assume &amp;quot;H(b) ∧ P(b)&amp;quot;&lt;br /&gt;
    hence &amp;quot;P(b)&amp;quot; by (rule conjunct2)&lt;br /&gt;
    have &amp;quot;H(b) ∧ P(b) ⟶ (∀y. P(y) ⟶ A(b,y))&amp;quot; &lt;br /&gt;
      using assms by (rule allE)&lt;br /&gt;
    hence &amp;quot;∀y. P(y) ⟶ A(b,y)&amp;quot; using `H(b) ∧ P(b)` by (rule mp)&lt;br /&gt;
    hence &amp;quot;P(b) ⟶ A(b,b)&amp;quot; by (rule allE)&lt;br /&gt;
    thus &amp;quot;A(b,b)&amp;quot; using `P(b)` by (rule mp)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 23. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento&lt;br /&gt;
     Ningún socio del club está en deuda con el tesorero del club. Si&lt;br /&gt;
     un socio del club no paga su cuota está en deuda con el tesorero&lt;br /&gt;
     del club. Por tanto, si el tesorero del club es socio del club,&lt;br /&gt;
     entonces paga su cuota. &lt;br /&gt;
  Usar P(x) para x es socio del club&lt;br /&gt;
       Q(x) para x paga su cuota&lt;br /&gt;
       R(x) para x está en deuda con el tesorero&lt;br /&gt;
       a    para el tesorero del club&lt;br /&gt;
   ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_23a:&lt;br /&gt;
  assumes &amp;quot;¬(∃x. P(x) ∧ R(x))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. P(x) ∧ ¬Q(x) ⟶ R(x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;P(a) ⟶ Q(a)&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by auto&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_23b:&lt;br /&gt;
  assumes &amp;quot;¬(∃x. P(x) ∧ R(x))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. P(x) ∧ ¬Q(x) ⟶ R(x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;P(a) ⟶ Q(a)&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;P(a)&amp;quot;&lt;br /&gt;
  show &amp;quot;Q(a)&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬Q(a)&amp;quot;&lt;br /&gt;
    with `P(a)` have &amp;quot;P(a) ∧ ¬Q(a)&amp;quot; ..&lt;br /&gt;
    have &amp;quot;P(a) ∧ ¬Q(a) ⟶ R(a)&amp;quot; using assms(2) ..&lt;br /&gt;
    hence &amp;quot;R(a)&amp;quot; using `P(a) ∧ ¬Q(a)` ..&lt;br /&gt;
    with `P(a)` have &amp;quot;P(a) ∧ R(a)&amp;quot; ..&lt;br /&gt;
    hence &amp;quot;∃x. P(x) ∧ R(x)&amp;quot; ..&lt;br /&gt;
    with assms(1) show False ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración detallada es&amp;quot;&lt;br /&gt;
lemma ejercicio_23c:&lt;br /&gt;
  assumes &amp;quot;¬(∃x. P(x) ∧ R(x))&amp;quot;&lt;br /&gt;
          &amp;quot;∀x. P(x) ∧ ¬Q(x) ⟶ R(x)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;P(a) ⟶ Q(a)&amp;quot;&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
  assume &amp;quot;P(a)&amp;quot;&lt;br /&gt;
  show &amp;quot;Q(a)&amp;quot;&lt;br /&gt;
  proof (rule ccontr)&lt;br /&gt;
    assume &amp;quot;¬Q(a)&amp;quot;&lt;br /&gt;
    with `P(a)` have &amp;quot;P(a) ∧ ¬Q(a)&amp;quot; by (rule conjI)&lt;br /&gt;
    have &amp;quot;P(a) ∧ ¬Q(a) ⟶ R(a)&amp;quot; using assms(2) by (rule allE)&lt;br /&gt;
    hence &amp;quot;R(a)&amp;quot; using `P(a) ∧ ¬Q(a)` by (rule mp)&lt;br /&gt;
    with `P(a)` have &amp;quot;P(a) ∧ R(a)&amp;quot; by (rule conjI)&lt;br /&gt;
    hence &amp;quot;∃x. P(x) ∧ R(x)&amp;quot; by (rule exI)&lt;br /&gt;
    with assms(1) show False by (rule notE)&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 24. Formalizar, y decidir la corrección, del siguiente&lt;br /&gt;
  argumento&lt;br /&gt;
     1. Los lobos, zorros, pájaros, orugas y caracoles son animales y&lt;br /&gt;
        existen algunos ejemplares de estos animales. &lt;br /&gt;
     2. También hay algunas semillas y las semillas son plantas. &lt;br /&gt;
     3. A todo animal le gusta o bien comer todo tipo de plantas o bien&lt;br /&gt;
        le gusta comerse a todos los animales más pequeños que él mismo&lt;br /&gt;
        que gustan de comer algunas plantas. &lt;br /&gt;
     4. Las orugas y los caracoles son mucho más pequeños que los&lt;br /&gt;
        pájaros, que son mucho más pequeños que los zorros que a su vez&lt;br /&gt;
        son mucho más pequeños que los lobos. &lt;br /&gt;
     5. A los lobos no les gusta comer ni zorros ni semillas, mientras&lt;br /&gt;
        que a los pájaros les gusta comer orugas pero no caracoles. &lt;br /&gt;
     6. Las orugas y los caracoles gustan de comer algunas plantas. &lt;br /&gt;
     7. Luego, existe un animal al que le gusta comerse un animal al que&lt;br /&gt;
        le gusta comer semillas.  &lt;br /&gt;
  Usar A(x)    para x es un animal&lt;br /&gt;
       Ca(x)   para x es un caracol&lt;br /&gt;
       Co(x,y) para x le gusta comerse a y&lt;br /&gt;
       L(x)    para x es un lobo&lt;br /&gt;
       M(x,y)  para x es más pequeño que y&lt;br /&gt;
       Or(x)   para x es una oruga&lt;br /&gt;
       Pa(x)   para x es un pájaro&lt;br /&gt;
       Pl(x)   para x es una planta&lt;br /&gt;
       S(x)    para x es una semilla&lt;br /&gt;
       Z(x)    para x es un zorro&lt;br /&gt;
  ------------------------------------------------------------------ *}&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración automática es&amp;quot;&lt;br /&gt;
lemma ejercicio_24a:&lt;br /&gt;
  assumes&lt;br /&gt;
   (*  1 *) &amp;quot;∀x. L(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  2 *) &amp;quot;∀x. Z(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  3 *) &amp;quot;∀x. Pa(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  4 *) &amp;quot;∀x. Or(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  5 *) &amp;quot;∀x. Ca(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  6 *) &amp;quot;∃x. L(x)&amp;quot;&lt;br /&gt;
   (*  7 *) &amp;quot;∃x. Z(x)&amp;quot;&lt;br /&gt;
   (*  8 *) &amp;quot;∃x. Pa(x)&amp;quot;&lt;br /&gt;
   (*  9 *) &amp;quot;∃x. Or(x)&amp;quot;&lt;br /&gt;
   (* 10 *) &amp;quot;∃x. Ca(x)&amp;quot;&lt;br /&gt;
   (* 11 *) &amp;quot;∃x. S(x)&amp;quot;&lt;br /&gt;
   (* 12 *) &amp;quot;∀x. S(x) ⟶ Pl(x)&amp;quot;&lt;br /&gt;
   (* 13 *) &amp;quot;∀x. A(x) ⟶ &lt;br /&gt;
                 (∀y. Pl(y) ⟶ Co(x,y)) ∨ &lt;br /&gt;
                 (∀y. A(y) ∧ M(y,x) ∧ (∃z. Pl(z) ∧ Co(y,z)) ⟶ Co(x,y))&amp;quot;&lt;br /&gt;
   (* 14 *) &amp;quot;∀x y. Pa(y) ∧ (Ca(x) ∨ Or(x)) ⟶ M(x,y)&amp;quot;&lt;br /&gt;
   (* 15 *) &amp;quot;∀x y. Pa(x) ∧ Z(y) ⟶ M(x,y)&amp;quot;&lt;br /&gt;
   (* 16 *) &amp;quot;∀x y. Z(x) ∧ L(y) ⟶ M(x,y)&amp;quot;&lt;br /&gt;
   (* 17 *) &amp;quot;∀x y. L(x) ∧ (Z(y)∨ S(y)) ⟶ ¬Co(x,y)&amp;quot;&lt;br /&gt;
   (* 18 *) &amp;quot;∀x y. Pa(x) ∧ Or(y) ⟶ Co(x,y)&amp;quot;&lt;br /&gt;
   (* 19 *) &amp;quot;∀x y. Pa(x) ∧ Ca(y) ⟶ ¬Co(x,y)&amp;quot;&lt;br /&gt;
   (* 20 *) &amp;quot;∀x. Or(x) ∨ Ca(x) ⟶ (∃y. Pl(y) ∧ Co(x,y))&amp;quot;&lt;br /&gt;
  shows&lt;br /&gt;
   &amp;quot;∃x y. A(x) ∧ A(y) ∧ (∃z. S(z) ∧ Co(y,z) ∧ Co(x,y))&amp;quot;&lt;br /&gt;
using assms&lt;br /&gt;
by meson&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración semiautomática es&amp;quot;&lt;br /&gt;
lemma ejercicio_24b:&lt;br /&gt;
  assumes&lt;br /&gt;
   (*  1 *) &amp;quot;∀x. L(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  2 *) &amp;quot;∀x. Z(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  3 *) &amp;quot;∀x. Pa(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  4 *) &amp;quot;∀x. Or(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  5 *) &amp;quot;∀x. Ca(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  6 *) &amp;quot;∃x. L(x)&amp;quot;&lt;br /&gt;
   (*  7 *) &amp;quot;∃x. Z(x)&amp;quot;&lt;br /&gt;
   (*  8 *) &amp;quot;∃x. Pa(x)&amp;quot;&lt;br /&gt;
   (*  9 *) &amp;quot;∃x. Or(x)&amp;quot;&lt;br /&gt;
   (* 10 *) &amp;quot;∃x. Ca(x)&amp;quot;&lt;br /&gt;
   (* 11 *) &amp;quot;∃x. S(x)&amp;quot;&lt;br /&gt;
   (* 12 *) &amp;quot;∀x. S(x) ⟶ Pl(x)&amp;quot;&lt;br /&gt;
   (* 13 *) &amp;quot;∀x. A(x) ⟶ &lt;br /&gt;
                 (∀y. Pl(y) ⟶ Co(x,y)) ∨ &lt;br /&gt;
                 (∀y. A(y) ∧ M(y,x) ∧ (∃z. Pl(z) ∧ Co(y,z)) ⟶ Co(x,y))&amp;quot;&lt;br /&gt;
   (* 14 *) &amp;quot;∀x y. Pa(y) ∧ (Ca(x) ∨ Or(x)) ⟶ M(x,y)&amp;quot;&lt;br /&gt;
   (* 15 *) &amp;quot;∀x y. Pa(x) ∧ Z(y) ⟶ M(x,y)&amp;quot;&lt;br /&gt;
   (* 16 *) &amp;quot;∀x y. Z(x) ∧ L(y) ⟶ M(x,y)&amp;quot;&lt;br /&gt;
   (* 17 *) &amp;quot;∀x y. L(x) ∧ (Z(y)∨ S(y)) ⟶ ¬Co(x,y)&amp;quot;&lt;br /&gt;
   (* 18 *) &amp;quot;∀x y. Pa(x) ∧ Or(y) ⟶ Co(x,y)&amp;quot;&lt;br /&gt;
   (* 19 *) &amp;quot;∀x y. Pa(x) ∧ Ca(y) ⟶ ¬Co(x,y)&amp;quot;&lt;br /&gt;
   (* 20 *) &amp;quot;∀x. Or(x) ∨ Ca(x) ⟶ (∃y. Pl(y) ∧ Co(x,y))&amp;quot;&lt;br /&gt;
  shows&lt;br /&gt;
   &amp;quot;∃x y. A(x) ∧ A(y) ∧ (∃z. S(z) ∧ Co(y,z) ∧ Co(x,y))&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain l where l: &amp;quot;L(l)&amp;quot; using assms(6) ..&lt;br /&gt;
  obtain z where z: &amp;quot;Z(z)&amp;quot; using assms(7) ..&lt;br /&gt;
  obtain p where p: &amp;quot;Pa(p)&amp;quot; using assms(8) ..&lt;br /&gt;
  obtain c where c: &amp;quot;Ca(c)&amp;quot; using assms(10) ..&lt;br /&gt;
  obtain s where s: &amp;quot;S(s)&amp;quot; using assms(11) ..&lt;br /&gt;
  have 1: &amp;quot;Co(p,s)&amp;quot; using p c s assms(3,5,12,13,14,19,20) by meson&lt;br /&gt;
  have 2: &amp;quot;¬Co(z,s)&amp;quot; using z l s assms(1,2,12,16,17,13) by meson &lt;br /&gt;
  have 3: &amp;quot;M(p,z)&amp;quot; using p z assms(15) by auto&lt;br /&gt;
  have 4: &amp;quot;Co(z,p)&amp;quot; using z p s 1 2 3 assms(2,3,12,13) by meson&lt;br /&gt;
  hence &amp;quot;Co(z,p) ∧ Co(p,s)&amp;quot; using 1 .. &lt;br /&gt;
  thus &amp;quot;∃x y. A(x) ∧ A(y) ∧ (∃z. S(z) ∧ Co(y,z) ∧ Co(x,y))&amp;quot; &lt;br /&gt;
    using z p s assms(2,3) by meson&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma instancia:&lt;br /&gt;
  assumes &amp;quot;∀x. P(x) ⟶ Q(x)&amp;quot;&lt;br /&gt;
          &amp;quot;P(a)&amp;quot;&lt;br /&gt;
  shows   &amp;quot;Q(a)&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;P(a) ⟶ Q(a)&amp;quot; using assms(1) ..&lt;br /&gt;
  thus &amp;quot;Q(a)&amp;quot; using assms(2) ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma mt2:&lt;br /&gt;
  assumes &amp;quot;p ∧ q ∧ r ⟶ s&amp;quot;&lt;br /&gt;
          &amp;quot;p&amp;quot;&lt;br /&gt;
          &amp;quot;q&amp;quot;&lt;br /&gt;
          &amp;quot;¬s&amp;quot;&lt;br /&gt;
  shows   &amp;quot;¬r&amp;quot;&lt;br /&gt;
proof&lt;br /&gt;
  assume &amp;quot;r&amp;quot;&lt;br /&gt;
  with `q` have &amp;quot;q ∧ r&amp;quot; ..&lt;br /&gt;
  with `p` have &amp;quot;p ∧ q ∧ r&amp;quot; ..&lt;br /&gt;
  with assms(1) have &amp;quot;s&amp;quot; ..&lt;br /&gt;
  with `¬s` show False ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma mp3: &lt;br /&gt;
  assumes &amp;quot;p ∧ q ∧ r ⟶ s&amp;quot;&lt;br /&gt;
          &amp;quot;p&amp;quot;&lt;br /&gt;
          &amp;quot;q&amp;quot;&lt;br /&gt;
          &amp;quot;r&amp;quot;&lt;br /&gt;
  shows   &amp;quot;s&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;q ∧ r&amp;quot; using assms(3,4) ..&lt;br /&gt;
  with `p` have &amp;quot;p ∧ q ∧ r&amp;quot; ..&lt;br /&gt;
  with assms(1) show &amp;quot;s&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma conjI3:&lt;br /&gt;
  assumes &amp;quot;p&amp;quot;&lt;br /&gt;
          &amp;quot;q&amp;quot;&lt;br /&gt;
          &amp;quot;r&amp;quot;&lt;br /&gt;
  shows   &amp;quot;p ∧ q ∧ r&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;q ∧ r&amp;quot; using assms(2,3) ..&lt;br /&gt;
  with `p` show &amp;quot;p ∧ q ∧ r&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
-- &amp;quot;La demostración estructurada es&amp;quot;&lt;br /&gt;
lemma ejercicio_24c:&lt;br /&gt;
  assumes&lt;br /&gt;
   (*  1 *) &amp;quot;∀x. L(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  2 *) &amp;quot;∀x. Z(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  3 *) &amp;quot;∀x. Pa(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  4 *) &amp;quot;∀x. Or(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  5 *) &amp;quot;∀x. Ca(x) ⟶ A(x)&amp;quot;&lt;br /&gt;
   (*  6 *) &amp;quot;∃x. L(x)&amp;quot;&lt;br /&gt;
   (*  7 *) &amp;quot;∃x. Z(x)&amp;quot;&lt;br /&gt;
   (*  8 *) &amp;quot;∃x. Pa(x)&amp;quot;&lt;br /&gt;
   (*  9 *) &amp;quot;∃x. Or(x)&amp;quot;&lt;br /&gt;
   (* 10 *) &amp;quot;∃x. Ca(x)&amp;quot;&lt;br /&gt;
   (* 11 *) &amp;quot;∃x. S(x)&amp;quot;&lt;br /&gt;
   (* 12 *) &amp;quot;∀x. S(x) ⟶ Pl(x)&amp;quot;&lt;br /&gt;
   (* 13 *) &amp;quot;∀x. A(x) ⟶ &lt;br /&gt;
                 (∀y. Pl(y) ⟶ Co(x,y)) ∨ &lt;br /&gt;
                 (∀y. A(y) ∧ M(y,x) ∧ (∃z. Pl(z) ∧ Co(y,z)) ⟶ Co(x,y))&amp;quot;&lt;br /&gt;
   (* 14 *) &amp;quot;∀x y. Pa(y) ∧ (Ca(x) ∨ Or(x)) ⟶ M(x,y)&amp;quot;&lt;br /&gt;
   (* 15 *) &amp;quot;∀x y. Pa(x) ∧ Z(y) ⟶ M(x,y)&amp;quot;&lt;br /&gt;
   (* 16 *) &amp;quot;∀x y. Z(x) ∧ L(y) ⟶ M(x,y)&amp;quot;&lt;br /&gt;
   (* 17 *) &amp;quot;∀x y. L(x) ∧ (Z(y)∨ S(y)) ⟶ ¬Co(x,y)&amp;quot;&lt;br /&gt;
   (* 18 *) &amp;quot;∀x y. Pa(x) ∧ Or(y) ⟶ Co(x,y)&amp;quot;&lt;br /&gt;
   (* 19 *) &amp;quot;∀x y. Pa(x) ∧ Ca(y) ⟶ ¬Co(x,y)&amp;quot;&lt;br /&gt;
   (* 20 *) &amp;quot;∀x. Or(x) ∨ Ca(x) ⟶ (∃y. Pl(y) ∧ Co(x,y))&amp;quot;&lt;br /&gt;
  shows&lt;br /&gt;
   &amp;quot;∃x y. A(x) ∧ A(y) ∧ (∃z. S(z) ∧ Co(y,z) ∧ Co(x,y))&amp;quot;&lt;br /&gt;
proof -&lt;br /&gt;
  obtain l where l: &amp;quot;L(l)&amp;quot; using assms(6) ..&lt;br /&gt;
  obtain z where z: &amp;quot;Z(z)&amp;quot; using assms(7) ..&lt;br /&gt;
  obtain p where p: &amp;quot;Pa(p)&amp;quot; using assms(8) ..&lt;br /&gt;
  obtain c where c: &amp;quot;Ca(c)&amp;quot; using assms(10) ..&lt;br /&gt;
  obtain s where s: &amp;quot;S(s)&amp;quot; using assms(11) ..&lt;br /&gt;
  have 1: &amp;quot;Co(p,s)&amp;quot; &lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;¬Co(p,c)&amp;quot;&lt;br /&gt;
    proof -&lt;br /&gt;
      have &amp;quot;Pa(p) ∧ Ca(c)&amp;quot; using p c ..&lt;br /&gt;
      have &amp;quot;∀y. Pa(p) ∧ Ca(y) ⟶ ¬Co(p,y)&amp;quot; using assms(19) ..&lt;br /&gt;
      hence &amp;quot;Pa(p) ∧ Ca(c) ⟶ ¬Co(p,c)&amp;quot; ..&lt;br /&gt;
      thus &amp;quot;¬Co(p,c)&amp;quot; using `Pa(p) ∧ Ca(c)` .. &lt;br /&gt;
    qed&lt;br /&gt;
    have &amp;quot;∃y. Pl(y) ∧ Co(c,y)&amp;quot; &lt;br /&gt;
    proof -&lt;br /&gt;
      have &amp;quot;Or(c) ∨ Ca(c)&amp;quot; using c ..&lt;br /&gt;
      have &amp;quot;Or(c) ∨ Ca(c) ⟶ (∃y. Pl(y) ∧ Co(c,y))&amp;quot; using assms(20) ..&lt;br /&gt;
      thus &amp;quot;∃y. Pl(y) ∧ Co(c,y)&amp;quot; using `Or(c) ∨ Ca(c)` ..&lt;br /&gt;
    qed &lt;br /&gt;
    have &amp;quot;M(c,p)&amp;quot;&lt;br /&gt;
    proof -&lt;br /&gt;
      have &amp;quot;∀y. Pa(y) ∧ (Ca(c) ∨ Or(c)) ⟶ M(c,y)&amp;quot; using assms(14) ..&lt;br /&gt;
      hence &amp;quot;Pa(p) ∧ (Ca(c) ∨ Or(c)) ⟶ M(c,p)&amp;quot; ..&lt;br /&gt;
      have &amp;quot;Ca(c) ∨ Or(c)&amp;quot; using c ..&lt;br /&gt;
      with p have &amp;quot;Pa(p) ∧ (Ca(c) ∨ Or(c))&amp;quot; ..&lt;br /&gt;
      with `Pa(p) ∧ (Ca(c) ∨ Or(c)) ⟶ M(c,p)` show &amp;quot;M(c,p)&amp;quot; ..&lt;br /&gt;
    qed&lt;br /&gt;
    show &amp;quot;Co(p,s)&amp;quot;&lt;br /&gt;
    proof -&lt;br /&gt;
      have &amp;quot;A(p)&amp;quot; using assms(3) p by (rule instancia)&lt;br /&gt;
      have &amp;quot;A(p) ⟶ (∀y. Pl(y) ⟶ Co(p,y)) ∨ &lt;br /&gt;
                     (∀y. A(y) ∧ M(y,p) ∧ (∃z. Pl(z) ∧ Co(y,z)) ⟶ Co(p,y))&amp;quot;&lt;br /&gt;
        using assms(13) ..&lt;br /&gt;
      hence &amp;quot;(∀y. Pl(y) ⟶ Co(p,y)) ∨ &lt;br /&gt;
             (∀y. A(y) ∧ M(y,p) ∧ (∃z. Pl(z) ∧ Co(y,z)) ⟶ Co(p,y))&amp;quot;&lt;br /&gt;
        using `A(p)` ..&lt;br /&gt;
      thus &amp;quot;Co(p,s)&amp;quot;&lt;br /&gt;
      proof&lt;br /&gt;
        assume &amp;quot;∀y. Pl(y) ⟶ Co(p,y)&amp;quot;&lt;br /&gt;
        hence &amp;quot;Pl(s) ⟶ Co(p,s)&amp;quot; ..&lt;br /&gt;
        have &amp;quot;Pl(s)&amp;quot; using assms(12) s by (rule instancia)&lt;br /&gt;
        with `Pl(s) ⟶ Co(p,s)` show &amp;quot;Co(p,s)&amp;quot; ..&lt;br /&gt;
      next&lt;br /&gt;
        assume &amp;quot;∀y. A(y) ∧ M(y,p) ∧ (∃z. Pl(z) ∧ Co(y,z)) ⟶ Co(p,y)&amp;quot;&lt;br /&gt;
        hence &amp;quot;A(c) ∧ M(c,p) ∧ (∃z. Pl(z) ∧ Co(c,z)) ⟶ Co(p,c)&amp;quot; ..&lt;br /&gt;
        have &amp;quot;Co(p,c)&amp;quot;&lt;br /&gt;
        proof -&lt;br /&gt;
          have &amp;quot;A(c)&amp;quot; using assms(5) c by (rule instancia)&lt;br /&gt;
          have &amp;quot;M(c,p) ∧ (∃z. Pl(z) ∧ Co(c,z))&amp;quot; &lt;br /&gt;
            using `M(c,p)` `∃z. Pl(z) ∧ Co(c,z)` ..&lt;br /&gt;
          with `A(c)` have &amp;quot;A(c) ∧ M(c,p) ∧ (∃z. Pl(z) ∧ Co(c,z))&amp;quot; ..&lt;br /&gt;
          with `A(c) ∧ M(c,p) ∧ (∃z. Pl(z) ∧ Co(c,z)) ⟶ Co(p,c)`&lt;br /&gt;
          show &amp;quot;Co(p,c)&amp;quot; ..&lt;br /&gt;
        qed&lt;br /&gt;
        with `¬Co(p,c)` show &amp;quot;Co(p,s)&amp;quot; ..&lt;br /&gt;
      qed&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
  have 2: &amp;quot;¬Co(z,s)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;M(z,l)&amp;quot;&lt;br /&gt;
    proof -&lt;br /&gt;
      have &amp;quot;Z(z) ∧ L(l)&amp;quot; using z l ..&lt;br /&gt;
      have &amp;quot;∀y. Z(z) ∧ L(y) ⟶ M(z,y)&amp;quot; using assms(16) ..&lt;br /&gt;
      hence &amp;quot;Z(z) ∧ L(l) ⟶ M(z,l)&amp;quot; ..&lt;br /&gt;
      thus &amp;quot;M(z,l)&amp;quot; using `Z(z) ∧ L(l)` ..&lt;br /&gt;
    qed&lt;br /&gt;
    have &amp;quot;¬Co(l,z)&amp;quot; &lt;br /&gt;
    proof -&lt;br /&gt;
      have &amp;quot;∀y. L(l) ∧ (Z(y)∨ S(y)) ⟶ ¬Co(l,y)&amp;quot; using assms(17) ..&lt;br /&gt;
      hence &amp;quot;L(l) ∧ (Z(z)∨ S(z)) ⟶ ¬Co(l,z)&amp;quot; ..&lt;br /&gt;
      have &amp;quot;Z(z)∨ S(z)&amp;quot; using z ..&lt;br /&gt;
      with l have &amp;quot;L(l) ∧ (Z(z)∨ S(z))&amp;quot; ..&lt;br /&gt;
      with `L(l) ∧ (Z(z)∨ S(z)) ⟶ ¬Co(l,z)` show &amp;quot;¬Co(l,z)&amp;quot; .. &lt;br /&gt;
    qed&lt;br /&gt;
    have &amp;quot;¬Co(l,s)&amp;quot;&lt;br /&gt;
    proof -&lt;br /&gt;
      have &amp;quot;∀y. L(l) ∧ (Z(y)∨ S(y)) ⟶ ¬Co(l,y)&amp;quot; using assms(17) ..&lt;br /&gt;
      hence &amp;quot;L(l) ∧ (Z(s)∨ S(s)) ⟶ ¬Co(l,s)&amp;quot; ..&lt;br /&gt;
      have &amp;quot;Z(s)∨ S(s)&amp;quot; using s ..&lt;br /&gt;
      with l have &amp;quot;L(l) ∧ (Z(s)∨ S(s))&amp;quot; ..&lt;br /&gt;
      with `L(l) ∧ (Z(s)∨ S(s)) ⟶ ¬Co(l,s)` show &amp;quot;¬Co(l,s)&amp;quot; .. &lt;br /&gt;
    qed&lt;br /&gt;
    show &amp;quot;¬Co(z,s)&amp;quot;&lt;br /&gt;
    proof -&lt;br /&gt;
      have &amp;quot;A(l)&amp;quot; using assms(1) l by (rule instancia)&lt;br /&gt;
      have &amp;quot;A(l) ⟶ (∀y. Pl(y) ⟶ Co(l,y)) ∨ &lt;br /&gt;
                     (∀y. A(y) ∧ M(y,l) ∧ (∃z. Pl(z) ∧ Co(y,z)) ⟶ Co(l,y))&amp;quot;&lt;br /&gt;
        using assms(13) ..&lt;br /&gt;
      hence  &amp;quot;(∀y. Pl(y) ⟶ Co(l,y)) ∨ &lt;br /&gt;
              (∀y. A(y) ∧ M(y,l) ∧ (∃z. Pl(z) ∧ Co(y,z)) ⟶ Co(l,y))&amp;quot;&lt;br /&gt;
        using `A(l)` ..&lt;br /&gt;
      thus &amp;quot;¬Co(z,s)&amp;quot;&lt;br /&gt;
      proof&lt;br /&gt;
        assume &amp;quot;∀y. Pl(y) ⟶ Co(l,y)&amp;quot;&lt;br /&gt;
        hence &amp;quot;Pl(s) ⟶ Co(l,s)&amp;quot; ..&lt;br /&gt;
        have &amp;quot;Pl(s)&amp;quot; using assms(12) s by (rule instancia)&lt;br /&gt;
        with `Pl(s) ⟶ Co(l,s)` have &amp;quot;Co(l,s)&amp;quot; ..&lt;br /&gt;
        with `¬Co(l,s)` show &amp;quot;¬Co(z,s)&amp;quot; ..&lt;br /&gt;
      next&lt;br /&gt;
        assume &amp;quot;∀y. A(y) ∧ M(y,l) ∧ (∃u. Pl(u) ∧ Co(y,u)) ⟶ Co(l,y)&amp;quot;&lt;br /&gt;
        hence zl: &amp;quot;A(z) ∧ M(z,l) ∧ (∃u. Pl(u) ∧ Co(z,u)) ⟶ Co(l,z)&amp;quot; ..&lt;br /&gt;
        have &amp;quot;A(z)&amp;quot; using assms(2) z by (rule instancia)&lt;br /&gt;
        have &amp;quot;¬(∃u. Pl(u) ∧ Co(z,u))&amp;quot; &lt;br /&gt;
          using zl `A(z)` `M(z,l)` `¬Co(l,z)` by (rule mt2)&lt;br /&gt;
        show &amp;quot;¬Co(z,s)&amp;quot;&lt;br /&gt;
        proof&lt;br /&gt;
          assume &amp;quot;Co(z,s)&amp;quot;&lt;br /&gt;
          have &amp;quot;Pl(s)&amp;quot; using assms(12) s by (rule instancia)&lt;br /&gt;
          hence &amp;quot;Pl(s) ∧ Co(z,s)&amp;quot; using `Co(z,s)` ..&lt;br /&gt;
          hence &amp;quot;∃u. Pl(u) ∧ Co(z,u)&amp;quot; ..&lt;br /&gt;
          with `¬(∃u. Pl(u) ∧ Co(z,u))` show False ..&lt;br /&gt;
        qed &lt;br /&gt;
      qed&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
  have 3: &amp;quot;M(p,z)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;Pa(p) ∧ Z(z)&amp;quot; using p z ..&lt;br /&gt;
    have &amp;quot;∀y. Pa(p) ∧ Z(y) ⟶ M(p,y)&amp;quot; using assms(15) ..&lt;br /&gt;
    hence &amp;quot;Pa(p) ∧ Z(z) ⟶ M(p,z)&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;M(p,z)&amp;quot; using `Pa(p) ∧ Z(z)` ..&lt;br /&gt;
  qed&lt;br /&gt;
  have 4: &amp;quot;Co(z,p)&amp;quot;&lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;A(z)&amp;quot; using assms(2) z by (rule instancia)&lt;br /&gt;
    have &amp;quot;A(z) ⟶ (∀y. Pl(y) ⟶ Co(z,y)) ∨ &lt;br /&gt;
                   (∀y. A(y) ∧ M(y,z) ∧ (∃u. Pl(u) ∧ Co(y,u)) ⟶ Co(z,y))&amp;quot;&lt;br /&gt;
      using assms(13) ..&lt;br /&gt;
    hence &amp;quot;(∀y. Pl(y) ⟶ Co(z,y)) ∨ &lt;br /&gt;
           (∀y. A(y) ∧ M(y,z) ∧ (∃u. Pl(u) ∧ Co(y,u)) ⟶ Co(z,y))&amp;quot;&lt;br /&gt;
      using `A(z)` ..&lt;br /&gt;
    thus &amp;quot;Co(z,p)&amp;quot;&lt;br /&gt;
    proof &lt;br /&gt;
      assume &amp;quot;∀y. Pl(y) ⟶ Co(z,y)&amp;quot;&lt;br /&gt;
      hence &amp;quot;Pl(s) ⟶ Co(z,s)&amp;quot; ..&lt;br /&gt;
      have &amp;quot;Pl(s)&amp;quot; using assms(12) s by (rule instancia)&lt;br /&gt;
      with `Pl(s) ⟶ Co(z,s)` have &amp;quot;Co(z,s)&amp;quot; ..&lt;br /&gt;
      with `¬Co(z,s)` show &amp;quot;Co(z,p)&amp;quot; ..&lt;br /&gt;
    next&lt;br /&gt;
      assume &amp;quot;∀y. A(y) ∧ M(y,z) ∧ (∃u. Pl(u) ∧ Co(y,u)) ⟶ Co(z,y)&amp;quot;&lt;br /&gt;
      hence pz: &amp;quot;A(p) ∧ M(p,z) ∧ (∃u. Pl(u) ∧ Co(p,u)) ⟶ Co(z,p)&amp;quot; ..&lt;br /&gt;
      have &amp;quot;A(p)&amp;quot; using assms(3) p by (rule instancia)&lt;br /&gt;
      have &amp;quot;∃u. Pl(u) ∧ Co(p,u)&amp;quot;&lt;br /&gt;
      proof -&lt;br /&gt;
        have &amp;quot;Pl(s)&amp;quot; using assms(12) s by (rule instancia)&lt;br /&gt;
        hence &amp;quot;Pl(s) ∧ Co(p,s)&amp;quot; using `Co(p,s)` ..  &lt;br /&gt;
        thus &amp;quot;∃u. Pl(u) ∧ Co(p,u)&amp;quot; ..&lt;br /&gt;
      qed&lt;br /&gt;
      show &amp;quot;Co(z,p)&amp;quot; using pz `A(p)` `M(p,z)` `∃u. Pl(u) ∧ Co(p,u)`&lt;br /&gt;
        by (rule mp3)&lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
  hence &amp;quot;Co(z,p) ∧ Co(p,s)&amp;quot; using 1 .. &lt;br /&gt;
  show &amp;quot;∃x y. A(x) ∧ A(y) ∧ (∃u. S(u) ∧ Co(y,u) ∧ Co(x,y))&amp;quot; &lt;br /&gt;
  proof -&lt;br /&gt;
    have &amp;quot;A(z)&amp;quot; using assms(2) z by (rule instancia)&lt;br /&gt;
    have &amp;quot;A(p)&amp;quot; using assms(3) p by (rule instancia)&lt;br /&gt;
    have &amp;quot;S(s) ∧ Co(p,s) ∧ Co(z,p)&amp;quot; using s `Co(p,s)` `Co(z,p)` &lt;br /&gt;
      by (rule conjI3)&lt;br /&gt;
    hence &amp;quot;∃u. S(u) ∧ Co(p,u) ∧ Co(z,p)&amp;quot; ..&lt;br /&gt;
    have &amp;quot;A(z) ∧ A(p) ∧ (∃u. S(u) ∧ Co(p,u) ∧ Co(z,p))&amp;quot;&lt;br /&gt;
      using `A(z)` `A(p)` `∃u. S(u) ∧ Co(p,u) ∧ Co(z,p)`&lt;br /&gt;
      by (rule conjI3)&lt;br /&gt;
    hence &amp;quot;∃y. A(z) ∧ A(y) ∧ (∃u. S(u) ∧ Co(y,u) ∧ Co(z,y))&amp;quot; ..&lt;br /&gt;
    thus &amp;quot;∃x y. A(x) ∧ A(y) ∧ (∃u. S(u) ∧ Co(y,u) ∧ Co(x,y))&amp;quot; ..&lt;br /&gt;
  qed&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_13&amp;diff=176</id>
		<title>RA12 Relación 13</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_13&amp;diff=176"/>
		<updated>2018-07-15T11:55:27Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «&amp;quot;isar&amp;quot;» por «&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R13: Número de elementos válidos *}&lt;br /&gt;
&lt;br /&gt;
theory R13&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Definir la función &lt;br /&gt;
     cuentaP :: &amp;quot;(&amp;#039;a ⇒ bool) ⇒ &amp;#039;a list ⇒ nat&amp;quot;&lt;br /&gt;
  tal que (cuentaP Q xs) es el número de elementos de la lista xs que&lt;br /&gt;
  satisfacen el predicado Q. Por ejemplo,   &lt;br /&gt;
     cuentaP (λx. 2&amp;lt;x) [1,3,4,0,5] = 3&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun cuentaP :: &amp;quot;(&amp;#039;a ⇒ bool) ⇒ &amp;#039;a list ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;cuentaP Q xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Demostrar o refutar:&lt;br /&gt;
     cuentaP P (xs @ ys) = cuentaP P xs + cuentaP P ys*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma cuentaP_append_auto: &lt;br /&gt;
  &amp;quot;cuentaP P (xs @ ys) = cuentaP P xs + cuentaP P ys&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Demostrar que el número de elementos de una lista que&lt;br /&gt;
  cumplen una determinada propiedad es el mismo que el de esa lista&lt;br /&gt;
  invertida. &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma cuentaP_rev:&lt;br /&gt;
  &amp;quot;cuentaP P xs = cuentaP P (rev xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Encontrar y demostrar una relación entre las funciones&lt;br /&gt;
  filter y  cuentaP. &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_11&amp;diff=175</id>
		<title>RA12 Relación 11</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_11&amp;diff=175"/>
		<updated>2018-07-15T11:55:20Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «&amp;quot;isar&amp;quot;» por «&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R11: Sustitución, inversión y eliminación *}&lt;br /&gt;
&lt;br /&gt;
theory R11&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
section {* Sustitución, inversión y eliminación *}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Definir la función &lt;br /&gt;
     sust :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot;&lt;br /&gt;
  tal que (sust x y zs) es la lista obtenida sustituyendo cada&lt;br /&gt;
  occurrencia de x por y en la lista zs. Por ejemplo,&lt;br /&gt;
     sust (1::nat) 2 [1,2,3,4,1,2,3,4] = [2,2,3,4,2,2,3,4]&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun sust :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;sust x y zs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Demostrar o refutar: &lt;br /&gt;
     sust x y (xs@ys) = (sust x y xs)@(sust x y ys)&amp;quot;&lt;br /&gt;
  ---------------------------------------------------------------------  &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma sust_append: &lt;br /&gt;
  &amp;quot;sust x y (xs@ys) = (sust x y xs)@(sust x y ys)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Demostrar o refutar: &lt;br /&gt;
     rev (sust x y zs) = sust x y (rev zs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma rev_sust: &lt;br /&gt;
  &amp;quot;rev(sust x y zs) = sust x y (rev zs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Demostrar o refutar:&lt;br /&gt;
     sust x y (sust u v zs) = sust u v (sust x y zs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;sust x y (sust u v zs) = sust u v (sust x y zs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Demostrar o refutar:&lt;br /&gt;
     sust y z (sust x y zs) = sust x z zs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;sust y z (sust x y zs) = sust x z zs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Definir la función&lt;br /&gt;
     borra :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot;&lt;br /&gt;
  tal que (borra x ys) es la lista obtenida borrando la primera&lt;br /&gt;
  ocurrencia del elemento x en la lista ys. Por ejemplo,&lt;br /&gt;
     borra (2::nat) [1,2,3,2] = [1,3,2]&lt;br /&gt;
&lt;br /&gt;
  Nota: La función borra es equivalente a la predefinida remove1. &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun borra :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;borra x ys = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Definir la función&lt;br /&gt;
     borraTodas :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot;&lt;br /&gt;
  tal que (borraTodas x ys) es la lista obtenida borrando todas las&lt;br /&gt;
  ocurrencias del elemento x en la lista ys. Por ejemplo,&lt;br /&gt;
     borraTodas (2::nat) [1,2,3,2] = [1,3]&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun borraTodas :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;borraTodas x ys = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Demostrar o refutar: &lt;br /&gt;
     borra x (borraTodas x xs) = borraTodas x xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;borra x (borraTodas x xs) = borraTodas x xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Demostrar o refutar:&lt;br /&gt;
     borraTodas x (borraTodas x xs) = borraTodas x xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;borraTodas x (borraTodas x xs) = borraTodas x xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Demostrar o refutar:&lt;br /&gt;
     borraTodas x (borra x xs) = borraTodas x xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;borraTodas x (borra x xs) = borraTodas x xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
    &lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Demostrar o refutar: &lt;br /&gt;
     borra x (borra y xs) = borra y (borra x xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;borra x (borra y xs) = borra y (borra x xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Demostrar o refutar el teorema: &lt;br /&gt;
     borraTodas x (borra y xs) = borra y (borraTodas x xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;borraTodas x (borra y xs) = borra y (borraTodas x xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 13. Demostrar o refutar:&lt;br /&gt;
     borra y (sust x y xs) = borra x xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;borra y (sust x y xs) = borra x xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 14. Demostrar o refutar:&lt;br /&gt;
     borraTodas y (sust x y xs) = borraTodas x xs&amp;quot;&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;borraTodas y (sust x y xs) = borraTodas x xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 15. Demostrar o refutar:&lt;br /&gt;
     sust x y (borraTodas x zs) = borraTodas x zs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;sust x y (borraTodas x zs) = borraTodas x zs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 16. Demostrar o refutar:&lt;br /&gt;
     sust x y (borraTodas z zs) = borraTodas z (sust x y zs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;sust x y (borraTodas z zs) = borraTodas z (sust x y zs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 17. Demostrar o refutar:&lt;br /&gt;
     rev (borra x xs) = borra x (rev xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;rev (borra x xs) = borra x (rev xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 18. Demostrar o refutar el teorema: &lt;br /&gt;
     borraTodas x (xs@ys) = (borraTodas x xs)@(borraTodas x ys)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;borraTodas x (xs@ys) = (borraTodas x xs)@(borraTodas x ys)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 19. Demostrar o refutar el teorema: &lt;br /&gt;
     rev (borraTodas x xs) = borraTodas x (rev xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &lt;br /&gt;
  &amp;quot;rev (borraTodas x xs) = borraTodas x (rev xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_10&amp;diff=174</id>
		<title>RA12 Relación 10</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_10&amp;diff=174"/>
		<updated>2018-07-15T11:52:14Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «&amp;quot;isar&amp;quot;» por «&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R10: Cuantificadores sobre listas *}&lt;br /&gt;
&lt;br /&gt;
theory R10&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. 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 la lista &lt;br /&gt;
  xs cumplen la propiedad p. Por ejemplo, se verifica &lt;br /&gt;
     todos (λx. 1&amp;lt;length x) [[2,1,4],[1,3]]&lt;br /&gt;
     ¬todos (λx. 1&amp;lt;length x) [[2,1,4],[3]]&lt;br /&gt;
&lt;br /&gt;
  Nota: La función todos es equivalente a la predefinida list_all. &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&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 xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. 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]]&amp;quot;&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;
&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 xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Demostrar o refutar: &lt;br /&gt;
     todos (λx. P x ∧ Q x) xs = (todos P xs ∧ todos Q xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;todos (λx. P x ∧ Q x) xs = (todos P xs ∧ todos Q xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Demostrar o refutar: &lt;br /&gt;
     todos P (x @ y) = (todos P x ∧ todos P y)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma todos_append:&lt;br /&gt;
  &amp;quot;todos P (x @ y) = (todos P x ∧ todos P y)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Demostrar o refutar: &lt;br /&gt;
     todos P (rev xs) = todos P xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;todos P (rev xs) = todos P xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Demostrar o refutar:&lt;br /&gt;
    algunos (λx. P x ∧ Q x) xs = (algunos P xs ∧ algunos Q xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;algunos (λx. P x ∧ Q x) xs = (algunos P xs ∧ algunos Q xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Demostrar o refutar: &lt;br /&gt;
     algunos P (map f xs) = algunos (P ∘ f) xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;algunos P (map f xs) = algunos (P o f) xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Demostrar o refutar: &lt;br /&gt;
     algunos P (xs @ ys) = (algunos P xs ∨ algunos P ys)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma algunos_append:&lt;br /&gt;
  &amp;quot;algunos P (xs @ ys) = (algunos P xs ∨ algunos P ys)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Demostrar o refutar: &lt;br /&gt;
     algunos P (rev xs) = algunos P xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;algunos P (rev xs) = algunos P xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Encontrar un término no trivial Z tal que sea cierta la &lt;br /&gt;
  siguiente ecuación:&lt;br /&gt;
     algunos (λx. P x ∨ Q x) xs = Z&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Demostrar o refutar:&lt;br /&gt;
     algunos P xs = (¬ todos (λx. (¬ P x)) xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;algunos P xs = (¬ todos (λx. (¬ P x)) xs)&amp;quot;&lt;br /&gt;
by (induct xs) simp_all&lt;br /&gt;
     &lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Definir la funcion primitiva recursiva &lt;br /&gt;
     estaEn :: &amp;#039;a ⇒ &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (estaEn x xs) se verifica si el elemento x está en la lista&lt;br /&gt;
  xs. Por ejemplo, &lt;br /&gt;
     estaEn (2::nat) [3,2,4] = True&lt;br /&gt;
     estaEn (1::nat) [3,2,4] = False&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun estaEn :: &amp;quot;&amp;#039;a ⇒ &amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;estaEn x xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 13. Expresar la relación existente entre estaEn y algunos. &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 14. Definir la función primitiva recursiva &lt;br /&gt;
     sinDuplicados :: &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (sinDuplicados xs) se verifica si la lista xs no contiene&lt;br /&gt;
  duplicados. Por ejemplo,  &lt;br /&gt;
     sinDuplicados [1::nat,4,2]   = True&lt;br /&gt;
     sinDuplicados [1::nat,4,2,4] = False&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun sinDuplicados :: &amp;quot;&amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;sinDuplicados xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 15. Definir la función primitiva recursiva &lt;br /&gt;
     borraDuplicados :: &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (borraDuplicados xs) es la lista obtenida eliminando los&lt;br /&gt;
  elementos duplicados de la lista xs. Por ejemplo, &lt;br /&gt;
     borraDuplicados [1::nat,2,4,2,3] = [1,4,2,3]&lt;br /&gt;
&lt;br /&gt;
  Nota: La función borraDuplicados es equivalente a la predefinida &lt;br /&gt;
  remdups. &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun borraDuplicados :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;borraDuplicados xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 16. Demostrar o refutar:&lt;br /&gt;
     length (borraDuplicados xs) ≤ length xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma length_borraDuplicados:&lt;br /&gt;
  &amp;quot;length (borraDuplicados xs) ≤ length xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 17. Demostrar o refutar: &lt;br /&gt;
     estaEn a (borraDuplicados xs) = estaEn a xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma estaEn_borraDuplicados: &lt;br /&gt;
  &amp;quot;estaEn a (borraDuplicados xs) = estaEn a xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 18. Demostrar o refutar: &lt;br /&gt;
     sinDuplicados (borraDuplicados xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma sinDuplicados_borraDuplicados:&lt;br /&gt;
  &amp;quot;sinDuplicados (borraDuplicados xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 19. Demostrar o refutar:&lt;br /&gt;
    borraDuplicados (rev xs) = rev (borraDuplicados xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma &amp;quot;borraDuplicados (rev xs) = rev (borraDuplicados xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_15&amp;diff=173</id>
		<title>RA12 Relación 15</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_15&amp;diff=173"/>
		<updated>2018-07-15T11:52:06Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «&amp;quot;isar&amp;quot;» por «&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R15: Suma y aplanamiento de listas *}&lt;br /&gt;
&lt;br /&gt;
theory R15&lt;br /&gt;
imports Main R10&lt;br /&gt;
begin &lt;br /&gt;
&lt;br /&gt;
section {* Suma y aplanamiento de listas *}&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Definir la función &lt;br /&gt;
     suma :: &amp;quot;nat list ⇒ nat&amp;quot; &lt;br /&gt;
  tal que (suma xs) es la suma de los elementos de la lista de números&lt;br /&gt;
  naturales xs. Por ejemplo, &lt;br /&gt;
     suma [3::nat,2,4] = 9&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun suma :: &amp;quot;nat list ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;suma xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;suma [3::nat,2,4]&amp;quot; -- &amp;quot;= 9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Definir la función &lt;br /&gt;
     aplana :: &amp;quot;&amp;#039;a list list ⇒ &amp;#039;a list&amp;quot;&lt;br /&gt;
  tal que (aplana xss) es la obtenida concatenando los miembros de la &lt;br /&gt;
  lista de listas &amp;quot;xss&amp;quot;. Por ejemplo,&lt;br /&gt;
     aplana [[2,3], [4,5], [7,9]] = [2,3,4,5,7,9]&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun aplana :: &amp;quot;&amp;#039;a list list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;aplana xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;aplana [[2::nat,3], [4,5], [7,9]]&amp;quot; -- &amp;quot;= [2,3,4,5,7,9]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Demostrar o refutar&lt;br /&gt;
     length (aplana xs) = suma (map length xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma length_aplana:&lt;br /&gt;
  &amp;quot;length (aplana xs) = suma (map length xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Demostrar o refutar&lt;br /&gt;
     suma (xs @ ys) = suma xs + suma ys&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma suma_append: &lt;br /&gt;
  &amp;quot;suma (xs @ ys) = suma xs + suma ys&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Demostrar o refutar&lt;br /&gt;
     aplana (xs @ ys) = (aplana xs) @ (aplana ys)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma aplana_append: &lt;br /&gt;
  &amp;quot;aplana (xs @ ys) = (aplana xs) @ (aplana ys)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Demostrar o refutar&lt;br /&gt;
     aplana (map rev (rev xs)) = rev (aplana xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma aplana_map_rev_rev: &lt;br /&gt;
  &amp;quot;aplana (map rev (rev xs)) = rev (aplana xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Demostrar o refutar&lt;br /&gt;
     aplana (rev (map rev xs)) = rev (aplana xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma aplana_rev_map_rev:&lt;br /&gt;
  &amp;quot;aplana (rev (map rev xs)) = rev (aplana xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Demostrar o refutar&lt;br /&gt;
     list_all (list_all P) xs = list_all P (aplana xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma list_all_list_all:&lt;br /&gt;
  &amp;quot;list_all (list_all P) xs = list_all P (aplana xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Demostrar o refutar&lt;br /&gt;
     aplana (rev xs) = aplana xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma aplana_rev:&lt;br /&gt;
  &amp;quot;aplana (rev xs) = aplana xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Demostrar o refutar&lt;br /&gt;
     suma (rev xs) = suma xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma suma_rev:&lt;br /&gt;
  &amp;quot;suma (rev xs) = suma xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {*&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Buscar un predicado P para que se verifique la siguiente &lt;br /&gt;
  propiedad &lt;br /&gt;
     list_all P xs ⟶ length xs ≤ suma xs&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Demostrar o refutar&lt;br /&gt;
     algunos (algunos P) xs = algunos P (aplana xs)&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
lemma algunos_algunos: &lt;br /&gt;
  &amp;quot;algunos (algunos P) xs = algunos P (aplana xs)&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
text {* &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 13. Redefinir, usando la función list_all, la función&lt;br /&gt;
  algunos. Llamar la nueva función algunos2 y demostrar que es &lt;br /&gt;
  equivalente a algunos.  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&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 xs = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lemma algunos2_algunos: &lt;br /&gt;
  &amp;quot;algunos2 P xs = algunos P xs&amp;quot;&lt;br /&gt;
oops&lt;br /&gt;
&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_21&amp;diff=172</id>
		<title>RA12 Relación 21</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/DAO/index.php?title=RA12_Relaci%C3%B3n_21&amp;diff=172"/>
		<updated>2018-07-15T11:51:59Z</updated>

		<summary type="html">&lt;p&gt;Jalonso: Texto reemplazado: «lang=&amp;quot;isar&amp;quot;» por «lang=&amp;quot;isabelle&amp;quot;»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang=&amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
header {* R21: Árboles binarios completos *}&lt;br /&gt;
&lt;br /&gt;
theory R21&lt;br /&gt;
imports Main &lt;br /&gt;
begin &lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 1. Definir el tipo de datos arbol para representar los&lt;br /&gt;
  árboles binarios que no tienen información ni en los nodos y ni en las&lt;br /&gt;
  hojas. Por ejemplo, el árbol&lt;br /&gt;
          ·&lt;br /&gt;
         / \&lt;br /&gt;
        /   \&lt;br /&gt;
       ·     ·&lt;br /&gt;
      / \   / \&lt;br /&gt;
     ·   · ·   · &lt;br /&gt;
  se representa por &amp;quot;N (N H H) (N H H)&amp;quot;.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
datatype arbol = H | N arbol arbol&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;N (N H H) (N H H)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Definir la función&lt;br /&gt;
     hojas :: &amp;quot;arbol =&amp;gt; nat&amp;quot; &lt;br /&gt;
  tal que (hojas a) es el número de hojas del árbol a. Por ejemplo,&lt;br /&gt;
     hojas (N (N H H) (N H H)) = 4&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun hojas :: &amp;quot;arbol =&amp;gt; nat&amp;quot; where&lt;br /&gt;
  &amp;quot;hojas t = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;hojas (N (N H H) (N H H))&amp;quot; -- &amp;quot;= 4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Definir la función&lt;br /&gt;
     profundidad :: &amp;quot;arbol =&amp;gt; nat&amp;quot; &lt;br /&gt;
  tal que (profundidad a) es la profundidad del árbol a. Por ejemplo,&lt;br /&gt;
     profundidad (N (N H H) (N H H)) = 2&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun profundidad :: &amp;quot;arbol =&amp;gt; nat&amp;quot; where&lt;br /&gt;
  &amp;quot;profundidad t = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;profundidad (N (N H H) (N H H))&amp;quot; -- &amp;quot;= 2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Definir la función&lt;br /&gt;
     abc :: &amp;quot;nat ⇒ arbol&amp;quot; &lt;br /&gt;
  tal que (abc n) es el árbol binario completo de profundidad n. Por&lt;br /&gt;
  ejemplo,  &lt;br /&gt;
     abc 3 = N (N (N H H) (N H H)) (N (N H H) (N H H))&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun abc :: &amp;quot;nat ⇒ arbol&amp;quot; where&lt;br /&gt;
  &amp;quot;abc 0 = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;abc 3&amp;quot; -- &amp;quot;= N (N (N H H) (N H H)) (N (N H H) (N H H))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Un árbol binario a es completo respecto de la medida f si&lt;br /&gt;
  a es una hoja o bien a es de la forma (N i d) y se cumple que tanto i&lt;br /&gt;
  como d son árboles binarios completos respecto de f y, además, &lt;br /&gt;
  f(i) = f(r).&lt;br /&gt;
&lt;br /&gt;
  Definir la función&lt;br /&gt;
     es_abc :: &amp;quot;(arbol =&amp;gt; &amp;#039;a) =&amp;gt; arbol =&amp;gt; bool&lt;br /&gt;
  tal que (es_abc f a) se verifica si a es un árbol binario completo&lt;br /&gt;
  respecto de f.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
fun es_abc :: &amp;quot;(arbol =&amp;gt; &amp;#039;a) =&amp;gt; arbol =&amp;gt; bool&amp;quot; where&lt;br /&gt;
  &amp;quot;es_abc f t = undefined&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Nota. (size a) es el número de nodos del árbol a. Por ejemplo,&lt;br /&gt;
     size (N (N H H) (N H H)) = 3&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;size (N (N H H) (N H H))&amp;quot;&lt;br /&gt;
value &amp;quot;size (N (N (N H H) (N H H)) (N (N H H) (N H H)))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Nota. Tenemos 3 funciones de medida sobre los árboles: número de&lt;br /&gt;
  hojas, número de nodos y profundidad. A cada una le corresponde un&lt;br /&gt;
  concepto de completitud. En los siguientes ejercicios demostraremos&lt;br /&gt;
  que los tres conceptos de completitud son iguales.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Demostrar que un árbol binario a es completo respecto de&lt;br /&gt;
  la profundidad syss es completo respecto del número de hojas.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Demostrar que un árbol binario a es completo respecto del&lt;br /&gt;
  número de hojas syss es completo respecto del número de nodos&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Demostrar que un árbol binario a es completo respecto de&lt;br /&gt;
  la profundidad syss es completo respecto del número de nodos&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Demostrar que (abc n) es un árbol binario completo.&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Demostrar que si a es un árbolo binario completo&lt;br /&gt;
  respecto de la profundidad, entonces a es (abc (profundidad a)).&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
text {*  &lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 12. Encontrar una medida f tal que (es_abc f) es distinto de &lt;br /&gt;
  (es_abc size).&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
*}&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jalonso</name></author>
		
	</entry>
</feed>