Thanks Andi for the kind words. My directly preceding post is about the combination of AI-hard problems that I am trying to solve. It hints that incrementally solving the bunch of them may be achievable, but that sufficiently solving one of them alone may not be.
I've given automatic programming a lot of thought over my rather long (i.e. 40 years) experience programming computers. While at Cycorp, I persisted abstract syntax trees for an Turing-complete agent control language into the Cyc knowledge base. I had the idea then that Cyc could thus reason about programs and begin to author portions of them. But the idea did not gain traction with our sponsors nor with Cycorp management, so it languished. My current thinking about automatic programming (a.k.a program synthesis) is centered on the notion of program composition. This activity is a skill that involves both algorithmic knowledge as well as domain knowledge. I am now building an essential set of agent capabilities to compose Java classes, variables, methods, and statements. These capabilities will be associated with preconditions, input/output bindings, and postconditions. A capability matcher library will find candidate agent capabilities that match the given task preconditions and postconditions via subsumption reasoning. I intend to hand-craft some of these compositions into executable Java programs to build use cases for the essential programming skills required. Note that I am building a program composition facility rather than a task-solving interpreter. What I hope to accomplish is a system that solves a problem by writing a program that, when compiled, performs the given task. This will be much faster to repeatedly execute because the overhead of program composition greatly diminishes once the tasks are well understood (e.g. task variations become program parameters and thus no need to compose a new program). Earlier in the project I had hoped to postpone this phase until after the bootstrap English dialog system is completed. But I see now that the general facility of skill acquisition will require precondition and postcondition vocabulary. And because all skills will bottom out into the execution of a Java method, I made the decision to precede now with defining these primitives as skills. For representing pre-and-post conditions I am using an elaborated version of RDF, based upon formula-manipulating classes that I previously released for the Incremental Fluid Construction Grammar vocabulary. I added IMPLIES, NOT, OR, and AND logical operators and variables. Today I finished a class that performs canonicalization (i.e. transformation to conjunctive normal form) and hopefully tomorrow I will complete the capability subsumption matcher. Interested readers can follow my source code commits here. Having a dialog system simplifies automatic programming because Texai will be able to ask for help when required from its mentor, and will not be expected to complete the job on its own. I am resigned to the fact however that initially programming via English dialog will be much more tedious than directly performing the task myself. Until the student exceeds the skill of the mentor, programming this way will be hard. Cheers, -Steve Stephen L. Reed Artificial Intelligence Researcher http://texai.org/blog http://texai.org 3008 Oak Crest Ave. Austin, Texas, USA 78704 512.791.7860 ----- Original Message ---- From: "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> To: agi@v2.listbox.com Sent: Tuesday, May 6, 2008 3:36:38 PM Subject: Re: [agi] organising parallel processes Stephen Reed wrote: > At the time that the Texai bootstrap English dialog system is > available, I'll begin fleshing out the hundreds of agencies for > which I hope to recruit human mentors. Each agency I establish will > have paragraphs of English text to describe its mission, including > its relationship with commanding and subordinate agencies. Mentors > then will use the dialog system to teach each of their respective > agencies the knowledge and skills it requires for its mission. > Learned skills will be compiled into Java code for execution. > Hopefully this will advance into automatic programming from high > level requirements, because programming is a skill which can be > taught. Furthermore, I plan agencies whose missions will accomplish > recursive self-improvement (e.g. propagate best practices from the > discovering agency to all applicable agencies). This jumped out at me because I just read an article where someone was talking about how we don't know how to program: http://paulspontifications.blogspot.com/2008/05/under-appreciated-fact-we-dont-know-how.html There is no real process for it. We don't really know how it works. There are plenty of courses, and it seems like we teach people to do it, but it is a very mysterious thing. A good portion of people just don't get it when they try to learn. Anyway, it is a very hard problem, and I wouldn't be surprised if programming were an AI-complete problem, because it sure seems like programming always involves arbitrary amounts of domain knowledge, theories of mind, and who knows what all else. But I have to admit I am a fan of compiled programs as part of a set of skills of an intelligent computer agent. The idea showed up in an essay (OK, blog entry) I wrote recently. Also, I want to thank Stephen for adding to this community. He really stood out at AGI-08 as a level-headed, diligent creative force working toward AGI. andi ------------------------------------------- agi Archives: http://www.listbox.com/member/archive/303/=now RSS Feed: http://www.listbox.com/member/archive/rss/303/ Modify Your Subscription: http://www.listbox.com/member/?& Powered by Listbox: http://www.listbox.com ____________________________________________________________________________________ Be a better friend, newshound, and know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ ------------------------------------------- agi Archives: http://www.listbox.com/member/archive/303/=now RSS Feed: http://www.listbox.com/member/archive/rss/303/ Modify Your Subscription: http://www.listbox.com/member/?member_id=8660244&id_secret=101455710-f059c4 Powered by Listbox: http://www.listbox.com