Final 22/12/2023 (Paradigmas)

De Cuba-Wiki

Ejercicio 1: Te daba dos fórmulas de primer orden y tenias que probar si eran válidas o no.

A) \forAll x \Exist y : x + y = x

B) (\Exist x (P(x))) v (\Exist x (P(~x)))


Ejercicio 2: Define la descomposición en 1 paso de una lista en Prolog. Ejemplo: [2,*3*,1] -> [2, * 2, 1,* 1]

Osea, cambia un elemento por dos elementos que sumen el elemento original. Tiene que cumplirse que ambos sean mayores o iguales a uno.

Define la descomposición en N pasos que es lo que uno espera. Ejemplo para N =2. [2,3,1] -> [ 2, 1,1,1,1].

El ejercicio pedía hacer una función que dada una lista te de todas las descomposiciónes.

Ejercicio 3: Haskell.

Define el tipo de dato Nat como Zero | Succ(Nat)

Dada una función F F :: [Nat] -> Nat .

Que te aseguran que es total y biyectiva.

Si es posible, implementar en Haskell F^-1. Sino es posible justificar porque.


Ejercicio 4:

En calculo sigma, implementar un objeto M que al mandarle el mensaje "memoizar" y un objeto "o" que sabe responder "f" tenés que cachear ese valor básicamente. O sea, si todavía no se calculo O.f tenés que guardarlo para devolverlo y si ya lo hiciste no hay que volver a computarlo.

Ejercicio 5: En calculo lambda, definir las reglas de tipado y de reducción para el Rec de listas