Joey Wu and Carl Caamano's CHAOS

PROJECT

Contents
Domain
Illustration
Methods
Conclusions

Domain

CHAOS: CHemistry Agent for Organic Systems.

Our project was to be a program that a first year organic student would be able to interact with. They would enter molecule reactants, and get products, depending on the conditions that were present. They would able to just enter in a product and get the reactants.

It would have to determine several things to get an educated answer. There are things such as 'What kind of molecule is the second?' If the second were an acid, it would break the bonds more easily, then some other molecule, and as fore mentioned, the conditions (light, heat, pressure) present.

We had to narrow the scope of our project a bit. We were working on the alkane, molecules with 2n+2 Hydrogens, n being the number of Carbons reactions, when we ran into some difficulty. While our predicates would correctly determine kinds of functional groups, it couldn't generate molecules.


Illustration

basically all we can do is query Prolog like this:

test(M) :- methane(M),isAlkane(M).

test is a testing predicate that we were using. It returns a molecule structure like this:

molecule(2n+2,[atom(c(1),c,[h(1),h(2),h(3),h(4)]),atom(h(1),h,[c(1)]),atom(h(2),h,[c(1)]),atom(h(3),h,[c(1)]),atom(h(4),h,[c(1)]))

The molecule structure (which too a bit of thought to represent) is defined as molecule( function_group, [bond_list]). We don't actually use the function group label...it make it too easy. Pretty exciting, huh? Neither were we.


Methods

We have methods like isPriAlkyl(Atom,Structure), isSecAlkyl(Atom,Structure), isTerAlkyl(Atom,Structure). These predicates were to verify the different types of carbon groups, and ultimately help when building a molecule. Atom is the Carbon atom that we are checking in the molecular structure list, Structure, to see if it forms a particular group. Other methods we have is haleogenation, which is rather simplified, but basically, if you give it alkane and a reactant and the right conditions, in this case light and heat, and we'll get an alkylhalide.


Conclusions

It would have been nice to see this project to completion. There is still room for improvement. Overall, we started out with a grand idea, and fell short of our goals. We ran it into the problem of haveing prolog working backwards for us, and not only that, restricting the search space so that it didn't run out of memory looking for answers.