Debería leer The Reasoned Schemer para obtener ideas. Básicamente, la forma de hacer matemática en un programa lógico es crear codificaciones de números basadas en listas, que el motor lógico puede crecer según sea necesario para probar cosas. No tengo el libro a mano, pero codifica enteros como una lista de bits, de alguna manera extraña que no puedo recordar: tal vez (1)
representa 0, (0)
es ilegal, y el MSB es el último en la lista?
De todos modos, eso es mucho trabajo; David Nolen también ha introducido recientemente algo sobre dominios finitos en core.logic. No sé cómo funcionan, pero creo que simplifican mucho el problema permitiéndote especificar qué tipos de números considerar como una solución a tu problema.
he encontrado una página https://github.com/frenchy64/Logic-Starter/wiki/Aritmética que lo atraviesa – zcaudate
supongo que arithmatic no es realmente el dominio de core.logic atm – zcaudate