We should do exhaustive search everywhere. I suggest using PROLOG (swipl) and Kanren in stunted form - triples only, exhaustive search of triples. I have ported PROLOG (the good parts) to JS using Ohm-JS (from Scheme) and it would take only an afternoon or so to change the text emitter to emit just about any other language (e.g. Python, Haskell, etc.).
Note that exhaustive search enables relational. Relational enables Haskell et al.
Note that diagrams enable the breakdown of Software Development into Architecting, Engineering, Implementation, Testing, etc.
I change my mind and have new revelations daily. I have refined what I said a year ago.