The biggest reason is lack of knowledge and awareness amongst Developers. Increasingly, Management and Senior Management do not have the breadth of knowledge and understanding of these areas to be able to overrule inertia against their adoption.<p>The problems are not technical but cultural. I experimented with Picat and have looked at Prolog and Mercury. Picat is a superb language. It allowed me to rewrite a constraint satisfaction problem in 150 lines of code that had been an ungodly problem area for months. The original was in Java but the design was the issue. But I had ab exchange with Picat's authors to try and make it more attractive for Corporate Developers but it's not their priority.<p>Based on my experience - 3 things stand out for me:<p>The idea of a separate language is too tough. It must be embeddable in a larger, mainstream language. Minikanren is a good example. Embeddable Prolog is hit and miss today. The idea needs to be developed and polished. I work primarily in Banking. A large Bank will have hundreds of apps. Adding a new language, technology, nailing down Management and then having to maintain knowledgeable staff is not an easy proposition. So much easier to adopt if we can integrate ideas into mainstream platforms (Java, .NET). By all means build the stand alone platforms but also offer it as an embeddable component. Clojure with Datalog, Racket with Datalog, Minikanren are good examples.<p>We need more, better success stories and wins to be publicized. Erlang has had a huge win with Whatsapp. For all its life since the mid-70s - I'm not sure I can point to huge, visible truly large wins. I'm sure there are successful projects for Prolog and Mercury et al but it needs wins.<p>Teach, teach, teach - evangelize and get the idea out - not as much re tech but applying logic based programming. Business rules definition, BRM, BPM are natural areas but you don't see logic programming formalized in them. Try and change that.