1. 25
  1. 2

    If you’d like to use logic programming but don’t like having to install Prolog, you can use one of the many implementations of miniKanren as libraries. For example, Clojure has the core.logic library.

    1. 2

      Although I didn’t read the entire article, that principle is really interesting and it made me think about taking it to a “debugger” side: given an output of a program and some known inputs, find which unknown inputs could have led to that behavior (through analyzing the code branches needed to produce that output).

      1. 3

        This kind of debugger is known as Symbolic Execution, which I believe share some root with Logic Programming in that they are both instances of SAT Solvers. People have written frameworks to load executable and run them, which is being used in security research, reversing, fuzzing and automatic exploitation such as Angr. It’s been awhile since a delve in this space, but this is what I remember. The tools are still somewhat complex to use from what I remember. We are far from being in GDB and simply asking how we got to a given state.