Yes, though I think anyone who knows Haskell already understands it can express this kind of thing more concisely than C++ :)
On Sat, Sep 22, 2012 at 6:34 AM, Ben Goertzel <[email protected]> wrote: > http://code.google.com/p/haskellatp/source/browse/trunk/Paramodulation.lhs?spec=svn2&r=2 > > is nice ;) > > > > On Sat, Sep 22, 2012 at 12:40 AM, Russell Wallace > <[email protected]> wrote: >> Consider the problem of writing a general inference engine in the >> spirit of Eurisko, Dyna etc., and then using it for automated theorem >> proving, presumably the flagship, or at least a major, application of >> such a system. >> >> At the heart of automated theorem proving is the paramodulation >> inference rule. This can be written in e.g. C++ in on the order of a >> hundred lines of code. Can it be written as a declarative rule? Sort >> of. It certainly can for a human audience, e.g. >> >> // C | a = b, D | x(z) ?= y >> // -> (C | D | x(b) ?= y)/s >> // where s = unify(a, z) >> // and z not a variable >> >> But if you try to put this as a declarative rule in a rule-based >> inference engine, you immediately find that it needs pattern matching >> on arbitrarily deep subterms, which is something no pattern matching >> system I've ever heard of provides. >> >> Of course C++ doesn't either and that doesn't stop us implementing >> paramodulation anyway, and similarly we could implement it in e.g. >> Prolog in the same way, just doing recursion into the subterms by >> hand. But if we do that, we don't get to use the term indexing that is >> presumably one of the major features the inference engine would >> provide (in the same way automatic maintenance and use of table >> indexes one of the major features a relational database engine >> provides), so that would kind of defeat the purpose. >> >> So if we need super pattern matching, why not just implement that? >> Sure, we could do that. >> >> But as far as I can see, paramodulation is the only thing that would >> use that feature! Everything else I can think of that wants pattern >> matching, either only needs the usual surface level version of it, or >> can be expressed just about as easily in terms of paramodulation >> itself as in terms of super pattern matching. >> >> Which suggests it is best to just go ahead and have the inference >> engine provide paramodulation as the built-in feature. >> >> My question is, are there any counterexamples? Are there any rules or >> heuristics we would want to write, that would need super pattern >> matching (or even just regular pattern matching) but cannot readily be >> written in terms of paramodulation? >> >> >> ------------------------------------------- >> AGI >> Archives: https://www.listbox.com/member/archive/303/=now >> RSS Feed: https://www.listbox.com/member/archive/rss/303/212726-11ac2389 >> Modify Your Subscription: https://www.listbox.com/member/?& >> Powered by Listbox: http://www.listbox.com > > > > -- > Ben Goertzel, PhD > http://goertzel.org > > "My humanity is a constant self-overcoming" -- Friedrich Nietzsche > > > ------------------------------------------- > AGI > Archives: https://www.listbox.com/member/archive/303/=now > RSS Feed: https://www.listbox.com/member/archive/rss/303/1658954-f53d1a3f > Modify Your Subscription: https://www.listbox.com/member/?& > Powered by Listbox: http://www.listbox.com ------------------------------------------- AGI Archives: https://www.listbox.com/member/archive/303/=now RSS Feed: https://www.listbox.com/member/archive/rss/303/21088071-c97d2393 Modify Your Subscription: https://www.listbox.com/member/?member_id=21088071&id_secret=21088071-2484a968 Powered by Listbox: http://www.listbox.com
