Diferencia entre revisiones de «Final del 21/10/14 (Lógica y Computabilidad)»

De Cuba-Wiki
Sin resumen de edición
 
(No se muestran 7 ediciones intermedias de 3 usuarios)
Línea 1: Línea 1:
{{Back|Lógica y Computabilidad}}
[[Archivo:2014-10-21_18.27.04.jpg | 800px]]
[[Archivo:2014-10-21_18.27.04.jpg | 800px]]


=Ejercicio 1=
=Ejercicio 1=


Hay que probar la existencia y la unicidad de que existe una única valuación que extiende a la función f.
Hay que probar la existencia y la unicidad de que existe una única valuación <math>v</math> que extiende a la función <math>f</math>.




*La existencia se prueba por inducción en la complejidad de la fórmula definiendo en cada caso cómo se evalúa.
*La existencia se prueba por inducción en la complejidad de la fórmula definiendo en cada caso cómo se evalúa.


Caso Base: sea a tal que comp(a) = 0, entonces a es una variable proposicional. Entonces f(a) está definida. Por lo tanto v(a) = f(a).
Caso Base: sea a tal que <math>comp(a) = 0</math>, entonces a es una variable proposicional. Entonces f(a) está definida. Por lo tanto <math>v(a) = f(a)</math>.
 
 
Paso Inductivo: supongamos válido hasta n, siendo n igual a la complejidad de a. Veamos si <math>comp(a) = n + 1</math>.




Paso Inductivo: supongamos válido hasta n, siendo n igual a la complejidad de a. Veamos si comp(a) = n + 1.
- Si <math>a = \neg b</math>, entonces <math>comp(b) = n</math>, por lo que por H.I. <math>v(b)</math> está definido. Queda que <math>v(a) = 1 - v(b)</math>.




- Si a = ¬b, entonces comp(b) = n, por lo que por H.I. v(b) está definido. Queda que v(a) = 1 - v(b)
- Si <math>a = b * c</math>, con <math>* \quad \in \{\wedge, \vee, \rightarrow \}</math>. Entonces comp(b) y comp(c) son menores a n+1. Por H.I. v(b) y v(c) están definidos. Por lo tanto:




- Si a = b * c, con * siendo conector AND, OR o ->. Entonces comp(b) y comp(c) son menores a n+1. Por H.I. v(b) y v(c) están definidos. Por lo tanto:
<math>v(a) = min\{v(b),v(c)\}</math> si <math>a = b \quad \wedge \quad c</math>




v(a) = mín(v(b),v(c)) si a = b AND c
<math>v(a) = max\{v(b),v(c)\}</math> si <math>a = b \quad \vee \quad c</math>




v(a) = máx(v(b),v(c)) si a = b OR c
<math>v(a) = max\{1 - v(b),v(c)\}</math> si <math>a = b \quad \rightarrow \quad c</math>




v(a) = máx(1 - v(b),v(c)) si a = b -> c
La función <math>v</math> queda definido para toda fórmula de cualquier complejidad.




La función v queda definido para toda fórmula de cualquier complejidad.
* La unicidad se prueba suponiendo que existiese otra función de valuación <math>w</math> que extiende a <math>f</math>




* La unicidad se prueba suponiendo que existiese otra función de valuación w que extiende a f
Consideremos el siguiente conjunto:
Consideremos el siguiente conjunto:


Línea 39: Línea 43:




Como w también extiende a f, I contiene a todas las variables proposicionales. Y como v y w son ambas valuaciones, I es cerrado por los conectivos por lo que Form está incluido en I. Es decir, v(P) = w(P) para toda fórmula P.
Como <math>w</math> también extiende a <math>f</math>, <math>I</math> contiene a todas las variables proposicionales. Como <math>v</math> y <math>w</math> son ambas valuaciones, <math>I</math> es cerrado por los conectivos por lo que <math>Form \subseteq I</math>. Es decir, <math>v(P) = w(P</math>) para toda fórmula <math>P</math>.




Usa el teorema de que si un subconjunto S de <math>A*</math> es cerrado por los conectivos y S contiene a todas las variables proposicionales entonces S contiene a todas las fórmulas.


Usa el teorema de que si subconjunto S de A* es cerrado por los conectivos u S contiene a todas las variables proposicionales entonces S contiene a todas las fórmulas.
Unicidad basado en el apunte de lógica de Roberto Cignoli y Guillermo Martínez.  




Unicidad basado en el apunte de lógica de Roberto Cignoli y Guillermo Martínez. Según Alejandro Petrovich también salía por inducción en la complejidad de la fórmula.
Según Alejandro Petrovich también salía por inducción en la complejidad de la fórmula.




Línea 54: Línea 59:




Sea L=<C,F,P>, para una interpretación se define:
Sea <math>L=<C,F,P></math>, para una interpretación se define:




Línea 96: Línea 101:




Con <math>g(a,b,c) = \left\{ \begin{matrix} suc(u^3_3(a,b,c)) \quad si \quad P \\ u^3_3(a,b,c) \quad si \quad \quad \neg P \end{matrix}</math>
Con <math>g(a,b,c) = \left \{ \begin{matrix} suc(u^3_3(a,b,c)) \quad si \quad P \\ u^3_3(a,b,c) \quad si \quad \quad \neg P \end{matrix}\right.  </math>




donde <math>P = u^3_1(a,b,c) \quad \mid \quad suc(u^3_2(a,b,c))</math>
donde <math>P = u^3_1(a,b,c) \quad \mid \quad suc(u^3_2(a,b,c))</math>
Más sencillo:
<math>f(n,0) = n(n)</math>
<math>f(n,m+1) = P(n, m+1) + f(n,m) </math>
donde <math>P(a,b) = a \mid b</math>
La función "divide a" (<math>\mid</math>) es primitiva recursiva y booleana, por lo que devuelve 1 o 0.
La suma también es primitiva recursiva.




Línea 135: Línea 153:


Por lo tanto, <math>\tau(n) = f(n,n) \forall n \in \mathbb{N}</math>
Por lo tanto, <math>\tau(n) = f(n,n) \forall n \in \mathbb{N}</math>


=Ejercicio 4=
=Ejercicio 4=
Línea 155: Línea 172:




Si <math>f(x) = 0 \quad o \quad f(x) = 1 \quad \longleftrightarrow \quad \psi_p(x) \downarrow \quad \rightarrow \quad Halt(x,x) \quad \vee \quad \neg Halt(x,x)</math>
Si <math>f(x) = 0 \quad o \quad f(x) = 1 \quad \longleftrightarrow \quad \psi_p(x) \downarrow \quad \rightarrow \quad (Halt(x,x) \quad \vee \quad \neg Halt(x,x))</math>




Caso particular, sea <math>e=#P</math>, <math>Halt(e,e)</math> determina si el programa <math>e</math> con entrada <math>e</math> termina o no.
Sea <math>e = \#P</math>, caso particular, <math>x=e</math>: <math>Halt(e,e)</math> determina si el programa <math>e</math> con entrada <math>e</math> termina o no.





Revisión actual - 19:59 12 nov 2018

Plantilla:Back

2014-10-21 18.27.04.jpg

Ejercicio 1[editar]

Hay que probar la existencia y la unicidad de que existe una única valuación que extiende a la función .


  • La existencia se prueba por inducción en la complejidad de la fórmula definiendo en cada caso cómo se evalúa.

Caso Base: sea a tal que , entonces a es una variable proposicional. Entonces f(a) está definida. Por lo tanto .


Paso Inductivo: supongamos válido hasta n, siendo n igual a la complejidad de a. Veamos si .


- Si , entonces , por lo que por H.I. está definido. Queda que .


- Si , con . Entonces comp(b) y comp(c) son menores a n+1. Por H.I. v(b) y v(c) están definidos. Por lo tanto:


si


si


si


La función queda definido para toda fórmula de cualquier complejidad.


  • La unicidad se prueba suponiendo que existiese otra función de valuación que extiende a


Consideremos el siguiente conjunto:



Como también extiende a , contiene a todas las variables proposicionales. Como y son ambas valuaciones, es cerrado por los conectivos por lo que . Es decir, ) para toda fórmula .


Usa el teorema de que si un subconjunto S de es cerrado por los conectivos y S contiene a todas las variables proposicionales entonces S contiene a todas las fórmulas.

Unicidad basado en el apunte de lógica de Roberto Cignoli y Guillermo Martínez.


Según Alejandro Petrovich también salía por inducción en la complejidad de la fórmula.


Ejercicio 2[editar]

a) La interpretación de un lenguaje de primer orden es una extensión del lenguaje que mapea cada símbolo constante, función k-aria y predicado k-ario a algún elemento del universo de interpretación.


Sea , para una interpretación se define:


- Un universo de interpretación, conjunto no nulo . Ejemplo: Naturales.

- Para cada símbolo de constante c C, mapea con un elemento . Ejemplo "cero" ->

- Para cada símbolo de función k-aria F, mapea con una función de k variables sobre el universo

- Para cada símbolo de predicado k-ario P, mapea a una relación k-aria sobre el universo . Osea: k veces.


b)

- Conmutativo:


- Asociativo:


Solución:


Ejercicio 3[editar]

Una función es primitiva recursiva si se obtiene a través de las funciones iniciales por composición y/o recursión en finitos pasos.

Sea tal que devuelve la cantidad de divisores positivos desde hasta . Con y naturales.


Queremos que definiendo a de la siguiente forma:



Con


donde

Más sencillo:

donde

La función "divide a" () es primitiva recursiva y booleana, por lo que devuelve 1 o 0.

La suma también es primitiva recursiva.


cumple con el esquema de recursión primitivo.

es la función inicial nula aplicada a

El predicado usa la función proyección y la función "divide a" () que es primitiva recursiva.

La función es una división de casos disjuntos y usa las funciones iniciales de proyección y sucesor.

Por todo lo anterior, la función es primitiva recursiva (con y naturales)


Falta ver que . Probamos por inducción en el segundo parámetro.

  • Caso base:


  • Paso inductivo. Se cumple la hipótesis inductiva f(n,m) devuelve los divisiores de n desde 0 hasta m. Ahora queremos ver para m+1:

Dos casos:

- : . Entonces por H.I. al dividir m+1 incremento en 1 a lo ya calculado en el paso recursivo anterior y éste calculo correctamente hasta m. Queda


- : . Entonces por H.I. al no dividir m+1 no sumo nada a lo ya calculado en el paso recursivo anterior y éste calcula correctamente hasta m. Queda


Por lo tanto,

Ejercicio 4[editar]

Sea:



La . Tiene exactamente 3 elementos.


Supongamos que es computable, entonces programa que computa .


Si , entonces .


Si


Sea , caso particular, : determina si el programa con entrada termina o no.


Como vimos en las teóricas, estamos resolviendo el halting problem.

Absurdo! pues Halt no es computable. Vino de suponer que era computable.

Entonces no computable.