<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/LMF2016/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Albromgon</id>
	<title>Lógica Matemática y fundamentos (2015-16) - Contribuciones del usuario [es]</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/LMF2016/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Albromgon"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2016/index.php/Especial:Contribuciones/Albromgon"/>
	<updated>2026-07-17T22:21:36Z</updated>
	<subtitle>Contribuciones del usuario</subtitle>
	<generator>MediaWiki 1.31.14</generator>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_7&amp;diff=237</id>
		<title>Relación 7</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_7&amp;diff=237"/>
		<updated>2016-06-17T11:03:47Z</updated>

		<summary type="html">&lt;p&gt;Albromgon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang = &amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- TablerosSemánticos.hs&lt;br /&gt;
-- Tableros semánticos proposicionales.&lt;br /&gt;
-- José A. Alonso Jiménez &amp;lt;jalonso@us.es&amp;gt;&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
module TablerosSemanticos where&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Librerías auxiliares                                               --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
import SintaxisSemantica&lt;br /&gt;
import Data.List &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Literales                                                          --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 6: Definir la función&lt;br /&gt;
--    literal :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (literal f) se verifica si la fórmula F es un literal. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    literal p               ==&amp;gt;  True&lt;br /&gt;
--    literal (no p)          ==&amp;gt;  True&lt;br /&gt;
--    literal (no (p --&amp;gt; q))  ==&amp;gt;  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
literal :: Prop -&amp;gt; Bool&lt;br /&gt;
literal  (Atom f)      = True&lt;br /&gt;
literal (Neg (Atom f)) = True&lt;br /&gt;
literal _              = False&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Notación uniforme                                                  --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 1: Definir la función&lt;br /&gt;
--    dobleNegacion :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (dobleNegacion f) se verifica si f es una doble negación. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    dobleNegacion (no (no p))     ==&amp;gt;  True&lt;br /&gt;
--    dobleNegacion (no (p --&amp;gt; q))  ==&amp;gt;  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
dobleNegacion :: Prop -&amp;gt; Bool&lt;br /&gt;
dobleNegacion (Neg (Neg _)) = True&lt;br /&gt;
dobleNegación _             = False &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 2: Definir la función&lt;br /&gt;
--    alfa :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (alfa f) se verifica si f es una fórmula alfa.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
alfa :: Prop -&amp;gt; Bool&lt;br /&gt;
alfa (Conj _ _)       = True&lt;br /&gt;
alfa (Neg (Impl _ _)) = True&lt;br /&gt;
alfa (Neg (Disj _ _)) = True&lt;br /&gt;
alfa _                = False&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 3: Definir la función&lt;br /&gt;
--    beta :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (beta d) se verifica si f es una fórmula beta.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
beta :: Prop -&amp;gt; Bool&lt;br /&gt;
beta (Disj _ _)       = True&lt;br /&gt;
beta (Impl _ _)       = True&lt;br /&gt;
beta (Neg (Conj _ _)) = True&lt;br /&gt;
beta (Equi _ _)       = True&lt;br /&gt;
beta (Neg (Equi _ _)) = True&lt;br /&gt;
beta _                = False&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4: Definir la función&lt;br /&gt;
--    componentes :: Prop -&amp;gt; [Prop]&lt;br /&gt;
-- tal que (componentes ) es la lista de las componentes de la fórmula&lt;br /&gt;
-- f. Por ejemplo, &lt;br /&gt;
--    componentes (p /\ q --&amp;gt; r)       ==&amp;gt;  [no (p /\ q),r]&lt;br /&gt;
--    componentes (no (p /\ q --&amp;gt; r))  ==&amp;gt;  [(p /\ q),no r]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
componentes :: Prop -&amp;gt; [Prop]&lt;br /&gt;
componentes (Neg (Neg f))    = [f]&lt;br /&gt;
componentes (Conj f g)       = [f, g]&lt;br /&gt;
componentes (Neg (Impl f g)) = [f, Neg g]&lt;br /&gt;
componentes (Neg (Disj f g)) = [Neg f, Neg g]&lt;br /&gt;
componentes (Disj f g)       = [f, g]&lt;br /&gt;
componentes (Impl f g)       = [Neg f, g]&lt;br /&gt;
componentes (Neg (Conj f g)) = [Neg f, Neg g]&lt;br /&gt;
componentes (Equi f g)       = [Conj f g, Conj (Neg f) (Neg g)]&lt;br /&gt;
componentes (Neg (Equi f g)) = [Conj f (Neg g), Conj (Neg f) g]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Modelos mediante tableros                                          --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 5: Definir la función&lt;br /&gt;
--    conjuntoDeLiterales :: [Prop] -&amp;gt; Bool&lt;br /&gt;
-- tal que (conjuntoDeLiterales fs) se verifica si fs es un conjunto de&lt;br /&gt;
-- literales. Por ejemplo, &lt;br /&gt;
--    conjuntoDeLiterales [p --&amp;gt; q, no r, r /\ s, p]  ==&amp;gt;  False&lt;br /&gt;
--    conjuntoDeLiterales [p, no q, r]                ==&amp;gt;  True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
conjuntoDeLiterales :: [Prop] -&amp;gt; Bool&lt;br /&gt;
conjuntoDeLiterales fs = and [literal f | f &amp;lt;- fs]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 6: Definir la función&lt;br /&gt;
--    tieneContradiccion :: [Prop] -&amp;gt; Bool&lt;br /&gt;
-- tal que (tieneContradiccion fs) se verifica si fs contiene una&lt;br /&gt;
-- fórmula y su negación. Por ejemplo,&lt;br /&gt;
--    tieneContradiccion [r, p /\ q, s, no(p /\ q)]  ==&amp;gt;  True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
tieneContradiccion :: [Prop] -&amp;gt; Bool&lt;br /&gt;
tieneContradiccion fs = [f | f &amp;lt;- fs, elem (Neg f) fs] /= []&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Otra forma usando pliegues&lt;br /&gt;
tieneContradiccion2 :: [Prop] -&amp;gt; Bool&lt;br /&gt;
tieneContradiccion2 fs = foldl (\acc x -&amp;gt; if (elem (Neg x) fs) then True else acc) False fs&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 7: Definir la función&lt;br /&gt;
--    expansionDN :: [Prop] -&amp;gt; Prop -&amp;gt; [[Prop]]&lt;br /&gt;
-- tal que (expansionDN fs f) es la expansión de fs mediante la doble&lt;br /&gt;
-- negación f. Por ejemplo,&lt;br /&gt;
--    expansionDN [p, no(no q), r] (no(no q))  ==&amp;gt;  [[q,p,r]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
expansionDN :: [Prop] -&amp;gt; Prop -&amp;gt; [[Prop]]&lt;br /&gt;
expansionDN fs f = [(componentes f) `union` (delete f fs)]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 8: Definir la función&lt;br /&gt;
--    expansionAlfa :: [Prop] -&amp;gt; Prop -&amp;gt; [[Prop]]&lt;br /&gt;
-- tal que (expansionAlfa fs f) es la expansión de fs mediante la&lt;br /&gt;
-- fórmula alfa f. Por ejemplo,&lt;br /&gt;
--    expansionAlfa [q, (p1 /\ p2) , r] (p1 /\ p2)  ==&amp;gt;  [[p1,p2,q,r]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
expansionAlfa :: [Prop] -&amp;gt; Prop -&amp;gt; [[Prop]]&lt;br /&gt;
expansionAlfa fs f = [(componentes f) `union` (delete f fs)]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 9: Definir la función&lt;br /&gt;
--    expansionBeta :: [Prop] -&amp;gt; Prop -&amp;gt; [[Prop]]&lt;br /&gt;
-- tal que (expansionBeta fs f) es la expansión de fs mediante la&lt;br /&gt;
-- fórmula beta f. Por ejemplo,&lt;br /&gt;
--    expansionBeta [q, (p1 \/ p2) , r] (p1 \/ p2)  ==&amp;gt;  [[p1,q,r],[p2,q,r]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
expansionBeta :: [Prop] -&amp;gt; Prop -&amp;gt; [[Prop]]&lt;br /&gt;
expansionBeta fs f = [[g] `union` (delete f fs) | g &amp;lt;- componentes f]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 10: Definir la función&lt;br /&gt;
--    sucesores :: [Prop] -&amp;gt; [[Prop]]&lt;br /&gt;
-- tal que (sucesores fs) es la lista de sucesores de fs. Por ejemplo,&lt;br /&gt;
--    sucesores [q \/ s, no(no r), p1 /\ p2] =&amp;gt; [[r,(q \/ s),(p1 /\ p2)]]&lt;br /&gt;
--    sucesores [r,(q \/ s),(p1 /\ p2)]      =&amp;gt; [[p1,p2,r,(q \/ s)]]&lt;br /&gt;
--    sucesores [p1,p2,r,(q \/ s)]           =&amp;gt; [[q,p1,p2,r],[s,p1,p2,r]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
sucesores :: [Prop] -&amp;gt; [[Prop]]&lt;br /&gt;
sucesores  fs&lt;br /&gt;
    | doblesNegación /= []  = expansiónDN   fs (head doblesNegación)&lt;br /&gt;
    | alfas /= []           = expansiónAlfa fs (head alfas)&lt;br /&gt;
    | betas /= []           = expansiónBeta fs (head betas)&lt;br /&gt;
    where doblesNegación = [f | f &amp;lt;- fs, dobleNegación f]&lt;br /&gt;
          alfas          = [f | f &amp;lt;- fs, alfa f]&lt;br /&gt;
          betas          = [f | f &amp;lt;- fs, beta f]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 11: Definir la función&lt;br /&gt;
--    modelosTab :: [Prop] -&amp;gt; [[Prop]]&lt;br /&gt;
-- tal que (modelosTab fs) es el conjunto de los modelos de fs&lt;br /&gt;
-- calculados mediante el método de tableros semánticos. Por ejemplo,&lt;br /&gt;
--    modelosTab [p --&amp;gt; q, no(q --&amp;gt; p)]  &lt;br /&gt;
--    ==&amp;gt; [[no p,q],[q,no p]]&lt;br /&gt;
--    modelosTab [p --&amp;gt; q, no q --&amp;gt; no p]  &lt;br /&gt;
--    ==&amp;gt; [[q,no p],[no p],[q],[no p,q]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
modelosTab :: [Prop] -&amp;gt; [[Prop]]&lt;br /&gt;
modelosTab  fs &lt;br /&gt;
    | tieneContradicción fs  = []&lt;br /&gt;
    | conjuntoDeLiterales fs = [fs]&lt;br /&gt;
    | otherwise              = uniónGeneral [modelosTab gs &lt;br /&gt;
                                             | gs &amp;lt;- sucesores fs]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 12: Definir la función&lt;br /&gt;
--    subconjunto :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; Bool&lt;br /&gt;
-- tal que (subconjunto x y) se verifica si x es subconjunto de y. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    subconjunto [1,3] [3,2,1]    ==&amp;gt;  True&lt;br /&gt;
--    subconjunto [1,3,5] [3,2,1]  ==&amp;gt; False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
subconjunto :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; Bool&lt;br /&gt;
subconjunto xs ys = and [elem x ys | x &amp;lt;- xs]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13: Definir la función&lt;br /&gt;
--    modelosGenerales :: [Prop] -&amp;gt; [[Prop]]&lt;br /&gt;
-- tal que (modelosGenerales fs) es el conjunto de los modelos generales&lt;br /&gt;
-- de fs calculados mediante el método de tableros semánticos. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    modelosGenerales [p --&amp;gt; q, no q --&amp;gt; no p]  ==&amp;gt;  [[no p],[q]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
modelosGenerales :: [Prop] -&amp;gt; [[Prop]]&lt;br /&gt;
modelosGenerales fs = [gs | gs &amp;lt;- modelos, [hs | hs &amp;lt;- delete gs modelos, subconjunto hs gs] == []]&lt;br /&gt;
    where modelos = modelosTab fs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Teoremas por tableros                                              --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 14: Definir la función&lt;br /&gt;
--    esTeoremaPorTableros :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (esTeoremaPorTableros f) se verifica si la fórmula f es&lt;br /&gt;
-- teorema (mediante tableros semánticos). Por ejemplo,  &lt;br /&gt;
--    esTeoremaPorTableros (p --&amp;gt; p)  ==&amp;gt;  True&lt;br /&gt;
--    esTeoremaPorTableros (p --&amp;gt; q)  ==&amp;gt;  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
esTeoremaPorTableros :: Prop -&amp;gt; Bool&lt;br /&gt;
esTeoremaPorTableros f = modelosTab [Neg f] == []&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Consecuencia por tableros                                          --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 15: Definir la función&lt;br /&gt;
--    esDeduciblePorTableros :: [Prop] -&amp;gt; Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (esDeduciblePorTableros fs f) se verifica si la fórmula f es&lt;br /&gt;
-- consecuencia (mediante tableros) del conjunto de fórmulas fs. Por&lt;br /&gt;
-- ejemplo,&lt;br /&gt;
--    esDeduciblePorTableros [p --&amp;gt; q, q --&amp;gt; r] (p --&amp;gt; r)   ==&amp;gt;  True&lt;br /&gt;
--    esDeduciblePorTableros [p --&amp;gt; q, q --&amp;gt; r] (p &amp;lt;--&amp;gt; r)  ==&amp;gt;  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
esDeduciblePorTableros :: [Prop] -&amp;gt; Prop -&amp;gt; Bool&lt;br /&gt;
esDeduciblePorTableros fs f = modelosTab ((Neg f):fs) == [] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Albromgon</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_7&amp;diff=236</id>
		<title>Relación 7</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_7&amp;diff=236"/>
		<updated>2016-06-17T10:57:34Z</updated>

		<summary type="html">&lt;p&gt;Albromgon: Otra opción para la función tieneContradiccion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang = &amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- TablerosSemánticos.hs&lt;br /&gt;
-- Tableros semánticos proposicionales.&lt;br /&gt;
-- José A. Alonso Jiménez &amp;lt;jalonso@us.es&amp;gt;&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
module TablerosSemanticos where&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Librerías auxiliares                                               --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
import SintaxisSemantica&lt;br /&gt;
import Data.List &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Literales                                                          --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 6: Definir la función&lt;br /&gt;
--    literal :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (literal f) se verifica si la fórmula F es un literal. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    literal p               ==&amp;gt;  True&lt;br /&gt;
--    literal (no p)          ==&amp;gt;  True&lt;br /&gt;
--    literal (no (p --&amp;gt; q))  ==&amp;gt;  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
literal :: Prop -&amp;gt; Bool&lt;br /&gt;
literal  (Atom f)      = True&lt;br /&gt;
literal (Neg (Atom f)) = True&lt;br /&gt;
literal _              = False&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Notación uniforme                                                  --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 1: Definir la función&lt;br /&gt;
--    dobleNegacion :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (dobleNegacion f) se verifica si f es una doble negación. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    dobleNegacion (no (no p))     ==&amp;gt;  True&lt;br /&gt;
--    dobleNegacion (no (p --&amp;gt; q))  ==&amp;gt;  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
dobleNegacion :: Prop -&amp;gt; Bool&lt;br /&gt;
dobleNegacion (Neg (Neg _)) = True&lt;br /&gt;
dobleNegación _             = False &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 2: Definir la función&lt;br /&gt;
--    alfa :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (alfa f) se verifica si f es una fórmula alfa.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
alfa :: Prop -&amp;gt; Bool&lt;br /&gt;
alfa (Conj _ _)       = True&lt;br /&gt;
alfa (Neg (Impl _ _)) = True&lt;br /&gt;
alfa (Neg (Disj _ _)) = True&lt;br /&gt;
alfa _                = False&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 3: Definir la función&lt;br /&gt;
--    beta :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (beta d) se verifica si f es una fórmula beta.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
beta :: Prop -&amp;gt; Bool&lt;br /&gt;
beta (Disj _ _)       = True&lt;br /&gt;
beta (Impl _ _)       = True&lt;br /&gt;
beta (Neg (Conj _ _)) = True&lt;br /&gt;
beta (Equi _ _)       = True&lt;br /&gt;
beta (Neg (Equi _ _)) = True&lt;br /&gt;
beta _                = False&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4: Definir la función&lt;br /&gt;
--    componentes :: Prop -&amp;gt; [Prop]&lt;br /&gt;
-- tal que (componentes ) es la lista de las componentes de la fórmula&lt;br /&gt;
-- f. Por ejemplo, &lt;br /&gt;
--    componentes (p /\ q --&amp;gt; r)       ==&amp;gt;  [no (p /\ q),r]&lt;br /&gt;
--    componentes (no (p /\ q --&amp;gt; r))  ==&amp;gt;  [(p /\ q),no r]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
componentes :: Prop -&amp;gt; [Prop]&lt;br /&gt;
componentes (Neg (Neg f))    = [f]&lt;br /&gt;
componentes (Conj f g)       = [f, g]&lt;br /&gt;
componentes (Neg (Impl f g)) = [f, Neg g]&lt;br /&gt;
componentes (Neg (Disj f g)) = [Neg f, Neg g]&lt;br /&gt;
componentes (Disj f g)       = [f, g]&lt;br /&gt;
componentes (Impl f g)       = [Neg f, g]&lt;br /&gt;
componentes (Neg (Conj f g)) = [Neg f, Neg g]&lt;br /&gt;
componentes (Equi f g)       = [Conj f g, Conj (Neg f) (Neg g)]&lt;br /&gt;
componentes (Neg (Equi f g)) = [Conj f (Neg g), Conj (Neg f) g]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Modelos mediante tableros                                          --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 5: Definir la función&lt;br /&gt;
--    conjuntoDeLiterales :: [Prop] -&amp;gt; Bool&lt;br /&gt;
-- tal que (conjuntoDeLiterales fs) se verifica si fs es un conjunto de&lt;br /&gt;
-- literales. Por ejemplo, &lt;br /&gt;
--    conjuntoDeLiterales [p --&amp;gt; q, no r, r /\ s, p]  ==&amp;gt;  False&lt;br /&gt;
--    conjuntoDeLiterales [p, no q, r]                ==&amp;gt;  True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
conjuntoDeLiterales :: [Prop] -&amp;gt; Bool&lt;br /&gt;
conjuntoDeLiterales fs = and [literal f | f &amp;lt;- fs]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 6: Definir la función&lt;br /&gt;
--    tieneContradiccion :: [Prop] -&amp;gt; Bool&lt;br /&gt;
-- tal que (tieneContradiccion fs) se verifica si fs contiene una&lt;br /&gt;
-- fórmula y su negación. Por ejemplo,&lt;br /&gt;
--    tieneContradiccion [r, p /\ q, s, no(p /\ q)]  ==&amp;gt;  True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
tieneContradiccion :: [Prop] -&amp;gt; Bool&lt;br /&gt;
tieneContradiccion fs = [f | f &amp;lt;- fs, elem (Neg f) fs] /= []&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Otra forma usando pliegues&lt;br /&gt;
tieneContradiccion :: [Prop] -&amp;gt; Bool&lt;br /&gt;
tieneContradiccion fs = foldl (\acc x -&amp;gt; if (elem (Neg x) fs) then True else acc) False fs&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 7: Definir la función&lt;br /&gt;
--    expansionDN :: [Prop] -&amp;gt; Prop -&amp;gt; [[Prop]]&lt;br /&gt;
-- tal que (expansionDN fs f) es la expansión de fs mediante la doble&lt;br /&gt;
-- negación f. Por ejemplo,&lt;br /&gt;
--    expansionDN [p, no(no q), r] (no(no q))  ==&amp;gt;  [[q,p,r]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
expansionDN :: [Prop] -&amp;gt; Prop -&amp;gt; [[Prop]]&lt;br /&gt;
expansionDN fs f = [(componentes f) `union` (delete f fs)]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 8: Definir la función&lt;br /&gt;
--    expansionAlfa :: [Prop] -&amp;gt; Prop -&amp;gt; [[Prop]]&lt;br /&gt;
-- tal que (expansionAlfa fs f) es la expansión de fs mediante la&lt;br /&gt;
-- fórmula alfa f. Por ejemplo,&lt;br /&gt;
--    expansionAlfa [q, (p1 /\ p2) , r] (p1 /\ p2)  ==&amp;gt;  [[p1,p2,q,r]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
expansionAlfa :: [Prop] -&amp;gt; Prop -&amp;gt; [[Prop]]&lt;br /&gt;
expansionAlfa fs f = [(componentes f) `union` (delete f fs)]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 9: Definir la función&lt;br /&gt;
--    expansionBeta :: [Prop] -&amp;gt; Prop -&amp;gt; [[Prop]]&lt;br /&gt;
-- tal que (expansionBeta fs f) es la expansión de fs mediante la&lt;br /&gt;
-- fórmula beta f. Por ejemplo,&lt;br /&gt;
--    expansionBeta [q, (p1 \/ p2) , r] (p1 \/ p2)  ==&amp;gt;  [[p1,q,r],[p2,q,r]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
expansionBeta :: [Prop] -&amp;gt; Prop -&amp;gt; [[Prop]]&lt;br /&gt;
expansionBeta fs f = [[g] `union` (delete f fs) | g &amp;lt;- componentes f]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 10: Definir la función&lt;br /&gt;
--    sucesores :: [Prop] -&amp;gt; [[Prop]]&lt;br /&gt;
-- tal que (sucesores fs) es la lista de sucesores de fs. Por ejemplo,&lt;br /&gt;
--    sucesores [q \/ s, no(no r), p1 /\ p2] =&amp;gt; [[r,(q \/ s),(p1 /\ p2)]]&lt;br /&gt;
--    sucesores [r,(q \/ s),(p1 /\ p2)]      =&amp;gt; [[p1,p2,r,(q \/ s)]]&lt;br /&gt;
--    sucesores [p1,p2,r,(q \/ s)]           =&amp;gt; [[q,p1,p2,r],[s,p1,p2,r]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
sucesores :: [Prop] -&amp;gt; [[Prop]]&lt;br /&gt;
sucesores  fs&lt;br /&gt;
    | doblesNegación /= []  = expansiónDN   fs (head doblesNegación)&lt;br /&gt;
    | alfas /= []           = expansiónAlfa fs (head alfas)&lt;br /&gt;
    | betas /= []           = expansiónBeta fs (head betas)&lt;br /&gt;
    where doblesNegación = [f | f &amp;lt;- fs, dobleNegación f]&lt;br /&gt;
          alfas          = [f | f &amp;lt;- fs, alfa f]&lt;br /&gt;
          betas          = [f | f &amp;lt;- fs, beta f]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 11: Definir la función&lt;br /&gt;
--    modelosTab :: [Prop] -&amp;gt; [[Prop]]&lt;br /&gt;
-- tal que (modelosTab fs) es el conjunto de los modelos de fs&lt;br /&gt;
-- calculados mediante el método de tableros semánticos. Por ejemplo,&lt;br /&gt;
--    modelosTab [p --&amp;gt; q, no(q --&amp;gt; p)]  &lt;br /&gt;
--    ==&amp;gt; [[no p,q],[q,no p]]&lt;br /&gt;
--    modelosTab [p --&amp;gt; q, no q --&amp;gt; no p]  &lt;br /&gt;
--    ==&amp;gt; [[q,no p],[no p],[q],[no p,q]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
modelosTab :: [Prop] -&amp;gt; [[Prop]]&lt;br /&gt;
modelosTab  fs &lt;br /&gt;
    | tieneContradicción fs  = []&lt;br /&gt;
    | conjuntoDeLiterales fs = [fs]&lt;br /&gt;
    | otherwise              = uniónGeneral [modelosTab gs &lt;br /&gt;
                                             | gs &amp;lt;- sucesores fs]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 12: Definir la función&lt;br /&gt;
--    subconjunto :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; Bool&lt;br /&gt;
-- tal que (subconjunto x y) se verifica si x es subconjunto de y. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    subconjunto [1,3] [3,2,1]    ==&amp;gt;  True&lt;br /&gt;
--    subconjunto [1,3,5] [3,2,1]  ==&amp;gt; False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
subconjunto :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; Bool&lt;br /&gt;
subconjunto xs ys = and [elem x ys | x &amp;lt;- xs]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13: Definir la función&lt;br /&gt;
--    modelosGenerales :: [Prop] -&amp;gt; [[Prop]]&lt;br /&gt;
-- tal que (modelosGenerales fs) es el conjunto de los modelos generales&lt;br /&gt;
-- de fs calculados mediante el método de tableros semánticos. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    modelosGenerales [p --&amp;gt; q, no q --&amp;gt; no p]  ==&amp;gt;  [[no p],[q]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
modelosGenerales :: [Prop] -&amp;gt; [[Prop]]&lt;br /&gt;
modelosGenerales fs = [gs | gs &amp;lt;- modelos, [hs | hs &amp;lt;- delete gs modelos, subconjunto hs gs] == []]&lt;br /&gt;
    where modelos = modelosTab fs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Teoremas por tableros                                              --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 14: Definir la función&lt;br /&gt;
--    esTeoremaPorTableros :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (esTeoremaPorTableros f) se verifica si la fórmula f es&lt;br /&gt;
-- teorema (mediante tableros semánticos). Por ejemplo,  &lt;br /&gt;
--    esTeoremaPorTableros (p --&amp;gt; p)  ==&amp;gt;  True&lt;br /&gt;
--    esTeoremaPorTableros (p --&amp;gt; q)  ==&amp;gt;  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
esTeoremaPorTableros :: Prop -&amp;gt; Bool&lt;br /&gt;
esTeoremaPorTableros f = modelosTab [Neg f] == []&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Consecuencia por tableros                                          --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 15: Definir la función&lt;br /&gt;
--    esDeduciblePorTableros :: [Prop] -&amp;gt; Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (esDeduciblePorTableros fs f) se verifica si la fórmula f es&lt;br /&gt;
-- consecuencia (mediante tableros) del conjunto de fórmulas fs. Por&lt;br /&gt;
-- ejemplo,&lt;br /&gt;
--    esDeduciblePorTableros [p --&amp;gt; q, q --&amp;gt; r] (p --&amp;gt; r)   ==&amp;gt;  True&lt;br /&gt;
--    esDeduciblePorTableros [p --&amp;gt; q, q --&amp;gt; r] (p &amp;lt;--&amp;gt; r)  ==&amp;gt;  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
esDeduciblePorTableros :: [Prop] -&amp;gt; Prop -&amp;gt; Bool&lt;br /&gt;
esDeduciblePorTableros fs f = modelosTab ((Neg f):fs) == [] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Albromgon</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_2a&amp;diff=235</id>
		<title>Relación 2a</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_2a&amp;diff=235"/>
		<updated>2016-06-16T19:06:34Z</updated>

		<summary type="html">&lt;p&gt;Albromgon: Otra opción para la función esConsecuencia&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang = &amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- SintaxisSemanticaProp.hs&lt;br /&gt;
-- Lógica proposicional: Sintaxis y semántica&lt;br /&gt;
-- José A. Alonso Jiménez &amp;lt;jalonso@us.es&amp;gt;&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
module SintaxisSemantica where&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Librerías auxiliares                                               --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
import Data.List &lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Gramática de fórmulas prosicionales                                --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 1: Definir los siguientes tipos de datos:&lt;br /&gt;
-- * SímboloProposicional para representar los símbolos de proposiciones&lt;br /&gt;
-- * Prop para representar las fórmulas proposicionales usando los&lt;br /&gt;
--   constructores Atom, Neg, Conj, Disj, Impl y Equi para las fórmulas&lt;br /&gt;
--   atómicas, negaciones, conjunciones, implicaciones y equivalencias,&lt;br /&gt;
--   respectivamente.  &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
type SimboloProposicional = String&lt;br /&gt;
 &lt;br /&gt;
data Prop = Atom SimboloProposicional&lt;br /&gt;
          | Neg Prop &lt;br /&gt;
          | Conj Prop Prop &lt;br /&gt;
          | Disj Prop Prop &lt;br /&gt;
          | Impl Prop Prop &lt;br /&gt;
          | Equi Prop Prop &lt;br /&gt;
          deriving (Eq,Ord)&lt;br /&gt;
 &lt;br /&gt;
instance Show Prop where&lt;br /&gt;
    show (Atom p)   = p&lt;br /&gt;
    show (Neg p)    = &amp;quot;no &amp;quot; ++ show p&lt;br /&gt;
    show (Conj p q) = &amp;quot;(&amp;quot; ++ show p ++ &amp;quot; /\\ &amp;quot; ++ show q ++ &amp;quot;)&amp;quot;&lt;br /&gt;
    show (Disj p q) = &amp;quot;(&amp;quot; ++ show p ++ &amp;quot; \\/ &amp;quot; ++ show q ++ &amp;quot;)&amp;quot;&lt;br /&gt;
    show (Impl p q) = &amp;quot;(&amp;quot; ++ show p ++ &amp;quot; --&amp;gt; &amp;quot; ++ show q ++ &amp;quot;)&amp;quot;&lt;br /&gt;
    show (Equi p q) = &amp;quot;(&amp;quot; ++ show p ++ &amp;quot; &amp;lt;--&amp;gt; &amp;quot; ++ show q ++ &amp;quot;)&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 2: Definir las siguientes fórmulas proposicionales&lt;br /&gt;
-- atómicas: p, p1, p2, q, r, s, t y u.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
p, p1, p2, q, r, s, t, u :: Prop&lt;br /&gt;
p  = Atom &amp;quot;p&amp;quot;&lt;br /&gt;
p1 = Atom &amp;quot;p1&amp;quot;&lt;br /&gt;
p2 = Atom &amp;quot;p2&amp;quot;&lt;br /&gt;
q  = Atom &amp;quot;q&amp;quot;&lt;br /&gt;
r  = Atom &amp;quot;r&amp;quot;&lt;br /&gt;
s  = Atom &amp;quot;s&amp;quot;&lt;br /&gt;
t  = Atom &amp;quot;t&amp;quot;&lt;br /&gt;
u  = Atom &amp;quot;u&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 3: Definir la función&lt;br /&gt;
--    no :: Prop -&amp;gt; Prop&lt;br /&gt;
-- tal que (no f) es la negación de f.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
no :: Prop -&amp;gt; Prop&lt;br /&gt;
no = Neg&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4: Definir los siguientes operadores&lt;br /&gt;
--    (/\), (\/), (--&amp;gt;), (&amp;lt;--&amp;gt;) :: Prop -&amp;gt; Prop -&amp;gt; Prop&lt;br /&gt;
-- tales que&lt;br /&gt;
--    f /\ g      es la conjunción de f y g&lt;br /&gt;
--    f \/ g      es la disyunción de f y g&lt;br /&gt;
--    f --&amp;gt; g     es la implicación de f a g&lt;br /&gt;
--    f &amp;lt;--&amp;gt; g    es la equivalencia entre f y g&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
infixr 5 \/&lt;br /&gt;
infixr 4 /\&lt;br /&gt;
infixr 3 --&amp;gt;&lt;br /&gt;
infixr 2 &amp;lt;--&amp;gt;&lt;br /&gt;
(/\), (\/), (--&amp;gt;), (&amp;lt;--&amp;gt;) :: Prop -&amp;gt; Prop -&amp;gt; Prop&lt;br /&gt;
(/\)   = Conj&lt;br /&gt;
(\/)   = Disj&lt;br /&gt;
(--&amp;gt;)  = Impl&lt;br /&gt;
(&amp;lt;--&amp;gt;) = Equi&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Símbolos proposicionales de una fórmula                            --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 5: Definir la función&lt;br /&gt;
--    símbolosPropFórm :: Prop -&amp;gt; [Prop]&lt;br /&gt;
-- tal que (símbolosPropFórm f) es el conjunto formado por todos los&lt;br /&gt;
-- símbolos proposicionales que aparecen en f. Por ejemplo,&lt;br /&gt;
--    símbolosPropFórm (p /\ q --&amp;gt; p)  ==&amp;gt; [p,q]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
simbolosPropForm :: Prop -&amp;gt; [Prop]&lt;br /&gt;
simbolosPropForm (Atom f) = [(Atom f)]&lt;br /&gt;
simbolosPropForm (Neg f) = simbolosPropForm f&lt;br /&gt;
simbolosPropForm (Conj f g) = union (simbolosPropForm f) (simbolosPropForm g)&lt;br /&gt;
simbolosPropForm (Disj f g) = union (simbolosPropForm f) (simbolosPropForm g) &lt;br /&gt;
simbolosPropForm (Impl f g) = union (simbolosPropForm f) (simbolosPropForm g)&lt;br /&gt;
simbolosPropForm (Equi f g) = union (simbolosPropForm f) (simbolosPropForm g)&lt;br /&gt;
&lt;br /&gt;
--------------------------TIENE UN FALLO, pues devuelve una lista con simbolos repetidos... una posible solución:&lt;br /&gt;
--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
eliminaRepetidos :: [Prop] -&amp;gt; [Prop]&lt;br /&gt;
eliminaRepetidos [(Atom x)] = [(Atom x)]&lt;br /&gt;
eliminaRepetidos xs = if (head xs) `elem`&lt;br /&gt;
                                           (tail xs) then&lt;br /&gt;
                                               eliminaRepetidos (tail&lt;br /&gt;
                                                                 xs)&lt;br /&gt;
else [head xs] ++ eliminaRepetidos (tail xs)                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
simbolosPropForm :: Prop -&amp;gt; [Prop]&lt;br /&gt;
simbolosPropForm f = reverse (eliminaRepetidos (simbolosPropFormAUX f))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
simbolosPropFormAUX (Atom f) = [(Atom f)]&lt;br /&gt;
simbolosPropFormAUX (Neg f) = simbolosPropFormAUX f&lt;br /&gt;
simbolosPropFormAUX (Conj f g)= (simbolosPropFormAUX f) ++ (simbolosPropFormAUX g)&lt;br /&gt;
simbolosPropFormAUX (Disj f g)= (simbolosPropFormAUX f) ++ (simbolosPropFormAUX g)&lt;br /&gt;
simbolosPropFormAUX (Impl f g)= (simbolosPropFormAUX f) ++ (simbolosPropFormAUX g)&lt;br /&gt;
simbolosPropFormAUX (Equi f g)= (simbolosPropFormAUX f) ++ (simbolosPropFormAUX g)&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
-- nub xs : elimina los elementos repetidos de la lista xs.&lt;br /&gt;
&lt;br /&gt;
simbolosPropForm1 :: Prop -&amp;gt; [Prop]&lt;br /&gt;
simbolosPropForm1 (Atom f) = [(Atom f)]&lt;br /&gt;
simbolosPropForm1 (Neg f) = nub (simbolosPropForm f)&lt;br /&gt;
simbolosPropForm1 (Conj f g) = nub (simbolosPropForm f ++ simbolosPropForm g)&lt;br /&gt;
simbolosPropForm1 (Disj f g) = nub (simbolosPropForm f ++ simbolosPropForm g)&lt;br /&gt;
simbolosPropForm1 (Impl f g) = nub (simbolosPropForm f ++ simbolosPropForm g)&lt;br /&gt;
simbolosPropForm1 (Equi f g) = nub (simbolosPropForm f ++ simbolosPropForm g)   &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Interpretaciones                                                   --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 6: Definir el tipo de datos Interpretación para&lt;br /&gt;
-- representar las interpretaciones como listas de fórmulas atómicas.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
type Interpretacion = [Prop]&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Significado de una fórmula en una interpretación                   --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 7: Definir la función&lt;br /&gt;
--    significado :: Prop -&amp;gt; Interpretación -&amp;gt; Bool&lt;br /&gt;
-- tal que (significado f i) es el significado de f en i. Por ejemplo,&lt;br /&gt;
--    significado ((p \/ q) /\ ((no q) \/ r)) [r]    ==&amp;gt;  False&lt;br /&gt;
--    significado ((p \/ q) /\ ((no q) \/ r)) [p,r]  ==&amp;gt;  True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
significado :: Prop -&amp;gt; Interpretacion -&amp;gt; Bool&lt;br /&gt;
significado (Atom f) i = (elem (Atom f) i)&lt;br /&gt;
significado (Neg f) i = not (significado f i)&lt;br /&gt;
significado (Conj f g) i = (significado f i)&amp;amp;&amp;amp;(significado g i)&lt;br /&gt;
significado (Disj f g) i = (significado f i)||(significado g i)&lt;br /&gt;
significado (Equi f g) i = (significado f i)==(significado g i)&lt;br /&gt;
significado (Impl f g) i &lt;br /&gt;
                   |((significado f i)==True)&amp;amp;&amp;amp;((significado g i))==False=False&lt;br /&gt;
                   |otherwise = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{-Otra opción:&lt;br /&gt;
esAtomica :: Prop -&amp;gt; Bool&lt;br /&gt;
esAtomica (Atom _) = True&lt;br /&gt;
esAtomica f = False&lt;br /&gt;
significado f y | esAtomica f = elem f y&lt;br /&gt;
significado (Neg x) xs = not (significado x xs)&lt;br /&gt;
significado (Disj x y) xs = not (all (==False) [significado  x xs,&lt;br /&gt;
                                                             significado&lt;br /&gt;
                                                             y xs])&lt;br /&gt;
significado (Conj x y) xs = all(==True) [significado x xs, significado y xs]&lt;br /&gt;
significado (Impl x y) xs |significado x xs == True &amp;amp;&amp;amp; significado y xs&lt;br /&gt;
                            == False = False&lt;br /&gt;
                          |otherwise = True&lt;br /&gt;
significado (Equi x y) xs = significado x xs == significado y xs&lt;br /&gt;
-}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--otra forma mas rapida es:&lt;br /&gt;
significado2 :: Prop -&amp;gt; Interpretacion -&amp;gt; Bool&lt;br /&gt;
significado2 (Atom p) xs = elem (Atom p) xs &lt;br /&gt;
significado2 (Neg p) xs = not (significado2 p xs ) &lt;br /&gt;
significado2 (Conj p q) xs = (significado2 p xs) &amp;amp;&amp;amp; (significado2 q xs)&lt;br /&gt;
significado2 (Disj p q) xs = (significado2 p xs) ||(significado2 q xs) &lt;br /&gt;
significado2 (Impl p q) xs |(significado2 p xs) = (significado2 q xs)&lt;br /&gt;
                          |otherwise = True  &lt;br /&gt;
significado2 (Equi p q) xs = (significado2 p xs) == (significado2 q xs) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Interpretaciones de una fórmula                                    --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 8: Definir la función&lt;br /&gt;
--    subconjuntos :: [a] -&amp;gt; [[a]]&lt;br /&gt;
-- tal que (subconjuntos x) es la lista de los subconjuntos de x. Por&lt;br /&gt;
-- ejmplo, &lt;br /&gt;
--    subconjuntos &amp;quot;abc&amp;quot;  ==&amp;gt;  [&amp;quot;abc&amp;quot;,&amp;quot;ab&amp;quot;,&amp;quot;ac&amp;quot;,&amp;quot;a&amp;quot;,&amp;quot;bc&amp;quot;,&amp;quot;b&amp;quot;,&amp;quot;c&amp;quot;,&amp;quot;&amp;quot;]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
subconjuntos :: [a] -&amp;gt; [[a]]&lt;br /&gt;
subconjuntos [] = [[]]&lt;br /&gt;
subconjuntos (x:xs) = (map (x:) (subconjuntos xs))++(subconjuntos xs)&lt;br /&gt;
&lt;br /&gt;
--otra manera:&lt;br /&gt;
subconjuntos1 :: [a] -&amp;gt; [[a]]&lt;br /&gt;
subconjuntos1 [] = [[]]&lt;br /&gt;
subconjuntos1 (x:xs)= [x:ys|ys&amp;lt;- subconjuntos1 xs] ++ subconjuntos1 xs&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 9: Definir la función&lt;br /&gt;
--    interpretacionesForm :: Prop -&amp;gt; [Interpretación]&lt;br /&gt;
-- tal que (interpretacionesForm f) es la lista de todas las&lt;br /&gt;
-- interpretaciones de f. Por ejemplo, &lt;br /&gt;
--    interpretacionesForm (p /\ q --&amp;gt; p)  ==&amp;gt;  [[p,q],[p],[q],[]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
interpretacionesForm :: Prop -&amp;gt; [Interpretacion]&lt;br /&gt;
interpretacionesForm f = subconjuntos (simbolosPropForm f)&lt;br /&gt;
&lt;br /&gt;
{- Otra opción:&lt;br /&gt;
interpretacionesForm = subconjuntos.simbolosPropForm&lt;br /&gt;
-}&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Modelos de fórmulas                                                --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 10: Definir la función&lt;br /&gt;
--    esModeloFormula :: Interpretacion -&amp;gt; Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (esModeloFormula i f) se verifica si i es un modelo de f. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    esModeloFormula [r]   ((p \/ q) /\ ((no q) \/ r))    ==&amp;gt;  False&lt;br /&gt;
--    esModeloFormula [p,r] ((p \/ q) /\ ((no q) \/ r))    ==&amp;gt;  True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
esModeloFormula :: Interpretacion -&amp;gt; Prop -&amp;gt; Bool&lt;br /&gt;
esModeloFormula i f = significado f i&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 11: Definir la función&lt;br /&gt;
--    modelosFormula :: Prop -&amp;gt; [Interpretacion]&lt;br /&gt;
-- tal que (modelosFormula f) es la lista de todas las interpretaciones&lt;br /&gt;
-- de f que son modelo de F. Por ejemplo,&lt;br /&gt;
--    modelosFormula ((p \/ q) /\ ((no q) \/ r)) &lt;br /&gt;
--    ==&amp;gt; [[p,q,r],[p,r],[p],[q,r]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
modelosFormula :: Prop -&amp;gt; [Interpretacion]&lt;br /&gt;
modelosFormula f = [i|i &amp;lt;-(interpretacionesForm f), esModeloFormula i f]&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Fórmulas válidas, satisfacibles e insatisfacibles                  --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 12: Definir la función&lt;br /&gt;
--    esValida :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (esValida f) se verifica si f es válida. Por ejemplo,&lt;br /&gt;
--    esValida (p --&amp;gt; p)                 ==&amp;gt;  True&lt;br /&gt;
--    esValida (p --&amp;gt; q)                 ==&amp;gt;  False&lt;br /&gt;
--    esValida ((p --&amp;gt; q) \/ (q --&amp;gt; p))  ==&amp;gt;  True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
esValida :: Prop -&amp;gt; Bool&lt;br /&gt;
esValida f = null((interpretacionesForm f)\\( modelosFormula f))&lt;br /&gt;
&lt;br /&gt;
{- Otra opción:&lt;br /&gt;
esValida f = length(modelosFormula f)==length(interpretacionesForm f)&lt;br /&gt;
-}&lt;br /&gt;
&lt;br /&gt;
--mas corta que esta anterior tenemos :&lt;br /&gt;
esValida1 :: Prop -&amp;gt; Bool&lt;br /&gt;
esValida1 f = modelosFormula f == interpretacionesForm f &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13: Definir la función&lt;br /&gt;
--    esInsatisfacible :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (esInsatisfacible f) se verifica si f es insatisfacible. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    esInsatisfacible (p /\ (no p))             ==&amp;gt;  True&lt;br /&gt;
--    esInsatisfacible ((p --&amp;gt; q) /\ (q --&amp;gt; r))  ==&amp;gt;  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
esInsatisfacible :: Prop -&amp;gt; Bool&lt;br /&gt;
esInsatisfacible f = null (modelosFormula f)&lt;br /&gt;
&lt;br /&gt;
{- Otra opción:&lt;br /&gt;
esInsatisfacible = null. modelosFormula&lt;br /&gt;
-}&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 14: Definir la función&lt;br /&gt;
--    esSatisfacible :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (esSatisfacible f) se verifica si f es satisfacible. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    esSatisfacible (p /\ (no p))             ==&amp;gt;  False&lt;br /&gt;
--    esSatisfacible ((p --&amp;gt; q) /\ (q --&amp;gt; r))  ==&amp;gt;  True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
esSatisfacible :: Prop -&amp;gt; Bool&lt;br /&gt;
esSatisfacible f = not( null (modelosFormula f))&lt;br /&gt;
&lt;br /&gt;
{- Otra opción:&lt;br /&gt;
esSatisfacible  = not.esInsatisfacible &lt;br /&gt;
-}&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Símbolos proposicionales de un conjunto de fórmulas                --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 15: Definir la función&lt;br /&gt;
--    unionGeneral :: Eq a =&amp;gt; [[a]] -&amp;gt; [a]&lt;br /&gt;
-- tal que (unionGeneral x) es la unión de los conjuntos de la lista de&lt;br /&gt;
-- conjuntos x. Por ejemplo,&lt;br /&gt;
--    unionGeneral []                 ==&amp;gt;  []&lt;br /&gt;
--    unionGeneral [[1]]              ==&amp;gt;  [1]&lt;br /&gt;
--    unionGeneral [[1],[1,2],[2,3]]  ==&amp;gt;  [1,2,3]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
unionGeneral :: Eq a =&amp;gt; [[a]] -&amp;gt; [a]&lt;br /&gt;
unionGeneral [] = []&lt;br /&gt;
unionGeneral (xs:xss) = union xs (unionGeneral xss) &lt;br /&gt;
&lt;br /&gt;
-- Otra opción&lt;br /&gt;
unionG :: Eq a =&amp;gt; [[a]] -&amp;gt; [a]&lt;br /&gt;
unionG = nub . concat&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 16: Definir la función&lt;br /&gt;
--    simbolosPropConj :: [Prop] -&amp;gt; [Prop]&lt;br /&gt;
-- tal que (simbolosPropConj s) es el conjunto de los símbolos&lt;br /&gt;
-- proposiciones de s. Por ejemplo,&lt;br /&gt;
--    simbolosPropConj [p /\ q --&amp;gt; r, p --&amp;gt; s]  ==&amp;gt;  [p,q,r,s]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
simbolosPropConj :: [Prop] -&amp;gt; [Prop]&lt;br /&gt;
simbolosPropConj s = unionGeneral [simbolosPropForm f|f&amp;lt;-s]&lt;br /&gt;
&lt;br /&gt;
{- Otra Opción:&lt;br /&gt;
simbolosPropConj =nub.concat.map(simbolosPropForm) &lt;br /&gt;
-}&lt;br /&gt;
{- Otra forma combinando las anteriores:&lt;br /&gt;
simbolosPropConj s = unionGeneral (map simbolosPropForm s)&lt;br /&gt;
-}&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Interpretaciones de un conjunto de fórmulas                        --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 17: Definir la función&lt;br /&gt;
--    interpretacionesConjunto :: [Prop] -&amp;gt; [Interpretacion]&lt;br /&gt;
-- tal que (interpretacionesConjunto s) es la lista de las&lt;br /&gt;
-- interpretaciones de s. Por ejemplo,&lt;br /&gt;
--    interpretacionesConjunto [p --&amp;gt; q, q --&amp;gt; r]&lt;br /&gt;
--    ==&amp;gt; [[p,q,r],[p,q],[p,r],[p],[q,r],[q],[r],[]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
interpretacionesConjunto :: [Prop] -&amp;gt; [Interpretacion]&lt;br /&gt;
interpretacionesConjunto s = subconjuntos.simbolosPropConj&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Modelos de conjuntos de fórmulas                                   --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 18: Definir la función&lt;br /&gt;
--    esModeloConjunto :: Interpretacion -&amp;gt; [Prop] -&amp;gt; Bool&lt;br /&gt;
-- tal que (esModeloConjunto i s) se verifica si i es modelo de s. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    esModeloConjunto [p,r] [(p \/ q) /\ ((no q) \/ r), q --&amp;gt; r]&lt;br /&gt;
--    ==&amp;gt; True&lt;br /&gt;
--    esModeloConjunto [p,r] [(p \/ q) /\ ((no q) \/ r), r --&amp;gt; q]&lt;br /&gt;
--    ==&amp;gt; False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
esModeloConjunto :: Interpretacion -&amp;gt; [Prop] -&amp;gt; Bool&lt;br /&gt;
esModeloConjunto i s =  and [esModeloFormula i f|f&amp;lt;-s]&lt;br /&gt;
&lt;br /&gt;
{- Otra forma (usando map):&lt;br /&gt;
&lt;br /&gt;
esModeloConjunto i s = and(map f s)&lt;br /&gt;
    where f p = esModeloFormula i p&lt;br /&gt;
&lt;br /&gt;
-}&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 19: Definir la función&lt;br /&gt;
--    modelosConjunto :: [Prop] -&amp;gt; [Interpretacion]&lt;br /&gt;
-- tal que (modelosConjunto s) es la lista de modelos del conjunto&lt;br /&gt;
-- s. Por ejemplo,&lt;br /&gt;
--    modelosConjunto [(p \/ q) /\ ((no q) \/ r), q --&amp;gt; r]&lt;br /&gt;
--    ==&amp;gt; [[p,q,r],[p,r],[p],[q,r]]&lt;br /&gt;
--    modelosConjunto [(p \/ q) /\ ((no q) \/ r), r --&amp;gt; q]&lt;br /&gt;
--    ==&amp;gt; [[p,q,r],[p],[q,r]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
modelosConjunto :: [Prop] -&amp;gt; [Interpretacion]&lt;br /&gt;
modelosConjunto s = [i|i&amp;lt;-interpretacionesConjunto s, esModeloConjunto i s]&lt;br /&gt;
&lt;br /&gt;
{- Otra forma (usando filter):&lt;br /&gt;
&lt;br /&gt;
modelosConjunto s = filter p (interpretacionesConjunto s)&lt;br /&gt;
    where p i = esModeloConjunto i s&lt;br /&gt;
&lt;br /&gt;
-}&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Conjuntos consistentes e inconsistentes de fórmulas                --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 20: Definir la función&lt;br /&gt;
--    esConsistente :: [Prop] -&amp;gt; Bool&lt;br /&gt;
-- tal que (esConsistente s) se verifica si s es consistente. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    esConsistente [(p \/ q) /\ ((no q) \/ r), p --&amp;gt; r]        &lt;br /&gt;
--    ==&amp;gt; True&lt;br /&gt;
--    esConsistente [(p \/ q) /\ ((no q) \/ r), p --&amp;gt; r, no r]  &lt;br /&gt;
--    ==&amp;gt; False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
esConsistente :: [Prop] -&amp;gt; Bool&lt;br /&gt;
esConsistente s = not.null.modelosConjunto&lt;br /&gt;
&lt;br /&gt;
--otra seria:&lt;br /&gt;
esConsistente1 :: [Prop] -&amp;gt; Bool&lt;br /&gt;
esConsistente1 s = modelosConjunto s /= []&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 21: Definir la función&lt;br /&gt;
--    esInconsistente :: [Prop] -&amp;gt; Bool&lt;br /&gt;
-- tal que (esInconsistente s) se verifica si s es inconsistente. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    esInconsistente [(p \/ q) /\ ((no q) \/ r), p --&amp;gt; r]        &lt;br /&gt;
--    ==&amp;gt; False&lt;br /&gt;
--    esInconsistente [(p \/ q) /\ ((no q) \/ r), p --&amp;gt; r, no r]  &lt;br /&gt;
--    ==&amp;gt; True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
esInconsistente :: [Prop] -&amp;gt; Bool&lt;br /&gt;
esInconsistente s = not.esConsistente&lt;br /&gt;
-- usando el comando null tambien lo tendriamos:&lt;br /&gt;
esInconsistente1 :: [Prop] -&amp;gt; Bool&lt;br /&gt;
esInconsistente1 s = null (modelosConjunto s)&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Consecuencia lógica                                                --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 22: Definir la función&lt;br /&gt;
--    esConsecuencia :: [Prop] -&amp;gt; Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (esConsecuencia s f) se verifica si f es consecuencia de&lt;br /&gt;
-- s. Por ejemplo,&lt;br /&gt;
--    esConsecuencia [p --&amp;gt; q, q --&amp;gt; r] (p --&amp;gt; r)  ==&amp;gt;  True&lt;br /&gt;
--    esConsecuencia [p] (p /\ q)                  ==&amp;gt;  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
esConsecuencia :: [Prop] -&amp;gt; Prop -&amp;gt; Bool&lt;br /&gt;
esConsecuencia s f = and[esModeloFormula i f|i&amp;lt;- modelosConjunto s]&lt;br /&gt;
&lt;br /&gt;
{- Otra forma (usando map):&lt;br /&gt;
&lt;br /&gt;
esConsecuencia s f = and (map fun (modelosConjunto s))&lt;br /&gt;
    where fun i = esModeloFormula i f &lt;br /&gt;
&lt;br /&gt;
-}&lt;br /&gt;
-- Una forma legible&lt;br /&gt;
esConsecuencia2 :: [Prop] -&amp;gt; Prop -&amp;gt; Bool&lt;br /&gt;
esConsecuencia2 s f = all (`esModeloFormula` f) (modelosConjunto s)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Albromgon</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_2a&amp;diff=234</id>
		<title>Relación 2a</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_2a&amp;diff=234"/>
		<updated>2016-06-16T18:05:09Z</updated>

		<summary type="html">&lt;p&gt;Albromgon: Función unionGeneral usando composición&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang = &amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-- SintaxisSemanticaProp.hs&lt;br /&gt;
-- Lógica proposicional: Sintaxis y semántica&lt;br /&gt;
-- José A. Alonso Jiménez &amp;lt;jalonso@us.es&amp;gt;&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
module SintaxisSemantica where&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Librerías auxiliares                                               --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
import Data.List &lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Gramática de fórmulas prosicionales                                --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 1: Definir los siguientes tipos de datos:&lt;br /&gt;
-- * SímboloProposicional para representar los símbolos de proposiciones&lt;br /&gt;
-- * Prop para representar las fórmulas proposicionales usando los&lt;br /&gt;
--   constructores Atom, Neg, Conj, Disj, Impl y Equi para las fórmulas&lt;br /&gt;
--   atómicas, negaciones, conjunciones, implicaciones y equivalencias,&lt;br /&gt;
--   respectivamente.  &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
type SimboloProposicional = String&lt;br /&gt;
 &lt;br /&gt;
data Prop = Atom SimboloProposicional&lt;br /&gt;
          | Neg Prop &lt;br /&gt;
          | Conj Prop Prop &lt;br /&gt;
          | Disj Prop Prop &lt;br /&gt;
          | Impl Prop Prop &lt;br /&gt;
          | Equi Prop Prop &lt;br /&gt;
          deriving (Eq,Ord)&lt;br /&gt;
 &lt;br /&gt;
instance Show Prop where&lt;br /&gt;
    show (Atom p)   = p&lt;br /&gt;
    show (Neg p)    = &amp;quot;no &amp;quot; ++ show p&lt;br /&gt;
    show (Conj p q) = &amp;quot;(&amp;quot; ++ show p ++ &amp;quot; /\\ &amp;quot; ++ show q ++ &amp;quot;)&amp;quot;&lt;br /&gt;
    show (Disj p q) = &amp;quot;(&amp;quot; ++ show p ++ &amp;quot; \\/ &amp;quot; ++ show q ++ &amp;quot;)&amp;quot;&lt;br /&gt;
    show (Impl p q) = &amp;quot;(&amp;quot; ++ show p ++ &amp;quot; --&amp;gt; &amp;quot; ++ show q ++ &amp;quot;)&amp;quot;&lt;br /&gt;
    show (Equi p q) = &amp;quot;(&amp;quot; ++ show p ++ &amp;quot; &amp;lt;--&amp;gt; &amp;quot; ++ show q ++ &amp;quot;)&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 2: Definir las siguientes fórmulas proposicionales&lt;br /&gt;
-- atómicas: p, p1, p2, q, r, s, t y u.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
p, p1, p2, q, r, s, t, u :: Prop&lt;br /&gt;
p  = Atom &amp;quot;p&amp;quot;&lt;br /&gt;
p1 = Atom &amp;quot;p1&amp;quot;&lt;br /&gt;
p2 = Atom &amp;quot;p2&amp;quot;&lt;br /&gt;
q  = Atom &amp;quot;q&amp;quot;&lt;br /&gt;
r  = Atom &amp;quot;r&amp;quot;&lt;br /&gt;
s  = Atom &amp;quot;s&amp;quot;&lt;br /&gt;
t  = Atom &amp;quot;t&amp;quot;&lt;br /&gt;
u  = Atom &amp;quot;u&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 3: Definir la función&lt;br /&gt;
--    no :: Prop -&amp;gt; Prop&lt;br /&gt;
-- tal que (no f) es la negación de f.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
no :: Prop -&amp;gt; Prop&lt;br /&gt;
no = Neg&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4: Definir los siguientes operadores&lt;br /&gt;
--    (/\), (\/), (--&amp;gt;), (&amp;lt;--&amp;gt;) :: Prop -&amp;gt; Prop -&amp;gt; Prop&lt;br /&gt;
-- tales que&lt;br /&gt;
--    f /\ g      es la conjunción de f y g&lt;br /&gt;
--    f \/ g      es la disyunción de f y g&lt;br /&gt;
--    f --&amp;gt; g     es la implicación de f a g&lt;br /&gt;
--    f &amp;lt;--&amp;gt; g    es la equivalencia entre f y g&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
infixr 5 \/&lt;br /&gt;
infixr 4 /\&lt;br /&gt;
infixr 3 --&amp;gt;&lt;br /&gt;
infixr 2 &amp;lt;--&amp;gt;&lt;br /&gt;
(/\), (\/), (--&amp;gt;), (&amp;lt;--&amp;gt;) :: Prop -&amp;gt; Prop -&amp;gt; Prop&lt;br /&gt;
(/\)   = Conj&lt;br /&gt;
(\/)   = Disj&lt;br /&gt;
(--&amp;gt;)  = Impl&lt;br /&gt;
(&amp;lt;--&amp;gt;) = Equi&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Símbolos proposicionales de una fórmula                            --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 5: Definir la función&lt;br /&gt;
--    símbolosPropFórm :: Prop -&amp;gt; [Prop]&lt;br /&gt;
-- tal que (símbolosPropFórm f) es el conjunto formado por todos los&lt;br /&gt;
-- símbolos proposicionales que aparecen en f. Por ejemplo,&lt;br /&gt;
--    símbolosPropFórm (p /\ q --&amp;gt; p)  ==&amp;gt; [p,q]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
simbolosPropForm :: Prop -&amp;gt; [Prop]&lt;br /&gt;
simbolosPropForm (Atom f) = [(Atom f)]&lt;br /&gt;
simbolosPropForm (Neg f) = simbolosPropForm f&lt;br /&gt;
simbolosPropForm (Conj f g) = union (simbolosPropForm f) (simbolosPropForm g)&lt;br /&gt;
simbolosPropForm (Disj f g) = union (simbolosPropForm f) (simbolosPropForm g) &lt;br /&gt;
simbolosPropForm (Impl f g) = union (simbolosPropForm f) (simbolosPropForm g)&lt;br /&gt;
simbolosPropForm (Equi f g) = union (simbolosPropForm f) (simbolosPropForm g)&lt;br /&gt;
&lt;br /&gt;
--------------------------TIENE UN FALLO, pues devuelve una lista con simbolos repetidos... una posible solución:&lt;br /&gt;
--&amp;gt; &lt;br /&gt;
&lt;br /&gt;
eliminaRepetidos :: [Prop] -&amp;gt; [Prop]&lt;br /&gt;
eliminaRepetidos [(Atom x)] = [(Atom x)]&lt;br /&gt;
eliminaRepetidos xs = if (head xs) `elem`&lt;br /&gt;
                                           (tail xs) then&lt;br /&gt;
                                               eliminaRepetidos (tail&lt;br /&gt;
                                                                 xs)&lt;br /&gt;
else [head xs] ++ eliminaRepetidos (tail xs)                  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
simbolosPropForm :: Prop -&amp;gt; [Prop]&lt;br /&gt;
simbolosPropForm f = reverse (eliminaRepetidos (simbolosPropFormAUX f))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
simbolosPropFormAUX (Atom f) = [(Atom f)]&lt;br /&gt;
simbolosPropFormAUX (Neg f) = simbolosPropFormAUX f&lt;br /&gt;
simbolosPropFormAUX (Conj f g)= (simbolosPropFormAUX f) ++ (simbolosPropFormAUX g)&lt;br /&gt;
simbolosPropFormAUX (Disj f g)= (simbolosPropFormAUX f) ++ (simbolosPropFormAUX g)&lt;br /&gt;
simbolosPropFormAUX (Impl f g)= (simbolosPropFormAUX f) ++ (simbolosPropFormAUX g)&lt;br /&gt;
simbolosPropFormAUX (Equi f g)= (simbolosPropFormAUX f) ++ (simbolosPropFormAUX g)&lt;br /&gt;
&lt;br /&gt;
-------------------------------------------------&lt;br /&gt;
-- nub xs : elimina los elementos repetidos de la lista xs.&lt;br /&gt;
&lt;br /&gt;
simbolosPropForm1 :: Prop -&amp;gt; [Prop]&lt;br /&gt;
simbolosPropForm1 (Atom f) = [(Atom f)]&lt;br /&gt;
simbolosPropForm1 (Neg f) = nub (simbolosPropForm f)&lt;br /&gt;
simbolosPropForm1 (Conj f g) = nub (simbolosPropForm f ++ simbolosPropForm g)&lt;br /&gt;
simbolosPropForm1 (Disj f g) = nub (simbolosPropForm f ++ simbolosPropForm g)&lt;br /&gt;
simbolosPropForm1 (Impl f g) = nub (simbolosPropForm f ++ simbolosPropForm g)&lt;br /&gt;
simbolosPropForm1 (Equi f g) = nub (simbolosPropForm f ++ simbolosPropForm g)   &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Interpretaciones                                                   --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 6: Definir el tipo de datos Interpretación para&lt;br /&gt;
-- representar las interpretaciones como listas de fórmulas atómicas.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
type Interpretacion = [Prop]&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Significado de una fórmula en una interpretación                   --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 7: Definir la función&lt;br /&gt;
--    significado :: Prop -&amp;gt; Interpretación -&amp;gt; Bool&lt;br /&gt;
-- tal que (significado f i) es el significado de f en i. Por ejemplo,&lt;br /&gt;
--    significado ((p \/ q) /\ ((no q) \/ r)) [r]    ==&amp;gt;  False&lt;br /&gt;
--    significado ((p \/ q) /\ ((no q) \/ r)) [p,r]  ==&amp;gt;  True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
significado :: Prop -&amp;gt; Interpretacion -&amp;gt; Bool&lt;br /&gt;
significado (Atom f) i = (elem (Atom f) i)&lt;br /&gt;
significado (Neg f) i = not (significado f i)&lt;br /&gt;
significado (Conj f g) i = (significado f i)&amp;amp;&amp;amp;(significado g i)&lt;br /&gt;
significado (Disj f g) i = (significado f i)||(significado g i)&lt;br /&gt;
significado (Equi f g) i = (significado f i)==(significado g i)&lt;br /&gt;
significado (Impl f g) i &lt;br /&gt;
                   |((significado f i)==True)&amp;amp;&amp;amp;((significado g i))==False=False&lt;br /&gt;
                   |otherwise = True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{-Otra opción:&lt;br /&gt;
esAtomica :: Prop -&amp;gt; Bool&lt;br /&gt;
esAtomica (Atom _) = True&lt;br /&gt;
esAtomica f = False&lt;br /&gt;
significado f y | esAtomica f = elem f y&lt;br /&gt;
significado (Neg x) xs = not (significado x xs)&lt;br /&gt;
significado (Disj x y) xs = not (all (==False) [significado  x xs,&lt;br /&gt;
                                                             significado&lt;br /&gt;
                                                             y xs])&lt;br /&gt;
significado (Conj x y) xs = all(==True) [significado x xs, significado y xs]&lt;br /&gt;
significado (Impl x y) xs |significado x xs == True &amp;amp;&amp;amp; significado y xs&lt;br /&gt;
                            == False = False&lt;br /&gt;
                          |otherwise = True&lt;br /&gt;
significado (Equi x y) xs = significado x xs == significado y xs&lt;br /&gt;
-}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--otra forma mas rapida es:&lt;br /&gt;
significado2 :: Prop -&amp;gt; Interpretacion -&amp;gt; Bool&lt;br /&gt;
significado2 (Atom p) xs = elem (Atom p) xs &lt;br /&gt;
significado2 (Neg p) xs = not (significado2 p xs ) &lt;br /&gt;
significado2 (Conj p q) xs = (significado2 p xs) &amp;amp;&amp;amp; (significado2 q xs)&lt;br /&gt;
significado2 (Disj p q) xs = (significado2 p xs) ||(significado2 q xs) &lt;br /&gt;
significado2 (Impl p q) xs |(significado2 p xs) = (significado2 q xs)&lt;br /&gt;
                          |otherwise = True  &lt;br /&gt;
significado2 (Equi p q) xs = (significado2 p xs) == (significado2 q xs) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Interpretaciones de una fórmula                                    --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 8: Definir la función&lt;br /&gt;
--    subconjuntos :: [a] -&amp;gt; [[a]]&lt;br /&gt;
-- tal que (subconjuntos x) es la lista de los subconjuntos de x. Por&lt;br /&gt;
-- ejmplo, &lt;br /&gt;
--    subconjuntos &amp;quot;abc&amp;quot;  ==&amp;gt;  [&amp;quot;abc&amp;quot;,&amp;quot;ab&amp;quot;,&amp;quot;ac&amp;quot;,&amp;quot;a&amp;quot;,&amp;quot;bc&amp;quot;,&amp;quot;b&amp;quot;,&amp;quot;c&amp;quot;,&amp;quot;&amp;quot;]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
subconjuntos :: [a] -&amp;gt; [[a]]&lt;br /&gt;
subconjuntos [] = [[]]&lt;br /&gt;
subconjuntos (x:xs) = (map (x:) (subconjuntos xs))++(subconjuntos xs)&lt;br /&gt;
&lt;br /&gt;
--otra manera:&lt;br /&gt;
subconjuntos1 :: [a] -&amp;gt; [[a]]&lt;br /&gt;
subconjuntos1 [] = [[]]&lt;br /&gt;
subconjuntos1 (x:xs)= [x:ys|ys&amp;lt;- subconjuntos1 xs] ++ subconjuntos1 xs&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 9: Definir la función&lt;br /&gt;
--    interpretacionesForm :: Prop -&amp;gt; [Interpretación]&lt;br /&gt;
-- tal que (interpretacionesForm f) es la lista de todas las&lt;br /&gt;
-- interpretaciones de f. Por ejemplo, &lt;br /&gt;
--    interpretacionesForm (p /\ q --&amp;gt; p)  ==&amp;gt;  [[p,q],[p],[q],[]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
interpretacionesForm :: Prop -&amp;gt; [Interpretacion]&lt;br /&gt;
interpretacionesForm f = subconjuntos (simbolosPropForm f)&lt;br /&gt;
&lt;br /&gt;
{- Otra opción:&lt;br /&gt;
interpretacionesForm = subconjuntos.simbolosPropForm&lt;br /&gt;
-}&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Modelos de fórmulas                                                --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 10: Definir la función&lt;br /&gt;
--    esModeloFormula :: Interpretacion -&amp;gt; Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (esModeloFormula i f) se verifica si i es un modelo de f. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    esModeloFormula [r]   ((p \/ q) /\ ((no q) \/ r))    ==&amp;gt;  False&lt;br /&gt;
--    esModeloFormula [p,r] ((p \/ q) /\ ((no q) \/ r))    ==&amp;gt;  True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
esModeloFormula :: Interpretacion -&amp;gt; Prop -&amp;gt; Bool&lt;br /&gt;
esModeloFormula i f = significado f i&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 11: Definir la función&lt;br /&gt;
--    modelosFormula :: Prop -&amp;gt; [Interpretacion]&lt;br /&gt;
-- tal que (modelosFormula f) es la lista de todas las interpretaciones&lt;br /&gt;
-- de f que son modelo de F. Por ejemplo,&lt;br /&gt;
--    modelosFormula ((p \/ q) /\ ((no q) \/ r)) &lt;br /&gt;
--    ==&amp;gt; [[p,q,r],[p,r],[p],[q,r]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
modelosFormula :: Prop -&amp;gt; [Interpretacion]&lt;br /&gt;
modelosFormula f = [i|i &amp;lt;-(interpretacionesForm f), esModeloFormula i f]&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Fórmulas válidas, satisfacibles e insatisfacibles                  --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 12: Definir la función&lt;br /&gt;
--    esValida :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (esValida f) se verifica si f es válida. Por ejemplo,&lt;br /&gt;
--    esValida (p --&amp;gt; p)                 ==&amp;gt;  True&lt;br /&gt;
--    esValida (p --&amp;gt; q)                 ==&amp;gt;  False&lt;br /&gt;
--    esValida ((p --&amp;gt; q) \/ (q --&amp;gt; p))  ==&amp;gt;  True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
esValida :: Prop -&amp;gt; Bool&lt;br /&gt;
esValida f = null((interpretacionesForm f)\\( modelosFormula f))&lt;br /&gt;
&lt;br /&gt;
{- Otra opción:&lt;br /&gt;
esValida f = length(modelosFormula f)==length(interpretacionesForm f)&lt;br /&gt;
-}&lt;br /&gt;
&lt;br /&gt;
--mas corta que esta anterior tenemos :&lt;br /&gt;
esValida1 :: Prop -&amp;gt; Bool&lt;br /&gt;
esValida1 f = modelosFormula f == interpretacionesForm f &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13: Definir la función&lt;br /&gt;
--    esInsatisfacible :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (esInsatisfacible f) se verifica si f es insatisfacible. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    esInsatisfacible (p /\ (no p))             ==&amp;gt;  True&lt;br /&gt;
--    esInsatisfacible ((p --&amp;gt; q) /\ (q --&amp;gt; r))  ==&amp;gt;  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
esInsatisfacible :: Prop -&amp;gt; Bool&lt;br /&gt;
esInsatisfacible f = null (modelosFormula f)&lt;br /&gt;
&lt;br /&gt;
{- Otra opción:&lt;br /&gt;
esInsatisfacible = null. modelosFormula&lt;br /&gt;
-}&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 14: Definir la función&lt;br /&gt;
--    esSatisfacible :: Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (esSatisfacible f) se verifica si f es satisfacible. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    esSatisfacible (p /\ (no p))             ==&amp;gt;  False&lt;br /&gt;
--    esSatisfacible ((p --&amp;gt; q) /\ (q --&amp;gt; r))  ==&amp;gt;  True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
esSatisfacible :: Prop -&amp;gt; Bool&lt;br /&gt;
esSatisfacible f = not( null (modelosFormula f))&lt;br /&gt;
&lt;br /&gt;
{- Otra opción:&lt;br /&gt;
esSatisfacible  = not.esInsatisfacible &lt;br /&gt;
-}&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Símbolos proposicionales de un conjunto de fórmulas                --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 15: Definir la función&lt;br /&gt;
--    unionGeneral :: Eq a =&amp;gt; [[a]] -&amp;gt; [a]&lt;br /&gt;
-- tal que (unionGeneral x) es la unión de los conjuntos de la lista de&lt;br /&gt;
-- conjuntos x. Por ejemplo,&lt;br /&gt;
--    unionGeneral []                 ==&amp;gt;  []&lt;br /&gt;
--    unionGeneral [[1]]              ==&amp;gt;  [1]&lt;br /&gt;
--    unionGeneral [[1],[1,2],[2,3]]  ==&amp;gt;  [1,2,3]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
unionGeneral :: Eq a =&amp;gt; [[a]] -&amp;gt; [a]&lt;br /&gt;
unionGeneral [] = []&lt;br /&gt;
unionGeneral (xs:xss) = union xs (unionGeneral xss) &lt;br /&gt;
&lt;br /&gt;
-- Otra opción&lt;br /&gt;
unionG :: Eq a =&amp;gt; [[a]] -&amp;gt; [a]&lt;br /&gt;
unionG = nub . concat&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 16: Definir la función&lt;br /&gt;
--    simbolosPropConj :: [Prop] -&amp;gt; [Prop]&lt;br /&gt;
-- tal que (simbolosPropConj s) es el conjunto de los símbolos&lt;br /&gt;
-- proposiciones de s. Por ejemplo,&lt;br /&gt;
--    simbolosPropConj [p /\ q --&amp;gt; r, p --&amp;gt; s]  ==&amp;gt;  [p,q,r,s]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
simbolosPropConj :: [Prop] -&amp;gt; [Prop]&lt;br /&gt;
simbolosPropConj s = unionGeneral [simbolosPropForm f|f&amp;lt;-s]&lt;br /&gt;
&lt;br /&gt;
{- Otra Opción:&lt;br /&gt;
simbolosPropConj =nub.concat.map(simbolosPropForm) &lt;br /&gt;
-}&lt;br /&gt;
{- Otra forma combinando las anteriores:&lt;br /&gt;
simbolosPropConj s = unionGeneral (map simbolosPropForm s)&lt;br /&gt;
-}&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Interpretaciones de un conjunto de fórmulas                        --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 17: Definir la función&lt;br /&gt;
--    interpretacionesConjunto :: [Prop] -&amp;gt; [Interpretacion]&lt;br /&gt;
-- tal que (interpretacionesConjunto s) es la lista de las&lt;br /&gt;
-- interpretaciones de s. Por ejemplo,&lt;br /&gt;
--    interpretacionesConjunto [p --&amp;gt; q, q --&amp;gt; r]&lt;br /&gt;
--    ==&amp;gt; [[p,q,r],[p,q],[p,r],[p],[q,r],[q],[r],[]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
interpretacionesConjunto :: [Prop] -&amp;gt; [Interpretacion]&lt;br /&gt;
interpretacionesConjunto s = subconjuntos.simbolosPropConj&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Modelos de conjuntos de fórmulas                                   --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 18: Definir la función&lt;br /&gt;
--    esModeloConjunto :: Interpretacion -&amp;gt; [Prop] -&amp;gt; Bool&lt;br /&gt;
-- tal que (esModeloConjunto i s) se verifica si i es modelo de s. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    esModeloConjunto [p,r] [(p \/ q) /\ ((no q) \/ r), q --&amp;gt; r]&lt;br /&gt;
--    ==&amp;gt; True&lt;br /&gt;
--    esModeloConjunto [p,r] [(p \/ q) /\ ((no q) \/ r), r --&amp;gt; q]&lt;br /&gt;
--    ==&amp;gt; False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
esModeloConjunto :: Interpretacion -&amp;gt; [Prop] -&amp;gt; Bool&lt;br /&gt;
esModeloConjunto i s =  and [esModeloFormula i f|f&amp;lt;-s]&lt;br /&gt;
&lt;br /&gt;
{- Otra forma (usando map):&lt;br /&gt;
&lt;br /&gt;
esModeloConjunto i s = and(map f s)&lt;br /&gt;
    where f p = esModeloFormula i p&lt;br /&gt;
&lt;br /&gt;
-}&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 19: Definir la función&lt;br /&gt;
--    modelosConjunto :: [Prop] -&amp;gt; [Interpretacion]&lt;br /&gt;
-- tal que (modelosConjunto s) es la lista de modelos del conjunto&lt;br /&gt;
-- s. Por ejemplo,&lt;br /&gt;
--    modelosConjunto [(p \/ q) /\ ((no q) \/ r), q --&amp;gt; r]&lt;br /&gt;
--    ==&amp;gt; [[p,q,r],[p,r],[p],[q,r]]&lt;br /&gt;
--    modelosConjunto [(p \/ q) /\ ((no q) \/ r), r --&amp;gt; q]&lt;br /&gt;
--    ==&amp;gt; [[p,q,r],[p],[q,r]]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
modelosConjunto :: [Prop] -&amp;gt; [Interpretacion]&lt;br /&gt;
modelosConjunto s = [i|i&amp;lt;-interpretacionesConjunto s, esModeloConjunto i s]&lt;br /&gt;
&lt;br /&gt;
{- Otra forma (usando filter):&lt;br /&gt;
&lt;br /&gt;
modelosConjunto s = filter p (interpretacionesConjunto s)&lt;br /&gt;
    where p i = esModeloConjunto i s&lt;br /&gt;
&lt;br /&gt;
-}&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Conjuntos consistentes e inconsistentes de fórmulas                --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 20: Definir la función&lt;br /&gt;
--    esConsistente :: [Prop] -&amp;gt; Bool&lt;br /&gt;
-- tal que (esConsistente s) se verifica si s es consistente. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    esConsistente [(p \/ q) /\ ((no q) \/ r), p --&amp;gt; r]        &lt;br /&gt;
--    ==&amp;gt; True&lt;br /&gt;
--    esConsistente [(p \/ q) /\ ((no q) \/ r), p --&amp;gt; r, no r]  &lt;br /&gt;
--    ==&amp;gt; False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
esConsistente :: [Prop] -&amp;gt; Bool&lt;br /&gt;
esConsistente s = not.null.modelosConjunto&lt;br /&gt;
&lt;br /&gt;
--otra seria:&lt;br /&gt;
esConsistente1 :: [Prop] -&amp;gt; Bool&lt;br /&gt;
esConsistente1 s = modelosConjunto s /= []&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 21: Definir la función&lt;br /&gt;
--    esInconsistente :: [Prop] -&amp;gt; Bool&lt;br /&gt;
-- tal que (esInconsistente s) se verifica si s es inconsistente. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    esInconsistente [(p \/ q) /\ ((no q) \/ r), p --&amp;gt; r]        &lt;br /&gt;
--    ==&amp;gt; False&lt;br /&gt;
--    esInconsistente [(p \/ q) /\ ((no q) \/ r), p --&amp;gt; r, no r]  &lt;br /&gt;
--    ==&amp;gt; True&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
esInconsistente :: [Prop] -&amp;gt; Bool&lt;br /&gt;
esInconsistente s = not.esConsistente&lt;br /&gt;
-- usando el comando null tambien lo tendriamos:&lt;br /&gt;
esInconsistente1 :: [Prop] -&amp;gt; Bool&lt;br /&gt;
esInconsistente1 s = null (modelosConjunto s)&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Consecuencia lógica                                                --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 22: Definir la función&lt;br /&gt;
--    esConsecuencia :: [Prop] -&amp;gt; Prop -&amp;gt; Bool&lt;br /&gt;
-- tal que (esConsecuencia s f) se verifica si f es consecuencia de&lt;br /&gt;
-- s. Por ejemplo,&lt;br /&gt;
--    esConsecuencia [p --&amp;gt; q, q --&amp;gt; r] (p --&amp;gt; r)  ==&amp;gt;  True&lt;br /&gt;
--    esConsecuencia [p] (p /\ q)                  ==&amp;gt;  False&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
esConsecuencia :: [Prop] -&amp;gt; Prop -&amp;gt; Bool&lt;br /&gt;
esConsecuencia s f = and[esModeloFormula i f|i&amp;lt;- modelosConjunto s]&lt;br /&gt;
&lt;br /&gt;
{- Otra forma (usando map):&lt;br /&gt;
&lt;br /&gt;
esConsecuencia s f = and (map fun (modelosConjunto s))&lt;br /&gt;
    where fun i = esModeloFormula i f &lt;br /&gt;
&lt;br /&gt;
-}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Albromgon</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_1&amp;diff=233</id>
		<title>Relación 1</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_1&amp;diff=233"/>
		<updated>2016-06-16T10:54:38Z</updated>

		<summary type="html">&lt;p&gt;Albromgon: Alternativa a la función profundidad&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang = &amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
-- LMF 2015-16: Rel_1.hs &lt;br /&gt;
-- Introducción a la programación con Haskell.&lt;br /&gt;
-- Departamento de Ciencias de la Computación e I.A.&lt;br /&gt;
-- Universidad de Sevilla&lt;br /&gt;
-- =====================================================================&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Introducción                                                       --&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- En esta relación de ejercicios hacemos una introducción a Haskell, en&lt;br /&gt;
-- la que se recuerdan:&lt;br /&gt;
-- * las definiciones elementales de funciones,&lt;br /&gt;
-- * las definiciones de funciones por comprensión,&lt;br /&gt;
-- * las definiciones de funciones por recursión y&lt;br /&gt;
-- * los tipos de datos.&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Importación de librerías auxiliares                                  &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
import Test.QuickCheck&lt;br /&gt;
import Data.Char&lt;br /&gt;
import Control.Monad&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 1. Definir la función media3 tal que (media3 x y z) es&lt;br /&gt;
-- la media aritmética de los números x, y y z. Por ejemplo, &lt;br /&gt;
--    media3 1 3 8     ==  4.0&lt;br /&gt;
--    media3 (-1) 0 7  ==  2.0&lt;br /&gt;
--    media3 (-3) 0 3  ==  0.0&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
media3 :: Float -&amp;gt; Float -&amp;gt; Float -&amp;gt; Float&lt;br /&gt;
media3 x y z = (x+y+z)/3&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 2. Definir la función ultimaCifra tal que (ultimaCifra x)&lt;br /&gt;
-- es la última cifra del nímero x. Por ejemplo,&lt;br /&gt;
--    ultimaCifra 325  ==  5&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
ultimaCifra :: Integer -&amp;gt; Integer&lt;br /&gt;
ultimaCifra x = abs(rem x 10)&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 3. Definir la función rota tal que (rota n xs) es la lista&lt;br /&gt;
-- obtenida poniendo los n primeros elementos de xs al final de la&lt;br /&gt;
-- lista. Por ejemplo, &lt;br /&gt;
--    rota 1 [3,2,5,7]  ==  [2,5,7,3]&lt;br /&gt;
--    rota 2 [3,2,5,7]  ==  [5,7,3,2]&lt;br /&gt;
--    rota 3 [3,2,5,7]  ==  [7,3,2,5]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
rota :: Int -&amp;gt; [a] -&amp;gt; [a]&lt;br /&gt;
rota n xs | n &amp;lt; length xs = (drop n xs)++(take n xs)&lt;br /&gt;
          |otherwise = rota ( mod n (length xs)) xs &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4.1. La disyunción excluyente xor de dos fórmulas se&lt;br /&gt;
-- verifica si una es verdadera y la otra es falsa.&lt;br /&gt;
-- &lt;br /&gt;
-- Definir la función xor_1 que calcule la disyunción excluyente a&lt;br /&gt;
-- partir de la tabla de verdad. Usar 4 ecuaciones, una por cada línea&lt;br /&gt;
-- de la tabla. &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
xor_1 :: Bool -&amp;gt; Bool -&amp;gt; Bool&lt;br /&gt;
xor_1 True  True = False&lt;br /&gt;
xor_1 True  False = True&lt;br /&gt;
xor_1 False  True = True&lt;br /&gt;
xor_1 False False = False&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4.2. Definir la función xor_2 que calcule la disyunción&lt;br /&gt;
-- excluyente a partir de la tabla de verdad y patrones. Usar 2&lt;br /&gt;
-- ecuaciones, una por cada valor del primer argumento.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
xor_2 :: Bool -&amp;gt; Bool -&amp;gt; Bool&lt;br /&gt;
xor_2 True q = not q&lt;br /&gt;
xor_2 False q = q&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4.3. Definir la función xor_3 que calcule la disyunción&lt;br /&gt;
-- excluyente a partir de la disyunción (||), conjunción (&amp;amp;&amp;amp;) y negación&lt;br /&gt;
-- (not). Usar 1 ecuación.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
xor_3 :: Bool -&amp;gt; Bool -&amp;gt; Bool&lt;br /&gt;
xor_3 p q = (p &amp;amp;&amp;amp; (not q)) || ((not p) &amp;amp;&amp;amp; q)&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 4.4. Definir la función xor_4 que calcule la disyunción&lt;br /&gt;
-- excluyente a partir de desigualdad (/=). Usar 1 ecuación.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
xor_4 :: Bool -&amp;gt; Bool -&amp;gt; Bool&lt;br /&gt;
xor_4 p q = p /= q&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 5. Definir, por comprensión, la función&lt;br /&gt;
--    sumaDeCuadrados :: Integer -&amp;gt; Integer&lt;br /&gt;
-- tal que (sumaDeCuadrados n) es la suma de los cuadrados de los&lt;br /&gt;
-- primeros n números; es decir, 1^2 + 2^2 + ... + 100^2. Por ejemplo,&lt;br /&gt;
--    sumaDeCuadrados 3    ==  14&lt;br /&gt;
--    sumaDeCuadrados 100  ==  338350&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
sumaDeCuadrados :: Integer -&amp;gt; Integer&lt;br /&gt;
sumaDeCuadrados n = sum (map (^2) [1..n])&lt;br /&gt;
&lt;br /&gt;
--otra forma:&lt;br /&gt;
sumaDeCuadrados2 :: Integer -&amp;gt; Integer&lt;br /&gt;
sumaDeCuadrados2 n = sum [x^2 | x &amp;lt;- [1..n]]&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 6. Una terna (x,y,z) de enteros positivos es pitagórica si &lt;br /&gt;
-- x^2 + y^2 = z^2. Usando una lista por comprensión, definir la función&lt;br /&gt;
--    pitagoricas :: Int -&amp;gt; [(Int, Int, Int)]&lt;br /&gt;
-- tal que (pitagoricas n) es la lista de todas las ternas pitagóricas&lt;br /&gt;
-- cuyas componentes están entre 1 y n. Por ejemplo, &lt;br /&gt;
--    *Main&amp;gt; pitagoricas 10 &lt;br /&gt;
--    [(3,4,5),(4,3,5),(6,8,10),(8,6,10)]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
pitagoricas :: Int -&amp;gt; [(Int, Int, Int)]&lt;br /&gt;
pitagoricas n = [(a,b,c)|a&amp;lt;-[1..n],b&amp;lt;-[1..n], c&amp;lt;-[1..n], a^2 + b^2==c^2] &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 7. Un entero positivo es perfecto si es igual a la suma de&lt;br /&gt;
-- sus factores, excluyendo el propio número. Usando una lista por&lt;br /&gt;
-- comprensión y la función factores (del tema), definir la función &lt;br /&gt;
--    perfectos :: Int -&amp;gt; [Int]&lt;br /&gt;
-- tal que (perfectos n) es la lista de todos los números perfectos&lt;br /&gt;
-- menores que n. Por ejemplo: &lt;br /&gt;
--    *Main&amp;gt; perfectos 500&lt;br /&gt;
--    [6,28,496]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
factores :: Int -&amp;gt; [Int] &lt;br /&gt;
factores n = [x|x&amp;lt;-[1..(div n 2)], mod n x ==0]&lt;br /&gt;
perfectos :: Int -&amp;gt; [Int]&lt;br /&gt;
perfectos n = [x|x&amp;lt;-[1..n], sum (factores x)== x]&lt;br /&gt;
&lt;br /&gt;
-- Otra forma&lt;br /&gt;
factores :: Int -&amp;gt; [Int] &lt;br /&gt;
factores n = [x|x&amp;lt;-[1..n],mod n x == 0]&lt;br /&gt;
&lt;br /&gt;
perfectos :: Int -&amp;gt; [Int]&lt;br /&gt;
perfectos n = [i|i&amp;lt;-[1..(n-1)],i==(sum((factores i))-i)]&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 8.1. Definir, por comprensión, la función&lt;br /&gt;
--    cuadradosC :: [Integer] -&amp;gt; [Integer]&lt;br /&gt;
-- tal que (cuadradosC xs) es la lista de los cuadrados de xs. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    cuadradosC [1,2,3]  ==  [1,4,9]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
cuadradosC :: [Integer] -&amp;gt; [Integer]&lt;br /&gt;
cuadradosC xs= [y^2| y&amp;lt;-xs] &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 8.2. Definir, por recursión, la función&lt;br /&gt;
--    cuadradosR :: [Integer] -&amp;gt; [Integer]&lt;br /&gt;
-- tal que (cuadradosR xs) es la lista de los cuadrados de xs. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    cuadradosR [1,2,3]  ==  [1,4,9]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
cuadradosR :: [Integer] -&amp;gt; [Integer]&lt;br /&gt;
cuadradosR [] = []&lt;br /&gt;
cuadradoR (x:xs) = [x^2] ++ cuadradosR xs &lt;br /&gt;
&lt;br /&gt;
-- otra forma&lt;br /&gt;
cuadradosR :: [Integer] -&amp;gt; [Integer]&lt;br /&gt;
cuadradosR []=[]&lt;br /&gt;
cuadradosR (x:xs) = (x^2):cuadradosR xs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 9.1. Definir, por comprensión, la función&lt;br /&gt;
--    imparesC :: [Integer] -&amp;gt; [Integer]&lt;br /&gt;
-- tal que (imparesC xs) es la lista de los números impares de xs. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    imparesC [1,2,3]  ==  [1,3]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
imparesC :: [Integer] -&amp;gt; [Integer]&lt;br /&gt;
imparesC xs = [x|x&amp;lt;-xs, odd x]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 9.2. Definir, por recursión, la función&lt;br /&gt;
--    imparesR :: [Integer] -&amp;gt; [Integer]&lt;br /&gt;
-- tal que (imparesR xs) es la lista de los números impares de xs. Por&lt;br /&gt;
-- ejemplo, &lt;br /&gt;
--    imparesR [1,2,3]  ==  [1,3]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
imparesR :: [Integer] -&amp;gt; [Integer]&lt;br /&gt;
imparesR []= []&lt;br /&gt;
imparesR (x:xs) | odd x= x: (imparesR xs)&lt;br /&gt;
                | otherwise = imparesR xs&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 10. Definir, por comprensión, la función&lt;br /&gt;
--    sumaConsecutivos :: [Int] -&amp;gt; [Int]&lt;br /&gt;
-- tal que (sumaConsecutivos xs) es la suma de los pares de elementos&lt;br /&gt;
-- consecutivos de la lista xs. Por ejemplo,&lt;br /&gt;
--    sumaConsecutivos [3,1,5,2]  ==  [4,6,7]&lt;br /&gt;
--    sumaConsecutivos [3]        ==  []&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
sumaConsecutivos :: [Int] -&amp;gt; [Int]&lt;br /&gt;
sumaConsecutivos xs = zipWith (+) xs (tail xs)&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 11.  La distancia de Hamming entre dos listas es el número&lt;br /&gt;
-- de posiciones en que los correspondientes elementos son&lt;br /&gt;
-- distintos. Por ejemplo, la distancia de Hamming entre &amp;quot;roma&amp;quot; y &amp;quot;loba&amp;quot; &lt;br /&gt;
-- es 2 (porque hay 2 posiciones en las que los elementos&lt;br /&gt;
-- correspondientes son distintos: la 1ª y la 3ª). &lt;br /&gt;
--    &lt;br /&gt;
-- Definir la función distancia tal que (distancia xs ys) es la &lt;br /&gt;
-- distancia de Hamming entre xs e ys. Por ejemplo,&lt;br /&gt;
--    distancia &amp;quot;romano&amp;quot; &amp;quot;comino&amp;quot;  ==  2&lt;br /&gt;
--    distancia &amp;quot;romano&amp;quot; &amp;quot;camino&amp;quot;  ==  3&lt;br /&gt;
--    distancia &amp;quot;roma&amp;quot;   &amp;quot;comino&amp;quot;  ==  2&lt;br /&gt;
--    distancia &amp;quot;roma&amp;quot;   &amp;quot;camino&amp;quot;  ==  3&lt;br /&gt;
--    distancia &amp;quot;romano&amp;quot; &amp;quot;ron&amp;quot;     ==  1&lt;br /&gt;
--    distancia &amp;quot;romano&amp;quot; &amp;quot;cama&amp;quot;    ==  2&lt;br /&gt;
--    distancia &amp;quot;romano&amp;quot; &amp;quot;rama&amp;quot;    ==  1&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
distancia :: Eq a =&amp;gt; [a] -&amp;gt; [a] -&amp;gt; Int&lt;br /&gt;
distancia [] _ = 0&lt;br /&gt;
distancia _ [] = 0&lt;br /&gt;
distancia (x:xs) (y:ys) | x==y= distancia xs ys&lt;br /&gt;
                        |otherwise = 1 + distancia xs ys&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 12. Definir la función&lt;br /&gt;
--    factoriales :: [Integer]&lt;br /&gt;
-- tal que factoriales es la lista de los factoriales. Por ejemplo,&lt;br /&gt;
--    take 10 factoriales  ==  [1,1,2,6,24,120,720,5040,40320,362880]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- Por comprensión:&lt;br /&gt;
&lt;br /&gt;
factoriales1 :: [Integer]&lt;br /&gt;
factoriales1 = 1:[factorial x|x&amp;lt;-[1..]]&lt;br /&gt;
factorial x = product[1..x]&lt;br /&gt;
&lt;br /&gt;
--otra forma sin necesidad de añadir el 1 a la lista&lt;br /&gt;
&lt;br /&gt;
factoriales1 :: [Integer]&lt;br /&gt;
factoriales1 = [product [1..n]|n&amp;lt;-[0..]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Usando zipWith:&lt;br /&gt;
&lt;br /&gt;
factoriales2 :: [Integer]&lt;br /&gt;
factoriales2 = 1: zipWith (*) [1..] factoriales2&lt;br /&gt;
&lt;br /&gt;
-- Por recursión:&lt;br /&gt;
&lt;br /&gt;
factoriales3 :: [Integer]&lt;br /&gt;
factoriales3 = 1: (aux 1 [1..])&lt;br /&gt;
    where aux n (x:xs) = (n*x):(aux (n*x) xs)&lt;br /&gt;
&lt;br /&gt;
--otra forma&lt;br /&gt;
factoriales3 :: [Integer]&lt;br /&gt;
factoriales3 = aux (1,1)&lt;br /&gt;
     where aux (x,y) = x: aux (x*y,y+1)&lt;br /&gt;
&lt;br /&gt;
-- Usando scanl1:&lt;br /&gt;
&lt;br /&gt;
factoriales4 :: [Integer]&lt;br /&gt;
factoriales4 = 1:scanl1 (*) [1..]&lt;br /&gt;
&lt;br /&gt;
-- Usando iterate:&lt;br /&gt;
&lt;br /&gt;
factoriales5 :: [Integer]&lt;br /&gt;
factoriales5 = map snd aux &lt;br /&gt;
        where aux = iterate aux2 (1,1) where aux2 (x,y) = (x+1,x*y)&lt;br /&gt;
&lt;br /&gt;
--otra forma&lt;br /&gt;
factoriales5 :: [Integer]&lt;br /&gt;
factoriales5 = map (fst) (iterate (\(x,y)-&amp;gt;(x*y,y+1)) (1,1))&lt;br /&gt;
&lt;br /&gt;
-- Comparación de los tiempos de evaluación:&lt;br /&gt;
-- *Main&amp;gt; :set +s&lt;br /&gt;
-- take 100 factoriales1 -&amp;gt; (0.20 secs, 0 bytes)&lt;br /&gt;
-- take 100 factoriales2 -&amp;gt; (0.05 secs, 0 bytes)&lt;br /&gt;
-- take 100 factoriales3 -&amp;gt; (0.02 secs, 0 bytes)&lt;br /&gt;
-- take 100 factoriales4 -&amp;gt; (0.00 secs, 20,605,760 bytes)&lt;br /&gt;
-- take 100 factoriales5 -&amp;gt; (0.02 secs, 0 bytes)&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.0. En los siguientes ejercicios se demostrarán&lt;br /&gt;
-- propiedades de los árboles binarios definidos como sigue&lt;br /&gt;
--    data Arbol a = Hoja &lt;br /&gt;
--                 | Nodo a (Arbol a) (Arbol a)&lt;br /&gt;
--                 deriving (Show, Eq)&lt;br /&gt;
-- Como ejemplos se usarán los árboles&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
data Arbol a = Hoja &lt;br /&gt;
             | Nodo a (Arbol a) (Arbol a)&lt;br /&gt;
             deriving (Show, Eq)&lt;br /&gt;
 &lt;br /&gt;
arbol_1 = Nodo 9&lt;br /&gt;
               (Nodo 3 &lt;br /&gt;
                     (Nodo 2 Hoja Hoja) &lt;br /&gt;
                     (Nodo 4 Hoja Hoja)) &lt;br /&gt;
               (Nodo 7 Hoja Hoja)&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.1. Definir la función&lt;br /&gt;
--    espejo :: Arbol a -&amp;gt; Arbol a&lt;br /&gt;
-- tal que (espejo x) es la imagen especular del árbol x. Por ejemplo,&lt;br /&gt;
--    *Main&amp;gt; espejo arbol_1&lt;br /&gt;
--    Nodo 9 &lt;br /&gt;
--         (Nodo 7 Hoja Hoja) &lt;br /&gt;
--         (Nodo 3 &lt;br /&gt;
--               (Nodo 4 Hoja Hoja) &lt;br /&gt;
--               (Nodo 2 Hoja Hoja))&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
espejo :: Arbol a -&amp;gt; Arbol a&lt;br /&gt;
espejo Hoja = Hoja&lt;br /&gt;
espejo (Nodo a i d) = Nodo a (espejo d) (espejo i) &lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.2. Comprobar con QuickCheck que para todo árbol x,&lt;br /&gt;
--    espejo (espejo x) = x&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
prop_espejo :: Arbol Int -&amp;gt; Bool&lt;br /&gt;
prop_espejo x = espejo (espejo x) == x &lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.3. Demostrar por inducción que para todo árbol x,&lt;br /&gt;
--    espejo (espejo x) = x&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
{-&lt;br /&gt;
-- Demostración por inducción en x&lt;br /&gt;
-- Caso base: El árbol es una Hoja. Por definición de espejo, espejo Hoja = Hoja, luego espejo (espejo Hoja) = Hoja.&lt;br /&gt;
-- Caso inductivo: El árbol tiene profundidad n. Se supone cierto que para este árbol se verifica que espejo (espejo x) = x&lt;br /&gt;
-- Demostración para un árbol de profundidad (n+1). Este árbol es de la forma (Nodo a i d) donde i, d son árboles de profundidad igual o menor&lt;br /&gt;
-- que n. &lt;br /&gt;
-- espejo (espejo (Nodo a i d)) = espejo (Nodo a (espejo d) (espejo i)) = Nodo a (espejo(espejo i)) (espejo(espejo d)) por definición de la&lt;br /&gt;
-- función espejo. Por hipótesis de inducción espejo(espejo i) = i y espejo(espejo d) = d, y queda demostrado.&lt;br /&gt;
-}&lt;br /&gt;
 &lt;br /&gt;
 -- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.4. Definir la función&lt;br /&gt;
--    preorden :: Arbol a -&amp;gt; [a]&lt;br /&gt;
-- tal que (preorden x) es la lista correspondiente al recorrido&lt;br /&gt;
-- preorden del árbol x; es decir, primero visita la raíz del árbol, a&lt;br /&gt;
-- continuación recorre el subárbol izquierdo y, finalmente, recorre el&lt;br /&gt;
-- subárbol derecho. Por ejemplo,&lt;br /&gt;
--    *Main&amp;gt; arbol_1&lt;br /&gt;
--    Nodo 9 (Nodo 3 (Nodo 2 Hoja Hoja) (Nodo 4 Hoja Hoja)) (Nodo 7 Hoja Hoja)&lt;br /&gt;
--    *Main&amp;gt; preorden arbol_1&lt;br /&gt;
--    [9,3,2,4,7]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
preorden :: Arbol a -&amp;gt; [a]&lt;br /&gt;
preorden Hoja = []&lt;br /&gt;
preorden (Nodo a i d)= a:(preorden i)++(preorden d) &lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.5. Definir la función&lt;br /&gt;
--    postorden :: Arbol a -&amp;gt; [a]&lt;br /&gt;
-- tal que (postorden x) es la lista correspondiente al recorrido&lt;br /&gt;
-- postorden del árbol x; es decir, primero recorre el subárbol&lt;br /&gt;
-- izquierdo, a continuación el subárbol derecho y, finalmente, la raíz&lt;br /&gt;
-- del árbol. Por ejemplo,&lt;br /&gt;
--    *Main&amp;gt; arbol_1&lt;br /&gt;
--    Nodo 9 (Nodo 3 (Nodo 2 Hoja Hoja) (Nodo 4 Hoja Hoja)) (Nodo 7 Hoja Hoja)&lt;br /&gt;
--    *Main&amp;gt; postorden arbol_1&lt;br /&gt;
--    [2,4,3,7,9]&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
postorden :: Arbol a -&amp;gt; [a]&lt;br /&gt;
postorden Hoja = []&lt;br /&gt;
postorden (Nodo a i d) = (postorden i)++(postorden d)++[a]&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.6. Comprobar con QuickCheck que para todo árbol x,&lt;br /&gt;
--    postorden (espejo x) = reverse (preorden x)&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- La propiedad es&lt;br /&gt;
prop_recorrido :: Arbol Int -&amp;gt; Bool&lt;br /&gt;
prop_recorrido x = postorden (espejo x) == reverse (preorden x) &lt;br /&gt;
 &lt;br /&gt;
-- La comprobación es&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.7. Demstrar por inducción que para todo árbol x,&lt;br /&gt;
--    postorden (espejo x) = reverse (preorden x)&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
{-&lt;br /&gt;
 Demostración por inducción en x.&lt;br /&gt;
&lt;br /&gt;
-}&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.8. Comprobar con QuickCheck que para todo árbol binario&lt;br /&gt;
-- x, se tiene que&lt;br /&gt;
--    reverse (preorden (espejo x)) = postorden x&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- La propiedad es&lt;br /&gt;
prop_reverse_preorden_espejo :: Arbol Int -&amp;gt; Bool&lt;br /&gt;
prop_reverse_preorden_espejo x =&lt;br /&gt;
   reverse (preorden (espejo x)) == postorden x&lt;br /&gt;
 &lt;br /&gt;
-- La comprobación es&lt;br /&gt;
--    *Main&amp;gt; quickCheck prop_reverse_preorden_espejo&lt;br /&gt;
--    OK, passed 100 tests.&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.9. Demostrar que para todo árbol binario x, se tiene que&lt;br /&gt;
--    reverse (preorden (espejo x)) = preorden x&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
{-&lt;br /&gt;
 Demostración:&lt;br /&gt;
    reverse (preorden (espejo x))&lt;br /&gt;
    = postorden (espejo (espejo x))    [por ejercicio 13.7]&lt;br /&gt;
    = postorden x                      [por ejercicio 13.3]&lt;br /&gt;
-}&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.10. Definir la función&lt;br /&gt;
--    nNodos :: Arbol a -&amp;gt; Int&lt;br /&gt;
-- tal que (nNodos x) es el número de nodos del árbol x. Por ejemplo,&lt;br /&gt;
--    *Main&amp;gt; arbol_1&lt;br /&gt;
--    Nodo 9 (Nodo 3 (Nodo 2 Hoja Hoja) (Nodo 4 Hoja Hoja)) (Nodo 7 Hoja Hoja)&lt;br /&gt;
--    *Main&amp;gt; nNodos arbol_1&lt;br /&gt;
--    5&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
nNodos :: Arbol a -&amp;gt; Int&lt;br /&gt;
nNodos Hoja = 0&lt;br /&gt;
nNodos (Nodo n i d) = 1 + nNodos i + nNodos d &lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.11. Comprobar con QuickCheck que el número de nodos de la&lt;br /&gt;
-- imagen especular de un árbol es el mismo que el número de nodos del&lt;br /&gt;
-- árbol. &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- La propiedad es&lt;br /&gt;
prop_nNodos_espejo :: Arbol Int -&amp;gt; Bool&lt;br /&gt;
prop_nNodos_espejo x = &lt;br /&gt;
 nNodos (espejo x) == nNodos x&lt;br /&gt;
 &lt;br /&gt;
-- La comprobación es&lt;br /&gt;
-- *Main&amp;gt; quickCheck prop_nNodos_espejo&lt;br /&gt;
-- +++ OK, passed 100 tests. &lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.12. Demostrar por inducción que el número de nodos de la&lt;br /&gt;
-- imagen especular de un árbol es el mismo que el número de nodos del&lt;br /&gt;
-- árbol. &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
{-&lt;br /&gt;
 Demostración: &lt;br /&gt;
&lt;br /&gt;
-}&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.13. Comprobar con QuickCheck que la longitud de la lista&lt;br /&gt;
-- obtenida recorriendo un árbol en sentido preorden es igual al número&lt;br /&gt;
-- de nodos del árbol.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- La propiedad es&lt;br /&gt;
prop_length_preorden :: Arbol Int -&amp;gt; Bool&lt;br /&gt;
prop_length_preorden x = &lt;br /&gt;
 length (preorden x) == length (postorden x)&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
prop_length_preorden :: Arbol Int -&amp;gt; Bool&lt;br /&gt;
prop_length_preorden x = length(preorden x) == nNodos x&lt;br /&gt;
 &lt;br /&gt;
-- La comprobación es&lt;br /&gt;
-- *Main&amp;gt; quickCheck prop_length_preorden&lt;br /&gt;
-- +++ OK, passed 100 tests. &lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.14. Demostrar por inducción que la longitud de la lista&lt;br /&gt;
-- obtenida recorriendo un árbol en sentido preorden es igual al número&lt;br /&gt;
-- de nodos del árbol.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
{-&lt;br /&gt;
 Demostración: &lt;br /&gt;
&lt;br /&gt;
-}&lt;br /&gt;
 &lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.15. Definir la función&lt;br /&gt;
--    profundidad :: Arbol a -&amp;gt; Int&lt;br /&gt;
-- tal que (profundidad x) es la profundidad del árbol x. Por ejemplo,&lt;br /&gt;
--    *Main&amp;gt; arbol_1&lt;br /&gt;
--    Nodo 9 (Nodo 3 (Nodo 2 Hoja Hoja) (Nodo 4 Hoja Hoja)) (Nodo 7 Hoja Hoja)&lt;br /&gt;
--    *Main&amp;gt; profundidad arbol_1&lt;br /&gt;
--    3&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
profundidad :: Arbol a -&amp;gt; Int&lt;br /&gt;
profundidad Hoja = 0&lt;br /&gt;
profundidad (Nodo n i d)&lt;br /&gt;
 | length (preorden i) &amp;gt; length (preorden d) = 1 + profundidad i&lt;br /&gt;
 | otherwise = 1 + profundidad d&lt;br /&gt;
&lt;br /&gt;
{- Otra forma:&lt;br /&gt;
profundidad :: Arbol a -&amp;gt; Int&lt;br /&gt;
profundidad Hoja = 0&lt;br /&gt;
profundidad (Nodo x c b) = 1 + (max (profundidad c) (profundidad b))&lt;br /&gt;
-}&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Ejercicio 13.16. Comprobar con QuickCheck que para todo árbol binario&lt;br /&gt;
-- x, se tiene que&lt;br /&gt;
--    nNodos x &amp;lt;= 2^(profundidad x) - 1&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
-- La propiedad es&lt;br /&gt;
prop_nNodosProfundidad :: Arbol Int -&amp;gt; Bool&lt;br /&gt;
prop_nNodosProfundidad x =&lt;br /&gt;
  nNodos x &amp;lt;= 2^(profundidad x) - 1&lt;br /&gt;
&lt;br /&gt;
-- La comprobación es&lt;br /&gt;
-- quickCheck prop_nNodosProfundidad&lt;br /&gt;
-- +++ OK, passed 100 tests.&lt;br /&gt;
&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
-- Nota. Para comprobar propiedades de árboles con QuickCheck se&lt;br /&gt;
-- utilizará el siguiente generador.&lt;br /&gt;
-- ---------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
instance Arbitrary a =&amp;gt; Arbitrary (Arbol a) where&lt;br /&gt;
  arbitrary = sized arbol&lt;br /&gt;
    where&lt;br /&gt;
      arbol 0       = return Hoja &lt;br /&gt;
      arbol n | n&amp;gt;0 = oneof [return Hoja,&lt;br /&gt;
                             liftM3 Nodo arbitrary subarbol subarbol]&lt;br /&gt;
                      where subarbol = arbol (div n 2)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Albromgon</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_3&amp;diff=150</id>
		<title>Relación 3</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_3&amp;diff=150"/>
		<updated>2016-03-25T18:37:00Z</updated>

		<summary type="html">&lt;p&gt;Albromgon: Otra opción ejercicio 55&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang = &amp;quot;isar&amp;quot;&amp;gt;header {* R3: Deducción natural proposicional *}&lt;br /&gt;
&lt;br /&gt;
theory R3&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;
&lt;br /&gt;
proof -&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms(1,2) by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_1_b:&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(1) assms(2) by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;q&amp;quot; using assms(1,3) by (rule mp)&lt;br /&gt;
show &amp;quot;r&amp;quot; using assms(2)  1 by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;q&amp;quot; using assms(2,3) by (rule mp) &lt;br /&gt;
have 2: &amp;quot;q⟶r&amp;quot; using assms(1,3) by (rule mp)&lt;br /&gt;
show &amp;quot;r&amp;quot; using 2 1 by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have 2: &amp;quot;q&amp;quot; using assms(1) 1 ..&lt;br /&gt;
have 3: &amp;quot;r&amp;quot; using assms(2) 2 ..}&lt;br /&gt;
thus &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;q&amp;quot; using assms(1) 1 by (rule mp)&lt;br /&gt;
have 3 : &amp;quot;r&amp;quot; using assms(2) 2 by (rule mp)}&lt;br /&gt;
thus &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&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;
&lt;br /&gt;
{assume 1: &amp;quot;q&amp;quot;&lt;br /&gt;
{assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;q⟶r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
have  &amp;quot;r&amp;quot; using 3 1 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;(q⟶(p⟶r))&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p⟶q&amp;quot;&lt;br /&gt;
{assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;q⟶r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
have 4: &amp;quot;q&amp;quot; using 1 2 by (rule mp)&lt;br /&gt;
have &amp;quot;r&amp;quot; using 3 4 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;(p⟶q)⟶(p⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed &lt;br /&gt;
  &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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;q&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using assms .}&lt;br /&gt;
thus &amp;quot;q⟶p&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof- &lt;br /&gt;
{assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
have 3: &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
hence &amp;quot;q⟶p&amp;quot; ..}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶p)&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_8:&lt;br /&gt;
  &amp;quot;p ⟶ (q ⟶ p)&amp;quot;&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
hence &amp;quot;q⟶p&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶p)&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_8:&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 &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;
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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;q⟶r&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
have 3:&amp;quot;q&amp;quot; using assms 2 .. &lt;br /&gt;
have &amp;quot;r&amp;quot; using 1 3 ..}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; ..}&lt;br /&gt;
thus &amp;quot;(q⟶r)⟶(p⟶r) &amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;q⟶r&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using assms(1) 2 by (rule mp)&lt;br /&gt;
have 4 : &amp;quot;r&amp;quot; using 1 3 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;(q⟶r)⟶(p⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
 &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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;r&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
{assume 3:&amp;quot;p&amp;quot;&lt;br /&gt;
have 4:&amp;quot;q⟶(r⟶s)&amp;quot; using assms 3 ..&lt;br /&gt;
have 5: &amp;quot;r⟶s&amp;quot; using 4 2 ..&lt;br /&gt;
have 6: &amp;quot;s&amp;quot; using 5 1 ..}&lt;br /&gt;
hence &amp;quot;p⟶s&amp;quot; ..}&lt;br /&gt;
hence &amp;quot;q⟶(p⟶s)&amp;quot; ..}&lt;br /&gt;
thus &amp;quot;r⟶(q⟶(p⟶s))&amp;quot; ..&lt;br /&gt;
qed &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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;r&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;q&amp;quot;&lt;br /&gt;
{assume 3 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 4 : &amp;quot;q ⟶ (r ⟶ s)&amp;quot; using assms(1) 3 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r⟶s&amp;quot; using 4 2 by (rule mp)&lt;br /&gt;
have 6 : &amp;quot;s&amp;quot; using 5 1 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶s&amp;quot; by (rule impI)}&lt;br /&gt;
hence &amp;quot;q⟶(p⟶s)&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;r⟶(q⟶(p⟶s))&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
 assume  3: &amp;quot;p⟶(q⟶r)&amp;quot;&lt;br /&gt;
 show &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   1: &amp;quot;p&amp;quot;&lt;br /&gt;
    have 4:&amp;quot;q&amp;quot; using 2 1 ..&lt;br /&gt;
    have 5:&amp;quot;q⟶r&amp;quot; using 3 1 .. &lt;br /&gt;
    show &amp;quot;r&amp;quot; using 5 4 .. &lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&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;
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⟶r&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;q&amp;quot; using 2 3 by (rule mp)&lt;br /&gt;
have 6 : &amp;quot;r&amp;quot; using 4 5 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
hence &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;
&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
    {assume 3:&amp;quot;q&amp;quot;&lt;br /&gt;
      have 4:&amp;quot;p&amp;quot; using 1 .&lt;br /&gt;
      have 5:&amp;quot;q&amp;quot; using 3 .&lt;br /&gt;
      then have 6:&amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
      have &amp;quot;r&amp;quot; using assms 6 ..}&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;
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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;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 .}&lt;br /&gt;
hence 5 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
have 6 : &amp;quot;r&amp;quot; using assms(1) 5 by (rule mp)}&lt;br /&gt;
hence &amp;quot;q⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p∧q&amp;quot; using assms(1) assms(2) by (rule conjI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
show &amp;quot;p ∧ q&amp;quot; using assms(1,2) by (rule conjI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
qed&lt;br /&gt;
 &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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1:&amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 2:&amp;quot;q∧r&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
then have 3:&amp;quot;q&amp;quot; by (rule conjunct1)&lt;br /&gt;
have 4:&amp;quot;r&amp;quot; using 2 by (rule conjunct2)&lt;br /&gt;
have &amp;quot;p∧q&amp;quot; using 1 3 by (rule conjI)&lt;br /&gt;
then show &amp;quot;(p∧q)∧r&amp;quot; using 4 by (rule conjI)&lt;br /&gt;
qed  &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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1:&amp;quot;p∧q&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 2:&amp;quot;r&amp;quot; using assms by (rule conjunct2)&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 1 by (rule conjunct2)&lt;br /&gt;
have 5:&amp;quot;q∧r&amp;quot; using 4 2 by (rule conjI)&lt;br /&gt;
show &amp;quot;p∧(q∧r)&amp;quot; using 3 5 by (rule conjI)&lt;br /&gt;
qed  &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;
proof-&lt;br /&gt;
have 1:&amp;quot;p&amp;quot; using assms ..&lt;br /&gt;
have 2:&amp;quot;q&amp;quot; using assms ..&lt;br /&gt;
then show &amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;q&amp;quot; using assms by (rule conjunct2)}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
have 1:&amp;quot;p⟶q&amp;quot; using assms ..&lt;br /&gt;
have 2:&amp;quot;p⟶r&amp;quot; using assms ..&lt;br /&gt;
{assume 3:&amp;quot;p&amp;quot;&lt;br /&gt;
have 4:&amp;quot;q&amp;quot; using 1 3 ..&lt;br /&gt;
have 5:&amp;quot;r&amp;quot; using 2 3 ..&lt;br /&gt;
have 6:&amp;quot;q∧r&amp;quot; using 4 5 ..}&lt;br /&gt;
thus &amp;quot;p ⟶ q ∧ r&amp;quot;  ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p⟶q&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;p⟶r&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;q&amp;quot; using 2 1 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using 3 1 by (rule mp)&lt;br /&gt;
have 6 : &amp;quot;q ∧ r&amp;quot; using 4 5 by (rule conjI)}&lt;br /&gt;
thus &amp;quot;p⟶(q ∧ r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: p&lt;br /&gt;
have 2:&amp;quot;q∧r&amp;quot; using assms 1 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using 2 ..}&lt;br /&gt;
hence 1:&amp;quot;p⟶r&amp;quot; ..&lt;br /&gt;
{assume 1: p&lt;br /&gt;
have 2:&amp;quot;q∧r&amp;quot; using assms 1 ..&lt;br /&gt;
have &amp;quot;q&amp;quot; using 2 ..}&lt;br /&gt;
hence 2:&amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
then show &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot; using 1 ..&lt;br /&gt;
qed &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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot; &lt;br /&gt;
have 2 : &amp;quot;q ∧ r&amp;quot; using assms 1 by (rule mp)&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 2 by (rule conjunct1)}&lt;br /&gt;
hence 4 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
{assume 5 : &amp;quot;p&amp;quot; &lt;br /&gt;
have 6 : &amp;quot;q ∧ r&amp;quot; using assms 5 by (rule mp)&lt;br /&gt;
have 7 : &amp;quot;r&amp;quot; using 6 by (rule conjunct2)}&lt;br /&gt;
hence 8 : &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
show &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p∧q&amp;quot;&lt;br /&gt;
have 2:&amp;quot;p&amp;quot; using 1 ..&lt;br /&gt;
have 3:&amp;quot;q⟶r&amp;quot; using assms 2 ..&lt;br /&gt;
have 4: &amp;quot;q&amp;quot; using 1 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using 3 4 ..}&lt;br /&gt;
thus &amp;quot;p∧q ⟶r&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;q⟶r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using 4 3 by (rule mp)}&lt;br /&gt;
thus &amp;quot;p ∧ q ⟶ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
have 3:&amp;quot;p∧q&amp;quot; using 1 2 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using assms 3 ..}&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;
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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;p ∧ q&amp;quot; using 1 2 by (rule conjI)&lt;br /&gt;
have 4 : &amp;quot;r&amp;quot; using assms 3 by (rule mp)}&lt;br /&gt;
hence &amp;quot;q⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_22:&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;
  show &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
    proof (rule impI)&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;
       show &amp;quot;r&amp;quot; using 1 4 by (rule mp)&lt;br /&gt;
    qed&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p∧q&amp;quot;&lt;br /&gt;
have 2:&amp;quot;p&amp;quot; using 1 ..&lt;br /&gt;
{assume &amp;quot;p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;q&amp;quot; using 1 ..}&lt;br /&gt;
hence 4:&amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using assms 4 ..}&lt;br /&gt;
thus &amp;quot;p∧q ⟶r&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 1 by (rule conjunct2)}&lt;br /&gt;
hence 4 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using assms 4 by (rule mp)}&lt;br /&gt;
thus &amp;quot;p ∧ q ⟶ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p⟶q&amp;quot;&lt;br /&gt;
have 2:&amp;quot;p&amp;quot; using assms ..&lt;br /&gt;
have 3:&amp;quot;q⟶r&amp;quot; using assms..&lt;br /&gt;
have 4:&amp;quot;q&amp;quot; using 1 2 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using 3 4 ..}&lt;br /&gt;
thus &amp;quot;(p⟶q)⟶r&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p⟶q&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;q⟶r&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;q&amp;quot; using 1 2 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using 3 4 by (rule mp)}&lt;br /&gt;
thus &amp;quot;(p⟶q)⟶r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_24:&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;
    show &amp;quot;r&amp;quot; using 5 4 by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p∨q&amp;quot; using assms by (rule disjI1)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p∨q&amp;quot; using assms by (rule disjI2)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;p ∨ q&amp;quot; using assms by this&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∨ p&amp;quot; using 2 by (rule disjI2) }&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume 3: &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∨ p&amp;quot; using 3 by (rule disjI1) }&lt;br /&gt;
  ultimately show &amp;quot;q ∨ p&amp;quot; by (rule disjE) &lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_27:&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 2:&amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;q ∨ p&amp;quot; using 2 by (rule disjI2)}&lt;br /&gt;
next&lt;br /&gt;
  {assume 4:&amp;quot;q&amp;quot;&lt;br /&gt;
    show &amp;quot;q ∨ p&amp;quot; using 4 by (rule disjI1)}         &lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume  &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;p ∨ r&amp;quot;  using 1 by (rule disjI1)}&lt;br /&gt;
  moreover &lt;br /&gt;
  { assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
    have 3:&amp;quot;r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
    have &amp;quot;p ∨ r&amp;quot; using 3 by (rule disjI2) }&lt;br /&gt;
   ultimately have  &amp;quot; p ∨ r&amp;quot; by (rule disjE)}&lt;br /&gt;
thus  &amp;quot;p ∨ q ⟶ p ∨ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_28:&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 2:&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 3:&amp;quot;p&amp;quot;&lt;br /&gt;
        show &amp;quot;p ∨ r&amp;quot; using 3 by (rule disjI1)}&lt;br /&gt;
     next&lt;br /&gt;
      {assume 4:&amp;quot;q&amp;quot;&lt;br /&gt;
         have 5:&amp;quot;r&amp;quot; using 1 4 by (rule mp)&lt;br /&gt;
         show &amp;quot;p ∨ r&amp;quot; using 5 by (rule disjI2)}&lt;br /&gt;
     qed&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;p ∨ p&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
  have  &amp;quot;p&amp;quot; using 1 by this}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
  have  &amp;quot;p&amp;quot; using 2 by this}&lt;br /&gt;
ultimately show  &amp;quot;p&amp;quot; by (rule disjE)&lt;br /&gt;
&lt;br /&gt;
qed&lt;br /&gt;
text{* Otra forma:&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;
qed}&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;
proof-&lt;br /&gt;
have &amp;quot;p ∨ p&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using 2 .}&lt;br /&gt;
ultimately show &amp;quot;p&amp;quot; by (rule disjE)&lt;br /&gt;
qed*}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_29:&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 2:&amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;p&amp;quot; using 2 by this}&lt;br /&gt;
next&lt;br /&gt;
  {assume 3:&amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;p&amp;quot; using 3 by this}&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
 show  &amp;quot;p ∨ p&amp;quot; using assms by (rule disjI1)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text{* Otra forma:&lt;br /&gt;
using assms&lt;br /&gt;
proof&lt;br /&gt;
qed}&lt;br /&gt;
 &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;
proof -&lt;br /&gt;
 have &amp;quot;p ∨ (q ∨ r)&amp;quot; using assms(1) by this&lt;br /&gt;
moreover &lt;br /&gt;
    { assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
       have 2: &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
       have 3: &amp;quot;(p ∨ q) ∨ r&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
moreover&lt;br /&gt;
    { assume 4: &amp;quot;q ∨ r&amp;quot;&lt;br /&gt;
      moreover&lt;br /&gt;
      { assume 5: &amp;quot;q&amp;quot;&lt;br /&gt;
        have 6: &amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
        have 7: &amp;quot;(p ∨ q) ∨ r&amp;quot; using 6 by (rule disjI1)}&lt;br /&gt;
      moreover&lt;br /&gt;
      { assume 8: &amp;quot;r&amp;quot;&lt;br /&gt;
        have 9: &amp;quot;(p ∨ q) ∨ r&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
      ultimately have &amp;quot;(p ∨ q) ∨ r&amp;quot; by (rule disjE)}&lt;br /&gt;
  ultimately show &amp;quot;(p ∨ q) ∨ r&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
 &lt;br /&gt;
text{* Otra forma:&lt;br /&gt;
using assms&lt;br /&gt;
proof&lt;br /&gt;
assume &amp;quot;p&amp;quot;&lt;br /&gt;
then have &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 1:&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;
then have &amp;quot;p∨q&amp;quot; ..&lt;br /&gt;
thus 1: &amp;quot;(p ∨ q) ∨ r&amp;quot; ..&lt;br /&gt;
next&lt;br /&gt;
assume &amp;quot;r&amp;quot;&lt;br /&gt;
then have 2:&amp;quot;(p∨q)∨r&amp;quot; ..&lt;br /&gt;
then have &amp;quot;q∨r⟶(p ∨ q) ∨ r&amp;quot; .. &lt;br /&gt;
thus &amp;quot;(p ∨ q) ∨ r&amp;quot; using 1 ..&lt;br /&gt;
qed}*}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_31:&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 2:&amp;quot;p&amp;quot;&lt;br /&gt;
    have  3:&amp;quot;p ∨ q&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
    show  &amp;quot;(p ∨ q) ∨ r&amp;quot; using 3 by (rule disjI1)}&lt;br /&gt;
next&lt;br /&gt;
   {assume 4:&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 5:&amp;quot;q&amp;quot;&lt;br /&gt;
           have 6:&amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
           show &amp;quot;(p ∨ q) ∨ r&amp;quot; using 6 by (rule disjI1)}&lt;br /&gt;
      next&lt;br /&gt;
        {assume 7:&amp;quot;r&amp;quot;&lt;br /&gt;
           show &amp;quot;(p ∨ q) ∨ r&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
      qed}&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
 have &amp;quot;(p ∨ q) ∨ r&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 1: &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
     moreover&lt;br /&gt;
     { assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
       have 3: &amp;quot;p ∨ (q ∨ r)&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
     moreover&lt;br /&gt;
     { assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
       have 5: &amp;quot;q ∨ r&amp;quot; using 4 by (rule disjI1)&lt;br /&gt;
       have 6: &amp;quot;p ∨ (q ∨ r)&amp;quot; using 5 by (rule disjI2)}&lt;br /&gt;
     ultimately have &amp;quot;p ∨ (q ∨ r)&amp;quot; by (rule disjE)}&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 7: &amp;quot;r&amp;quot;&lt;br /&gt;
     have 8: &amp;quot;q ∨ r&amp;quot; using 7 by (rule disjI2)&lt;br /&gt;
     have 9: &amp;quot;p ∨ (q ∨ r)&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
ultimately show &amp;quot;p ∨ (q ∨ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_32:&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 2:&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 3:&amp;quot;p&amp;quot;&lt;br /&gt;
         show &amp;quot;p ∨ (q ∨ r)&amp;quot; using 3 by (rule disjI1)}&lt;br /&gt;
      next&lt;br /&gt;
       {assume 4:&amp;quot;q&amp;quot;&lt;br /&gt;
         have  5:&amp;quot;q ∨ r&amp;quot;    using 4 by (rule disjI1)&lt;br /&gt;
         show &amp;quot;p ∨ (q ∨ r)&amp;quot; using 5 by (rule disjI2)} &lt;br /&gt;
       qed}&lt;br /&gt;
next&lt;br /&gt;
  {assume 6:&amp;quot;r&amp;quot;&lt;br /&gt;
     have 7:&amp;quot;q ∨ r&amp;quot; using 6 by (rule disjI2)&lt;br /&gt;
     show &amp;quot;p ∨ (q ∨ r)&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
 have 1: &amp;quot;p&amp;quot; using assms(1) by (rule conjunct1)&lt;br /&gt;
    have 2: &amp;quot;q ∨ r&amp;quot; using assms(1) by (rule conjunct2)&lt;br /&gt;
moreover&lt;br /&gt;
    { assume 3: &amp;quot;q&amp;quot;&lt;br /&gt;
      have 4: &amp;quot;p ∧ q&amp;quot; using 1 3 by (rule conjI)&lt;br /&gt;
      have 5: &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 4 by (rule disjI1)}&lt;br /&gt;
moreover&lt;br /&gt;
    { assume 6: &amp;quot;r&amp;quot;&lt;br /&gt;
      have 7: &amp;quot;p ∧ r&amp;quot; using 1 6 by (rule conjI)&lt;br /&gt;
      have 8: &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
ultimately show &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_33:&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 5:&amp;quot;p ∧ q&amp;quot; using 2 4 by (rule conjI)&lt;br /&gt;
         show &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 5 by (rule disjI1)}&lt;br /&gt;
    next&lt;br /&gt;
      {assume 6:&amp;quot;r&amp;quot;&lt;br /&gt;
         have 7:&amp;quot;p ∧ r&amp;quot; using 2 6 by (rule conjI)&lt;br /&gt;
         show &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
    qed&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
 have &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 1: &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
     have 2: &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
     have 3: &amp;quot;q ∨ r&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
     have 4: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
     have 5: &amp;quot;p ∧ (q ∨ r)&amp;quot; using 4 3 by (rule conjI)}&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 6: &amp;quot;p ∧ r&amp;quot;&lt;br /&gt;
     have 7: &amp;quot;r&amp;quot; using 6 by (rule conjunct2)&lt;br /&gt;
     have 8: &amp;quot;q ∨ r&amp;quot; using 7 by (rule disjI2)&lt;br /&gt;
     have 9: &amp;quot;p&amp;quot; using 6 by (rule conjunct1)&lt;br /&gt;
     have 10: &amp;quot;p ∧ (q ∨ r)&amp;quot; using 9 8 by (rule conjI)}&lt;br /&gt;
ultimately show &amp;quot;p ∧ (q ∨ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_34:&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;
using 1&lt;br /&gt;
proof (rule disjE)&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 4 by (rule disjI1)&lt;br /&gt;
     show &amp;quot;p ∧ (q ∨ r)&amp;quot; using 3 5 by (rule conjI)}&lt;br /&gt;
next&lt;br /&gt;
  {assume 6:&amp;quot;p ∧ r&amp;quot;&lt;br /&gt;
     have 7:&amp;quot;p&amp;quot;     using 6 by (rule conjunct1)&lt;br /&gt;
     have 8:&amp;quot;r&amp;quot;     using 6 by (rule conjunct2)&lt;br /&gt;
     have 9:&amp;quot;q ∨ r&amp;quot; using 8 by (rule disjI2)&lt;br /&gt;
     show &amp;quot;p ∧ (q ∨ r)&amp;quot; using 7 9 by (rule conjI)}&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
have &amp;quot;p ∨ (q ∧ r)&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
     have 2: &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
     have 3: &amp;quot;p ∨ r&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
     have 4: &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 2 3 by (rule conjI)}&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 5: &amp;quot;q ∧ r&amp;quot;&lt;br /&gt;
     have 6: &amp;quot;q&amp;quot; using 5 by (rule conjunct1)&lt;br /&gt;
     have 7: &amp;quot;p ∨ q&amp;quot; using 6 by (rule disjI2)&lt;br /&gt;
     have 8: &amp;quot;r&amp;quot; using 5 by (rule conjunct2)&lt;br /&gt;
     have 9: &amp;quot;p ∨ r&amp;quot; using 8 by (rule disjI2)&lt;br /&gt;
     have 10: &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 7 9 by (rule conjI)}&lt;br /&gt;
ultimately show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_35:&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;
using 1&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  {assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
     have 3:&amp;quot;p ∨ q&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
     have 4:&amp;quot;p ∨ r&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
     show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 3 4 by (rule conjI)}&lt;br /&gt;
next&lt;br /&gt;
  {assume 5:&amp;quot;q ∧ r&amp;quot;&lt;br /&gt;
     have 6:&amp;quot;q&amp;quot;     using 5 by (rule conjunct1)&lt;br /&gt;
     have 7:&amp;quot;r&amp;quot;     using 5 by (rule conjunct2)&lt;br /&gt;
     have 8:&amp;quot;p ∨ q&amp;quot; using 6 by (rule disjI2)&lt;br /&gt;
     have 9:&amp;quot;p ∨ r&amp;quot; using 7 by (rule disjI2)&lt;br /&gt;
     show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 8 9 by (rule conjI)}&lt;br /&gt;
qed&lt;br /&gt;
&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;
proof-&lt;br /&gt;
have &amp;quot;(p ∨ q)&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
moreover&lt;br /&gt;
   {assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;p ∨ (q ∧ r)&amp;quot; using 1 by (rule disjI1) }&lt;br /&gt;
moreover&lt;br /&gt;
    {assume 1:&amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;(p ∨ r)&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
    moreover &lt;br /&gt;
    {assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
      have &amp;quot;p ∨ (q ∧ r)&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
    moreover &lt;br /&gt;
    {assume 2:&amp;quot;r&amp;quot;&lt;br /&gt;
      have 3:&amp;quot;(q ∧ r)&amp;quot; using 1 2 by (rule conjI)&lt;br /&gt;
      have &amp;quot;p ∨ (q ∧ r)&amp;quot; using 3 by (rule disjI2)}&lt;br /&gt;
    ultimately have &amp;quot;p ∨ (q ∧ r)&amp;quot; by (rule disjE)}&lt;br /&gt;
ultimately show &amp;quot;p ∨ (q ∧ r)&amp;quot;  by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
------------------- ----------&lt;br /&gt;
&lt;br /&gt;
 proof-&lt;br /&gt;
have 1: &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 3: &amp;quot;p&amp;quot; &lt;br /&gt;
show &amp;quot;p∨(q∧r)&amp;quot; using 3 by ( rule disjI1)}&lt;br /&gt;
next&lt;br /&gt;
{assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
have 5:&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 6: &amp;quot;p&amp;quot;&lt;br /&gt;
show &amp;quot;p∨(q∧r)&amp;quot; using 6 by (rule disjI1)}&lt;br /&gt;
next&lt;br /&gt;
{assume 7: &amp;quot;r&amp;quot;&lt;br /&gt;
have 8: &amp;quot;q∧r&amp;quot; using 4 7 by (rule conjI)&lt;br /&gt;
show &amp;quot;p∨(q∧r)&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
qed}&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume  &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
moreover &lt;br /&gt;
 {assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
  have 2:&amp;quot;(p ⟶ r)&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
  have &amp;quot;r&amp;quot; using 2 1 by (rule mp)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 1:&amp;quot;q&amp;quot;&lt;br /&gt;
  have 2:&amp;quot;(q ⟶ r)&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
  have &amp;quot;r&amp;quot; using 2 1 by (rule mp)}&lt;br /&gt;
ultimately have &amp;quot;r&amp;quot; by (rule disjE)}&lt;br /&gt;
thus  &amp;quot;p ∨ q ⟶ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_37:&lt;br /&gt;
  assumes 1:&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 2:&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 3:&amp;quot;p&amp;quot;&lt;br /&gt;
         have 4:&amp;quot;p ⟶ r&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
         show &amp;quot;r&amp;quot;       using 4 3 by (rule mp)}&lt;br /&gt;
    next&lt;br /&gt;
     {assume 5:&amp;quot;q&amp;quot;&lt;br /&gt;
        have 6:&amp;quot;q ⟶ r&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
        show &amp;quot;r&amp;quot;       using 6 5 by (rule mp)}&lt;br /&gt;
   qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
have 3 : &amp;quot;r&amp;quot; using assms 2 by (rule mp)}&lt;br /&gt;
hence 4 : &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
{assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
have 7 : &amp;quot;r&amp;quot; using assms 6 by (rule mp)}&lt;br /&gt;
hence 8 : &amp;quot;q⟶r&amp;quot; by (rule impI)&lt;br /&gt;
show &amp;quot;(p ⟶ r) ∧ (q ⟶ r)&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&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;
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;
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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;q&amp;quot; using assms 1 ..}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;False&amp;quot; using assms 1 by (rule notE)&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 2 by (rule FalseE)}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have 2: &amp;quot;q&amp;quot; using assms 1 by (rule notE)}&lt;br /&gt;
thus  &amp;quot;p ⟶ q&amp;quot; by ( rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1:&amp;quot;¬q&amp;quot;&lt;br /&gt;
have &amp;quot;¬p&amp;quot; using assms 1 by (rule mt)}&lt;br /&gt;
thus &amp;quot;¬q ⟶ ¬p&amp;quot; ..&lt;br /&gt;
qed&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;
&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 1:&amp;quot;q&amp;quot;&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms(2) 1 ..&lt;br /&gt;
qed  &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;
proof-&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 3 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 4 : &amp;quot;¬q&amp;quot; using assms(2) .&lt;br /&gt;
have 5 : &amp;quot;False&amp;quot; using 4 3 by (rule notE)&lt;br /&gt;
have 6 : &amp;quot;p&amp;quot; using 5 by (rule FalseE)}&lt;br /&gt;
ultimately show &amp;quot;p&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
--------**---&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have &amp;quot;p&amp;quot; using 1 by this}&lt;br /&gt;
next&lt;br /&gt;
{assume 2: &amp;quot;q&amp;quot;&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms(2) 2 by (rule notE)}&lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 43. 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;
&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof&lt;br /&gt;
assume &amp;quot;q&amp;quot;&lt;br /&gt;
thus &amp;quot;q&amp;quot; .&lt;br /&gt;
next&lt;br /&gt;
assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms(2) 1 ..&lt;br /&gt;
qed  &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;
proof-&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;¬p&amp;quot; using assms(2) .&lt;br /&gt;
have 3 : &amp;quot;False&amp;quot; using 2 1 by (rule notE)&lt;br /&gt;
have 4 : &amp;quot;q&amp;quot; using 3 by (rule FalseE)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;q&amp;quot; using 5 .}&lt;br /&gt;
ultimately show &amp;quot;q&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**--&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms(2) 1 by (rule notE)&lt;br /&gt;
next&lt;br /&gt;
assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using 2 by this&lt;br /&gt;
qed&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;
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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;¬p ∧ ¬q&amp;quot;&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;p&amp;quot; &lt;br /&gt;
  have 3 : &amp;quot;¬p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;q&amp;quot; &lt;br /&gt;
  have 6 : &amp;quot;¬q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 6 5 by (rule notE)}&lt;br /&gt;
ultimately have 8 : &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(¬p ∧ ¬q)&amp;quot;  by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 2 :&amp;quot;¬p∧¬q&amp;quot;&lt;br /&gt;
show False &lt;br /&gt;
using assms&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have 3: &amp;quot;¬p&amp;quot; using 2 by (rule conjunct1)&lt;br /&gt;
show False using 3 1 by (rule notE)}&lt;br /&gt;
{assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;¬q&amp;quot; using 2 by (rule conjunct2)&lt;br /&gt;
show False using 5 4 by (rule notE)}&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
have &amp;quot;¬p ∨ ¬q&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 2 3 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 6 : &amp;quot;q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 5 6 by (rule notE)}&lt;br /&gt;
ultimately have &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(¬p ∨ ¬q)&amp;quot; by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(¬p ∨ ¬q)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
assume 1: &amp;quot;¬p∨¬q&amp;quot;&lt;br /&gt;
show False &lt;br /&gt;
using 1&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
assume 2:  &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
show False using 2 3 by (rule notE)&lt;br /&gt;
next&lt;br /&gt;
assume 4: &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
show False using 4 5 by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
have 3 : &amp;quot;False&amp;quot; using assms 2 by (rule notE)}&lt;br /&gt;
hence 4 : &amp;quot;¬p&amp;quot; by (rule notI)&lt;br /&gt;
{assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
have 7 : &amp;quot;False&amp;quot; using assms 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;¬q&amp;quot; by (rule notI)&lt;br /&gt;
show &amp;quot;¬p ∧ ¬q&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
(*Otra opción para usar tercio excluso*)&lt;br /&gt;
&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 -&lt;br /&gt;
  have 1:&amp;quot;¬p | p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
  show &amp;quot;¬p &amp;amp; ¬q&amp;quot;&lt;br /&gt;
  using 1&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    {assume 2:&amp;quot;¬p&amp;quot;&lt;br /&gt;
      have 3:&amp;quot;¬q | q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
      show &amp;quot;¬p &amp;amp; ¬q&amp;quot;&lt;br /&gt;
      using 3&lt;br /&gt;
      proof (rule disjE)&lt;br /&gt;
        {assume 4:&amp;quot;¬q&amp;quot;&lt;br /&gt;
          with 2 show &amp;quot;¬p &amp;amp; ¬q&amp;quot; by (rule conjI)}&lt;br /&gt;
        next&lt;br /&gt;
        {assume &amp;quot;q&amp;quot;&lt;br /&gt;
          then have &amp;quot;p | q&amp;quot; by (rule disjI2)&lt;br /&gt;
          with assms show &amp;quot;¬p &amp;amp; ¬q&amp;quot; by (rule notE)}&lt;br /&gt;
      qed&lt;br /&gt;
      }&lt;br /&gt;
    next&lt;br /&gt;
    {assume 5:&amp;quot;p&amp;quot;&lt;br /&gt;
      then have &amp;quot;p | q&amp;quot; by (rule disjI1)&lt;br /&gt;
      with assms show &amp;quot;¬p &amp;amp; ¬q&amp;quot; by (rule notE)&lt;br /&gt;
      }&lt;br /&gt;
  qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;¬p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
  have 6 : &amp;quot;¬q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
  have 6 : &amp;quot;False&amp;quot; using 6 5 by (rule notE)}&lt;br /&gt;
ultimately have &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(p ∨ q)&amp;quot; by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 1: &amp;quot;p∨q&amp;quot;&lt;br /&gt;
show False&lt;br /&gt;
using 1 &lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
{assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
have 3:&amp;quot;¬p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
show &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
next&lt;br /&gt;
{assume 5:&amp;quot;q&amp;quot;&lt;br /&gt;
have 6:&amp;quot;¬q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
show &amp;quot;False&amp;quot; using 6 5 by (rule notE)}&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
have &amp;quot;¬p ∨ ¬q&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 2 3 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 6 : &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 5 6 by (rule notE)}&lt;br /&gt;
ultimately have &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(p ∧ q)&amp;quot; by (rule notI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 1:&amp;quot;p∧q&amp;quot;&lt;br /&gt;
show False&lt;br /&gt;
using assms&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
assume 2:&amp;quot;¬p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
show False using 2 3 by (rule notE)&lt;br /&gt;
next&lt;br /&gt;
assume 4: &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
show False using 4 5 by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ ¬p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;¬p&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
thus &amp;quot;¬(p ∧ ¬p)&amp;quot; by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 1: &amp;quot;p∧¬p&amp;quot;&lt;br /&gt;
have 2: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
have 3: &amp;quot;¬p&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
show False using 3 2 by (rule notE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1 : &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 2 : &amp;quot;¬p&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
show &amp;quot;q&amp;quot; using 2 1 by (rule notE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms by (rule notnotD)&lt;br /&gt;
qed&lt;br /&gt;
&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;
proof(rule ccontr)&lt;br /&gt;
assume 1: &amp;quot;¬p&amp;quot;&lt;br /&gt;
show False using assms 1 by (rule notE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;¬p∨p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have 2: &amp;quot;¬p∨p&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 3: &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 4: &amp;quot;p∨¬p&amp;quot; using 3 by (rule disjI2)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 5: &amp;quot;p&amp;quot;&lt;br /&gt;
have 6: &amp;quot;p∨¬p&amp;quot; using 5 by (rule disjI1)}&lt;br /&gt;
ultimately show &amp;quot;p∨¬p&amp;quot; by (rule disjE)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;(p ⟶ q) ⟶ p&amp;quot;&lt;br /&gt;
 {assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;¬(p⟶q)&amp;quot; using 1 2 by (rule mt)&lt;br /&gt;
    {assume 4 : &amp;quot;p&amp;quot;&lt;br /&gt;
     have 5 : &amp;quot;q&amp;quot; using 2 4 by (rule notE)}&lt;br /&gt;
  hence 6 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 3 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;p&amp;quot; by (rule ccontr)}&lt;br /&gt;
thus  &amp;quot;((p ⟶ q) ⟶ p) ⟶ p&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
 {assume 2 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;¬p&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 3 1 by (rule notE)}&lt;br /&gt;
hence 5 : &amp;quot;q&amp;quot; by (rule ccontr)}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
proof(rule impI)&lt;br /&gt;
assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;¬¬p&amp;quot; using 1 by (rule notnotI)&lt;br /&gt;
have 3: &amp;quot;¬¬q&amp;quot; using assms 2 by (rule mt)&lt;br /&gt;
show  &amp;quot;q&amp;quot; using 3 by (rule notnotD)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
have 1 : &amp;quot;¬p ∨ p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬p ∨ p&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;¬p&amp;quot; &lt;br /&gt;
have 3 : &amp;quot;¬q ∨ q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬q ∨ q&amp;quot; using 3 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 4 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 5 : &amp;quot;¬p ∧ ¬q&amp;quot; using 2 4 by (rule conjI)&lt;br /&gt;
  have 6 : &amp;quot;False&amp;quot; using assms 5 by (rule notE)&lt;br /&gt;
  have 7 : &amp;quot;p ∨ q&amp;quot; using 6 by (rule FalseE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 8 : &amp;quot;q&amp;quot;&lt;br /&gt;
  have 9 : &amp;quot;p ∨ q&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
ultimately have &amp;quot;p ∨ q&amp;quot; by (rule disjE)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 10 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 11 : &amp;quot;p ∨ q&amp;quot; using 10 by (rule disjI1)}&lt;br /&gt;
ultimately show &amp;quot;p ∨ q&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
(*Otra forma*)&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;
proof -&lt;br /&gt;
have 1:&amp;quot;¬p | p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
show &amp;quot;p | q&amp;quot; using 1&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    {assume 2:&amp;quot;¬p&amp;quot;&lt;br /&gt;
      have 3:&amp;quot;¬q | q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
      show &amp;quot;p | q&amp;quot; using 3&lt;br /&gt;
        proof (rule disjE)&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;
            with 2 have 4:&amp;quot;¬p &amp;amp; ¬q&amp;quot; by (rule conjI)&lt;br /&gt;
            show &amp;quot;p | q&amp;quot; using assms 4 by (rule notE)}&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;
&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;¬p ∨ ¬q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
have 3 : &amp;quot;False&amp;quot; using assms 2 by (rule notE)}&lt;br /&gt;
hence 4 : &amp;quot;p&amp;quot; by (rule ccontr)&lt;br /&gt;
{assume 5 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;¬p ∨ ¬q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
have 7 : &amp;quot;False&amp;quot; using assms 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;q&amp;quot; by (rule ccontr)&lt;br /&gt;
show &amp;quot;p ∧ q&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
--**&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 2: &amp;quot;¬p∨¬q&amp;quot;using 1 by (rule disjI1)&lt;br /&gt;
have 3: &amp;quot;False&amp;quot; using assms 2 by (rule notE)}&lt;br /&gt;
hence 8: &amp;quot;p&amp;quot; by (rule ccontr)&lt;br /&gt;
{assume 4: &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;¬p∨¬q&amp;quot; using 4 by (rule disjI2)&lt;br /&gt;
have 6: &amp;quot;False&amp;quot; using assms 5 by (rule notE)}&lt;br /&gt;
hence 9: &amp;quot;q&amp;quot; by (rule ccontr)&lt;br /&gt;
show &amp;quot;p∧q&amp;quot; using 8 9 by (rule conjI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
have 1 : &amp;quot;¬p ∨ p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬p ∨ p&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;¬p ∨ ¬q&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 4 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 5 : &amp;quot;¬q ∨ q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬q ∨ q&amp;quot; using 5 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 6 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 7 : &amp;quot;¬p ∨ ¬q&amp;quot; using 6 by (rule disjI2)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 8 : &amp;quot;q&amp;quot;&lt;br /&gt;
  have 9 : &amp;quot;p ∧ q&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
  have 10 : &amp;quot;False&amp;quot; using assms 9 by (rule notE)&lt;br /&gt;
  have 11 : &amp;quot;¬p ∨ ¬q&amp;quot; using 10 by (rule FalseE)}&lt;br /&gt;
ultimately have &amp;quot;¬p ∨ ¬q&amp;quot; by (rule disjE)}&lt;br /&gt;
ultimately show &amp;quot;¬p ∨ ¬q&amp;quot; by (rule disjE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1 : &amp;quot;¬(p ⟶ q) ∨ (p ⟶ q)&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬(p ⟶ q) ∨ (p ⟶ q)&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;¬(p ⟶ q)&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 .}&lt;br /&gt;
  hence 6 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
  have 7 : &amp;quot;p&amp;quot; using 2 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;q⟶p&amp;quot; by (rule impI)&lt;br /&gt;
have 9 : &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 10 : &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
have 11 : &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; using 10 by (rule disjI1)}&lt;br /&gt;
ultimately show &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; by (rule disjE)&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>Albromgon</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_3&amp;diff=149</id>
		<title>Relación 3</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_3&amp;diff=149"/>
		<updated>2016-03-25T16:48:11Z</updated>

		<summary type="html">&lt;p&gt;Albromgon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang = &amp;quot;isar&amp;quot;&amp;gt;header {* R3: Deducción natural proposicional *}&lt;br /&gt;
&lt;br /&gt;
theory R3&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;
&lt;br /&gt;
proof -&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms(1,2) by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_1_b:&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(1) assms(2) by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;q&amp;quot; using assms(1,3) by (rule mp)&lt;br /&gt;
show &amp;quot;r&amp;quot; using assms(2)  1 by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;q&amp;quot; using assms(2,3) by (rule mp) &lt;br /&gt;
have 2: &amp;quot;q⟶r&amp;quot; using assms(1,3) by (rule mp)&lt;br /&gt;
show &amp;quot;r&amp;quot; using 2 1 by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have 2: &amp;quot;q&amp;quot; using assms(1) 1 ..&lt;br /&gt;
have 3: &amp;quot;r&amp;quot; using assms(2) 2 ..}&lt;br /&gt;
thus &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;q&amp;quot; using assms(1) 1 by (rule mp)&lt;br /&gt;
have 3 : &amp;quot;r&amp;quot; using assms(2) 2 by (rule mp)}&lt;br /&gt;
thus &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&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;
&lt;br /&gt;
{assume 1: &amp;quot;q&amp;quot;&lt;br /&gt;
{assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;q⟶r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
have  &amp;quot;r&amp;quot; using 3 1 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;(q⟶(p⟶r))&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p⟶q&amp;quot;&lt;br /&gt;
{assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;q⟶r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
have 4: &amp;quot;q&amp;quot; using 1 2 by (rule mp)&lt;br /&gt;
have &amp;quot;r&amp;quot; using 3 4 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;(p⟶q)⟶(p⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed &lt;br /&gt;
  &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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;q&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using assms .}&lt;br /&gt;
thus &amp;quot;q⟶p&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof- &lt;br /&gt;
{assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
have 3: &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
hence &amp;quot;q⟶p&amp;quot; ..}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶p)&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_8:&lt;br /&gt;
  &amp;quot;p ⟶ (q ⟶ p)&amp;quot;&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
hence &amp;quot;q⟶p&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶p)&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_8:&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 &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;
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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;q⟶r&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
have 3:&amp;quot;q&amp;quot; using assms 2 .. &lt;br /&gt;
have &amp;quot;r&amp;quot; using 1 3 ..}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; ..}&lt;br /&gt;
thus &amp;quot;(q⟶r)⟶(p⟶r) &amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;q⟶r&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using assms(1) 2 by (rule mp)&lt;br /&gt;
have 4 : &amp;quot;r&amp;quot; using 1 3 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;(q⟶r)⟶(p⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
 &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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;r&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
{assume 3:&amp;quot;p&amp;quot;&lt;br /&gt;
have 4:&amp;quot;q⟶(r⟶s)&amp;quot; using assms 3 ..&lt;br /&gt;
have 5: &amp;quot;r⟶s&amp;quot; using 4 2 ..&lt;br /&gt;
have 6: &amp;quot;s&amp;quot; using 5 1 ..}&lt;br /&gt;
hence &amp;quot;p⟶s&amp;quot; ..}&lt;br /&gt;
hence &amp;quot;q⟶(p⟶s)&amp;quot; ..}&lt;br /&gt;
thus &amp;quot;r⟶(q⟶(p⟶s))&amp;quot; ..&lt;br /&gt;
qed &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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;r&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;q&amp;quot;&lt;br /&gt;
{assume 3 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 4 : &amp;quot;q ⟶ (r ⟶ s)&amp;quot; using assms(1) 3 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r⟶s&amp;quot; using 4 2 by (rule mp)&lt;br /&gt;
have 6 : &amp;quot;s&amp;quot; using 5 1 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶s&amp;quot; by (rule impI)}&lt;br /&gt;
hence &amp;quot;q⟶(p⟶s)&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;r⟶(q⟶(p⟶s))&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
 assume  3: &amp;quot;p⟶(q⟶r)&amp;quot;&lt;br /&gt;
 show &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   1: &amp;quot;p&amp;quot;&lt;br /&gt;
    have 4:&amp;quot;q&amp;quot; using 2 1 ..&lt;br /&gt;
    have 5:&amp;quot;q⟶r&amp;quot; using 3 1 .. &lt;br /&gt;
    show &amp;quot;r&amp;quot; using 5 4 .. &lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&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;
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⟶r&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;q&amp;quot; using 2 3 by (rule mp)&lt;br /&gt;
have 6 : &amp;quot;r&amp;quot; using 4 5 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
hence &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;
&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
    {assume 3:&amp;quot;q&amp;quot;&lt;br /&gt;
      have 4:&amp;quot;p&amp;quot; using 1 .&lt;br /&gt;
      have 5:&amp;quot;q&amp;quot; using 3 .&lt;br /&gt;
      then have 6:&amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
      have &amp;quot;r&amp;quot; using assms 6 ..}&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;
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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;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 .}&lt;br /&gt;
hence 5 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
have 6 : &amp;quot;r&amp;quot; using assms(1) 5 by (rule mp)}&lt;br /&gt;
hence &amp;quot;q⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p∧q&amp;quot; using assms(1) assms(2) by (rule conjI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
show &amp;quot;p ∧ q&amp;quot; using assms(1,2) by (rule conjI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
qed&lt;br /&gt;
 &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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1:&amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 2:&amp;quot;q∧r&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
then have 3:&amp;quot;q&amp;quot; by (rule conjunct1)&lt;br /&gt;
have 4:&amp;quot;r&amp;quot; using 2 by (rule conjunct2)&lt;br /&gt;
have &amp;quot;p∧q&amp;quot; using 1 3 by (rule conjI)&lt;br /&gt;
then show &amp;quot;(p∧q)∧r&amp;quot; using 4 by (rule conjI)&lt;br /&gt;
qed  &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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1:&amp;quot;p∧q&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 2:&amp;quot;r&amp;quot; using assms by (rule conjunct2)&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 1 by (rule conjunct2)&lt;br /&gt;
have 5:&amp;quot;q∧r&amp;quot; using 4 2 by (rule conjI)&lt;br /&gt;
show &amp;quot;p∧(q∧r)&amp;quot; using 3 5 by (rule conjI)&lt;br /&gt;
qed  &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;
proof-&lt;br /&gt;
have 1:&amp;quot;p&amp;quot; using assms ..&lt;br /&gt;
have 2:&amp;quot;q&amp;quot; using assms ..&lt;br /&gt;
then show &amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;q&amp;quot; using assms by (rule conjunct2)}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
have 1:&amp;quot;p⟶q&amp;quot; using assms ..&lt;br /&gt;
have 2:&amp;quot;p⟶r&amp;quot; using assms ..&lt;br /&gt;
{assume 3:&amp;quot;p&amp;quot;&lt;br /&gt;
have 4:&amp;quot;q&amp;quot; using 1 3 ..&lt;br /&gt;
have 5:&amp;quot;r&amp;quot; using 2 3 ..&lt;br /&gt;
have 6:&amp;quot;q∧r&amp;quot; using 4 5 ..}&lt;br /&gt;
thus &amp;quot;p ⟶ q ∧ r&amp;quot;  ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p⟶q&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;p⟶r&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;q&amp;quot; using 2 1 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using 3 1 by (rule mp)&lt;br /&gt;
have 6 : &amp;quot;q ∧ r&amp;quot; using 4 5 by (rule conjI)}&lt;br /&gt;
thus &amp;quot;p⟶(q ∧ r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: p&lt;br /&gt;
have 2:&amp;quot;q∧r&amp;quot; using assms 1 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using 2 ..}&lt;br /&gt;
hence 1:&amp;quot;p⟶r&amp;quot; ..&lt;br /&gt;
{assume 1: p&lt;br /&gt;
have 2:&amp;quot;q∧r&amp;quot; using assms 1 ..&lt;br /&gt;
have &amp;quot;q&amp;quot; using 2 ..}&lt;br /&gt;
hence 2:&amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
then show &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot; using 1 ..&lt;br /&gt;
qed &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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot; &lt;br /&gt;
have 2 : &amp;quot;q ∧ r&amp;quot; using assms 1 by (rule mp)&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 2 by (rule conjunct1)}&lt;br /&gt;
hence 4 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
{assume 5 : &amp;quot;p&amp;quot; &lt;br /&gt;
have 6 : &amp;quot;q ∧ r&amp;quot; using assms 5 by (rule mp)&lt;br /&gt;
have 7 : &amp;quot;r&amp;quot; using 6 by (rule conjunct2)}&lt;br /&gt;
hence 8 : &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
show &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p∧q&amp;quot;&lt;br /&gt;
have 2:&amp;quot;p&amp;quot; using 1 ..&lt;br /&gt;
have 3:&amp;quot;q⟶r&amp;quot; using assms 2 ..&lt;br /&gt;
have 4: &amp;quot;q&amp;quot; using 1 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using 3 4 ..}&lt;br /&gt;
thus &amp;quot;p∧q ⟶r&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;q⟶r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using 4 3 by (rule mp)}&lt;br /&gt;
thus &amp;quot;p ∧ q ⟶ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
have 3:&amp;quot;p∧q&amp;quot; using 1 2 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using assms 3 ..}&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;
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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;p ∧ q&amp;quot; using 1 2 by (rule conjI)&lt;br /&gt;
have 4 : &amp;quot;r&amp;quot; using assms 3 by (rule mp)}&lt;br /&gt;
hence &amp;quot;q⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_22:&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;
  show &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
    proof (rule impI)&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;
       show &amp;quot;r&amp;quot; using 1 4 by (rule mp)&lt;br /&gt;
    qed&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p∧q&amp;quot;&lt;br /&gt;
have 2:&amp;quot;p&amp;quot; using 1 ..&lt;br /&gt;
{assume &amp;quot;p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;q&amp;quot; using 1 ..}&lt;br /&gt;
hence 4:&amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using assms 4 ..}&lt;br /&gt;
thus &amp;quot;p∧q ⟶r&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 1 by (rule conjunct2)}&lt;br /&gt;
hence 4 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using assms 4 by (rule mp)}&lt;br /&gt;
thus &amp;quot;p ∧ q ⟶ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p⟶q&amp;quot;&lt;br /&gt;
have 2:&amp;quot;p&amp;quot; using assms ..&lt;br /&gt;
have 3:&amp;quot;q⟶r&amp;quot; using assms..&lt;br /&gt;
have 4:&amp;quot;q&amp;quot; using 1 2 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using 3 4 ..}&lt;br /&gt;
thus &amp;quot;(p⟶q)⟶r&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p⟶q&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;q⟶r&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;q&amp;quot; using 1 2 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using 3 4 by (rule mp)}&lt;br /&gt;
thus &amp;quot;(p⟶q)⟶r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_24:&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;
    show &amp;quot;r&amp;quot; using 5 4 by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p∨q&amp;quot; using assms by (rule disjI1)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p∨q&amp;quot; using assms by (rule disjI2)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;p ∨ q&amp;quot; using assms by this&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∨ p&amp;quot; using 2 by (rule disjI2) }&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume 3: &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∨ p&amp;quot; using 3 by (rule disjI1) }&lt;br /&gt;
  ultimately show &amp;quot;q ∨ p&amp;quot; by (rule disjE) &lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_27:&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 2:&amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;q ∨ p&amp;quot; using 2 by (rule disjI2)}&lt;br /&gt;
next&lt;br /&gt;
  {assume 4:&amp;quot;q&amp;quot;&lt;br /&gt;
    show &amp;quot;q ∨ p&amp;quot; using 4 by (rule disjI1)}         &lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume  &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;p ∨ r&amp;quot;  using 1 by (rule disjI1)}&lt;br /&gt;
  moreover &lt;br /&gt;
  { assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
    have 3:&amp;quot;r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
    have &amp;quot;p ∨ r&amp;quot; using 3 by (rule disjI2) }&lt;br /&gt;
   ultimately have  &amp;quot; p ∨ r&amp;quot; by (rule disjE)}&lt;br /&gt;
thus  &amp;quot;p ∨ q ⟶ p ∨ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_28:&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 2:&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 3:&amp;quot;p&amp;quot;&lt;br /&gt;
        show &amp;quot;p ∨ r&amp;quot; using 3 by (rule disjI1)}&lt;br /&gt;
     next&lt;br /&gt;
      {assume 4:&amp;quot;q&amp;quot;&lt;br /&gt;
         have 5:&amp;quot;r&amp;quot; using 1 4 by (rule mp)&lt;br /&gt;
         show &amp;quot;p ∨ r&amp;quot; using 5 by (rule disjI2)}&lt;br /&gt;
     qed&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;p ∨ p&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
  have  &amp;quot;p&amp;quot; using 1 by this}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
  have  &amp;quot;p&amp;quot; using 2 by this}&lt;br /&gt;
ultimately show  &amp;quot;p&amp;quot; by (rule disjE)&lt;br /&gt;
&lt;br /&gt;
qed&lt;br /&gt;
text{* Otra forma:&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;
qed}&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;
proof-&lt;br /&gt;
have &amp;quot;p ∨ p&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using 2 .}&lt;br /&gt;
ultimately show &amp;quot;p&amp;quot; by (rule disjE)&lt;br /&gt;
qed*}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_29:&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 2:&amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;p&amp;quot; using 2 by this}&lt;br /&gt;
next&lt;br /&gt;
  {assume 3:&amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;p&amp;quot; using 3 by this}&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
 show  &amp;quot;p ∨ p&amp;quot; using assms by (rule disjI1)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text{* Otra forma:&lt;br /&gt;
using assms&lt;br /&gt;
proof&lt;br /&gt;
qed}&lt;br /&gt;
 &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;
proof -&lt;br /&gt;
 have &amp;quot;p ∨ (q ∨ r)&amp;quot; using assms(1) by this&lt;br /&gt;
moreover &lt;br /&gt;
    { assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
       have 2: &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
       have 3: &amp;quot;(p ∨ q) ∨ r&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
moreover&lt;br /&gt;
    { assume 4: &amp;quot;q ∨ r&amp;quot;&lt;br /&gt;
      moreover&lt;br /&gt;
      { assume 5: &amp;quot;q&amp;quot;&lt;br /&gt;
        have 6: &amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
        have 7: &amp;quot;(p ∨ q) ∨ r&amp;quot; using 6 by (rule disjI1)}&lt;br /&gt;
      moreover&lt;br /&gt;
      { assume 8: &amp;quot;r&amp;quot;&lt;br /&gt;
        have 9: &amp;quot;(p ∨ q) ∨ r&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
      ultimately have &amp;quot;(p ∨ q) ∨ r&amp;quot; by (rule disjE)}&lt;br /&gt;
  ultimately show &amp;quot;(p ∨ q) ∨ r&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
 &lt;br /&gt;
text{* Otra forma:&lt;br /&gt;
using assms&lt;br /&gt;
proof&lt;br /&gt;
assume &amp;quot;p&amp;quot;&lt;br /&gt;
then have &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 1:&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;
then have &amp;quot;p∨q&amp;quot; ..&lt;br /&gt;
thus 1: &amp;quot;(p ∨ q) ∨ r&amp;quot; ..&lt;br /&gt;
next&lt;br /&gt;
assume &amp;quot;r&amp;quot;&lt;br /&gt;
then have 2:&amp;quot;(p∨q)∨r&amp;quot; ..&lt;br /&gt;
then have &amp;quot;q∨r⟶(p ∨ q) ∨ r&amp;quot; .. &lt;br /&gt;
thus &amp;quot;(p ∨ q) ∨ r&amp;quot; using 1 ..&lt;br /&gt;
qed}*}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_31:&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 2:&amp;quot;p&amp;quot;&lt;br /&gt;
    have  3:&amp;quot;p ∨ q&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
    show  &amp;quot;(p ∨ q) ∨ r&amp;quot; using 3 by (rule disjI1)}&lt;br /&gt;
next&lt;br /&gt;
   {assume 4:&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 5:&amp;quot;q&amp;quot;&lt;br /&gt;
           have 6:&amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
           show &amp;quot;(p ∨ q) ∨ r&amp;quot; using 6 by (rule disjI1)}&lt;br /&gt;
      next&lt;br /&gt;
        {assume 7:&amp;quot;r&amp;quot;&lt;br /&gt;
           show &amp;quot;(p ∨ q) ∨ r&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
      qed}&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
 have &amp;quot;(p ∨ q) ∨ r&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 1: &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
     moreover&lt;br /&gt;
     { assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
       have 3: &amp;quot;p ∨ (q ∨ r)&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
     moreover&lt;br /&gt;
     { assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
       have 5: &amp;quot;q ∨ r&amp;quot; using 4 by (rule disjI1)&lt;br /&gt;
       have 6: &amp;quot;p ∨ (q ∨ r)&amp;quot; using 5 by (rule disjI2)}&lt;br /&gt;
     ultimately have &amp;quot;p ∨ (q ∨ r)&amp;quot; by (rule disjE)}&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 7: &amp;quot;r&amp;quot;&lt;br /&gt;
     have 8: &amp;quot;q ∨ r&amp;quot; using 7 by (rule disjI2)&lt;br /&gt;
     have 9: &amp;quot;p ∨ (q ∨ r)&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
ultimately show &amp;quot;p ∨ (q ∨ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_32:&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 2:&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 3:&amp;quot;p&amp;quot;&lt;br /&gt;
         show &amp;quot;p ∨ (q ∨ r)&amp;quot; using 3 by (rule disjI1)}&lt;br /&gt;
      next&lt;br /&gt;
       {assume 4:&amp;quot;q&amp;quot;&lt;br /&gt;
         have  5:&amp;quot;q ∨ r&amp;quot;    using 4 by (rule disjI1)&lt;br /&gt;
         show &amp;quot;p ∨ (q ∨ r)&amp;quot; using 5 by (rule disjI2)} &lt;br /&gt;
       qed}&lt;br /&gt;
next&lt;br /&gt;
  {assume 6:&amp;quot;r&amp;quot;&lt;br /&gt;
     have 7:&amp;quot;q ∨ r&amp;quot; using 6 by (rule disjI2)&lt;br /&gt;
     show &amp;quot;p ∨ (q ∨ r)&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
 have 1: &amp;quot;p&amp;quot; using assms(1) by (rule conjunct1)&lt;br /&gt;
    have 2: &amp;quot;q ∨ r&amp;quot; using assms(1) by (rule conjunct2)&lt;br /&gt;
moreover&lt;br /&gt;
    { assume 3: &amp;quot;q&amp;quot;&lt;br /&gt;
      have 4: &amp;quot;p ∧ q&amp;quot; using 1 3 by (rule conjI)&lt;br /&gt;
      have 5: &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 4 by (rule disjI1)}&lt;br /&gt;
moreover&lt;br /&gt;
    { assume 6: &amp;quot;r&amp;quot;&lt;br /&gt;
      have 7: &amp;quot;p ∧ r&amp;quot; using 1 6 by (rule conjI)&lt;br /&gt;
      have 8: &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
ultimately show &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_33:&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 5:&amp;quot;p ∧ q&amp;quot; using 2 4 by (rule conjI)&lt;br /&gt;
         show &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 5 by (rule disjI1)}&lt;br /&gt;
    next&lt;br /&gt;
      {assume 6:&amp;quot;r&amp;quot;&lt;br /&gt;
         have 7:&amp;quot;p ∧ r&amp;quot; using 2 6 by (rule conjI)&lt;br /&gt;
         show &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
    qed&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
 have &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 1: &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
     have 2: &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
     have 3: &amp;quot;q ∨ r&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
     have 4: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
     have 5: &amp;quot;p ∧ (q ∨ r)&amp;quot; using 4 3 by (rule conjI)}&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 6: &amp;quot;p ∧ r&amp;quot;&lt;br /&gt;
     have 7: &amp;quot;r&amp;quot; using 6 by (rule conjunct2)&lt;br /&gt;
     have 8: &amp;quot;q ∨ r&amp;quot; using 7 by (rule disjI2)&lt;br /&gt;
     have 9: &amp;quot;p&amp;quot; using 6 by (rule conjunct1)&lt;br /&gt;
     have 10: &amp;quot;p ∧ (q ∨ r)&amp;quot; using 9 8 by (rule conjI)}&lt;br /&gt;
ultimately show &amp;quot;p ∧ (q ∨ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_34:&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;
using 1&lt;br /&gt;
proof (rule disjE)&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 4 by (rule disjI1)&lt;br /&gt;
     show &amp;quot;p ∧ (q ∨ r)&amp;quot; using 3 5 by (rule conjI)}&lt;br /&gt;
next&lt;br /&gt;
  {assume 6:&amp;quot;p ∧ r&amp;quot;&lt;br /&gt;
     have 7:&amp;quot;p&amp;quot;     using 6 by (rule conjunct1)&lt;br /&gt;
     have 8:&amp;quot;r&amp;quot;     using 6 by (rule conjunct2)&lt;br /&gt;
     have 9:&amp;quot;q ∨ r&amp;quot; using 8 by (rule disjI2)&lt;br /&gt;
     show &amp;quot;p ∧ (q ∨ r)&amp;quot; using 7 9 by (rule conjI)}&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
have &amp;quot;p ∨ (q ∧ r)&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
     have 2: &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
     have 3: &amp;quot;p ∨ r&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
     have 4: &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 2 3 by (rule conjI)}&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 5: &amp;quot;q ∧ r&amp;quot;&lt;br /&gt;
     have 6: &amp;quot;q&amp;quot; using 5 by (rule conjunct1)&lt;br /&gt;
     have 7: &amp;quot;p ∨ q&amp;quot; using 6 by (rule disjI2)&lt;br /&gt;
     have 8: &amp;quot;r&amp;quot; using 5 by (rule conjunct2)&lt;br /&gt;
     have 9: &amp;quot;p ∨ r&amp;quot; using 8 by (rule disjI2)&lt;br /&gt;
     have 10: &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 7 9 by (rule conjI)}&lt;br /&gt;
ultimately show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_35:&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;
using 1&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  {assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
     have 3:&amp;quot;p ∨ q&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
     have 4:&amp;quot;p ∨ r&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
     show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 3 4 by (rule conjI)}&lt;br /&gt;
next&lt;br /&gt;
  {assume 5:&amp;quot;q ∧ r&amp;quot;&lt;br /&gt;
     have 6:&amp;quot;q&amp;quot;     using 5 by (rule conjunct1)&lt;br /&gt;
     have 7:&amp;quot;r&amp;quot;     using 5 by (rule conjunct2)&lt;br /&gt;
     have 8:&amp;quot;p ∨ q&amp;quot; using 6 by (rule disjI2)&lt;br /&gt;
     have 9:&amp;quot;p ∨ r&amp;quot; using 7 by (rule disjI2)&lt;br /&gt;
     show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 8 9 by (rule conjI)}&lt;br /&gt;
qed&lt;br /&gt;
&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;
proof-&lt;br /&gt;
have &amp;quot;(p ∨ q)&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
moreover&lt;br /&gt;
   {assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;p ∨ (q ∧ r)&amp;quot; using 1 by (rule disjI1) }&lt;br /&gt;
moreover&lt;br /&gt;
    {assume 1:&amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;(p ∨ r)&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
    moreover &lt;br /&gt;
    {assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
      have &amp;quot;p ∨ (q ∧ r)&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
    moreover &lt;br /&gt;
    {assume 2:&amp;quot;r&amp;quot;&lt;br /&gt;
      have 3:&amp;quot;(q ∧ r)&amp;quot; using 1 2 by (rule conjI)&lt;br /&gt;
      have &amp;quot;p ∨ (q ∧ r)&amp;quot; using 3 by (rule disjI2)}&lt;br /&gt;
    ultimately have &amp;quot;p ∨ (q ∧ r)&amp;quot; by (rule disjE)}&lt;br /&gt;
ultimately show &amp;quot;p ∨ (q ∧ r)&amp;quot;  by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
------------------- ----------&lt;br /&gt;
&lt;br /&gt;
 proof-&lt;br /&gt;
have 1: &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 3: &amp;quot;p&amp;quot; &lt;br /&gt;
show &amp;quot;p∨(q∧r)&amp;quot; using 3 by ( rule disjI1)}&lt;br /&gt;
next&lt;br /&gt;
{assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
have 5:&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 6: &amp;quot;p&amp;quot;&lt;br /&gt;
show &amp;quot;p∨(q∧r)&amp;quot; using 6 by (rule disjI1)}&lt;br /&gt;
next&lt;br /&gt;
{assume 7: &amp;quot;r&amp;quot;&lt;br /&gt;
have 8: &amp;quot;q∧r&amp;quot; using 4 7 by (rule conjI)&lt;br /&gt;
show &amp;quot;p∨(q∧r)&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
qed}&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume  &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
moreover &lt;br /&gt;
 {assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
  have 2:&amp;quot;(p ⟶ r)&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
  have &amp;quot;r&amp;quot; using 2 1 by (rule mp)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 1:&amp;quot;q&amp;quot;&lt;br /&gt;
  have 2:&amp;quot;(q ⟶ r)&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
  have &amp;quot;r&amp;quot; using 2 1 by (rule mp)}&lt;br /&gt;
ultimately have &amp;quot;r&amp;quot; by (rule disjE)}&lt;br /&gt;
thus  &amp;quot;p ∨ q ⟶ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_37:&lt;br /&gt;
  assumes 1:&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 2:&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 3:&amp;quot;p&amp;quot;&lt;br /&gt;
         have 4:&amp;quot;p ⟶ r&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
         show &amp;quot;r&amp;quot;       using 4 3 by (rule mp)}&lt;br /&gt;
    next&lt;br /&gt;
     {assume 5:&amp;quot;q&amp;quot;&lt;br /&gt;
        have 6:&amp;quot;q ⟶ r&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
        show &amp;quot;r&amp;quot;       using 6 5 by (rule mp)}&lt;br /&gt;
   qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
have 3 : &amp;quot;r&amp;quot; using assms 2 by (rule mp)}&lt;br /&gt;
hence 4 : &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
{assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
have 7 : &amp;quot;r&amp;quot; using assms 6 by (rule mp)}&lt;br /&gt;
hence 8 : &amp;quot;q⟶r&amp;quot; by (rule impI)&lt;br /&gt;
show &amp;quot;(p ⟶ r) ∧ (q ⟶ r)&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&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;
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;
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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;q&amp;quot; using assms 1 ..}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;False&amp;quot; using assms 1 by (rule notE)&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 2 by (rule FalseE)}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have 2: &amp;quot;q&amp;quot; using assms 1 by (rule notE)}&lt;br /&gt;
thus  &amp;quot;p ⟶ q&amp;quot; by ( rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1:&amp;quot;¬q&amp;quot;&lt;br /&gt;
have &amp;quot;¬p&amp;quot; using assms 1 by (rule mt)}&lt;br /&gt;
thus &amp;quot;¬q ⟶ ¬p&amp;quot; ..&lt;br /&gt;
qed&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;
&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 1:&amp;quot;q&amp;quot;&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms(2) 1 ..&lt;br /&gt;
qed  &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;
proof-&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 3 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 4 : &amp;quot;¬q&amp;quot; using assms(2) .&lt;br /&gt;
have 5 : &amp;quot;False&amp;quot; using 4 3 by (rule notE)&lt;br /&gt;
have 6 : &amp;quot;p&amp;quot; using 5 by (rule FalseE)}&lt;br /&gt;
ultimately show &amp;quot;p&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
--------**---&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have &amp;quot;p&amp;quot; using 1 by this}&lt;br /&gt;
next&lt;br /&gt;
{assume 2: &amp;quot;q&amp;quot;&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms(2) 2 by (rule notE)}&lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 43. 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;
&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof&lt;br /&gt;
assume &amp;quot;q&amp;quot;&lt;br /&gt;
thus &amp;quot;q&amp;quot; .&lt;br /&gt;
next&lt;br /&gt;
assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms(2) 1 ..&lt;br /&gt;
qed  &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;
proof-&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;¬p&amp;quot; using assms(2) .&lt;br /&gt;
have 3 : &amp;quot;False&amp;quot; using 2 1 by (rule notE)&lt;br /&gt;
have 4 : &amp;quot;q&amp;quot; using 3 by (rule FalseE)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;q&amp;quot; using 5 .}&lt;br /&gt;
ultimately show &amp;quot;q&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**--&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms(2) 1 by (rule notE)&lt;br /&gt;
next&lt;br /&gt;
assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using 2 by this&lt;br /&gt;
qed&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;
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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;¬p ∧ ¬q&amp;quot;&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;p&amp;quot; &lt;br /&gt;
  have 3 : &amp;quot;¬p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;q&amp;quot; &lt;br /&gt;
  have 6 : &amp;quot;¬q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 6 5 by (rule notE)}&lt;br /&gt;
ultimately have 8 : &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(¬p ∧ ¬q)&amp;quot;  by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 2 :&amp;quot;¬p∧¬q&amp;quot;&lt;br /&gt;
show False &lt;br /&gt;
using assms&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have 3: &amp;quot;¬p&amp;quot; using 2 by (rule conjunct1)&lt;br /&gt;
show False using 3 1 by (rule notE)}&lt;br /&gt;
{assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;¬q&amp;quot; using 2 by (rule conjunct2)&lt;br /&gt;
show False using 5 4 by (rule notE)}&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
have &amp;quot;¬p ∨ ¬q&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 2 3 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 6 : &amp;quot;q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 5 6 by (rule notE)}&lt;br /&gt;
ultimately have &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(¬p ∨ ¬q)&amp;quot; by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(¬p ∨ ¬q)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
assume 1: &amp;quot;¬p∨¬q&amp;quot;&lt;br /&gt;
show False &lt;br /&gt;
using 1&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
assume 2:  &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
show False using 2 3 by (rule notE)&lt;br /&gt;
next&lt;br /&gt;
assume 4: &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
show False using 4 5 by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
have 3 : &amp;quot;False&amp;quot; using assms 2 by (rule notE)}&lt;br /&gt;
hence 4 : &amp;quot;¬p&amp;quot; by (rule notI)&lt;br /&gt;
{assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
have 7 : &amp;quot;False&amp;quot; using assms 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;¬q&amp;quot; by (rule notI)&lt;br /&gt;
show &amp;quot;¬p ∧ ¬q&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
(*Otra opción para usar tercio excluso*)&lt;br /&gt;
&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 -&lt;br /&gt;
  have 1:&amp;quot;¬p | p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
  show &amp;quot;¬p &amp;amp; ¬q&amp;quot;&lt;br /&gt;
  using 1&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    {assume 2:&amp;quot;¬p&amp;quot;&lt;br /&gt;
      have 3:&amp;quot;¬q | q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
      show &amp;quot;¬p &amp;amp; ¬q&amp;quot;&lt;br /&gt;
      using 3&lt;br /&gt;
      proof (rule disjE)&lt;br /&gt;
        {assume 4:&amp;quot;¬q&amp;quot;&lt;br /&gt;
          with 2 show &amp;quot;¬p &amp;amp; ¬q&amp;quot; by (rule conjI)}&lt;br /&gt;
        next&lt;br /&gt;
        {assume &amp;quot;q&amp;quot;&lt;br /&gt;
          then have &amp;quot;p | q&amp;quot; by (rule disjI2)&lt;br /&gt;
          with assms show &amp;quot;¬p &amp;amp; ¬q&amp;quot; by (rule notE)}&lt;br /&gt;
      qed&lt;br /&gt;
      }&lt;br /&gt;
    next&lt;br /&gt;
    {assume 5:&amp;quot;p&amp;quot;&lt;br /&gt;
      then have &amp;quot;p | q&amp;quot; by (rule disjI1)&lt;br /&gt;
      with assms show &amp;quot;¬p &amp;amp; ¬q&amp;quot; by (rule notE)&lt;br /&gt;
      }&lt;br /&gt;
  qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;¬p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
  have 6 : &amp;quot;¬q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
  have 6 : &amp;quot;False&amp;quot; using 6 5 by (rule notE)}&lt;br /&gt;
ultimately have &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(p ∨ q)&amp;quot; by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 1: &amp;quot;p∨q&amp;quot;&lt;br /&gt;
show False&lt;br /&gt;
using 1 &lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
{assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
have 3:&amp;quot;¬p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
show &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
next&lt;br /&gt;
{assume 5:&amp;quot;q&amp;quot;&lt;br /&gt;
have 6:&amp;quot;¬q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
show &amp;quot;False&amp;quot; using 6 5 by (rule notE)}&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
have &amp;quot;¬p ∨ ¬q&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 2 3 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 6 : &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 5 6 by (rule notE)}&lt;br /&gt;
ultimately have &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(p ∧ q)&amp;quot; by (rule notI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 1:&amp;quot;p∧q&amp;quot;&lt;br /&gt;
show False&lt;br /&gt;
using assms&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
assume 2:&amp;quot;¬p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
show False using 2 3 by (rule notE)&lt;br /&gt;
next&lt;br /&gt;
assume 4: &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
show False using 4 5 by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ ¬p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;¬p&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
thus &amp;quot;¬(p ∧ ¬p)&amp;quot; by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 1: &amp;quot;p∧¬p&amp;quot;&lt;br /&gt;
have 2: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
have 3: &amp;quot;¬p&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
show False using 3 2 by (rule notE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1 : &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 2 : &amp;quot;¬p&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
show &amp;quot;q&amp;quot; using 2 1 by (rule notE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms by (rule notnotD)&lt;br /&gt;
qed&lt;br /&gt;
&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;
proof(rule ccontr)&lt;br /&gt;
assume 1: &amp;quot;¬p&amp;quot;&lt;br /&gt;
show False using assms 1 by (rule notE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;¬p∨p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have 2: &amp;quot;¬p∨p&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 3: &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 4: &amp;quot;p∨¬p&amp;quot; using 3 by (rule disjI2)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 5: &amp;quot;p&amp;quot;&lt;br /&gt;
have 6: &amp;quot;p∨¬p&amp;quot; using 5 by (rule disjI1)}&lt;br /&gt;
ultimately show &amp;quot;p∨¬p&amp;quot; by (rule disjE)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;(p ⟶ q) ⟶ p&amp;quot;&lt;br /&gt;
 {assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;¬(p⟶q)&amp;quot; using 1 2 by (rule mt)&lt;br /&gt;
    {assume 4 : &amp;quot;p&amp;quot;&lt;br /&gt;
     have 5 : &amp;quot;q&amp;quot; using 2 4 by (rule notE)}&lt;br /&gt;
  hence 6 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 3 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;p&amp;quot; by (rule ccontr)}&lt;br /&gt;
thus  &amp;quot;((p ⟶ q) ⟶ p) ⟶ p&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
 {assume 2 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;¬p&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 3 1 by (rule notE)}&lt;br /&gt;
hence 5 : &amp;quot;q&amp;quot; by (rule ccontr)}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
proof(rule impI)&lt;br /&gt;
assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;¬¬p&amp;quot; using 1 by (rule notnotI)&lt;br /&gt;
have 3: &amp;quot;¬¬q&amp;quot; using assms 2 by (rule mt)&lt;br /&gt;
show  &amp;quot;q&amp;quot; using 3 by (rule notnotD)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
have 1 : &amp;quot;¬p ∨ p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬p ∨ p&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;¬p&amp;quot; &lt;br /&gt;
have 3 : &amp;quot;¬q ∨ q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬q ∨ q&amp;quot; using 3 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 4 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 5 : &amp;quot;¬p ∧ ¬q&amp;quot; using 2 4 by (rule conjI)&lt;br /&gt;
  have 6 : &amp;quot;False&amp;quot; using assms 5 by (rule notE)&lt;br /&gt;
  have 7 : &amp;quot;p ∨ q&amp;quot; using 6 by (rule FalseE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 8 : &amp;quot;q&amp;quot;&lt;br /&gt;
  have 9 : &amp;quot;p ∨ q&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
ultimately have &amp;quot;p ∨ q&amp;quot; by (rule disjE)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 10 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 11 : &amp;quot;p ∨ q&amp;quot; using 10 by (rule disjI1)}&lt;br /&gt;
ultimately show &amp;quot;p ∨ q&amp;quot; by (rule disjE)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;¬p ∨ ¬q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
have 3 : &amp;quot;False&amp;quot; using assms 2 by (rule notE)}&lt;br /&gt;
hence 4 : &amp;quot;p&amp;quot; by (rule ccontr)&lt;br /&gt;
{assume 5 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;¬p ∨ ¬q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
have 7 : &amp;quot;False&amp;quot; using assms 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;q&amp;quot; by (rule ccontr)&lt;br /&gt;
show &amp;quot;p ∧ q&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
--**&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 2: &amp;quot;¬p∨¬q&amp;quot;using 1 by (rule disjI1)&lt;br /&gt;
have 3: &amp;quot;False&amp;quot; using assms 2 by (rule notE)}&lt;br /&gt;
hence 8: &amp;quot;p&amp;quot; by (rule ccontr)&lt;br /&gt;
{assume 4: &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;¬p∨¬q&amp;quot; using 4 by (rule disjI2)&lt;br /&gt;
have 6: &amp;quot;False&amp;quot; using assms 5 by (rule notE)}&lt;br /&gt;
hence 9: &amp;quot;q&amp;quot; by (rule ccontr)&lt;br /&gt;
show &amp;quot;p∧q&amp;quot; using 8 9 by (rule conjI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
have 1 : &amp;quot;¬p ∨ p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬p ∨ p&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;¬p ∨ ¬q&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 4 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 5 : &amp;quot;¬q ∨ q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬q ∨ q&amp;quot; using 5 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 6 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 7 : &amp;quot;¬p ∨ ¬q&amp;quot; using 6 by (rule disjI2)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 8 : &amp;quot;q&amp;quot;&lt;br /&gt;
  have 9 : &amp;quot;p ∧ q&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
  have 10 : &amp;quot;False&amp;quot; using assms 9 by (rule notE)&lt;br /&gt;
  have 11 : &amp;quot;¬p ∨ ¬q&amp;quot; using 10 by (rule FalseE)}&lt;br /&gt;
ultimately have &amp;quot;¬p ∨ ¬q&amp;quot; by (rule disjE)}&lt;br /&gt;
ultimately show &amp;quot;¬p ∨ ¬q&amp;quot; by (rule disjE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1 : &amp;quot;¬(p ⟶ q) ∨ (p ⟶ q)&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬(p ⟶ q) ∨ (p ⟶ q)&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;¬(p ⟶ q)&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 .}&lt;br /&gt;
  hence 6 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
  have 7 : &amp;quot;p&amp;quot; using 2 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;q⟶p&amp;quot; by (rule impI)&lt;br /&gt;
have 9 : &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 10 : &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
have 11 : &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; using 10 by (rule disjI1)}&lt;br /&gt;
ultimately show &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; by (rule disjE)&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>Albromgon</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_3&amp;diff=148</id>
		<title>Relación 3</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_3&amp;diff=148"/>
		<updated>2016-03-25T16:36:15Z</updated>

		<summary type="html">&lt;p&gt;Albromgon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang = &amp;quot;isar&amp;quot;&amp;gt;header {* R3: Deducción natural proposicional *}&lt;br /&gt;
&lt;br /&gt;
theory R3&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;
&lt;br /&gt;
proof -&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms(1,2) by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_1_b:&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(1) assms(2) by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;q&amp;quot; using assms(1,3) by (rule mp)&lt;br /&gt;
show &amp;quot;r&amp;quot; using assms(2)  1 by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;q&amp;quot; using assms(2,3) by (rule mp) &lt;br /&gt;
have 2: &amp;quot;q⟶r&amp;quot; using assms(1,3) by (rule mp)&lt;br /&gt;
show &amp;quot;r&amp;quot; using 2 1 by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have 2: &amp;quot;q&amp;quot; using assms(1) 1 ..&lt;br /&gt;
have 3: &amp;quot;r&amp;quot; using assms(2) 2 ..}&lt;br /&gt;
thus &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;q&amp;quot; using assms(1) 1 by (rule mp)&lt;br /&gt;
have 3 : &amp;quot;r&amp;quot; using assms(2) 2 by (rule mp)}&lt;br /&gt;
thus &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&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;
&lt;br /&gt;
{assume 1: &amp;quot;q&amp;quot;&lt;br /&gt;
{assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;q⟶r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
have  &amp;quot;r&amp;quot; using 3 1 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;(q⟶(p⟶r))&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p⟶q&amp;quot;&lt;br /&gt;
{assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;q⟶r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
have 4: &amp;quot;q&amp;quot; using 1 2 by (rule mp)&lt;br /&gt;
have &amp;quot;r&amp;quot; using 3 4 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;(p⟶q)⟶(p⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed &lt;br /&gt;
  &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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;q&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using assms .}&lt;br /&gt;
thus &amp;quot;q⟶p&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof- &lt;br /&gt;
{assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
have 3: &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
hence &amp;quot;q⟶p&amp;quot; ..}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶p)&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_8:&lt;br /&gt;
  &amp;quot;p ⟶ (q ⟶ p)&amp;quot;&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
hence &amp;quot;q⟶p&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶p)&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_8:&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 &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;
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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;q⟶r&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
have 3:&amp;quot;q&amp;quot; using assms 2 .. &lt;br /&gt;
have &amp;quot;r&amp;quot; using 1 3 ..}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; ..}&lt;br /&gt;
thus &amp;quot;(q⟶r)⟶(p⟶r) &amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;q⟶r&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using assms(1) 2 by (rule mp)&lt;br /&gt;
have 4 : &amp;quot;r&amp;quot; using 1 3 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;(q⟶r)⟶(p⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
 &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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;r&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
{assume 3:&amp;quot;p&amp;quot;&lt;br /&gt;
have 4:&amp;quot;q⟶(r⟶s)&amp;quot; using assms 3 ..&lt;br /&gt;
have 5: &amp;quot;r⟶s&amp;quot; using 4 2 ..&lt;br /&gt;
have 6: &amp;quot;s&amp;quot; using 5 1 ..}&lt;br /&gt;
hence &amp;quot;p⟶s&amp;quot; ..}&lt;br /&gt;
hence &amp;quot;q⟶(p⟶s)&amp;quot; ..}&lt;br /&gt;
thus &amp;quot;r⟶(q⟶(p⟶s))&amp;quot; ..&lt;br /&gt;
qed &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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;r&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;q&amp;quot;&lt;br /&gt;
{assume 3 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 4 : &amp;quot;q ⟶ (r ⟶ s)&amp;quot; using assms(1) 3 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r⟶s&amp;quot; using 4 2 by (rule mp)&lt;br /&gt;
have 6 : &amp;quot;s&amp;quot; using 5 1 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶s&amp;quot; by (rule impI)}&lt;br /&gt;
hence &amp;quot;q⟶(p⟶s)&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;r⟶(q⟶(p⟶s))&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
 assume  3: &amp;quot;p⟶(q⟶r)&amp;quot;&lt;br /&gt;
 show &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   1: &amp;quot;p&amp;quot;&lt;br /&gt;
    have 4:&amp;quot;q&amp;quot; using 2 1 ..&lt;br /&gt;
    have 5:&amp;quot;q⟶r&amp;quot; using 3 1 .. &lt;br /&gt;
    show &amp;quot;r&amp;quot; using 5 4 .. &lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&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;
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⟶r&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;q&amp;quot; using 2 3 by (rule mp)&lt;br /&gt;
have 6 : &amp;quot;r&amp;quot; using 4 5 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
hence &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;
&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
    {assume 3:&amp;quot;q&amp;quot;&lt;br /&gt;
      have 4:&amp;quot;p&amp;quot; using 1 .&lt;br /&gt;
      have 5:&amp;quot;q&amp;quot; using 3 .&lt;br /&gt;
      then have 6:&amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
      have &amp;quot;r&amp;quot; using assms 6 ..}&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;
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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;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 .}&lt;br /&gt;
hence 5 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
have 6 : &amp;quot;r&amp;quot; using assms(1) 5 by (rule mp)}&lt;br /&gt;
hence &amp;quot;q⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p∧q&amp;quot; using assms(1) assms(2) by (rule conjI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
show &amp;quot;p ∧ q&amp;quot; using assms(1,2) by (rule conjI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
qed&lt;br /&gt;
 &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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1:&amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 2:&amp;quot;q∧r&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
then have 3:&amp;quot;q&amp;quot; by (rule conjunct1)&lt;br /&gt;
have 4:&amp;quot;r&amp;quot; using 2 by (rule conjunct2)&lt;br /&gt;
have &amp;quot;p∧q&amp;quot; using 1 3 by (rule conjI)&lt;br /&gt;
then show &amp;quot;(p∧q)∧r&amp;quot; using 4 by (rule conjI)&lt;br /&gt;
qed  &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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1:&amp;quot;p∧q&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 2:&amp;quot;r&amp;quot; using assms by (rule conjunct2)&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 1 by (rule conjunct2)&lt;br /&gt;
have 5:&amp;quot;q∧r&amp;quot; using 4 2 by (rule conjI)&lt;br /&gt;
show &amp;quot;p∧(q∧r)&amp;quot; using 3 5 by (rule conjI)&lt;br /&gt;
qed  &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;
proof-&lt;br /&gt;
have 1:&amp;quot;p&amp;quot; using assms ..&lt;br /&gt;
have 2:&amp;quot;q&amp;quot; using assms ..&lt;br /&gt;
then show &amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;q&amp;quot; using assms by (rule conjunct2)}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
have 1:&amp;quot;p⟶q&amp;quot; using assms ..&lt;br /&gt;
have 2:&amp;quot;p⟶r&amp;quot; using assms ..&lt;br /&gt;
{assume 3:&amp;quot;p&amp;quot;&lt;br /&gt;
have 4:&amp;quot;q&amp;quot; using 1 3 ..&lt;br /&gt;
have 5:&amp;quot;r&amp;quot; using 2 3 ..&lt;br /&gt;
have 6:&amp;quot;q∧r&amp;quot; using 4 5 ..}&lt;br /&gt;
thus &amp;quot;p ⟶ q ∧ r&amp;quot;  ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p⟶q&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;p⟶r&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;q&amp;quot; using 2 1 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using 3 1 by (rule mp)&lt;br /&gt;
have 6 : &amp;quot;q ∧ r&amp;quot; using 4 5 by (rule conjI)}&lt;br /&gt;
thus &amp;quot;p⟶(q ∧ r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: p&lt;br /&gt;
have 2:&amp;quot;q∧r&amp;quot; using assms 1 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using 2 ..}&lt;br /&gt;
hence 1:&amp;quot;p⟶r&amp;quot; ..&lt;br /&gt;
{assume 1: p&lt;br /&gt;
have 2:&amp;quot;q∧r&amp;quot; using assms 1 ..&lt;br /&gt;
have &amp;quot;q&amp;quot; using 2 ..}&lt;br /&gt;
hence 2:&amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
then show &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot; using 1 ..&lt;br /&gt;
qed &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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot; &lt;br /&gt;
have 2 : &amp;quot;q ∧ r&amp;quot; using assms 1 by (rule mp)&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 2 by (rule conjunct1)}&lt;br /&gt;
hence 4 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
{assume 5 : &amp;quot;p&amp;quot; &lt;br /&gt;
have 6 : &amp;quot;q ∧ r&amp;quot; using assms 5 by (rule mp)&lt;br /&gt;
have 7 : &amp;quot;r&amp;quot; using 6 by (rule conjunct2)}&lt;br /&gt;
hence 8 : &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
show &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p∧q&amp;quot;&lt;br /&gt;
have 2:&amp;quot;p&amp;quot; using 1 ..&lt;br /&gt;
have 3:&amp;quot;q⟶r&amp;quot; using assms 2 ..&lt;br /&gt;
have 4: &amp;quot;q&amp;quot; using 1 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using 3 4 ..}&lt;br /&gt;
thus &amp;quot;p∧q ⟶r&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;q⟶r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using 4 3 by (rule mp)}&lt;br /&gt;
thus &amp;quot;p ∧ q ⟶ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
have 3:&amp;quot;p∧q&amp;quot; using 1 2 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using assms 3 ..}&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;
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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;p ∧ q&amp;quot; using 1 2 by (rule conjI)&lt;br /&gt;
have 4 : &amp;quot;r&amp;quot; using assms 3 by (rule mp)}&lt;br /&gt;
hence &amp;quot;q⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_22:&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;
  show &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
    proof (rule impI)&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;
       show &amp;quot;r&amp;quot; using 1 4 by (rule mp)&lt;br /&gt;
    qed&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p∧q&amp;quot;&lt;br /&gt;
have 2:&amp;quot;p&amp;quot; using 1 ..&lt;br /&gt;
{assume &amp;quot;p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;q&amp;quot; using 1 ..}&lt;br /&gt;
hence 4:&amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using assms 4 ..}&lt;br /&gt;
thus &amp;quot;p∧q ⟶r&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 1 by (rule conjunct2)}&lt;br /&gt;
hence 4 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using assms 4 by (rule mp)}&lt;br /&gt;
thus &amp;quot;p ∧ q ⟶ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p⟶q&amp;quot;&lt;br /&gt;
have 2:&amp;quot;p&amp;quot; using assms ..&lt;br /&gt;
have 3:&amp;quot;q⟶r&amp;quot; using assms..&lt;br /&gt;
have 4:&amp;quot;q&amp;quot; using 1 2 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using 3 4 ..}&lt;br /&gt;
thus &amp;quot;(p⟶q)⟶r&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p⟶q&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;q⟶r&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;q&amp;quot; using 1 2 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using 3 4 by (rule mp)}&lt;br /&gt;
thus &amp;quot;(p⟶q)⟶r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_24:&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;
    show &amp;quot;r&amp;quot; using 5 4 by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p∨q&amp;quot; using assms by (rule disjI1)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p∨q&amp;quot; using assms by (rule disjI2)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;p ∨ q&amp;quot; using assms by this&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∨ p&amp;quot; using 2 by (rule disjI2) }&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume 3: &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∨ p&amp;quot; using 3 by (rule disjI1) }&lt;br /&gt;
  ultimately show &amp;quot;q ∨ p&amp;quot; by (rule disjE) &lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_27:&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 2:&amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;q ∨ p&amp;quot; using 2 by (rule disjI2)}&lt;br /&gt;
next&lt;br /&gt;
  {assume 4:&amp;quot;q&amp;quot;&lt;br /&gt;
    show &amp;quot;q ∨ p&amp;quot; using 4 by (rule disjI1)}         &lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume  &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;p ∨ r&amp;quot;  using 1 by (rule disjI1)}&lt;br /&gt;
  moreover &lt;br /&gt;
  { assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
    have 3:&amp;quot;r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
    have &amp;quot;p ∨ r&amp;quot; using 3 by (rule disjI2) }&lt;br /&gt;
   ultimately have  &amp;quot; p ∨ r&amp;quot; by (rule disjE)}&lt;br /&gt;
thus  &amp;quot;p ∨ q ⟶ p ∨ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_28:&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 2:&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 3:&amp;quot;p&amp;quot;&lt;br /&gt;
        show &amp;quot;p ∨ r&amp;quot; using 3 by (rule disjI1)}&lt;br /&gt;
     next&lt;br /&gt;
      {assume 4:&amp;quot;q&amp;quot;&lt;br /&gt;
         have 5:&amp;quot;r&amp;quot; using 1 4 by (rule mp)&lt;br /&gt;
         show &amp;quot;p ∨ r&amp;quot; using 5 by (rule disjI2)}&lt;br /&gt;
     qed&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;p ∨ p&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
  have  &amp;quot;p&amp;quot; using 1 by this}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
  have  &amp;quot;p&amp;quot; using 2 by this}&lt;br /&gt;
ultimately show  &amp;quot;p&amp;quot; by (rule disjE)&lt;br /&gt;
&lt;br /&gt;
qed&lt;br /&gt;
text{* Otra forma:&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;
qed}&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;
proof-&lt;br /&gt;
have &amp;quot;p ∨ p&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using 2 .}&lt;br /&gt;
ultimately show &amp;quot;p&amp;quot; by (rule disjE)&lt;br /&gt;
qed*}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_29:&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 2:&amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;p&amp;quot; using 2 by this}&lt;br /&gt;
next&lt;br /&gt;
  {assume 3:&amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;p&amp;quot; using 3 by this}&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
 show  &amp;quot;p ∨ p&amp;quot; using assms by (rule disjI1)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text{* Otra forma:&lt;br /&gt;
using assms&lt;br /&gt;
proof&lt;br /&gt;
qed}&lt;br /&gt;
 &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;
proof -&lt;br /&gt;
 have &amp;quot;p ∨ (q ∨ r)&amp;quot; using assms(1) by this&lt;br /&gt;
moreover &lt;br /&gt;
    { assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
       have 2: &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
       have 3: &amp;quot;(p ∨ q) ∨ r&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
moreover&lt;br /&gt;
    { assume 4: &amp;quot;q ∨ r&amp;quot;&lt;br /&gt;
      moreover&lt;br /&gt;
      { assume 5: &amp;quot;q&amp;quot;&lt;br /&gt;
        have 6: &amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
        have 7: &amp;quot;(p ∨ q) ∨ r&amp;quot; using 6 by (rule disjI1)}&lt;br /&gt;
      moreover&lt;br /&gt;
      { assume 8: &amp;quot;r&amp;quot;&lt;br /&gt;
        have 9: &amp;quot;(p ∨ q) ∨ r&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
      ultimately have &amp;quot;(p ∨ q) ∨ r&amp;quot; by (rule disjE)}&lt;br /&gt;
  ultimately show &amp;quot;(p ∨ q) ∨ r&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
 &lt;br /&gt;
text{* Otra forma:&lt;br /&gt;
using assms&lt;br /&gt;
proof&lt;br /&gt;
assume &amp;quot;p&amp;quot;&lt;br /&gt;
then have &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 1:&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;
then have &amp;quot;p∨q&amp;quot; ..&lt;br /&gt;
thus 1: &amp;quot;(p ∨ q) ∨ r&amp;quot; ..&lt;br /&gt;
next&lt;br /&gt;
assume &amp;quot;r&amp;quot;&lt;br /&gt;
then have 2:&amp;quot;(p∨q)∨r&amp;quot; ..&lt;br /&gt;
then have &amp;quot;q∨r⟶(p ∨ q) ∨ r&amp;quot; .. &lt;br /&gt;
thus &amp;quot;(p ∨ q) ∨ r&amp;quot; using 1 ..&lt;br /&gt;
qed}*}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_31:&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 2:&amp;quot;p&amp;quot;&lt;br /&gt;
    have  3:&amp;quot;p ∨ q&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
    show  &amp;quot;(p ∨ q) ∨ r&amp;quot; using 3 by (rule disjI1)}&lt;br /&gt;
next&lt;br /&gt;
   {assume 4:&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 5:&amp;quot;q&amp;quot;&lt;br /&gt;
           have 6:&amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
           show &amp;quot;(p ∨ q) ∨ r&amp;quot; using 6 by (rule disjI1)}&lt;br /&gt;
      next&lt;br /&gt;
        {assume 7:&amp;quot;r&amp;quot;&lt;br /&gt;
           show &amp;quot;(p ∨ q) ∨ r&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
      qed}&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
 have &amp;quot;(p ∨ q) ∨ r&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 1: &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
     moreover&lt;br /&gt;
     { assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
       have 3: &amp;quot;p ∨ (q ∨ r)&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
     moreover&lt;br /&gt;
     { assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
       have 5: &amp;quot;q ∨ r&amp;quot; using 4 by (rule disjI1)&lt;br /&gt;
       have 6: &amp;quot;p ∨ (q ∨ r)&amp;quot; using 5 by (rule disjI2)}&lt;br /&gt;
     ultimately have &amp;quot;p ∨ (q ∨ r)&amp;quot; by (rule disjE)}&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 7: &amp;quot;r&amp;quot;&lt;br /&gt;
     have 8: &amp;quot;q ∨ r&amp;quot; using 7 by (rule disjI2)&lt;br /&gt;
     have 9: &amp;quot;p ∨ (q ∨ r)&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
ultimately show &amp;quot;p ∨ (q ∨ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_32:&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 2:&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 3:&amp;quot;p&amp;quot;&lt;br /&gt;
         show &amp;quot;p ∨ (q ∨ r)&amp;quot; using 3 by (rule disjI1)}&lt;br /&gt;
      next&lt;br /&gt;
       {assume 4:&amp;quot;q&amp;quot;&lt;br /&gt;
         have  5:&amp;quot;q ∨ r&amp;quot;    using 4 by (rule disjI1)&lt;br /&gt;
         show &amp;quot;p ∨ (q ∨ r)&amp;quot; using 5 by (rule disjI2)} &lt;br /&gt;
       qed}&lt;br /&gt;
next&lt;br /&gt;
  {assume 6:&amp;quot;r&amp;quot;&lt;br /&gt;
     have 7:&amp;quot;q ∨ r&amp;quot; using 6 by (rule disjI2)&lt;br /&gt;
     show &amp;quot;p ∨ (q ∨ r)&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
 have 1: &amp;quot;p&amp;quot; using assms(1) by (rule conjunct1)&lt;br /&gt;
    have 2: &amp;quot;q ∨ r&amp;quot; using assms(1) by (rule conjunct2)&lt;br /&gt;
moreover&lt;br /&gt;
    { assume 3: &amp;quot;q&amp;quot;&lt;br /&gt;
      have 4: &amp;quot;p ∧ q&amp;quot; using 1 3 by (rule conjI)&lt;br /&gt;
      have 5: &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 4 by (rule disjI1)}&lt;br /&gt;
moreover&lt;br /&gt;
    { assume 6: &amp;quot;r&amp;quot;&lt;br /&gt;
      have 7: &amp;quot;p ∧ r&amp;quot; using 1 6 by (rule conjI)&lt;br /&gt;
      have 8: &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
ultimately show &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_33:&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 5:&amp;quot;p ∧ q&amp;quot; using 2 4 by (rule conjI)&lt;br /&gt;
         show &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 5 by (rule disjI1)}&lt;br /&gt;
    next&lt;br /&gt;
      {assume 6:&amp;quot;r&amp;quot;&lt;br /&gt;
         have 7:&amp;quot;p ∧ r&amp;quot; using 2 6 by (rule conjI)&lt;br /&gt;
         show &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
    qed&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
 have &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 1: &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
     have 2: &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
     have 3: &amp;quot;q ∨ r&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
     have 4: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
     have 5: &amp;quot;p ∧ (q ∨ r)&amp;quot; using 4 3 by (rule conjI)}&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 6: &amp;quot;p ∧ r&amp;quot;&lt;br /&gt;
     have 7: &amp;quot;r&amp;quot; using 6 by (rule conjunct2)&lt;br /&gt;
     have 8: &amp;quot;q ∨ r&amp;quot; using 7 by (rule disjI2)&lt;br /&gt;
     have 9: &amp;quot;p&amp;quot; using 6 by (rule conjunct1)&lt;br /&gt;
     have 10: &amp;quot;p ∧ (q ∨ r)&amp;quot; using 9 8 by (rule conjI)}&lt;br /&gt;
ultimately show &amp;quot;p ∧ (q ∨ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_34:&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;
using 1&lt;br /&gt;
proof (rule disjE)&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 4 by (rule disjI1)&lt;br /&gt;
     show &amp;quot;p ∧ (q ∨ r)&amp;quot; using 3 5 by (rule conjI)}&lt;br /&gt;
next&lt;br /&gt;
  {assume 6:&amp;quot;p ∧ r&amp;quot;&lt;br /&gt;
     have 7:&amp;quot;p&amp;quot;     using 6 by (rule conjunct1)&lt;br /&gt;
     have 8:&amp;quot;r&amp;quot;     using 6 by (rule conjunct2)&lt;br /&gt;
     have 9:&amp;quot;q ∨ r&amp;quot; using 8 by (rule disjI2)&lt;br /&gt;
     show &amp;quot;p ∧ (q ∨ r)&amp;quot; using 7 9 by (rule conjI)}&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
have &amp;quot;p ∨ (q ∧ r)&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
     have 2: &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
     have 3: &amp;quot;p ∨ r&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
     have 4: &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 2 3 by (rule conjI)}&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 5: &amp;quot;q ∧ r&amp;quot;&lt;br /&gt;
     have 6: &amp;quot;q&amp;quot; using 5 by (rule conjunct1)&lt;br /&gt;
     have 7: &amp;quot;p ∨ q&amp;quot; using 6 by (rule disjI2)&lt;br /&gt;
     have 8: &amp;quot;r&amp;quot; using 5 by (rule conjunct2)&lt;br /&gt;
     have 9: &amp;quot;p ∨ r&amp;quot; using 8 by (rule disjI2)&lt;br /&gt;
     have 10: &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 7 9 by (rule conjI)}&lt;br /&gt;
ultimately show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_35:&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;
using 1&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  {assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
     have 3:&amp;quot;p ∨ q&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
     have 4:&amp;quot;p ∨ r&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
     show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 3 4 by (rule conjI)}&lt;br /&gt;
next&lt;br /&gt;
  {assume 5:&amp;quot;q ∧ r&amp;quot;&lt;br /&gt;
     have 6:&amp;quot;q&amp;quot;     using 5 by (rule conjunct1)&lt;br /&gt;
     have 7:&amp;quot;r&amp;quot;     using 5 by (rule conjunct2)&lt;br /&gt;
     have 8:&amp;quot;p ∨ q&amp;quot; using 6 by (rule disjI2)&lt;br /&gt;
     have 9:&amp;quot;p ∨ r&amp;quot; using 7 by (rule disjI2)&lt;br /&gt;
     show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 8 9 by (rule conjI)}&lt;br /&gt;
qed&lt;br /&gt;
&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;
proof-&lt;br /&gt;
have &amp;quot;(p ∨ q)&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
moreover&lt;br /&gt;
   {assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;p ∨ (q ∧ r)&amp;quot; using 1 by (rule disjI1) }&lt;br /&gt;
moreover&lt;br /&gt;
    {assume 1:&amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;(p ∨ r)&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
    moreover &lt;br /&gt;
    {assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
      have &amp;quot;p ∨ (q ∧ r)&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
    moreover &lt;br /&gt;
    {assume 2:&amp;quot;r&amp;quot;&lt;br /&gt;
      have 3:&amp;quot;(q ∧ r)&amp;quot; using 1 2 by (rule conjI)&lt;br /&gt;
      have &amp;quot;p ∨ (q ∧ r)&amp;quot; using 3 by (rule disjI2)}&lt;br /&gt;
    ultimately have &amp;quot;p ∨ (q ∧ r)&amp;quot; by (rule disjE)}&lt;br /&gt;
ultimately show &amp;quot;p ∨ (q ∧ r)&amp;quot;  by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
------------------- ----------&lt;br /&gt;
&lt;br /&gt;
 proof-&lt;br /&gt;
have 1: &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 3: &amp;quot;p&amp;quot; &lt;br /&gt;
show &amp;quot;p∨(q∧r)&amp;quot; using 3 by ( rule disjI1)}&lt;br /&gt;
next&lt;br /&gt;
{assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
have 5:&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 6: &amp;quot;p&amp;quot;&lt;br /&gt;
show &amp;quot;p∨(q∧r)&amp;quot; using 6 by (rule disjI1)}&lt;br /&gt;
next&lt;br /&gt;
{assume 7: &amp;quot;r&amp;quot;&lt;br /&gt;
have 8: &amp;quot;q∧r&amp;quot; using 4 7 by (rule conjI)&lt;br /&gt;
show &amp;quot;p∨(q∧r)&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
qed}&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume  &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
moreover &lt;br /&gt;
 {assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
  have 2:&amp;quot;(p ⟶ r)&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
  have &amp;quot;r&amp;quot; using 2 1 by (rule mp)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 1:&amp;quot;q&amp;quot;&lt;br /&gt;
  have 2:&amp;quot;(q ⟶ r)&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
  have &amp;quot;r&amp;quot; using 2 1 by (rule mp)}&lt;br /&gt;
ultimately have &amp;quot;r&amp;quot; by (rule disjE)}&lt;br /&gt;
thus  &amp;quot;p ∨ q ⟶ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_37:&lt;br /&gt;
  assumes 1:&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 2:&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 3:&amp;quot;p&amp;quot;&lt;br /&gt;
         have 4:&amp;quot;p ⟶ r&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
         show &amp;quot;r&amp;quot;       using 4 3 by (rule mp)}&lt;br /&gt;
    next&lt;br /&gt;
     {assume 5:&amp;quot;q&amp;quot;&lt;br /&gt;
        have 6:&amp;quot;q ⟶ r&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
        show &amp;quot;r&amp;quot;       using 6 5 by (rule mp)}&lt;br /&gt;
   qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
have 3 : &amp;quot;r&amp;quot; using assms 2 by (rule mp)}&lt;br /&gt;
hence 4 : &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
{assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
have 7 : &amp;quot;r&amp;quot; using assms 6 by (rule mp)}&lt;br /&gt;
hence 8 : &amp;quot;q⟶r&amp;quot; by (rule impI)&lt;br /&gt;
show &amp;quot;(p ⟶ r) ∧ (q ⟶ r)&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&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;
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;
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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;q&amp;quot; using assms 1 ..}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;False&amp;quot; using assms 1 by (rule notE)&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 2 by (rule FalseE)}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have 2: &amp;quot;q&amp;quot; using assms 1 by (rule notE)}&lt;br /&gt;
thus  &amp;quot;p ⟶ q&amp;quot; by ( rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1:&amp;quot;¬q&amp;quot;&lt;br /&gt;
have &amp;quot;¬p&amp;quot; using assms 1 by (rule mt)}&lt;br /&gt;
thus &amp;quot;¬q ⟶ ¬p&amp;quot; ..&lt;br /&gt;
qed&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;
&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 1:&amp;quot;q&amp;quot;&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms(2) 1 ..&lt;br /&gt;
qed  &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;
proof-&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 3 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 4 : &amp;quot;¬q&amp;quot; using assms(2) .&lt;br /&gt;
have 5 : &amp;quot;False&amp;quot; using 4 3 by (rule notE)&lt;br /&gt;
have 6 : &amp;quot;p&amp;quot; using 5 by (rule FalseE)}&lt;br /&gt;
ultimately show &amp;quot;p&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
--------**---&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have &amp;quot;p&amp;quot; using 1 by this}&lt;br /&gt;
next&lt;br /&gt;
{assume 2: &amp;quot;q&amp;quot;&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms(2) 2 by (rule notE)}&lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 43. 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;
&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof&lt;br /&gt;
assume &amp;quot;q&amp;quot;&lt;br /&gt;
thus &amp;quot;q&amp;quot; .&lt;br /&gt;
next&lt;br /&gt;
assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms(2) 1 ..&lt;br /&gt;
qed  &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;
proof-&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;¬p&amp;quot; using assms(2) .&lt;br /&gt;
have 3 : &amp;quot;False&amp;quot; using 2 1 by (rule notE)&lt;br /&gt;
have 4 : &amp;quot;q&amp;quot; using 3 by (rule FalseE)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;q&amp;quot; using 5 .}&lt;br /&gt;
ultimately show &amp;quot;q&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**--&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms(2) 1 by (rule notE)&lt;br /&gt;
next&lt;br /&gt;
assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using 2 by this&lt;br /&gt;
qed&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;
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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;¬p ∧ ¬q&amp;quot;&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;p&amp;quot; &lt;br /&gt;
  have 3 : &amp;quot;¬p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;q&amp;quot; &lt;br /&gt;
  have 6 : &amp;quot;¬q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 6 5 by (rule notE)}&lt;br /&gt;
ultimately have 8 : &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(¬p ∧ ¬q)&amp;quot;  by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 2 :&amp;quot;¬p∧¬q&amp;quot;&lt;br /&gt;
show False &lt;br /&gt;
using assms&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have 3: &amp;quot;¬p&amp;quot; using 2 by (rule conjunct1)&lt;br /&gt;
show False using 3 1 by (rule notE)}&lt;br /&gt;
{assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;¬q&amp;quot; using 2 by (rule conjunct2)&lt;br /&gt;
show False using 5 4 by (rule notE)}&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
have &amp;quot;¬p ∨ ¬q&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 2 3 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 6 : &amp;quot;q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 5 6 by (rule notE)}&lt;br /&gt;
ultimately have &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(¬p ∨ ¬q)&amp;quot; by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(¬p ∨ ¬q)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
assume 1: &amp;quot;¬p∨¬q&amp;quot;&lt;br /&gt;
show False &lt;br /&gt;
using 1&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
assume 2:  &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
show False using 2 3 by (rule notE)&lt;br /&gt;
next&lt;br /&gt;
assume 4: &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
show False using 4 5 by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
have 3 : &amp;quot;False&amp;quot; using assms 2 by (rule notE)}&lt;br /&gt;
hence 4 : &amp;quot;¬p&amp;quot; by (rule notI)&lt;br /&gt;
{assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
have 7 : &amp;quot;False&amp;quot; using assms 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;¬q&amp;quot; by (rule notI)&lt;br /&gt;
show &amp;quot;¬p ∧ ¬q&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
(*Otra opción para usar tercio excluso*)&lt;br /&gt;
&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 disjE)(rule disjE)&lt;br /&gt;
  have 1:&amp;quot;¬p | p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
  show &amp;quot;¬p &amp;amp; ¬q&amp;quot;&lt;br /&gt;
  using 1&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    {assume 2:&amp;quot;¬p&amp;quot;&lt;br /&gt;
      have 3:&amp;quot;¬q | q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
      show &amp;quot;¬p &amp;amp; ¬q&amp;quot;&lt;br /&gt;
      using 3&lt;br /&gt;
      proof (rule disjE)&lt;br /&gt;
        {assume 4:&amp;quot;¬q&amp;quot;&lt;br /&gt;
          with 2 show &amp;quot;¬p &amp;amp; ¬q&amp;quot; by (rule conjI)}&lt;br /&gt;
        next&lt;br /&gt;
        {assume &amp;quot;q&amp;quot;&lt;br /&gt;
          then have &amp;quot;p | q&amp;quot; by (rule disjI2)&lt;br /&gt;
          with assms show &amp;quot;¬p &amp;amp; ¬q&amp;quot; by (rule notE)}&lt;br /&gt;
      qed&lt;br /&gt;
      }&lt;br /&gt;
    next&lt;br /&gt;
    {assume 5:&amp;quot;p&amp;quot;&lt;br /&gt;
      then have &amp;quot;p | q&amp;quot; by (rule disjI1)&lt;br /&gt;
      with assms show &amp;quot;¬p &amp;amp; ¬q&amp;quot; by (rule notE)&lt;br /&gt;
      }&lt;br /&gt;
  qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;¬p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
  have 6 : &amp;quot;¬q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
  have 6 : &amp;quot;False&amp;quot; using 6 5 by (rule notE)}&lt;br /&gt;
ultimately have &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(p ∨ q)&amp;quot; by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 1: &amp;quot;p∨q&amp;quot;&lt;br /&gt;
show False&lt;br /&gt;
using 1 &lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
{assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
have 3:&amp;quot;¬p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
show &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
next&lt;br /&gt;
{assume 5:&amp;quot;q&amp;quot;&lt;br /&gt;
have 6:&amp;quot;¬q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
show &amp;quot;False&amp;quot; using 6 5 by (rule notE)}&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
have &amp;quot;¬p ∨ ¬q&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 2 3 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 6 : &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 5 6 by (rule notE)}&lt;br /&gt;
ultimately have &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(p ∧ q)&amp;quot; by (rule notI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 1:&amp;quot;p∧q&amp;quot;&lt;br /&gt;
show False&lt;br /&gt;
using assms&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
assume 2:&amp;quot;¬p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
show False using 2 3 by (rule notE)&lt;br /&gt;
next&lt;br /&gt;
assume 4: &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
show False using 4 5 by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ ¬p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;¬p&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
thus &amp;quot;¬(p ∧ ¬p)&amp;quot; by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 1: &amp;quot;p∧¬p&amp;quot;&lt;br /&gt;
have 2: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
have 3: &amp;quot;¬p&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
show False using 3 2 by (rule notE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1 : &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 2 : &amp;quot;¬p&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
show &amp;quot;q&amp;quot; using 2 1 by (rule notE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms by (rule notnotD)&lt;br /&gt;
qed&lt;br /&gt;
&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;
proof(rule ccontr)&lt;br /&gt;
assume 1: &amp;quot;¬p&amp;quot;&lt;br /&gt;
show False using assms 1 by (rule notE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;¬p∨p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have 2: &amp;quot;¬p∨p&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 3: &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 4: &amp;quot;p∨¬p&amp;quot; using 3 by (rule disjI2)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 5: &amp;quot;p&amp;quot;&lt;br /&gt;
have 6: &amp;quot;p∨¬p&amp;quot; using 5 by (rule disjI1)}&lt;br /&gt;
ultimately show &amp;quot;p∨¬p&amp;quot; by (rule disjE)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;(p ⟶ q) ⟶ p&amp;quot;&lt;br /&gt;
 {assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;¬(p⟶q)&amp;quot; using 1 2 by (rule mt)&lt;br /&gt;
    {assume 4 : &amp;quot;p&amp;quot;&lt;br /&gt;
     have 5 : &amp;quot;q&amp;quot; using 2 4 by (rule notE)}&lt;br /&gt;
  hence 6 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 3 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;p&amp;quot; by (rule ccontr)}&lt;br /&gt;
thus  &amp;quot;((p ⟶ q) ⟶ p) ⟶ p&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
 {assume 2 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;¬p&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 3 1 by (rule notE)}&lt;br /&gt;
hence 5 : &amp;quot;q&amp;quot; by (rule ccontr)}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
proof(rule impI)&lt;br /&gt;
assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;¬¬p&amp;quot; using 1 by (rule notnotI)&lt;br /&gt;
have 3: &amp;quot;¬¬q&amp;quot; using assms 2 by (rule mt)&lt;br /&gt;
show  &amp;quot;q&amp;quot; using 3 by (rule notnotD)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
have 1 : &amp;quot;¬p ∨ p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬p ∨ p&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;¬p&amp;quot; &lt;br /&gt;
have 3 : &amp;quot;¬q ∨ q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬q ∨ q&amp;quot; using 3 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 4 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 5 : &amp;quot;¬p ∧ ¬q&amp;quot; using 2 4 by (rule conjI)&lt;br /&gt;
  have 6 : &amp;quot;False&amp;quot; using assms 5 by (rule notE)&lt;br /&gt;
  have 7 : &amp;quot;p ∨ q&amp;quot; using 6 by (rule FalseE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 8 : &amp;quot;q&amp;quot;&lt;br /&gt;
  have 9 : &amp;quot;p ∨ q&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
ultimately have &amp;quot;p ∨ q&amp;quot; by (rule disjE)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 10 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 11 : &amp;quot;p ∨ q&amp;quot; using 10 by (rule disjI1)}&lt;br /&gt;
ultimately show &amp;quot;p ∨ q&amp;quot; by (rule disjE)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;¬p ∨ ¬q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
have 3 : &amp;quot;False&amp;quot; using assms 2 by (rule notE)}&lt;br /&gt;
hence 4 : &amp;quot;p&amp;quot; by (rule ccontr)&lt;br /&gt;
{assume 5 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;¬p ∨ ¬q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
have 7 : &amp;quot;False&amp;quot; using assms 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;q&amp;quot; by (rule ccontr)&lt;br /&gt;
show &amp;quot;p ∧ q&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
--**&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 2: &amp;quot;¬p∨¬q&amp;quot;using 1 by (rule disjI1)&lt;br /&gt;
have 3: &amp;quot;False&amp;quot; using assms 2 by (rule notE)}&lt;br /&gt;
hence 8: &amp;quot;p&amp;quot; by (rule ccontr)&lt;br /&gt;
{assume 4: &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;¬p∨¬q&amp;quot; using 4 by (rule disjI2)&lt;br /&gt;
have 6: &amp;quot;False&amp;quot; using assms 5 by (rule notE)}&lt;br /&gt;
hence 9: &amp;quot;q&amp;quot; by (rule ccontr)&lt;br /&gt;
show &amp;quot;p∧q&amp;quot; using 8 9 by (rule conjI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
have 1 : &amp;quot;¬p ∨ p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬p ∨ p&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;¬p ∨ ¬q&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 4 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 5 : &amp;quot;¬q ∨ q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬q ∨ q&amp;quot; using 5 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 6 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 7 : &amp;quot;¬p ∨ ¬q&amp;quot; using 6 by (rule disjI2)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 8 : &amp;quot;q&amp;quot;&lt;br /&gt;
  have 9 : &amp;quot;p ∧ q&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
  have 10 : &amp;quot;False&amp;quot; using assms 9 by (rule notE)&lt;br /&gt;
  have 11 : &amp;quot;¬p ∨ ¬q&amp;quot; using 10 by (rule FalseE)}&lt;br /&gt;
ultimately have &amp;quot;¬p ∨ ¬q&amp;quot; by (rule disjE)}&lt;br /&gt;
ultimately show &amp;quot;¬p ∨ ¬q&amp;quot; by (rule disjE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1 : &amp;quot;¬(p ⟶ q) ∨ (p ⟶ q)&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬(p ⟶ q) ∨ (p ⟶ q)&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;¬(p ⟶ q)&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 .}&lt;br /&gt;
  hence 6 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
  have 7 : &amp;quot;p&amp;quot; using 2 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;q⟶p&amp;quot; by (rule impI)&lt;br /&gt;
have 9 : &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 10 : &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
have 11 : &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; using 10 by (rule disjI1)}&lt;br /&gt;
ultimately show &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; by (rule disjE)&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>Albromgon</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_3&amp;diff=147</id>
		<title>Relación 3</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_3&amp;diff=147"/>
		<updated>2016-03-25T15:46:52Z</updated>

		<summary type="html">&lt;p&gt;Albromgon: Añado otra solución ejercicio 46&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;source lang = &amp;quot;isar&amp;quot;&amp;gt;header {* R3: Deducción natural proposicional *}&lt;br /&gt;
&lt;br /&gt;
theory R3&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;
&lt;br /&gt;
proof -&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms(1,2) by (rule mp)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_1_b:&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(1) assms(2) by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;q&amp;quot; using assms(1,3) by (rule mp)&lt;br /&gt;
show &amp;quot;r&amp;quot; using assms(2)  1 by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;q&amp;quot; using assms(2,3) by (rule mp) &lt;br /&gt;
have 2: &amp;quot;q⟶r&amp;quot; using assms(1,3) by (rule mp)&lt;br /&gt;
show &amp;quot;r&amp;quot; using 2 1 by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have 2: &amp;quot;q&amp;quot; using assms(1) 1 ..&lt;br /&gt;
have 3: &amp;quot;r&amp;quot; using assms(2) 2 ..}&lt;br /&gt;
thus &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;q&amp;quot; using assms(1) 1 by (rule mp)&lt;br /&gt;
have 3 : &amp;quot;r&amp;quot; using assms(2) 2 by (rule mp)}&lt;br /&gt;
thus &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&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;
&lt;br /&gt;
{assume 1: &amp;quot;q&amp;quot;&lt;br /&gt;
{assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;q⟶r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
have  &amp;quot;r&amp;quot; using 3 1 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;(q⟶(p⟶r))&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p⟶q&amp;quot;&lt;br /&gt;
{assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;q⟶r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
have 4: &amp;quot;q&amp;quot; using 1 2 by (rule mp)&lt;br /&gt;
have &amp;quot;r&amp;quot; using 3 4 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;(p⟶q)⟶(p⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed &lt;br /&gt;
  &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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;q&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using assms .}&lt;br /&gt;
thus &amp;quot;q⟶p&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof- &lt;br /&gt;
{assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
have 3: &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
hence &amp;quot;q⟶p&amp;quot; ..}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶p)&amp;quot; ..&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_8:&lt;br /&gt;
  &amp;quot;p ⟶ (q ⟶ p)&amp;quot;&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
hence &amp;quot;q⟶p&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶p)&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_8:&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 &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;
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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;q⟶r&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
have 3:&amp;quot;q&amp;quot; using assms 2 .. &lt;br /&gt;
have &amp;quot;r&amp;quot; using 1 3 ..}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; ..}&lt;br /&gt;
thus &amp;quot;(q⟶r)⟶(p⟶r) &amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;q⟶r&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using assms(1) 2 by (rule mp)&lt;br /&gt;
have 4 : &amp;quot;r&amp;quot; using 1 3 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;(q⟶r)⟶(p⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
 &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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;r&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
{assume 3:&amp;quot;p&amp;quot;&lt;br /&gt;
have 4:&amp;quot;q⟶(r⟶s)&amp;quot; using assms 3 ..&lt;br /&gt;
have 5: &amp;quot;r⟶s&amp;quot; using 4 2 ..&lt;br /&gt;
have 6: &amp;quot;s&amp;quot; using 5 1 ..}&lt;br /&gt;
hence &amp;quot;p⟶s&amp;quot; ..}&lt;br /&gt;
hence &amp;quot;q⟶(p⟶s)&amp;quot; ..}&lt;br /&gt;
thus &amp;quot;r⟶(q⟶(p⟶s))&amp;quot; ..&lt;br /&gt;
qed &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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;r&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;q&amp;quot;&lt;br /&gt;
{assume 3 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 4 : &amp;quot;q ⟶ (r ⟶ s)&amp;quot; using assms(1) 3 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r⟶s&amp;quot; using 4 2 by (rule mp)&lt;br /&gt;
have 6 : &amp;quot;s&amp;quot; using 5 1 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶s&amp;quot; by (rule impI)}&lt;br /&gt;
hence &amp;quot;q⟶(p⟶s)&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;r⟶(q⟶(p⟶s))&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof (rule impI)&lt;br /&gt;
 assume  3: &amp;quot;p⟶(q⟶r)&amp;quot;&lt;br /&gt;
 show &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   1: &amp;quot;p&amp;quot;&lt;br /&gt;
    have 4:&amp;quot;q&amp;quot; using 2 1 ..&lt;br /&gt;
    have 5:&amp;quot;q⟶r&amp;quot; using 3 1 .. &lt;br /&gt;
    show &amp;quot;r&amp;quot; using 5 4 .. &lt;br /&gt;
    qed&lt;br /&gt;
  qed&lt;br /&gt;
qed&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;
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⟶r&amp;quot; using 1 3 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;q&amp;quot; using 2 3 by (rule mp)&lt;br /&gt;
have 6 : &amp;quot;r&amp;quot; using 4 5 by (rule mp)}&lt;br /&gt;
hence &amp;quot;p⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
hence &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;
&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
    {assume 3:&amp;quot;q&amp;quot;&lt;br /&gt;
      have 4:&amp;quot;p&amp;quot; using 1 .&lt;br /&gt;
      have 5:&amp;quot;q&amp;quot; using 3 .&lt;br /&gt;
      then have 6:&amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
      have &amp;quot;r&amp;quot; using assms 6 ..}&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;
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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;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 .}&lt;br /&gt;
hence 5 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
have 6 : &amp;quot;r&amp;quot; using assms(1) 5 by (rule mp)}&lt;br /&gt;
hence &amp;quot;q⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p∧q&amp;quot; using assms(1) assms(2) by (rule conjI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
show &amp;quot;p ∧ q&amp;quot; using assms(1,2) by (rule conjI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
qed&lt;br /&gt;
 &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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1:&amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 2:&amp;quot;q∧r&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
then have 3:&amp;quot;q&amp;quot; by (rule conjunct1)&lt;br /&gt;
have 4:&amp;quot;r&amp;quot; using 2 by (rule conjunct2)&lt;br /&gt;
have &amp;quot;p∧q&amp;quot; using 1 3 by (rule conjI)&lt;br /&gt;
then show &amp;quot;(p∧q)∧r&amp;quot; using 4 by (rule conjI)&lt;br /&gt;
qed  &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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1:&amp;quot;p∧q&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 2:&amp;quot;r&amp;quot; using assms by (rule conjunct2)&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 1 by (rule conjunct2)&lt;br /&gt;
have 5:&amp;quot;q∧r&amp;quot; using 4 2 by (rule conjI)&lt;br /&gt;
show &amp;quot;p∧(q∧r)&amp;quot; using 3 5 by (rule conjI)&lt;br /&gt;
qed  &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;
proof-&lt;br /&gt;
have 1:&amp;quot;p&amp;quot; using assms ..&lt;br /&gt;
have 2:&amp;quot;q&amp;quot; using assms ..&lt;br /&gt;
then show &amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;q&amp;quot; using assms by (rule conjunct2)}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
have 1:&amp;quot;p⟶q&amp;quot; using assms ..&lt;br /&gt;
have 2:&amp;quot;p⟶r&amp;quot; using assms ..&lt;br /&gt;
{assume 3:&amp;quot;p&amp;quot;&lt;br /&gt;
have 4:&amp;quot;q&amp;quot; using 1 3 ..&lt;br /&gt;
have 5:&amp;quot;r&amp;quot; using 2 3 ..&lt;br /&gt;
have 6:&amp;quot;q∧r&amp;quot; using 4 5 ..}&lt;br /&gt;
thus &amp;quot;p ⟶ q ∧ r&amp;quot;  ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p⟶q&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;p⟶r&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;q&amp;quot; using 2 1 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using 3 1 by (rule mp)&lt;br /&gt;
have 6 : &amp;quot;q ∧ r&amp;quot; using 4 5 by (rule conjI)}&lt;br /&gt;
thus &amp;quot;p⟶(q ∧ r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: p&lt;br /&gt;
have 2:&amp;quot;q∧r&amp;quot; using assms 1 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using 2 ..}&lt;br /&gt;
hence 1:&amp;quot;p⟶r&amp;quot; ..&lt;br /&gt;
{assume 1: p&lt;br /&gt;
have 2:&amp;quot;q∧r&amp;quot; using assms 1 ..&lt;br /&gt;
have &amp;quot;q&amp;quot; using 2 ..}&lt;br /&gt;
hence 2:&amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
then show &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot; using 1 ..&lt;br /&gt;
qed &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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot; &lt;br /&gt;
have 2 : &amp;quot;q ∧ r&amp;quot; using assms 1 by (rule mp)&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 2 by (rule conjunct1)}&lt;br /&gt;
hence 4 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
{assume 5 : &amp;quot;p&amp;quot; &lt;br /&gt;
have 6 : &amp;quot;q ∧ r&amp;quot; using assms 5 by (rule mp)&lt;br /&gt;
have 7 : &amp;quot;r&amp;quot; using 6 by (rule conjunct2)}&lt;br /&gt;
hence 8 : &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
show &amp;quot;(p ⟶ q) ∧ (p ⟶ r)&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p∧q&amp;quot;&lt;br /&gt;
have 2:&amp;quot;p&amp;quot; using 1 ..&lt;br /&gt;
have 3:&amp;quot;q⟶r&amp;quot; using assms 2 ..&lt;br /&gt;
have 4: &amp;quot;q&amp;quot; using 1 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using 3 4 ..}&lt;br /&gt;
thus &amp;quot;p∧q ⟶r&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;q⟶r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using 4 3 by (rule mp)}&lt;br /&gt;
thus &amp;quot;p ∧ q ⟶ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
have 3:&amp;quot;p∧q&amp;quot; using 1 2 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using assms 3 ..}&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;
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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;p ∧ q&amp;quot; using 1 2 by (rule conjI)&lt;br /&gt;
have 4 : &amp;quot;r&amp;quot; using assms 3 by (rule mp)}&lt;br /&gt;
hence &amp;quot;q⟶r&amp;quot; by (rule impI)}&lt;br /&gt;
thus &amp;quot;p⟶(q⟶r)&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_22:&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;
  show &amp;quot;q ⟶ r&amp;quot;&lt;br /&gt;
    proof (rule impI)&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;
       show &amp;quot;r&amp;quot; using 1 4 by (rule mp)&lt;br /&gt;
    qed&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1:&amp;quot;p∧q&amp;quot;&lt;br /&gt;
have 2:&amp;quot;p&amp;quot; using 1 ..&lt;br /&gt;
{assume &amp;quot;p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;q&amp;quot; using 1 ..}&lt;br /&gt;
hence 4:&amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using assms 4 ..}&lt;br /&gt;
thus &amp;quot;p∧q ⟶r&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
{assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 1 by (rule conjunct2)}&lt;br /&gt;
hence 4 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using assms 4 by (rule mp)}&lt;br /&gt;
thus &amp;quot;p ∧ q ⟶ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p⟶q&amp;quot;&lt;br /&gt;
have 2:&amp;quot;p&amp;quot; using assms ..&lt;br /&gt;
have 3:&amp;quot;q⟶r&amp;quot; using assms..&lt;br /&gt;
have 4:&amp;quot;q&amp;quot; using 1 2 ..&lt;br /&gt;
have &amp;quot;r&amp;quot; using 3 4 ..}&lt;br /&gt;
thus &amp;quot;(p⟶q)⟶r&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p⟶q&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;q⟶r&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;q&amp;quot; using 1 2 by (rule mp)&lt;br /&gt;
have 5 : &amp;quot;r&amp;quot; using 3 4 by (rule mp)}&lt;br /&gt;
thus &amp;quot;(p⟶q)⟶r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_24:&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;
    show &amp;quot;r&amp;quot; using 5 4 by (rule mp)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p∨q&amp;quot; using assms by (rule disjI1)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p∨q&amp;quot; using assms by (rule disjI2)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof -&lt;br /&gt;
  have &amp;quot;p ∨ q&amp;quot; using assms by this&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∨ p&amp;quot; using 2 by (rule disjI2) }&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume 3: &amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;q ∨ p&amp;quot; using 3 by (rule disjI1) }&lt;br /&gt;
  ultimately show &amp;quot;q ∨ p&amp;quot; by (rule disjE) &lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_27:&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 2:&amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;q ∨ p&amp;quot; using 2 by (rule disjI2)}&lt;br /&gt;
next&lt;br /&gt;
  {assume 4:&amp;quot;q&amp;quot;&lt;br /&gt;
    show &amp;quot;q ∨ p&amp;quot; using 4 by (rule disjI1)}         &lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume  &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
  moreover&lt;br /&gt;
  { assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;p ∨ r&amp;quot;  using 1 by (rule disjI1)}&lt;br /&gt;
  moreover &lt;br /&gt;
  { assume 2:&amp;quot;q&amp;quot;&lt;br /&gt;
    have 3:&amp;quot;r&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
    have &amp;quot;p ∨ r&amp;quot; using 3 by (rule disjI2) }&lt;br /&gt;
   ultimately have  &amp;quot; p ∨ r&amp;quot; by (rule disjE)}&lt;br /&gt;
thus  &amp;quot;p ∨ q ⟶ p ∨ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_28:&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 2:&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 3:&amp;quot;p&amp;quot;&lt;br /&gt;
        show &amp;quot;p ∨ r&amp;quot; using 3 by (rule disjI1)}&lt;br /&gt;
     next&lt;br /&gt;
      {assume 4:&amp;quot;q&amp;quot;&lt;br /&gt;
         have 5:&amp;quot;r&amp;quot; using 1 4 by (rule mp)&lt;br /&gt;
         show &amp;quot;p ∨ r&amp;quot; using 5 by (rule disjI2)}&lt;br /&gt;
     qed&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;p ∨ p&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
  have  &amp;quot;p&amp;quot; using 1 by this}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
  have  &amp;quot;p&amp;quot; using 2 by this}&lt;br /&gt;
ultimately show  &amp;quot;p&amp;quot; by (rule disjE)&lt;br /&gt;
&lt;br /&gt;
qed&lt;br /&gt;
text{* Otra forma:&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;
qed}&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;
proof-&lt;br /&gt;
have &amp;quot;p ∨ p&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using 2 .}&lt;br /&gt;
ultimately show &amp;quot;p&amp;quot; by (rule disjE)&lt;br /&gt;
qed*}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_29:&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 2:&amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;p&amp;quot; using 2 by this}&lt;br /&gt;
next&lt;br /&gt;
  {assume 3:&amp;quot;p&amp;quot;&lt;br /&gt;
    show &amp;quot;p&amp;quot; using 3 by this}&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
 show  &amp;quot;p ∨ p&amp;quot; using assms by (rule disjI1)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
text{* Otra forma:&lt;br /&gt;
using assms&lt;br /&gt;
proof&lt;br /&gt;
qed}&lt;br /&gt;
 &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;
proof -&lt;br /&gt;
 have &amp;quot;p ∨ (q ∨ r)&amp;quot; using assms(1) by this&lt;br /&gt;
moreover &lt;br /&gt;
    { assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
       have 2: &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
       have 3: &amp;quot;(p ∨ q) ∨ r&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
moreover&lt;br /&gt;
    { assume 4: &amp;quot;q ∨ r&amp;quot;&lt;br /&gt;
      moreover&lt;br /&gt;
      { assume 5: &amp;quot;q&amp;quot;&lt;br /&gt;
        have 6: &amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
        have 7: &amp;quot;(p ∨ q) ∨ r&amp;quot; using 6 by (rule disjI1)}&lt;br /&gt;
      moreover&lt;br /&gt;
      { assume 8: &amp;quot;r&amp;quot;&lt;br /&gt;
        have 9: &amp;quot;(p ∨ q) ∨ r&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
      ultimately have &amp;quot;(p ∨ q) ∨ r&amp;quot; by (rule disjE)}&lt;br /&gt;
  ultimately show &amp;quot;(p ∨ q) ∨ r&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
 &lt;br /&gt;
text{* Otra forma:&lt;br /&gt;
using assms&lt;br /&gt;
proof&lt;br /&gt;
assume &amp;quot;p&amp;quot;&lt;br /&gt;
then have &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 1:&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;
then have &amp;quot;p∨q&amp;quot; ..&lt;br /&gt;
thus 1: &amp;quot;(p ∨ q) ∨ r&amp;quot; ..&lt;br /&gt;
next&lt;br /&gt;
assume &amp;quot;r&amp;quot;&lt;br /&gt;
then have 2:&amp;quot;(p∨q)∨r&amp;quot; ..&lt;br /&gt;
then have &amp;quot;q∨r⟶(p ∨ q) ∨ r&amp;quot; .. &lt;br /&gt;
thus &amp;quot;(p ∨ q) ∨ r&amp;quot; using 1 ..&lt;br /&gt;
qed}*}&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_31:&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 2:&amp;quot;p&amp;quot;&lt;br /&gt;
    have  3:&amp;quot;p ∨ q&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
    show  &amp;quot;(p ∨ q) ∨ r&amp;quot; using 3 by (rule disjI1)}&lt;br /&gt;
next&lt;br /&gt;
   {assume 4:&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 5:&amp;quot;q&amp;quot;&lt;br /&gt;
           have 6:&amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
           show &amp;quot;(p ∨ q) ∨ r&amp;quot; using 6 by (rule disjI1)}&lt;br /&gt;
      next&lt;br /&gt;
        {assume 7:&amp;quot;r&amp;quot;&lt;br /&gt;
           show &amp;quot;(p ∨ q) ∨ r&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
      qed}&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
 have &amp;quot;(p ∨ q) ∨ r&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 1: &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
     moreover&lt;br /&gt;
     { assume 2: &amp;quot;p&amp;quot;&lt;br /&gt;
       have 3: &amp;quot;p ∨ (q ∨ r)&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
     moreover&lt;br /&gt;
     { assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
       have 5: &amp;quot;q ∨ r&amp;quot; using 4 by (rule disjI1)&lt;br /&gt;
       have 6: &amp;quot;p ∨ (q ∨ r)&amp;quot; using 5 by (rule disjI2)}&lt;br /&gt;
     ultimately have &amp;quot;p ∨ (q ∨ r)&amp;quot; by (rule disjE)}&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 7: &amp;quot;r&amp;quot;&lt;br /&gt;
     have 8: &amp;quot;q ∨ r&amp;quot; using 7 by (rule disjI2)&lt;br /&gt;
     have 9: &amp;quot;p ∨ (q ∨ r)&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
ultimately show &amp;quot;p ∨ (q ∨ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_32:&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 2:&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 3:&amp;quot;p&amp;quot;&lt;br /&gt;
         show &amp;quot;p ∨ (q ∨ r)&amp;quot; using 3 by (rule disjI1)}&lt;br /&gt;
      next&lt;br /&gt;
       {assume 4:&amp;quot;q&amp;quot;&lt;br /&gt;
         have  5:&amp;quot;q ∨ r&amp;quot;    using 4 by (rule disjI1)&lt;br /&gt;
         show &amp;quot;p ∨ (q ∨ r)&amp;quot; using 5 by (rule disjI2)} &lt;br /&gt;
       qed}&lt;br /&gt;
next&lt;br /&gt;
  {assume 6:&amp;quot;r&amp;quot;&lt;br /&gt;
     have 7:&amp;quot;q ∨ r&amp;quot; using 6 by (rule disjI2)&lt;br /&gt;
     show &amp;quot;p ∨ (q ∨ r)&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
 have 1: &amp;quot;p&amp;quot; using assms(1) by (rule conjunct1)&lt;br /&gt;
    have 2: &amp;quot;q ∨ r&amp;quot; using assms(1) by (rule conjunct2)&lt;br /&gt;
moreover&lt;br /&gt;
    { assume 3: &amp;quot;q&amp;quot;&lt;br /&gt;
      have 4: &amp;quot;p ∧ q&amp;quot; using 1 3 by (rule conjI)&lt;br /&gt;
      have 5: &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 4 by (rule disjI1)}&lt;br /&gt;
moreover&lt;br /&gt;
    { assume 6: &amp;quot;r&amp;quot;&lt;br /&gt;
      have 7: &amp;quot;p ∧ r&amp;quot; using 1 6 by (rule conjI)&lt;br /&gt;
      have 8: &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
ultimately show &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_33:&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 5:&amp;quot;p ∧ q&amp;quot; using 2 4 by (rule conjI)&lt;br /&gt;
         show &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 5 by (rule disjI1)}&lt;br /&gt;
    next&lt;br /&gt;
      {assume 6:&amp;quot;r&amp;quot;&lt;br /&gt;
         have 7:&amp;quot;p ∧ r&amp;quot; using 2 6 by (rule conjI)&lt;br /&gt;
         show &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using 7 by (rule disjI2)}&lt;br /&gt;
    qed&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
 have &amp;quot;(p ∧ q) ∨ (p ∧ r)&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 1: &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
     have 2: &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
     have 3: &amp;quot;q ∨ r&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
     have 4: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
     have 5: &amp;quot;p ∧ (q ∨ r)&amp;quot; using 4 3 by (rule conjI)}&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 6: &amp;quot;p ∧ r&amp;quot;&lt;br /&gt;
     have 7: &amp;quot;r&amp;quot; using 6 by (rule conjunct2)&lt;br /&gt;
     have 8: &amp;quot;q ∨ r&amp;quot; using 7 by (rule disjI2)&lt;br /&gt;
     have 9: &amp;quot;p&amp;quot; using 6 by (rule conjunct1)&lt;br /&gt;
     have 10: &amp;quot;p ∧ (q ∨ r)&amp;quot; using 9 8 by (rule conjI)}&lt;br /&gt;
ultimately show &amp;quot;p ∧ (q ∨ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_34:&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;
using 1&lt;br /&gt;
proof (rule disjE)&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 4 by (rule disjI1)&lt;br /&gt;
     show &amp;quot;p ∧ (q ∨ r)&amp;quot; using 3 5 by (rule conjI)}&lt;br /&gt;
next&lt;br /&gt;
  {assume 6:&amp;quot;p ∧ r&amp;quot;&lt;br /&gt;
     have 7:&amp;quot;p&amp;quot;     using 6 by (rule conjunct1)&lt;br /&gt;
     have 8:&amp;quot;r&amp;quot;     using 6 by (rule conjunct2)&lt;br /&gt;
     have 9:&amp;quot;q ∨ r&amp;quot; using 8 by (rule disjI2)&lt;br /&gt;
     show &amp;quot;p ∧ (q ∨ r)&amp;quot; using 7 9 by (rule conjI)}&lt;br /&gt;
qed&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;
proof -&lt;br /&gt;
have &amp;quot;p ∨ (q ∧ r)&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
     have 2: &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
     have 3: &amp;quot;p ∨ r&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
     have 4: &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 2 3 by (rule conjI)}&lt;br /&gt;
moreover&lt;br /&gt;
   { assume 5: &amp;quot;q ∧ r&amp;quot;&lt;br /&gt;
     have 6: &amp;quot;q&amp;quot; using 5 by (rule conjunct1)&lt;br /&gt;
     have 7: &amp;quot;p ∨ q&amp;quot; using 6 by (rule disjI2)&lt;br /&gt;
     have 8: &amp;quot;r&amp;quot; using 5 by (rule conjunct2)&lt;br /&gt;
     have 9: &amp;quot;p ∨ r&amp;quot; using 8 by (rule disjI2)&lt;br /&gt;
     have 10: &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 7 9 by (rule conjI)}&lt;br /&gt;
ultimately show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_35:&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;
using 1&lt;br /&gt;
proof (rule disjE)&lt;br /&gt;
  {assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
     have 3:&amp;quot;p ∨ q&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
     have 4:&amp;quot;p ∨ r&amp;quot; using 2 by (rule disjI1)&lt;br /&gt;
     show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 3 4 by (rule conjI)}&lt;br /&gt;
next&lt;br /&gt;
  {assume 5:&amp;quot;q ∧ r&amp;quot;&lt;br /&gt;
     have 6:&amp;quot;q&amp;quot;     using 5 by (rule conjunct1)&lt;br /&gt;
     have 7:&amp;quot;r&amp;quot;     using 5 by (rule conjunct2)&lt;br /&gt;
     have 8:&amp;quot;p ∨ q&amp;quot; using 6 by (rule disjI2)&lt;br /&gt;
     have 9:&amp;quot;p ∨ r&amp;quot; using 7 by (rule disjI2)&lt;br /&gt;
     show &amp;quot;(p ∨ q) ∧ (p ∨ r)&amp;quot; using 8 9 by (rule conjI)}&lt;br /&gt;
qed&lt;br /&gt;
&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;
proof-&lt;br /&gt;
have &amp;quot;(p ∨ q)&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
moreover&lt;br /&gt;
   {assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
    have &amp;quot;p ∨ (q ∧ r)&amp;quot; using 1 by (rule disjI1) }&lt;br /&gt;
moreover&lt;br /&gt;
    {assume 1:&amp;quot;q&amp;quot;&lt;br /&gt;
    have &amp;quot;(p ∨ r)&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
    moreover &lt;br /&gt;
    {assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
      have &amp;quot;p ∨ (q ∧ r)&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
    moreover &lt;br /&gt;
    {assume 2:&amp;quot;r&amp;quot;&lt;br /&gt;
      have 3:&amp;quot;(q ∧ r)&amp;quot; using 1 2 by (rule conjI)&lt;br /&gt;
      have &amp;quot;p ∨ (q ∧ r)&amp;quot; using 3 by (rule disjI2)}&lt;br /&gt;
    ultimately have &amp;quot;p ∨ (q ∧ r)&amp;quot; by (rule disjE)}&lt;br /&gt;
ultimately show &amp;quot;p ∨ (q ∧ r)&amp;quot;  by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
------------------- ----------&lt;br /&gt;
&lt;br /&gt;
 proof-&lt;br /&gt;
have 1: &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 3: &amp;quot;p&amp;quot; &lt;br /&gt;
show &amp;quot;p∨(q∧r)&amp;quot; using 3 by ( rule disjI1)}&lt;br /&gt;
next&lt;br /&gt;
{assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
have 5:&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 6: &amp;quot;p&amp;quot;&lt;br /&gt;
show &amp;quot;p∨(q∧r)&amp;quot; using 6 by (rule disjI1)}&lt;br /&gt;
next&lt;br /&gt;
{assume 7: &amp;quot;r&amp;quot;&lt;br /&gt;
have 8: &amp;quot;q∧r&amp;quot; using 4 7 by (rule conjI)&lt;br /&gt;
show &amp;quot;p∨(q∧r)&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
qed}&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume  &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
moreover &lt;br /&gt;
 {assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
  have 2:&amp;quot;(p ⟶ r)&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
  have &amp;quot;r&amp;quot; using 2 1 by (rule mp)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 1:&amp;quot;q&amp;quot;&lt;br /&gt;
  have 2:&amp;quot;(q ⟶ r)&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
  have &amp;quot;r&amp;quot; using 2 1 by (rule mp)}&lt;br /&gt;
ultimately have &amp;quot;r&amp;quot; by (rule disjE)}&lt;br /&gt;
thus  &amp;quot;p ∨ q ⟶ r&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
lemma ejercicio_37:&lt;br /&gt;
  assumes 1:&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 2:&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 3:&amp;quot;p&amp;quot;&lt;br /&gt;
         have 4:&amp;quot;p ⟶ r&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
         show &amp;quot;r&amp;quot;       using 4 3 by (rule mp)}&lt;br /&gt;
    next&lt;br /&gt;
     {assume 5:&amp;quot;q&amp;quot;&lt;br /&gt;
        have 6:&amp;quot;q ⟶ r&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
        show &amp;quot;r&amp;quot;       using 6 5 by (rule mp)}&lt;br /&gt;
   qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
have 3 : &amp;quot;r&amp;quot; using assms 2 by (rule mp)}&lt;br /&gt;
hence 4 : &amp;quot;p⟶r&amp;quot; by (rule impI)&lt;br /&gt;
{assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
have 7 : &amp;quot;r&amp;quot; using assms 6 by (rule mp)}&lt;br /&gt;
hence 8 : &amp;quot;q⟶r&amp;quot; by (rule impI)&lt;br /&gt;
show &amp;quot;(p ⟶ r) ∧ (q ⟶ r)&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&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;
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;
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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;q&amp;quot; using assms 1 ..}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; ..&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;False&amp;quot; using assms 1 by (rule notE)&lt;br /&gt;
have 3 : &amp;quot;q&amp;quot; using 2 by (rule FalseE)}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have 2: &amp;quot;q&amp;quot; using assms 1 by (rule notE)}&lt;br /&gt;
thus  &amp;quot;p ⟶ q&amp;quot; by ( rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1:&amp;quot;¬q&amp;quot;&lt;br /&gt;
have &amp;quot;¬p&amp;quot; using assms 1 by (rule mt)}&lt;br /&gt;
thus &amp;quot;¬q ⟶ ¬p&amp;quot; ..&lt;br /&gt;
qed&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;
&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 1:&amp;quot;q&amp;quot;&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms(2) 1 ..&lt;br /&gt;
qed  &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;
proof-&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using 1 .}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 3 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 4 : &amp;quot;¬q&amp;quot; using assms(2) .&lt;br /&gt;
have 5 : &amp;quot;False&amp;quot; using 4 3 by (rule notE)&lt;br /&gt;
have 6 : &amp;quot;p&amp;quot; using 5 by (rule FalseE)}&lt;br /&gt;
ultimately show &amp;quot;p&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
--------**---&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have &amp;quot;p&amp;quot; using 1 by this}&lt;br /&gt;
next&lt;br /&gt;
{assume 2: &amp;quot;q&amp;quot;&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms(2) 2 by (rule notE)}&lt;br /&gt;
qed &lt;br /&gt;
&lt;br /&gt;
text {* --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 43. 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;
&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof&lt;br /&gt;
assume &amp;quot;q&amp;quot;&lt;br /&gt;
thus &amp;quot;q&amp;quot; .&lt;br /&gt;
next&lt;br /&gt;
assume 1:&amp;quot;p&amp;quot;&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms(2) 1 ..&lt;br /&gt;
qed  &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;
proof-&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using assms(1) by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;¬p&amp;quot; using assms(2) .&lt;br /&gt;
have 3 : &amp;quot;False&amp;quot; using 2 1 by (rule notE)&lt;br /&gt;
have 4 : &amp;quot;q&amp;quot; using 3 by (rule FalseE)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;q&amp;quot; using 5 .}&lt;br /&gt;
ultimately show &amp;quot;q&amp;quot; by (rule disjE)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**--&lt;br /&gt;
using assms(1)&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
show &amp;quot;q&amp;quot; using assms(2) 1 by (rule notE)&lt;br /&gt;
next&lt;br /&gt;
assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
have &amp;quot;p&amp;quot; using 2 by this&lt;br /&gt;
qed&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;
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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;¬p ∧ ¬q&amp;quot;&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;p&amp;quot; &lt;br /&gt;
  have 3 : &amp;quot;¬p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;q&amp;quot; &lt;br /&gt;
  have 6 : &amp;quot;¬q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 6 5 by (rule notE)}&lt;br /&gt;
ultimately have 8 : &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(¬p ∧ ¬q)&amp;quot;  by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 2 :&amp;quot;¬p∧¬q&amp;quot;&lt;br /&gt;
show False &lt;br /&gt;
using assms&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
{assume 1: &amp;quot;p&amp;quot; &lt;br /&gt;
have 3: &amp;quot;¬p&amp;quot; using 2 by (rule conjunct1)&lt;br /&gt;
show False using 3 1 by (rule notE)}&lt;br /&gt;
{assume 4: &amp;quot;q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;¬q&amp;quot; using 2 by (rule conjunct2)&lt;br /&gt;
show False using 5 4 by (rule notE)}&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;¬p ∨ ¬q&amp;quot;&lt;br /&gt;
have &amp;quot;¬p ∨ ¬q&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 2 3 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 6 : &amp;quot;q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 5 6 by (rule notE)}&lt;br /&gt;
ultimately have &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(¬p ∨ ¬q)&amp;quot; by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
  assumes &amp;quot;p ∧ q&amp;quot; &lt;br /&gt;
  shows   &amp;quot;¬(¬p ∨ ¬q)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
proof (rule notI)&lt;br /&gt;
assume 1: &amp;quot;¬p∨¬q&amp;quot;&lt;br /&gt;
show False &lt;br /&gt;
using 1&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
assume 2:  &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
show False using 2 3 by (rule notE)&lt;br /&gt;
next&lt;br /&gt;
assume 4: &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
show False using 4 5 by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p ∨ q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
have 3 : &amp;quot;False&amp;quot; using assms 2 by (rule notE)}&lt;br /&gt;
hence 4 : &amp;quot;¬p&amp;quot; by (rule notI)&lt;br /&gt;
{assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;p ∨ q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
have 7 : &amp;quot;False&amp;quot; using assms 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;¬q&amp;quot; by (rule notI)&lt;br /&gt;
show &amp;quot;¬p ∧ ¬q&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
(*Otra opción para usar tercio excluso*)&lt;br /&gt;
&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 -&lt;br /&gt;
  have 1:&amp;quot;¬p | p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
  show &amp;quot;¬p &amp;amp; ¬q&amp;quot;&lt;br /&gt;
  using 1&lt;br /&gt;
  proof (rule disjE)&lt;br /&gt;
    {assume 2:&amp;quot;¬p&amp;quot;&lt;br /&gt;
      have 3:&amp;quot;¬q | q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
      show &amp;quot;¬p &amp;amp; ¬q&amp;quot;&lt;br /&gt;
      using 3&lt;br /&gt;
      proof (rule disjE)&lt;br /&gt;
        {assume 4:&amp;quot;¬q&amp;quot;&lt;br /&gt;
          with 2 show &amp;quot;¬p &amp;amp; ¬q&amp;quot; by (rule conjI)}&lt;br /&gt;
        next&lt;br /&gt;
        {assume &amp;quot;q&amp;quot;&lt;br /&gt;
          then have &amp;quot;p | q&amp;quot; by (rule disjI2)&lt;br /&gt;
          with assms show &amp;quot;¬p &amp;amp; ¬q&amp;quot; by (rule notE)}&lt;br /&gt;
      qed&lt;br /&gt;
      }&lt;br /&gt;
    next&lt;br /&gt;
    {assume 5:&amp;quot;p&amp;quot;&lt;br /&gt;
      then have &amp;quot;p | q&amp;quot; by (rule disjI1)&lt;br /&gt;
      with assms show &amp;quot;¬p &amp;amp; ¬q&amp;quot; by (rule notE)&lt;br /&gt;
      }&lt;br /&gt;
  qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∨ q&amp;quot;&lt;br /&gt;
have &amp;quot;p ∨ q&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;¬p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;q&amp;quot;&lt;br /&gt;
  have 6 : &amp;quot;¬q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
  have 6 : &amp;quot;False&amp;quot; using 6 5 by (rule notE)}&lt;br /&gt;
ultimately have &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(p ∨ q)&amp;quot; by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 1: &amp;quot;p∨q&amp;quot;&lt;br /&gt;
show False&lt;br /&gt;
using 1 &lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
{assume 2:&amp;quot;p&amp;quot;&lt;br /&gt;
have 3:&amp;quot;¬p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
show &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
next&lt;br /&gt;
{assume 5:&amp;quot;q&amp;quot;&lt;br /&gt;
have 6:&amp;quot;¬q&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
show &amp;quot;False&amp;quot; using 6 5 by (rule notE)}&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ q&amp;quot;&lt;br /&gt;
have &amp;quot;¬p ∨ ¬q&amp;quot; using assms by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 2 3 by (rule notE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 5 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 6 : &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 5 6 by (rule notE)}&lt;br /&gt;
ultimately have &amp;quot;False&amp;quot; by (rule disjE)}&lt;br /&gt;
thus &amp;quot;¬(p ∧ q)&amp;quot; by (rule notI)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 1:&amp;quot;p∧q&amp;quot;&lt;br /&gt;
show False&lt;br /&gt;
using assms&lt;br /&gt;
proof(rule disjE)&lt;br /&gt;
assume 2:&amp;quot;¬p&amp;quot;&lt;br /&gt;
have 3: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
show False using 2 3 by (rule notE)&lt;br /&gt;
next&lt;br /&gt;
assume 4: &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;q&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
show False using 4 5 by (rule notE)&lt;br /&gt;
qed&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p ∧ ¬p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
have 3 : &amp;quot;¬p&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
have 4 : &amp;quot;False&amp;quot; using 3 2 by (rule notE)}&lt;br /&gt;
thus &amp;quot;¬(p ∧ ¬p)&amp;quot; by (rule notI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
proof(rule notI)&lt;br /&gt;
assume 1: &amp;quot;p∧¬p&amp;quot;&lt;br /&gt;
have 2: &amp;quot;p&amp;quot; using 1 by (rule conjunct1)&lt;br /&gt;
have 3: &amp;quot;¬p&amp;quot; using 1 by (rule conjunct2)&lt;br /&gt;
show False using 3 2 by (rule notE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1 : &amp;quot;p&amp;quot; using assms by (rule conjunct1)&lt;br /&gt;
have 2 : &amp;quot;¬p&amp;quot; using assms by (rule conjunct2)&lt;br /&gt;
show &amp;quot;q&amp;quot; using 2 1 by (rule notE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
show &amp;quot;p&amp;quot; using assms by (rule notnotD)&lt;br /&gt;
qed&lt;br /&gt;
&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;
proof(rule ccontr)&lt;br /&gt;
assume 1: &amp;quot;¬p&amp;quot;&lt;br /&gt;
show False using assms 1 by (rule notE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1: &amp;quot;¬p∨p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have 2: &amp;quot;¬p∨p&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 3: &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 4: &amp;quot;p∨¬p&amp;quot; using 3 by (rule disjI2)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 5: &amp;quot;p&amp;quot;&lt;br /&gt;
have 6: &amp;quot;p∨¬p&amp;quot; using 5 by (rule disjI1)}&lt;br /&gt;
ultimately show &amp;quot;p∨¬p&amp;quot; by (rule disjE)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;(p ⟶ q) ⟶ p&amp;quot;&lt;br /&gt;
 {assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;¬(p⟶q)&amp;quot; using 1 2 by (rule mt)&lt;br /&gt;
    {assume 4 : &amp;quot;p&amp;quot;&lt;br /&gt;
     have 5 : &amp;quot;q&amp;quot; using 2 4 by (rule notE)}&lt;br /&gt;
  hence 6 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
  have 7 : &amp;quot;False&amp;quot; using 3 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;p&amp;quot; by (rule ccontr)}&lt;br /&gt;
thus  &amp;quot;((p ⟶ q) ⟶ p) ⟶ p&amp;quot; by (rule impI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;p&amp;quot;&lt;br /&gt;
 {assume 2 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 3 : &amp;quot;¬p&amp;quot; using assms 2 by (rule mp)&lt;br /&gt;
  have 4 : &amp;quot;False&amp;quot; using 3 1 by (rule notE)}&lt;br /&gt;
hence 5 : &amp;quot;q&amp;quot; by (rule ccontr)}&lt;br /&gt;
thus &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
---**&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
proof(rule impI)&lt;br /&gt;
assume 1: &amp;quot;p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;¬¬p&amp;quot; using 1 by (rule notnotI)&lt;br /&gt;
have 3: &amp;quot;¬¬q&amp;quot; using assms 2 by (rule mt)&lt;br /&gt;
show  &amp;quot;q&amp;quot; using 3 by (rule notnotD)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
have 1 : &amp;quot;¬p ∨ p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬p ∨ p&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;¬p&amp;quot; &lt;br /&gt;
have 3 : &amp;quot;¬q ∨ q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬q ∨ q&amp;quot; using 3 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 4 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 5 : &amp;quot;¬p ∧ ¬q&amp;quot; using 2 4 by (rule conjI)&lt;br /&gt;
  have 6 : &amp;quot;False&amp;quot; using assms 5 by (rule notE)&lt;br /&gt;
  have 7 : &amp;quot;p ∨ q&amp;quot; using 6 by (rule FalseE)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 8 : &amp;quot;q&amp;quot;&lt;br /&gt;
  have 9 : &amp;quot;p ∨ q&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
ultimately have &amp;quot;p ∨ q&amp;quot; by (rule disjE)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 10 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 11 : &amp;quot;p ∨ q&amp;quot; using 10 by (rule disjI1)}&lt;br /&gt;
ultimately show &amp;quot;p ∨ q&amp;quot; by (rule disjE)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
{assume 1 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 2 : &amp;quot;¬p ∨ ¬q&amp;quot; using 1 by (rule disjI1)&lt;br /&gt;
have 3 : &amp;quot;False&amp;quot; using assms 2 by (rule notE)}&lt;br /&gt;
hence 4 : &amp;quot;p&amp;quot; by (rule ccontr)&lt;br /&gt;
{assume 5 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 6 : &amp;quot;¬p ∨ ¬q&amp;quot; using 5 by (rule disjI2)&lt;br /&gt;
have 7 : &amp;quot;False&amp;quot; using assms 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;q&amp;quot; by (rule ccontr)&lt;br /&gt;
show &amp;quot;p ∧ q&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
qed&lt;br /&gt;
&lt;br /&gt;
--**&lt;br /&gt;
proof-&lt;br /&gt;
{assume 1: &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 2: &amp;quot;¬p∨¬q&amp;quot;using 1 by (rule disjI1)&lt;br /&gt;
have 3: &amp;quot;False&amp;quot; using assms 2 by (rule notE)}&lt;br /&gt;
hence 8: &amp;quot;p&amp;quot; by (rule ccontr)&lt;br /&gt;
{assume 4: &amp;quot;¬q&amp;quot;&lt;br /&gt;
have 5: &amp;quot;¬p∨¬q&amp;quot; using 4 by (rule disjI2)&lt;br /&gt;
have 6: &amp;quot;False&amp;quot; using assms 5 by (rule notE)}&lt;br /&gt;
hence 9: &amp;quot;q&amp;quot; by (rule ccontr)&lt;br /&gt;
show &amp;quot;p∧q&amp;quot; using 8 9 by (rule conjI)&lt;br /&gt;
qed&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;
proof-&lt;br /&gt;
have 1 : &amp;quot;¬p ∨ p&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬p ∨ p&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;¬p&amp;quot;&lt;br /&gt;
have 3 : &amp;quot;¬p ∨ ¬q&amp;quot; using 2 by (rule disjI1)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 4 : &amp;quot;p&amp;quot;&lt;br /&gt;
have 5 : &amp;quot;¬q ∨ q&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬q ∨ q&amp;quot; using 5 by this&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 6 : &amp;quot;¬q&amp;quot;&lt;br /&gt;
  have 7 : &amp;quot;¬p ∨ ¬q&amp;quot; using 6 by (rule disjI2)}&lt;br /&gt;
moreover&lt;br /&gt;
 {assume 8 : &amp;quot;q&amp;quot;&lt;br /&gt;
  have 9 : &amp;quot;p ∧ q&amp;quot; using 4 8 by (rule conjI)&lt;br /&gt;
  have 10 : &amp;quot;False&amp;quot; using assms 9 by (rule notE)&lt;br /&gt;
  have 11 : &amp;quot;¬p ∨ ¬q&amp;quot; using 10 by (rule FalseE)}&lt;br /&gt;
ultimately have &amp;quot;¬p ∨ ¬q&amp;quot; by (rule disjE)}&lt;br /&gt;
ultimately show &amp;quot;¬p ∨ ¬q&amp;quot; by (rule disjE)&lt;br /&gt;
qed&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;
&lt;br /&gt;
proof-&lt;br /&gt;
have 1 : &amp;quot;¬(p ⟶ q) ∨ (p ⟶ q)&amp;quot; by (rule excluded_middle)&lt;br /&gt;
have &amp;quot;¬(p ⟶ q) ∨ (p ⟶ q)&amp;quot; using 1 by this&lt;br /&gt;
moreover&lt;br /&gt;
{assume 2 : &amp;quot;¬(p ⟶ q)&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 .}&lt;br /&gt;
  hence 6 : &amp;quot;p⟶q&amp;quot; by (rule impI)&lt;br /&gt;
  have 7 : &amp;quot;p&amp;quot; using 2 6 by (rule notE)}&lt;br /&gt;
hence 8 : &amp;quot;q⟶p&amp;quot; by (rule impI)&lt;br /&gt;
have 9 : &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; using 8 by (rule disjI2)}&lt;br /&gt;
moreover&lt;br /&gt;
{assume 10 : &amp;quot;p ⟶ q&amp;quot;&lt;br /&gt;
have 11 : &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; using 10 by (rule disjI1)}&lt;br /&gt;
ultimately show &amp;quot;(p ⟶ q) ∨ (q ⟶ p)&amp;quot; by (rule disjE)&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>Albromgon</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_2&amp;diff=57</id>
		<title>Relación 2</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_2&amp;diff=57"/>
		<updated>2016-02-23T13:16:34Z</updated>

		<summary type="html">&lt;p&gt;Albromgon: Añado contraejemplo al ejercicio 7.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Relación 1(b): Representación del conocimiento proposicional ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 1.&amp;#039;&amp;#039;&amp;#039; Formalizar el siguiente argumento &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Siempre que un número x es divisible por 10, acaba en 0. El número x no acaba en 0. Por lo tanto, x no es divisible por 10.&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Usando los símbolos D: el número es divisible por 10 y C: el número acaba en cero.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&amp;lt;math&amp;gt;D \to C \qquad \lnot C \to \lnot D&amp;lt;/math&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 2.&amp;#039;&amp;#039;&amp;#039; Formalizar el siguiente argumento &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Si la válvula está abierta o la monitorización está preparada, entonces se envía una señal de reconocimiento y un mensaje de funcionamiento al controlador del ordenador. Si se envía un mensaje  de funcionamiento al controlador del ordenador o el sistema está en  estado normal, entonces se aceptan las órdenes del operador. Por lo tanto, si la válvula está abierta, entonces se aceptan las órdenes del operador.&amp;#039;&amp;#039; &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Usando los símbolos V: La válvula está abierta, P: La monitorización está preparada, R: Envía una señal de reconocimiento, F: Envía un mensaje de funcionamiento, A: Se aceptan órdenes del operador y N: El sistema está en estado normal.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
(V \vee P \to R \wedge F) \quad &lt;br /&gt;
(F \vee N \to A) \quad \vDash V\to A&amp;lt;/math&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 3.&amp;#039;&amp;#039;&amp;#039; Formalizar el siguiente argumento &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Cuando tanto la temperatura como la presión atmosférica permanecen contantes, no llueve. La temperatura permanece constante. Por lo tanto, en caso de que llueva, la presión atmosférica no permanece constante.&amp;#039;&amp;#039; &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Usando los símbolos T: La temperatura permanece constante, P: La presión atmosférica permanece constante y L: Llueve&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;math&amp;gt; (T \wedge  P) \to \lnot L   &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; T \vDash L \to \lnot P &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falta un detalle en la solución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; ((T \wedge  P) \to \lnot L) \quad  T \quad \vDash L \to \lnot P &amp;lt;/math&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 4.&amp;#039;&amp;#039;&amp;#039; Formalizar el siguiente argumento &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;En cierto experimento, cuando hemos empleado un fármaco A, el paciente ha mejorado considerablemente en el caso, y sólo en el caso, en que no se haya empleado también un fármaco B. Además, o se ha empleado el fármaco A o se ha empleado el fármaco B. En consecuencia, podemos afirmar que si no hemos empleado el fármaco B, el paciente ha mejorado considerablemente.&amp;#039;&amp;#039; &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Usando los símbolos A: Hemos empleado el fármaco A, B: Hemos empleado el fármaco B y M: El paciente ha mejorado notablemente.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;math&amp;gt; (A \to (M \leftrightarrow \lnot B)) \wedge (A \vee B) \quad \vDash \lnot B \to M &amp;lt;/math&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 5.&amp;#039;&amp;#039;&amp;#039; Definir por recursión sobre fórmulas las siguientes funciones&lt;br /&gt;
&lt;br /&gt;
* nv(F) que calcula el número variables proposicionales que ocurren en la fórmula F. Por ejemplo,&lt;br /&gt;
: nv(p → p ∨ q) = 3.&lt;br /&gt;
* prof(F) que calcula la profundidad del árbol de análisis de la fórmula F. Por ejemplo,&lt;br /&gt;
: prof(p → p ∨ q) = 2.&lt;br /&gt;
&lt;br /&gt;
Demostrar por inducción, que para toda fórmula F,&lt;br /&gt;
: nv(F) ≤ 2^prof(F)&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
nv(F)=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
1 \quad si \quad  F Atomica \\&lt;br /&gt;
nv(G) \quad si \quad F= \lnot G \\&lt;br /&gt;
nv(G)+nv(H) \quad si \quad F=(G*H)&lt;br /&gt;
\end{cases} &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
prof(F)=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
1 \quad si \quad F Atomica \\&lt;br /&gt;
prof(G) \quad si \quad F= \lnot G \\&lt;br /&gt;
1+ max(prof(G),prof(H)) \quad si \quad F=(G*H)&lt;br /&gt;
\end{cases} &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Demostración por inducción: &amp;lt;br /&amp;gt;&lt;br /&gt;
Se comprueba para lo que consideramos nuestro caso base, cuando F es atómica &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
F \quad atomica \to nv(F)=1 \leqslant 2^{prof(F)}=2^1 &lt;br /&gt;
&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Posteriormente suponemos que la desigualdad se da para &amp;lt;math&amp;gt;nv(F) &amp;lt; n+1&amp;lt;/math&amp;gt;, y lo comprobamos para &amp;lt;math&amp;gt;nv(F)=n+1&amp;lt;/math&amp;gt;: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;nv(F)=n+1 \to F=(G*H) \to n(F)=nv(G)+nv(H) \quad &amp;lt;/math&amp;gt; .Pero &amp;lt;math&amp;gt;(nv(G)&amp;lt;n+1) \wedge (nv(H)&amp;lt;n+1) \to nv(F)=nv(G)+nv(H) \leqslant 2^{prof(G)}+2^{prof(H)} \leqslant 2^{prof(F)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 6.&amp;#039;&amp;#039;&amp;#039; ¿Existe un conjunto S de tres fórmulas tal que de todos los subconjuntos de S sólo uno es consistente?&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
No entiendo bien la pregunta, pero doy una &amp;quot;posible&amp;quot; respuesta: &amp;lt;br /&amp;gt;&lt;br /&gt;
Si &amp;lt;math&amp;gt;S=\{ F_1 , F_2,F_3 \}, \quad &amp;lt;/math&amp;gt; tendríamos los subconjuntos siguientes &amp;lt;math&amp;gt;\{F_1\},\{F_2\},\{F_3\},\{F_1,F_2\},\{F_1,F_3\},\{F_2,F_3\},S&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Luego, si tomamos &amp;lt;math&amp;gt;F_1 \quad&amp;lt;/math&amp;gt; una tautología y  &amp;lt;math&amp;gt;F_2,F_3 \quad&amp;lt;/math&amp;gt; contradicciones, sólo el subconjunto &amp;lt;math&amp;gt;\{F_1\} \quad&amp;lt;/math&amp;gt; sería consistente. &amp;lt;br /&amp;gt;&lt;br /&gt;
Por ejemplo: &amp;lt;math&amp;gt;F_1=(p\wedge q)\to (p\vee r), \quad F_2=(p\vee q) \leftrightarrow \lnot (p \vee q), \quad F_3=(p\to q)\wedge \lnot (p \to q)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 7.&amp;#039;&amp;#039;&amp;#039; ¿Es cierto que si F → G y F son satisfacibles, entonces G es satisfacible? Si es cierto, dar una explicación. Si no es cierto, dar un contraejemplo.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Dado que &amp;lt;math&amp;gt;F \quad&amp;lt;/math&amp;gt; es satisfacible y &amp;lt;math&amp;gt;F\to F&amp;lt;/math&amp;gt; también lo es, para cada una de ellas existe una interpretación para la que sean ciertas. Luego, la tabla de verdad de todas las combinaciones posibles (para las que &amp;lt;math&amp;gt;F\to G&amp;lt;/math&amp;gt; es cierta) serán: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{|c|c||c|} F &amp;amp; G &amp;amp; F\to G \\&lt;br /&gt;
\hline&lt;br /&gt;
1&amp;amp;1&amp;amp;1\\&lt;br /&gt;
0&amp;amp;0&amp;amp;1\\&lt;br /&gt;
0&amp;amp;1&amp;amp;1\\&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Por lo tanto, no necesariamente &amp;lt;math&amp;gt;G \quad&amp;lt;/math&amp;gt; es satisfacible, pues si es una contradicción, aún existen interpretaciones para las que &amp;lt;math&amp;gt;F\to G \quad &amp;lt;/math&amp;gt; es cierta. &amp;lt;br /&amp;gt;&lt;br /&gt;
Si &amp;lt;math&amp;gt;F\quad&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;F\to G \quad&amp;lt;/math&amp;gt; deben ser satisfacibles de forma simultánea, entonces sí tendríamos que &amp;lt;math&amp;gt;G \quad&amp;lt;/math&amp;gt; es satisfacible. &lt;br /&gt;
&lt;br /&gt;
Como contraejemplo podemos tomar las fórmulas &amp;lt;math&amp;gt;F = \neg p&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;G = (p \wedge \neg p)&amp;lt;/math&amp;gt;. Tenemos que &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es satisfacible (&amp;lt;math&amp;gt;I(p)=0&amp;lt;/math&amp;gt; es modelo de &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;) y que &amp;lt;math&amp;gt;F \to G&amp;lt;/math&amp;gt; también es satisfacible (&amp;lt;math&amp;gt;I(p)=1&amp;lt;/math&amp;gt; es modelo de &amp;lt;math&amp;gt;\neg p \to (p \wedge \neg p)&amp;lt;/math&amp;gt;) pero &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; es insatisfacible.&lt;br /&gt;
---- &lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 8.&amp;#039;&amp;#039;&amp;#039; Demostrar o refutar las siguientes proposiciones:&lt;br /&gt;
&lt;br /&gt;
# Si F es una fórmula satisfacible, entonces todas las subfórmulas de F son satisfacibles.&lt;br /&gt;
# Existen fórmulas válidas tales que todas sus subfórmulas son válidas.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# Damos un contraejemplo para probar que no se cumple. La fórmula &amp;lt;math&amp;gt;F =\neg (p \wedge \neg p )&amp;lt;/math&amp;gt; es una tautología, es decir, toda interpretación es modelo de &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;. En cambio, su subfórmula &amp;lt;math&amp;gt;G = p \wedge \neg p&amp;lt;/math&amp;gt;, por la definición de interpretación (&amp;lt;math&amp;gt;I(F)=H_{\neg}(I(G))&amp;lt;/math&amp;gt;) es una contradicción, o sea, que ninguna interpretación es modelo de &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; y por lo tanto es una subfórmula de &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; insatisfacible.&lt;br /&gt;
# Una fórmula válida es una tautología.  Luego queda probado si encontramos algun ejemplo de tautología en la que toda subfórmula sea tautología o refutado si demostramos que no es posible. La considero falsa pues en primer lugar, las fórmulas atómicas son subfórmulas y pueden tomar interpretaciones ciertas o falsas. Y en segundo lugar, las subfórmulas más simples que pueden componer la tautología (que no sean atómicas), están formadas por la combinación de fórmulas atómicas y conectivas lógicas, las cuales no son tautologías (si formamos una fórmula empleando una única conectiva).&lt;/div&gt;</summary>
		<author><name>Albromgon</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_2&amp;diff=46</id>
		<title>Relación 2</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2016/index.php?title=Relaci%C3%B3n_2&amp;diff=46"/>
		<updated>2016-02-23T09:08:26Z</updated>

		<summary type="html">&lt;p&gt;Albromgon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Relación 1(b): Representación del conocimiento proposicional ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 1.&amp;#039;&amp;#039;&amp;#039; Formalizar el siguiente argumento &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Siempre que un número x es divisible por 10, acaba en 0. El número x no acaba en 0. Por lo tanto, x no es divisible por 10.&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Usando los símbolos D: el número es divisible por 10 y C: el número acaba en cero.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&amp;lt;math&amp;gt;D \to C \qquad \lnot C \to \lnot D&amp;lt;/math&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 2.&amp;#039;&amp;#039;&amp;#039; Formalizar el siguiente argumento &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Si la válvula está abierta o la monitorización está preparada, entonces se envía una señal de reconocimiento y un mensaje de funcionamiento al controlador del ordenador. Si se envía un mensaje  de funcionamiento al controlador del ordenador o el sistema está en  estado normal, entonces se aceptan las órdenes del operador. Por lo tanto, si la válvula está abierta, entonces se aceptan las órdenes del operador.&amp;#039;&amp;#039; &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Usando los símbolos V: La válvula está abierta, P: La monitorización está preparada, R: Envía una señal de reconocimiento, F: Envía un mensaje de funcionamiento, A: Se aceptan órdenes del operador y N: El sistema está en estado normal.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
(V \vee P \to R \wedge F) \quad &lt;br /&gt;
(F \vee N \to A) \quad \vDash V\to A&amp;lt;/math&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 3.&amp;#039;&amp;#039;&amp;#039; Formalizar el siguiente argumento &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;Cuando tanto la temperatura como la presión atmosférica permanecen contantes, no llueve. La temperatura permanece constante. Por lo tanto, en caso de que llueva, la presión atmosférica no permanece constante.&amp;#039;&amp;#039; &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Usando los símbolos T: La temperatura permanece constante, P: La presión atmosférica permanece constante y L: Llueve&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;math&amp;gt; (T \wedge  P) \to \lnot L   &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt; T \vDash L \to \lnot P &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falta un detalle en la solución&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt; ((T \wedge  P) \to \lnot L) \quad  T \quad \vDash L \to \lnot P &amp;lt;/math&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 4.&amp;#039;&amp;#039;&amp;#039; Formalizar el siguiente argumento &lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;En cierto experimento, cuando hemos empleado un fármaco A, el paciente ha mejorado considerablemente en el caso, y sólo en el caso, en que no se haya empleado también un fármaco B. Además, o se ha empleado el fármaco A o se ha empleado el fármaco B. En consecuencia, podemos afirmar que si no hemos empleado el fármaco B, el paciente ha mejorado considerablemente.&amp;#039;&amp;#039; &lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
Usando los símbolos A: Hemos empleado el fármaco A, B: Hemos empleado el fármaco B y M: El paciente ha mejorado notablemente.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;math&amp;gt; (A \to (M \leftrightarrow \lnot B)) \wedge (A \vee B) \quad \vDash \lnot B \to M &amp;lt;/math&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 5.&amp;#039;&amp;#039;&amp;#039; Definir por recursión sobre fórmulas las siguientes funciones&lt;br /&gt;
&lt;br /&gt;
* nv(F) que calcula el número variables proposicionales que ocurren en la fórmula F. Por ejemplo,&lt;br /&gt;
: nv(p → p ∨ q) = 3.&lt;br /&gt;
* prof(F) que calcula la profundidad del árbol de análisis de la fórmula F. Por ejemplo,&lt;br /&gt;
: prof(p → p ∨ q) = 2.&lt;br /&gt;
&lt;br /&gt;
Demostrar por inducción, que para toda fórmula F,&lt;br /&gt;
: nv(F) ≤ 2^prof(F)&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
nv(F)=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
1 \quad si \quad  F Atomica \\&lt;br /&gt;
nv(G) \quad si \quad F= \lnot G \\&lt;br /&gt;
nv(G)+nv(H) \quad si \quad F=(G*H)&lt;br /&gt;
\end{cases} &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
prof(F)=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
1 \quad si \quad F Atomica \\&lt;br /&gt;
prof(G) \quad si \quad F= \lnot G \\&lt;br /&gt;
1+ max(prof(G),prof(H)) \quad si \quad F=(G*H)&lt;br /&gt;
\end{cases} &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Demostración por inducción: &amp;lt;br /&amp;gt;&lt;br /&gt;
Se comprueba para lo que consideramos nuestro caso base, cuando F es atómica &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
F \quad atomica \to nv(F)=1 \leqslant 2^{prof(F)}=2^1 &lt;br /&gt;
&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Posteriormente suponemos que la desigualdad se da para &amp;lt;math&amp;gt;nv(F) &amp;lt; n+1&amp;lt;/math&amp;gt;, y lo comprobamos para &amp;lt;math&amp;gt;nv(F)=n+1&amp;lt;/math&amp;gt;: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;nv(F)=n+1 \to F=(G*H) \to n(F)=nv(G)+nv(H) \quad &amp;lt;/math&amp;gt; .Pero &amp;lt;math&amp;gt;(nv(G)&amp;lt;n+1) \wedge (nv(H)&amp;lt;n+1) \to nv(F)=nv(G)+nv(H) \leqslant 2^{prof(G)}+2^{prof(H)} \leqslant 2^{prof(F)} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 6.&amp;#039;&amp;#039;&amp;#039; ¿Existe un conjunto S de tres fórmulas tal que de todos los subconjuntos de S sólo uno es consistente?&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
No entiendo bien la pregunta, pero doy una &amp;quot;posible&amp;quot; respuesta: &amp;lt;br /&amp;gt;&lt;br /&gt;
Si &amp;lt;math&amp;gt;S=\{ F_1 , F_2,F_3 \}, \quad &amp;lt;/math&amp;gt; tendríamos los subconjuntos siguientes &amp;lt;math&amp;gt;\{F_1\},\{F_2\},\{F_3\},\{F_1,F_2\},\{F_1,F_3\},\{F_2,F_3\},S&amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt;&lt;br /&gt;
Luego, si tomamos &amp;lt;math&amp;gt;F_1 \quad&amp;lt;/math&amp;gt; una tautología y  &amp;lt;math&amp;gt;F_2,F_3 \quad&amp;lt;/math&amp;gt; contradicciones, sólo el subconjunto &amp;lt;math&amp;gt;\{F_1\} \quad&amp;lt;/math&amp;gt; sería consistente. &amp;lt;br /&amp;gt;&lt;br /&gt;
Por ejemplo: &amp;lt;math&amp;gt;F_1=(p\wedge q)\to (p\vee r), \quad F_2=(p\vee q) \leftrightarrow \lnot (p \vee q), \quad F_3=(p\to q)\wedge \lnot (p \to q)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 7.&amp;#039;&amp;#039;&amp;#039; ¿Es cierto que si F → G y F son satisfacibles, entonces G es satisfacible? Si es cierto, dar una explicación. Si no es cierto, dar un contraejemplo.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Dado que &amp;lt;math&amp;gt;F \quad&amp;lt;/math&amp;gt; es satisfacible y &amp;lt;math&amp;gt;F\to F&amp;lt;/math&amp;gt; también lo es, para cada una de ellas existe una interpretación para la que sean ciertas. Luego, la tabla de verdad de todas las combinaciones posibles (para las que &amp;lt;math&amp;gt;F\to G&amp;lt;/math&amp;gt; es cierta) serán: &amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{array}{|c|c||c|} F &amp;amp; G &amp;amp; F\to G \\&lt;br /&gt;
\hline&lt;br /&gt;
1&amp;amp;1&amp;amp;1\\&lt;br /&gt;
0&amp;amp;0&amp;amp;1\\&lt;br /&gt;
0&amp;amp;1&amp;amp;1\\&lt;br /&gt;
\end{array}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Por lo tanto, no necesariamente &amp;lt;math&amp;gt;G \quad&amp;lt;/math&amp;gt; es satisfacible, pues si es una contradicción, aún existen interpretaciones para las que &amp;lt;math&amp;gt;F\to G \quad &amp;lt;/math&amp;gt; es cierta. &amp;lt;br /&amp;gt;&lt;br /&gt;
Si &amp;lt;math&amp;gt;F\quad&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;F\to G \quad&amp;lt;/math&amp;gt; deben ser satisfacibles de forma simultánea, entonces sí tendríamos que &amp;lt;math&amp;gt;G \quad&amp;lt;/math&amp;gt; es satisfacible. &lt;br /&gt;
----&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ejercicio 8.&amp;#039;&amp;#039;&amp;#039; Demostrar o refutar las siguientes proposiciones:&lt;br /&gt;
&lt;br /&gt;
# Si F es una fórmula satisfacible, entonces todas las subfórmulas de F son satisfacibles.&lt;br /&gt;
# Existen fórmulas válidas tales que todas sus subfórmulas son válidas.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solución:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# Damos un contraejemplo para probar que no se cumple. La fórmula &amp;lt;math&amp;gt;F =\neg (p \wedge \neg p )&amp;lt;/math&amp;gt; es una tautología, es decir, toda interpretación es modelo de &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt;. En cambio, su subfórmula &amp;lt;math&amp;gt;G = p \wedge \neg p&amp;lt;/math&amp;gt;, por la definición de interpretación (&amp;lt;math&amp;gt;I(F)=H_{\neg}(I(G))&amp;lt;/math&amp;gt;) es una contradicción, o sea, que ninguna interpretación es modelo de &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; y por lo tanto es una subfórmula de &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; insatisfacible.&lt;br /&gt;
# Una fórmula válida es una tautología.  Luego queda probado si encontramos algun ejemplo de tautología en la que toda subfórmula sea tautología o refutado si demostramos que no es posible. La considero falsa pues en primer lugar, las fórmulas atómicas son subfórmulas y pueden tomar interpretaciones ciertas o falsas. Y en segundo lugar, las subfórmulas más simples que pueden componer la tautología (que no sean atómicas), están formadas por la combinación de fórmulas atómicas y conectivas lógicas, las cuales no son tautologías (si formamos una fórmula empleando una única conectiva).&lt;/div&gt;</summary>
		<author><name>Albromgon</name></author>
		
	</entry>
</feed>