diff --git a/propa-tools.cabal b/propa-tools.cabal
index e95a440..6e42b52 100644
--- a/propa-tools.cabal
+++ b/propa-tools.cabal
@@ -22,6 +22,7 @@ library
exposed-modules:
Propa.Lambda.Display
Propa.Lambda.Term
+ Propa.Prolog.Debug
Propa.Prolog.Display
Propa.Prolog.Example
Propa.Prolog.Parse
diff --git a/src/Propa/Prolog/Debug.hs b/src/Propa/Prolog/Debug.hs
new file mode 100644
index 0000000..1814ad7
--- /dev/null
+++ b/src/Propa/Prolog/Debug.hs
@@ -0,0 +1,18 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+module Propa.Prolog.Debug
+ ( parseAndRun
+ ) where
+
+import qualified Data.Text as T
+import qualified Data.Text.IO as T
+
+import Propa.Prolog.Display
+import Propa.Prolog.Parse
+import Propa.Prolog.Unify
+
+parseAndRun :: T.Text -> T.Text -> IO ()
+parseAndRun dbText termsText = T.putStrLn $ either id id $ do
+ db <- parseDb "" dbText
+ terms <- parseTerms "" termsText
+ pure $ T.intercalate "\n" $ map displayResult $ run db terms