Ejercicios tipo parcial 2
-
Dado el siguiente razonamiento:
∀X. ∀Y. (rivales(X, Y) ∩ ¬gana(X) ⊃ se_alegra(Y))
gana(trump) ⊃ ¬gana(biden)
rivales(trump, lula)
gana(biden)
―――――――――――――――――――――――
𐬽 se_alegra(lula)Pruébelo mediante demostración no natural por refutación, siguiendo una estrategia similar a la de Prolog.
-
Dado:
or = λx. λy. ((x true) y) true = λx.λy.x false = λx.λy.yProbar que:
or false true = true -
Escribir una base de datos que represente el siguiente conjunto de bloques:

La base de datos debe incluir los nombres
a,b,c,dymesay el predicadoapoyado/2, que representa la relación de que un objeto está apoyado sobre otro.Dado el predicado
encima/2, ¿Qué consulta haría para encontrar todos los bloques que están encima del bloquec? Mostrar los resultados que daría el intérprete en el orden correcto. Justificar.encima(X, Y) :- apoyado(X, Y). encima(X, Y) :- apoyado(X, Z), encima(Z, Y). -
Dada la definición de la siguiente clase en un lenguaje multiparadigma imaginario (que soporta al menos los paradigmas de objetos y funcional):
class Resultado<T> { // invariante: o bien valor != null, o excepcion != null (exclusivo) T valor; Exception excepcion; constructor(T v) { this.valor = v } constructor(Exception e) { this.excepcion = e } public Resultado<R> bind(...) { ... } }Si la clase representa una mónada y los constructores corresponden a la operación monádica
return, indicar qué debería recibir el métodobindy cuál sería su cuerpo. -
Mostrar el resultado de evaluar las siguientes expresiones en Clojure. Justificar.
-
user=> (defn f [x] (reduce * (range 1 (inc x)))) user=> (f 5) -
user=> (map #(% 0) [inc dec zero?]) -
user=> (defn palitos [n] (apply str (concat (repeat (quot n 5) "卌") (repeat (mod n 5) "|")))) user=> (palitos 8)
-