40. Predicados y variables

Los predicados expresan propiedades o relaciones, y las variables permiten formular afirmaciones generales sobre objetos todavía no especificados.

40.1 Introducción

En lógica de predicados, no tratamos las proposiciones como bloques indivisibles. En su lugar, analizamos de qué objetos hablamos y qué propiedades o relaciones les atribuimos.

Para eso usamos predicados y variables.

40.2 Qué es un predicado

Un predicado es una expresión que representa una propiedad de un objeto o una relación entre varios objetos.

Activo(usuario)
MayorQue(x, y)

El primer predicado expresa una propiedad. El segundo expresa una relación entre dos elementos.

40.3 Predicados unarios

Un predicado unario se aplica a un solo objeto.

Predicado Lectura
Activo(x) x está activo
Producto(x) x es un producto
Par(x) x es par
Valido(x) x es válido

40.4 Predicados binarios

Un predicado binario relaciona dos objetos.

Predicado Lectura
MayorQue(x, y) x es mayor que y
Compra(usuario, producto) el usuario compra el producto
Pertenece(pedido, cliente) el pedido pertenece al cliente
AutorDe(usuario, documento) el usuario es autor del documento

40.5 Predicados de más argumentos

También pueden existir predicados con tres o más argumentos.

Envio(cliente, producto, direccion)

Este predicado puede leerse como: el cliente recibe el producto en una dirección.

40.6 Qué es una variable

Una variable representa un objeto no especificado dentro de un predicado.

Activo(x)

La letra x puede representar cualquier objeto del dominio que estemos considerando.

40.7 Variable libre

Una variable libre es una variable que no tiene un valor concreto ni está controlada por un cuantificador.

Activo(x)

Esta expresión no es todavía una proposición completa, porque no sabemos qué objeto representa x.

40.8 Convertir un predicado en proposición

Un predicado con variable puede convertirse en proposición de dos maneras principales:

  • Reemplazando la variable por un objeto concreto.
  • Agregando un cuantificador.
Expresión ¿Es proposición? Motivo
Activo(x) No x no tiene valor concreto
Activo(Ana) Habla de un objeto concreto
∀x Activo(x) El cuantificador controla la variable

40.9 Predicados en JavaScript

Una función que devuelve un booleano puede verse como un predicado.

function esMayorDeEdad(usuario) {
  return usuario.edad >= 18;
}

La función expresa una propiedad del objeto usuario.

40.10 Relaciones en JavaScript

Una función booleana con dos parámetros puede representar una relación.

function puedeEditar(usuario, documento) {
  return usuario.id === documento.autorId || usuario.rol === "admin";
}

Esta función representa una relación entre un usuario y un documento.

40.11 Nombrar predicados

Un buen nombre de predicado debe expresar claramente una propiedad o relación.

Menos claro Más claro
check(x) EsValido(x)
user(x) UsuarioActivo(x)
permiso(x, y) PuedeEditar(x, y)
relacion(a, b) PerteneceA(a, b)

40.12 Predicados y tipos de datos

En programación, el tipo de dato esperado ayuda a definir correctamente un predicado.

function tieneStock(producto) {
  return producto.stock > 0;
}

Este predicado tiene sentido si producto es un objeto con una propiedad stock.

40.13 Predicados compuestos

Los predicados pueden combinarse con operadores lógicos.

Usuario(x) ∧ Activo(x)

Se lee: x es usuario y x está activo.

function usuarioActivo(x) {
  return esUsuario(x) && x.activo;
}

40.14 Errores comunes

  • Confundir un predicado con una proposición completa.
  • Usar variables sin indicar su dominio.
  • Nombrar predicados de forma ambigua.
  • Mezclar propiedades de un objeto con relaciones entre objetos.
  • Olvidar que un predicado puede tener uno o varios argumentos.

40.15 Qué debes recordar de este tema

  • Un predicado expresa una propiedad o relación.
  • Una variable representa un objeto no especificado.
  • Un predicado con variable libre no es una proposición completa.
  • Para obtener una proposición, se reemplaza la variable por un objeto o se usa un cuantificador.
  • En programación, funciones booleanas pueden funcionar como predicados.

40.16 Conclusión

Los predicados y variables permiten expresar propiedades y relaciones de manera flexible. Son la base para trabajar con cuantificadores, dominios de discurso y traducción de lenguaje natural a lógica formal.

En el próximo tema estudiaremos el dominio de discurso.