n(f_azo_1(X)) :- azo(X),not r_azo(X).
n(f_azo_2(X)) :- azo(X),not r_azo(X).
double(f_azo_1(X),f_azo_2(X)) :- azo(X),not r_azo(X).
double(f_azo_2(X),f_azo_1(X)) :- azo(X),not r_azo(X).
single(f_azo_2(X),f_azo_3(X)) :- azo(X),not r_azo(X).
single(f_azo_3(X),f_azo_2(X)) :- azo(X),not r_azo(X).
single(f_azo_1(X),f_azo_4(X)) :- azo(X),not r_azo(X).
single(f_azo_4(X),f_azo_1(X)) :- azo(X),not r_azo(X).
hasAtom(X,f_azo_1(X)) :- azo(X),not r_azo(X).
hasAtom(X,f_azo_2(X)) :- azo(X),not r_azo(X).
hasAtom(X,f_azo_3(X)) :- azo(X),not r_azo(X).
hasAtom(X,f_azo_4(X)) :- azo(X),not r_azo(X).
g_azo(f_azo_1(X)) :- azo(X),not r_azo(X).
g_azo(f_azo_2(X)) :- azo(X),not r_azo(X).
g_azo(f_azo_3(X)) :- azo(X),not r_azo(X).
g_azo(f_azo_4(X)) :- azo(X),not r_azo(X).
c(f_ester_2(X)) :- ester(X),not r_ester(X).
o(f_ester_3(X)) :- ester(X),not r_ester(X).
o(f_ester_4(X)) :- ester(X),not r_ester(X).
single(f_ester_1(X),f_ester_2(X)) :- ester(X),not r_ester(X).
single(f_ester_2(X),f_ester_1(X)) :- ester(X),not r_ester(X).
double(f_ester_2(X),f_ester_3(X)) :- ester(X),not r_ester(X).
double(f_ester_3(X),f_ester_2(X)) :- ester(X),not r_ester(X).
single(f_ester_2(X),f_ester_4(X)) :- ester(X),not r_ester(X).
single(f_ester_4(X),f_ester_2(X)) :- ester(X),not r_ester(X).
hasAtom(X,f_ester_1(X)) :- ester(X),not r_ester(X).
hasAtom(X,f_ester_2(X)) :- ester(X),not r_ester(X).
hasAtom(X,f_ester_3(X)) :- ester(X),not r_ester(X).
hasAtom(X,f_ester_4(X)) :- ester(X),not r_ester(X).
g_ester(f_ester_1(X)) :- ester(X),not r_ester(X).
g_ester(f_ester_2(X)) :- ester(X),not r_ester(X).
g_ester(f_ester_3(X)) :- ester(X),not r_ester(X).
g_ester(f_ester_4(X)) :- ester(X),not r_ester(X).
o(f_ether_2(X)) :- ether(X),not r_ether(X).
single(f_ether_1(X),f_ether_2(X)) :- ether(X),not r_ether(X).
single(f_ether_2(X),f_ether_1(X)) :- ether(X),not r_ether(X).
single(f_ether_2(X),f_ether_3(X)) :- ether(X),not r_ether(X).
single(f_ether_3(X),f_ether_2(X)) :- ether(X),not r_ether(X).
hasAtom(X,f_ether_1(X)) :- ether(X),not r_ether(X).
hasAtom(X,f_ether_2(X)) :- ether(X),not r_ether(X).
hasAtom(X,f_ether_3(X)) :- ether(X),not r_ether(X).
g_ether(f_ether_1(X)) :- ether(X),not r_ether(X).
g_ether(f_ether_2(X)) :- ether(X),not r_ether(X).
c(f_ketone_1(X)) :- ketone(X),not r_ketone(X).
o(f_ketone_2(X)) :- ketone(X),not r_ketone(X).
double(f_ketone_1(X),f_ketone_2(X)) :- ketone(X),not r_ketone(X).
double(f_ketone_2(X),f_ketone_1(X)) :- ketone(X),not r_ketone(X).
single(f_ketone_1(X),f_ketone_3(X)) :- ketone(X),not r_ketone(X).
single(f_ketone_3(X),f_ketone_1(X)) :- ketone(X),not r_ketone(X).
single(f_ketone_1(X),f_ketone_4(X)) :- ketone(X),not r_ketone(X).
single(f_ketone_4(X),f_ketone_1(X)) :- ketone(X),not r_ketone(X).
hasAtom(X,f_ketone_1(X)) :- ketone(X),not r_ketone(X).
hasAtom(X,f_ketone_2(X)) :- ketone(X),not r_ketone(X).
hasAtom(X,f_ketone_3(X)) :- ketone(X),not r_ketone(X).
hasAtom(X,f_ketone_4(X)) :- ketone(X),not r_ketone(X).
g_ketone(f_ketone_1(X)) :- ketone(X),not r_ketone(X).
g_ketone(f_ketone_2(X)) :- ketone(X),not r_ketone(X).
g_ketone(f_ketone_3(X)) :- ketone(X),not r_ketone(X).
g_ketone(f_ketone_4(X)) :- ketone(X),not r_ketone(X).
c(f_alcohol_1(X)) :- alcohol(X),not r_alcohol(X).
o(f_alcohol_2(X)) :- alcohol(X),not r_alcohol(X).
h(f_alcohol_3(X)) :- alcohol(X),not r_alcohol(X).
single(f_alcohol_1(X),f_alcohol_2(X)) :- alcohol(X),not r_alcohol(X).
single(f_alcohol_2(X),f_alcohol_1(X)) :- alcohol(X),not r_alcohol(X).
single(f_alcohol_2(X),f_alcohol_3(X)) :- alcohol(X),not r_alcohol(X).
single(f_alcohol_3(X),f_alcohol_2(X)) :- alcohol(X),not r_alcohol(X).
single(f_alcohol_1(X),f_alcohol_4(X)) :- alcohol(X),not r_alcohol(X).
single(f_alcohol_4(X),f_alcohol_1(X)) :- alcohol(X),not r_alcohol(X).
single(f_alcohol_1(X),f_alcohol_5(X)) :- alcohol(X),not r_alcohol(X).
single(f_alcohol_5(X),f_alcohol_1(X)) :- alcohol(X),not r_alcohol(X).
single(f_alcohol_1(X),f_alcohol_6(X)) :- alcohol(X),not r_alcohol(X).
single(f_alcohol_6(X),f_alcohol_1(X)) :- alcohol(X),not r_alcohol(X).
hasAtom(X,f_alcohol_1(X)) :- alcohol(X),not r_alcohol(X).
hasAtom(X,f_alcohol_2(X)) :- alcohol(X),not r_alcohol(X).
hasAtom(X,f_alcohol_3(X)) :- alcohol(X),not r_alcohol(X).
hasAtom(X,f_alcohol_4(X)) :- alcohol(X),not r_alcohol(X).
hasAtom(X,f_alcohol_5(X)) :- alcohol(X),not r_alcohol(X).
hasAtom(X,f_alcohol_6(X)) :- alcohol(X),not r_alcohol(X).
g_alcohol(f_alcohol_1(X)) :- alcohol(X),not r_alcohol(X).
g_alcohol(f_alcohol_2(X)) :- alcohol(X),not r_alcohol(X).
g_alcohol(f_alcohol_3(X)) :- alcohol(X),not r_alcohol(X).
g_alcohol(f_alcohol_4(X)) :- alcohol(X),not r_alcohol(X).
g_alcohol(f_alcohol_5(X)) :- alcohol(X),not r_alcohol(X).
g_alcohol(f_alcohol_6(X)) :- alcohol(X),not r_alcohol(X).
n(f_nitrile_1(X)) :- nitrile(X),not r_nitrile(X).
c(f_nitrile_2(X)) :- nitrile(X),not r_nitrile(X).
triple(f_nitrile_1(X),f_nitrile_2(X)) :- nitrile(X),not r_nitrile(X).
triple(f_nitrile_2(X),f_nitrile_1(X)) :- nitrile(X),not r_nitrile(X).
single(f_nitrile_2(X),f_nitrile_3(X)) :- nitrile(X),not r_nitrile(X).
single(f_nitrile_3(X),f_nitrile_2(X)) :- nitrile(X),not r_nitrile(X).
hasAtom(X,f_nitrile_1(X)) :- nitrile(X),not r_nitrile(X).
hasAtom(X,f_nitrile_2(X)) :- nitrile(X),not r_nitrile(X).
hasAtom(X,f_nitrile_3(X)) :- nitrile(X),not r_nitrile(X).
g_nitrile(f_nitrile_1(X)) :- nitrile(X),not r_nitrile(X).
g_nitrile(f_nitrile_2(X)) :- nitrile(X),not r_nitrile(X).
g_nitrile(f_nitrile_3(X)) :- nitrile(X),not r_nitrile(X).
n(f_azomethine_1(X)) :- azomethine(X),not r_azomethine(X).
c(f_azomethine_2(X)) :- azomethine(X),not r_azomethine(X).
double(f_azomethine_1(X),f_azomethine_2(X)) :- azomethine(X),not r_azomethine(X).
double(f_azomethine_2(X),f_azomethine_1(X)) :- azomethine(X),not r_azomethine(X).
single(f_azomethine_2(X),f_azomethine_3(X)) :- azomethine(X),not r_azomethine(X).
single(f_azomethine_3(X),f_azomethine_2(X)) :- azomethine(X),not r_azomethine(X).
single(f_azomethine_1(X),f_azomethine_4(X)) :- azomethine(X),not r_azomethine(X).
single(f_azomethine_4(X),f_azomethine_1(X)) :- azomethine(X),not r_azomethine(X).
hasAtom(X,f_azomethine_1(X)) :- azomethine(X),not r_azomethine(X).
hasAtom(X,f_azomethine_2(X)) :- azomethine(X),not r_azomethine(X).
hasAtom(X,f_azomethine_3(X)) :- azomethine(X),not r_azomethine(X).
hasAtom(X,f_azomethine_4(X)) :- azomethine(X),not r_azomethine(X).
g_azomethine(f_azomethine_1(X)) :- azomethine(X),not r_azomethine(X).
g_azomethine(f_azomethine_2(X)) :- azomethine(X),not r_azomethine(X).
g_azomethine(f_azomethine_3(X)) :- azomethine(X),not r_azomethine(X).
g_azomethine(f_azomethine_4(X)) :- azomethine(X),not r_azomethine(X).
n(f_hidrazone_1(X)) :- hidrazone(X),not r_hidrazone(X).
h(f_hidrazone_2(X)) :- hidrazone(X),not r_hidrazone(X).
h(f_hidrazone_3(X)) :- hidrazone(X),not r_hidrazone(X).
n(f_hidrazone_4(X)) :- hidrazone(X),not r_hidrazone(X).
c(f_hidrazone_5(X)) :- hidrazone(X),not r_hidrazone(X).
single(f_hidrazone_1(X),f_hidrazone_2(X)) :- hidrazone(X),not r_hidrazone(X).
single(f_hidrazone_2(X),f_hidrazone_1(X)) :- hidrazone(X),not r_hidrazone(X).
single(f_hidrazone_1(X),f_hidrazone_3(X)) :- hidrazone(X),not r_hidrazone(X).
single(f_hidrazone_3(X),f_hidrazone_1(X)) :- hidrazone(X),not r_hidrazone(X).
single(f_hidrazone_1(X),f_hidrazone_4(X)) :- hidrazone(X),not r_hidrazone(X).
single(f_hidrazone_4(X),f_hidrazone_1(X)) :- hidrazone(X),not r_hidrazone(X).
double(f_hidrazone_4(X),f_hidrazone_5(X)) :- hidrazone(X),not r_hidrazone(X).
double(f_hidrazone_5(X),f_hidrazone_4(X)) :- hidrazone(X),not r_hidrazone(X).
single(f_hidrazone_5(X),f_hidrazone_6(X)) :- hidrazone(X),not r_hidrazone(X).
single(f_hidrazone_6(X),f_hidrazone_5(X)) :- hidrazone(X),not r_hidrazone(X).
hasAtom(X,f_hidrazone_1(X)) :- hidrazone(X),not r_hidrazone(X).
hasAtom(X,f_hidrazone_2(X)) :- hidrazone(X),not r_hidrazone(X).
hasAtom(X,f_hidrazone_3(X)) :- hidrazone(X),not r_hidrazone(X).
hasAtom(X,f_hidrazone_4(X)) :- hidrazone(X),not r_hidrazone(X).
hasAtom(X,f_hidrazone_5(X)) :- hidrazone(X),not r_hidrazone(X).
hasAtom(X,f_hidrazone_6(X)) :- hidrazone(X),not r_hidrazone(X).
g_hidrazone(f_hidrazone_1(X)) :- hidrazone(X),not r_hidrazone(X).
g_hidrazone(f_hidrazone_2(X)) :- hidrazone(X),not r_hidrazone(X).
g_hidrazone(f_hidrazone_3(X)) :- hidrazone(X),not r_hidrazone(X).
g_hidrazone(f_hidrazone_4(X)) :- hidrazone(X),not r_hidrazone(X).
g_hidrazone(f_hidrazone_5(X)) :- hidrazone(X),not r_hidrazone(X).
g_hidrazone(f_hidrazone_6(X)) :- hidrazone(X),not r_hidrazone(X).
c(f_acid_2(X)) :- acid(X),not r_acid(X).
o(f_acid_3(X)) :- acid(X),not r_acid(X).
o(f_acid_4(X)) :- acid(X),not r_acid(X).
h(f_acid_5(X)) :- acid(X),not r_acid(X).
single(f_acid_1(X),f_acid_2(X)) :- acid(X),not r_acid(X).
single(f_acid_2(X),f_acid_1(X)) :- acid(X),not r_acid(X).
double(f_acid_2(X),f_acid_3(X)) :- acid(X),not r_acid(X).
double(f_acid_3(X),f_acid_2(X)) :- acid(X),not r_acid(X).
single(f_acid_2(X),f_acid_4(X)) :- acid(X),not r_acid(X).
single(f_acid_4(X),f_acid_2(X)) :- acid(X),not r_acid(X).
single(f_acid_4(X),f_acid_5(X)) :- acid(X),not r_acid(X).
single(f_acid_5(X),f_acid_4(X)) :- acid(X),not r_acid(X).
hasAtom(X,f_acid_1(X)) :- acid(X),not r_acid(X).
hasAtom(X,f_acid_2(X)) :- acid(X),not r_acid(X).
hasAtom(X,f_acid_3(X)) :- acid(X),not r_acid(X).
hasAtom(X,f_acid_4(X)) :- acid(X),not r_acid(X).
hasAtom(X,f_acid_5(X)) :- acid(X),not r_acid(X).
g_acid(f_acid_1(X)) :- acid(X),not r_acid(X).
g_acid(f_acid_2(X)) :- acid(X),not r_acid(X).
g_acid(f_acid_3(X)) :- acid(X),not r_acid(X).
g_acid(f_acid_4(X)) :- acid(X),not r_acid(X).
g_acid(f_acid_5(X)) :- acid(X),not r_acid(X).
c(f_acetate_1(X)) :- acetate(X),not r_acetate(X).
h(f_acetate_2(X)) :- acetate(X),not r_acetate(X).
h(f_acetate_3(X)) :- acetate(X),not r_acetate(X).
h(f_acetate_4(X)) :- acetate(X),not r_acetate(X).
c(f_acetate_5(X)) :- acetate(X),not r_acetate(X).
o(f_acetate_6(X)) :- acetate(X),not r_acetate(X).
o(f_acetate_7(X)) :- acetate(X),not r_acetate(X).
single(f_acetate_1(X),f_acetate_2(X)) :- acetate(X),not r_acetate(X).
single(f_acetate_2(X),f_acetate_1(X)) :- acetate(X),not r_acetate(X).
single(f_acetate_1(X),f_acetate_3(X)) :- acetate(X),not r_acetate(X).
single(f_acetate_3(X),f_acetate_1(X)) :- acetate(X),not r_acetate(X).
single(f_acetate_1(X),f_acetate_4(X)) :- acetate(X),not r_acetate(X).
single(f_acetate_4(X),f_acetate_1(X)) :- acetate(X),not r_acetate(X).
single(f_acetate_1(X),f_acetate_5(X)) :- acetate(X),not r_acetate(X).
single(f_acetate_5(X),f_acetate_1(X)) :- acetate(X),not r_acetate(X).
double(f_acetate_5(X),f_acetate_6(X)) :- acetate(X),not r_acetate(X).
double(f_acetate_6(X),f_acetate_5(X)) :- acetate(X),not r_acetate(X).
single(f_acetate_5(X),f_acetate_7(X)) :- acetate(X),not r_acetate(X).
single(f_acetate_7(X),f_acetate_5(X)) :- acetate(X),not r_acetate(X).
single(f_acetate_7(X),f_acetate_8(X)) :- acetate(X),not r_acetate(X).
single(f_acetate_8(X),f_acetate_7(X)) :- acetate(X),not r_acetate(X).
hasAtom(X,f_acetate_1(X)) :- acetate(X),not r_acetate(X).
hasAtom(X,f_acetate_2(X)) :- acetate(X),not r_acetate(X).
hasAtom(X,f_acetate_3(X)) :- acetate(X),not r_acetate(X).
hasAtom(X,f_acetate_4(X)) :- acetate(X),not r_acetate(X).
hasAtom(X,f_acetate_5(X)) :- acetate(X),not r_acetate(X).
hasAtom(X,f_acetate_6(X)) :- acetate(X),not r_acetate(X).
hasAtom(X,f_acetate_7(X)) :- acetate(X),not r_acetate(X).
hasAtom(X,f_acetate_8(X)) :- acetate(X),not r_acetate(X).
g_acetate(f_acetate_1(X)) :- acetate(X),not r_acetate(X).
g_acetate(f_acetate_2(X)) :- acetate(X),not r_acetate(X).
g_acetate(f_acetate_3(X)) :- acetate(X),not r_acetate(X).
g_acetate(f_acetate_4(X)) :- acetate(X),not r_acetate(X).
g_acetate(f_acetate_5(X)) :- acetate(X),not r_acetate(X).
g_acetate(f_acetate_6(X)) :- acetate(X),not r_acetate(X).
g_acetate(f_acetate_7(X)) :- acetate(X),not r_acetate(X).
g_acetate(f_acetate_8(X)) :- acetate(X),not r_acetate(X).
o(f_epoxide_1(X)) :- epoxide(X),not r_epoxide(X).
c(f_epoxide_3(X)) :- epoxide(X),not r_epoxide(X).
h(f_epoxide_4(X)) :- epoxide(X),not r_epoxide(X).
c(f_epoxide_5(X)) :- epoxide(X),not r_epoxide(X).
h(f_epoxide_6(X)) :- epoxide(X),not r_epoxide(X).
single(f_epoxide_1(X),f_epoxide_3(X)) :- epoxide(X),not r_epoxide(X).
single(f_epoxide_3(X),f_epoxide_1(X)) :- epoxide(X),not r_epoxide(X).
single(f_epoxide_3(X),f_epoxide_4(X)) :- epoxide(X),not r_epoxide(X).
single(f_epoxide_4(X),f_epoxide_3(X)) :- epoxide(X),not r_epoxide(X).
single(f_epoxide_3(X),f_epoxide_2(X)) :- epoxide(X),not r_epoxide(X).
single(f_epoxide_2(X),f_epoxide_3(X)) :- epoxide(X),not r_epoxide(X).
single(f_epoxide_3(X),f_epoxide_5(X)) :- epoxide(X),not r_epoxide(X).
single(f_epoxide_5(X),f_epoxide_3(X)) :- epoxide(X),not r_epoxide(X).
single(f_epoxide_5(X),f_epoxide_6(X)) :- epoxide(X),not r_epoxide(X).
single(f_epoxide_6(X),f_epoxide_5(X)) :- epoxide(X),not r_epoxide(X).
single(f_epoxide_5(X),f_epoxide_7(X)) :- epoxide(X),not r_epoxide(X).
single(f_epoxide_7(X),f_epoxide_5(X)) :- epoxide(X),not r_epoxide(X).
single(f_epoxide_5(X),f_epoxide_1(X)) :- epoxide(X),not r_epoxide(X).
single(f_epoxide_1(X),f_epoxide_5(X)) :- epoxide(X),not r_epoxide(X).
hasAtom(X,f_epoxide_1(X)) :- epoxide(X),not r_epoxide(X).
hasAtom(X,f_epoxide_2(X)) :- epoxide(X),not r_epoxide(X).
hasAtom(X,f_epoxide_3(X)) :- epoxide(X),not r_epoxide(X).
hasAtom(X,f_epoxide_4(X)) :- epoxide(X),not r_epoxide(X).
hasAtom(X,f_epoxide_5(X)) :- epoxide(X),not r_epoxide(X).
hasAtom(X,f_epoxide_6(X)) :- epoxide(X),not r_epoxide(X).
hasAtom(X,f_epoxide_7(X)) :- epoxide(X),not r_epoxide(X).
g_epoxide(f_epoxide_1(X)) :- epoxide(X),not r_epoxide(X).
g_epoxide(f_epoxide_2(X)) :- epoxide(X),not r_epoxide(X).
g_epoxide(f_epoxide_3(X)) :- epoxide(X),not r_epoxide(X).
g_epoxide(f_epoxide_4(X)) :- epoxide(X),not r_epoxide(X).
g_epoxide(f_epoxide_5(X)) :- epoxide(X),not r_epoxide(X).
g_epoxide(f_epoxide_6(X)) :- epoxide(X),not r_epoxide(X).
g_epoxide(f_epoxide_7(X)) :- epoxide(X),not r_epoxide(X).
o(f_aldehyde_1(X)) :- aldehyde(X),not r_aldehyde(X).
h(f_aldehyde_2(X)) :- aldehyde(X),not r_aldehyde(X).
c(f_aldehyde_3(X)) :- aldehyde(X),not r_aldehyde(X).
double(f_aldehyde_1(X),f_aldehyde_3(X)) :- aldehyde(X),not r_aldehyde(X).
double(f_aldehyde_3(X),f_aldehyde_1(X)) :- aldehyde(X),not r_aldehyde(X).
single(f_aldehyde_3(X),f_aldehyde_4(X)) :- aldehyde(X),not r_aldehyde(X).
single(f_aldehyde_4(X),f_aldehyde_3(X)) :- aldehyde(X),not r_aldehyde(X).
single(f_aldehyde_3(X),f_aldehyde_2(X)) :- aldehyde(X),not r_aldehyde(X).
single(f_aldehyde_2(X),f_aldehyde_3(X)) :- aldehyde(X),not r_aldehyde(X).
hasAtom(X,f_aldehyde_1(X)) :- aldehyde(X),not r_aldehyde(X).
hasAtom(X,f_aldehyde_2(X)) :- aldehyde(X),not r_aldehyde(X).
hasAtom(X,f_aldehyde_3(X)) :- aldehyde(X),not r_aldehyde(X).
hasAtom(X,f_aldehyde_4(X)) :- aldehyde(X),not r_aldehyde(X).
g_aldehyde(f_aldehyde_1(X)) :- aldehyde(X),not r_aldehyde(X).
g_aldehyde(f_aldehyde_2(X)) :- aldehyde(X),not r_aldehyde(X).
g_aldehyde(f_aldehyde_3(X)) :- aldehyde(X),not r_aldehyde(X).
g_aldehyde(f_aldehyde_4(X)) :- aldehyde(X),not r_aldehyde(X).
n(f_amine_1(X)) :- amine(X),not r_amine(X).
h(f_amine_2(X)) :- amine(X),not r_amine(X).
h(f_amine_3(X)) :- amine(X),not r_amine(X).
double(f_amine_1(X),f_amine_2(X)) :- amine(X),not r_amine(X).
double(f_amine_2(X),f_amine_1(X)) :- amine(X),not r_amine(X).
single(f_amine_1(X),f_amine_3(X)) :- amine(X),not r_amine(X).
single(f_amine_3(X),f_amine_1(X)) :- amine(X),not r_amine(X).
single(f_amine_1(X),f_amine_4(X)) :- amine(X),not r_amine(X).
single(f_amine_4(X),f_amine_1(X)) :- amine(X),not r_amine(X).
hasAtom(X,f_amine_1(X)) :- amine(X),not r_amine(X).
hasAtom(X,f_amine_2(X)) :- amine(X),not r_amine(X).
hasAtom(X,f_amine_3(X)) :- amine(X),not r_amine(X).
hasAtom(X,f_amine_4(X)) :- amine(X),not r_amine(X).
g_amine(f_amine_1(X)) :- amine(X),not r_amine(X).
g_amine(f_amine_2(X)) :- amine(X),not r_amine(X).
g_amine(f_amine_3(X)) :- amine(X),not r_amine(X).
g_amine(f_amine_4(X)) :- amine(X),not r_amine(X).
n(f_amide_1(X)) :- amide(X),not r_amide(X).
h(f_amide_2(X)) :- amide(X),not r_amide(X).
h(f_amide_3(X)) :- amide(X),not r_amide(X).
o(f_amide_4(X)) :- amide(X),not r_amide(X).
c(f_amide_5(X)) :- amide(X),not r_amide(X).
single(f_amide_1(X),f_amide_2(X)) :- amide(X),not r_amide(X).
single(f_amide_2(X),f_amide_1(X)) :- amide(X),not r_amide(X).
single(f_amide_1(X),f_amide_3(X)) :- amide(X),not r_amide(X).
single(f_amide_3(X),f_amide_1(X)) :- amide(X),not r_amide(X).
single(f_amide_1(X),f_amide_5(X)) :- amide(X),not r_amide(X).
single(f_amide_5(X),f_amide_1(X)) :- amide(X),not r_amide(X).
double(f_amide_4(X),f_amide_5(X)) :- amide(X),not r_amide(X).
double(f_amide_5(X),f_amide_4(X)) :- amide(X),not r_amide(X).
single(f_amide_5(X),f_amide_6(X)) :- amide(X),not r_amide(X).
single(f_amide_6(X),f_amide_5(X)) :- amide(X),not r_amide(X).
hasAtom(X,f_amide_1(X)) :- amide(X),not r_amide(X).
hasAtom(X,f_amide_2(X)) :- amide(X),not r_amide(X).
hasAtom(X,f_amide_3(X)) :- amide(X),not r_amide(X).
hasAtom(X,f_amide_4(X)) :- amide(X),not r_amide(X).
hasAtom(X,f_amide_5(X)) :- amide(X),not r_amide(X).
hasAtom(X,f_amide_6(X)) :- amide(X),not r_amide(X).
g_amide(f_amide_1(X)) :- amide(X),not r_amide(X).
g_amide(f_amide_2(X)) :- amide(X),not r_amide(X).
g_amide(f_amide_3(X)) :- amide(X),not r_amide(X).
g_amide(f_amide_4(X)) :- amide(X),not r_amide(X).
g_amide(f_amide_5(X)) :- amide(X),not r_amide(X).
g_amide(f_amide_6(X)) :- amide(X),not r_amide(X).
n(f_imine_1(X)) :- imine(X),not r_imine(X).
h(f_imine_2(X)) :- imine(X),not r_imine(X).
c(f_imine_3(X)) :- imine(X),not r_imine(X).
single(f_imine_1(X),f_imine_2(X)) :- imine(X),not r_imine(X).
single(f_imine_2(X),f_imine_1(X)) :- imine(X),not r_imine(X).
double(f_imine_2(X),f_imine_3(X)) :- imine(X),not r_imine(X).
double(f_imine_3(X),f_imine_2(X)) :- imine(X),not r_imine(X).
single(f_imine_3(X),f_imine_5(X)) :- imine(X),not r_imine(X).
single(f_imine_5(X),f_imine_3(X)) :- imine(X),not r_imine(X).
single(f_imine_3(X),f_imine_4(X)) :- imine(X),not r_imine(X).
single(f_imine_4(X),f_imine_3(X)) :- imine(X),not r_imine(X).
single(f_imine_1(X),f_imine_6(X)) :- imine(X),not r_imine(X).
single(f_imine_6(X),f_imine_1(X)) :- imine(X),not r_imine(X).
hasAtom(X,f_imine_1(X)) :- imine(X),not r_imine(X).
hasAtom(X,f_imine_2(X)) :- imine(X),not r_imine(X).
hasAtom(X,f_imine_3(X)) :- imine(X),not r_imine(X).
hasAtom(X,f_imine_4(X)) :- imine(X),not r_imine(X).
hasAtom(X,f_imine_5(X)) :- imine(X),not r_imine(X).
hasAtom(X,f_imine_6(X)) :- imine(X),not r_imine(X).
g_imine(f_imine_1(X)) :- imine(X),not r_imine(X).
g_imine(f_imine_2(X)) :- imine(X),not r_imine(X).
g_imine(f_imine_3(X)) :- imine(X),not r_imine(X).
g_imine(f_imine_4(X)) :- imine(X),not r_imine(X).
g_imine(f_imine_5(X)) :- imine(X),not r_imine(X).
g_imine(f_imine_6(X)) :- imine(X),not r_imine(X).
n(f_nitro_1(X)) :- nitro(X),not r_nitro(X).
o(f_nitro_2(X)) :- nitro(X),not r_nitro(X).
o(f_nitro_3(X)) :- nitro(X),not r_nitro(X).
single(f_nitro_1(X),f_nitro_2(X)) :- nitro(X),not r_nitro(X).
single(f_nitro_2(X),f_nitro_1(X)) :- nitro(X),not r_nitro(X).
double(f_nitro_1(X),f_nitro_3(X)) :- nitro(X),not r_nitro(X).
double(f_nitro_3(X),f_nitro_1(X)) :- nitro(X),not r_nitro(X).
single(f_nitro_1(X),f_nitro_4(X)) :- nitro(X),not r_nitro(X).
single(f_nitro_4(X),f_nitro_1(X)) :- nitro(X),not r_nitro(X).
hasAtom(X,f_nitro_1(X)) :- nitro(X),not r_nitro(X).
hasAtom(X,f_nitro_2(X)) :- nitro(X),not r_nitro(X).
hasAtom(X,f_nitro_3(X)) :- nitro(X),not r_nitro(X).
hasAtom(X,f_nitro_4(X)) :- nitro(X),not r_nitro(X).
g_nitro(f_nitro_1(X)) :- nitro(X),not r_nitro(X).
g_nitro(f_nitro_2(X)) :- nitro(X),not r_nitro(X).
g_nitro(f_nitro_3(X)) :- nitro(X),not r_nitro(X).
g_nitro(f_nitro_4(X)) :- nitro(X),not r_nitro(X).
n(f_nitroso_1(X)) :- nitroso(X),not r_nitroso(X).
o(f_nitroso_2(X)) :- nitroso(X),not r_nitroso(X).
double(f_nitroso_1(X),f_nitroso_2(X)) :- nitroso(X),not r_nitroso(X).
double(f_nitroso_2(X),f_nitroso_1(X)) :- nitroso(X),not r_nitroso(X).
single(f_nitroso_1(X),f_nitroso_3(X)) :- nitroso(X),not r_nitroso(X).
single(f_nitroso_3(X),f_nitroso_1(X)) :- nitroso(X),not r_nitroso(X).
hasAtom(X,f_nitroso_1(X)) :- nitroso(X),not r_nitroso(X).
hasAtom(X,f_nitroso_2(X)) :- nitroso(X),not r_nitroso(X).
hasAtom(X,f_nitroso_3(X)) :- nitroso(X),not r_nitroso(X).
g_nitroso(f_nitroso_1(X)) :- nitroso(X),not r_nitroso(X).
g_nitroso(f_nitroso_2(X)) :- nitroso(X),not r_nitroso(X).
g_nitroso(f_nitroso_3(X)) :- nitroso(X),not r_nitroso(X).
n(f_cyanate_1(X)) :- cyanate(X),not r_cyanate(X).
c(f_cyanate_2(X)) :- cyanate(X),not r_cyanate(X).
o(f_cyanate_3(X)) :- cyanate(X),not r_cyanate(X).
triple(f_cyanate_1(X),f_cyanate_2(X)) :- cyanate(X),not r_cyanate(X).
triple(f_cyanate_2(X),f_cyanate_1(X)) :- cyanate(X),not r_cyanate(X).
single(f_cyanate_2(X),f_cyanate_3(X)) :- cyanate(X),not r_cyanate(X).
single(f_cyanate_3(X),f_cyanate_2(X)) :- cyanate(X),not r_cyanate(X).
single(f_cyanate_3(X),f_cyanate_4(X)) :- cyanate(X),not r_cyanate(X).
single(f_cyanate_4(X),f_cyanate_3(X)) :- cyanate(X),not r_cyanate(X).
hasAtom(X,f_cyanate_1(X)) :- cyanate(X),not r_cyanate(X).
hasAtom(X,f_cyanate_2(X)) :- cyanate(X),not r_cyanate(X).
hasAtom(X,f_cyanate_3(X)) :- cyanate(X),not r_cyanate(X).
hasAtom(X,f_cyanate_4(X)) :- cyanate(X),not r_cyanate(X).
g_cyanate(f_cyanate_1(X)) :- cyanate(X),not r_cyanate(X).
g_cyanate(f_cyanate_2(X)) :- cyanate(X),not r_cyanate(X).
g_cyanate(f_cyanate_3(X)) :- cyanate(X),not r_cyanate(X).
g_cyanate(f_cyanate_4(X)) :- cyanate(X),not r_cyanate(X).
p(f_phosphite_1(X)) :- phosphite(X),not r_phosphite(X).
o(f_phosphite_2(X)) :- phosphite(X),not r_phosphite(X).
single(f_phosphite_1(X),f_phosphite_2(X)) :- phosphite(X),not r_phosphite(X).
single(f_phosphite_2(X),f_phosphite_1(X)) :- phosphite(X),not r_phosphite(X).
single(f_phosphite_2(X),f_phosphite_3(X)) :- phosphite(X),not r_phosphite(X).
single(f_phosphite_3(X),f_phosphite_2(X)) :- phosphite(X),not r_phosphite(X).
single(f_phosphite_1(X),f_phosphite_4(X)) :- phosphite(X),not r_phosphite(X).
single(f_phosphite_4(X),f_phosphite_1(X)) :- phosphite(X),not r_phosphite(X).
single(f_phosphite_1(X),f_phosphite_5(X)) :- phosphite(X),not r_phosphite(X).
single(f_phosphite_5(X),f_phosphite_1(X)) :- phosphite(X),not r_phosphite(X).
hasAtom(X,f_phosphite_1(X)) :- phosphite(X),not r_phosphite(X).
hasAtom(X,f_phosphite_2(X)) :- phosphite(X),not r_phosphite(X).
hasAtom(X,f_phosphite_3(X)) :- phosphite(X),not r_phosphite(X).
hasAtom(X,f_phosphite_4(X)) :- phosphite(X),not r_phosphite(X).
hasAtom(X,f_phosphite_5(X)) :- phosphite(X),not r_phosphite(X).
g_phosphite(f_phosphite_1(X)) :- phosphite(X),not r_phosphite(X).
g_phosphite(f_phosphite_2(X)) :- phosphite(X),not r_phosphite(X).
g_phosphite(f_phosphite_3(X)) :- phosphite(X),not r_phosphite(X).
g_phosphite(f_phosphite_4(X)) :- phosphite(X),not r_phosphite(X).
g_phosphite(f_phosphite_5(X)) :- phosphite(X),not r_phosphite(X).
p(f_phosphono_1(X)) :- phosphono(X),not r_phosphono(X).
o(f_phosphono_2(X)) :- phosphono(X),not r_phosphono(X).
h(f_phosphono_3(X)) :- phosphono(X),not r_phosphono(X).
o(f_phosphono_4(X)) :- phosphono(X),not r_phosphono(X).
h(f_phosphono_5(X)) :- phosphono(X),not r_phosphono(X).
o(f_phosphono_7(X)) :- phosphono(X),not r_phosphono(X).
single(f_phosphono_1(X),f_phosphono_2(X)) :- phosphono(X),not r_phosphono(X).
single(f_phosphono_2(X),f_phosphono_1(X)) :- phosphono(X),not r_phosphono(X).
single(f_phosphono_2(X),f_phosphono_3(X)) :- phosphono(X),not r_phosphono(X).
single(f_phosphono_3(X),f_phosphono_2(X)) :- phosphono(X),not r_phosphono(X).
single(f_phosphono_1(X),f_phosphono_4(X)) :- phosphono(X),not r_phosphono(X).
single(f_phosphono_4(X),f_phosphono_1(X)) :- phosphono(X),not r_phosphono(X).
single(f_phosphono_4(X),f_phosphono_5(X)) :- phosphono(X),not r_phosphono(X).
single(f_phosphono_5(X),f_phosphono_4(X)) :- phosphono(X),not r_phosphono(X).
single(f_phosphono_1(X),f_phosphono_6(X)) :- phosphono(X),not r_phosphono(X).
single(f_phosphono_6(X),f_phosphono_1(X)) :- phosphono(X),not r_phosphono(X).
double(f_phosphono_1(X),f_phosphono_7(X)) :- phosphono(X),not r_phosphono(X).
double(f_phosphono_7(X),f_phosphono_1(X)) :- phosphono(X),not r_phosphono(X).
hasAtom(X,f_phosphono_1(X)) :- phosphono(X),not r_phosphono(X).
hasAtom(X,f_phosphono_2(X)) :- phosphono(X),not r_phosphono(X).
hasAtom(X,f_phosphono_3(X)) :- phosphono(X),not r_phosphono(X).
hasAtom(X,f_phosphono_4(X)) :- phosphono(X),not r_phosphono(X).
hasAtom(X,f_phosphono_5(X)) :- phosphono(X),not r_phosphono(X).
hasAtom(X,f_phosphono_6(X)) :- phosphono(X),not r_phosphono(X).
hasAtom(X,f_phosphono_7(X)) :- phosphono(X),not r_phosphono(X).
g_phosphono(f_phosphono_1(X)) :- phosphono(X),not r_phosphono(X).
g_phosphono(f_phosphono_2(X)) :- phosphono(X),not r_phosphono(X).
g_phosphono(f_phosphono_3(X)) :- phosphono(X),not r_phosphono(X).
g_phosphono(f_phosphono_4(X)) :- phosphono(X),not r_phosphono(X).
g_phosphono(f_phosphono_5(X)) :- phosphono(X),not r_phosphono(X).
g_phosphono(f_phosphono_6(X)) :- phosphono(X),not r_phosphono(X).
g_phosphono(f_phosphono_7(X)) :- phosphono(X),not r_phosphono(X).
p(f_phosphino_1(X)) :- phosphino(X),not r_phosphino(X).
single(f_phosphino_1(X),f_phosphino_2(X)) :- phosphino(X),not r_phosphino(X).
single(f_phosphino_2(X),f_phosphino_1(X)) :- phosphino(X),not r_phosphino(X).
single(f_phosphino_1(X),f_phosphino_3(X)) :- phosphino(X),not r_phosphino(X).
single(f_phosphino_3(X),f_phosphino_1(X)) :- phosphino(X),not r_phosphino(X).
single(f_phosphino_1(X),f_phosphino_4(X)) :- phosphino(X),not r_phosphino(X).
single(f_phosphino_4(X),f_phosphino_1(X)) :- phosphino(X),not r_phosphino(X).
hasAtom(X,f_phosphino_1(X)) :- phosphino(X),not r_phosphino(X).
hasAtom(X,f_phosphino_2(X)) :- phosphino(X),not r_phosphino(X).
hasAtom(X,f_phosphino_3(X)) :- phosphino(X),not r_phosphino(X).
hasAtom(X,f_phosphino_4(X)) :- phosphino(X),not r_phosphino(X).
g_phosphino(f_phosphino_1(X)) :- phosphino(X),not r_phosphino(X).
g_phosphino(f_phosphino_2(X)) :- phosphino(X),not r_phosphino(X).
g_phosphino(f_phosphino_3(X)) :- phosphino(X),not r_phosphino(X).
g_phosphino(f_phosphino_4(X)) :- phosphino(X),not r_phosphino(X).
p(f_phosphate_1(X)) :- phosphate(X),not r_phosphate(X).
o(f_phosphate_2(X)) :- phosphate(X),not r_phosphate(X).
h(f_phosphate_3(X)) :- phosphate(X),not r_phosphate(X).
o(f_phosphate_4(X)) :- phosphate(X),not r_phosphate(X).
h(f_phosphate_5(X)) :- phosphate(X),not r_phosphate(X).
o(f_phosphate_6(X)) :- phosphate(X),not r_phosphate(X).
o(f_phosphate_8(X)) :- phosphate(X),not r_phosphate(X).
single(f_phosphate_1(X),f_phosphate_2(X)) :- phosphate(X),not r_phosphate(X).
single(f_phosphate_2(X),f_phosphate_1(X)) :- phosphate(X),not r_phosphate(X).
single(f_phosphate_2(X),f_phosphate_3(X)) :- phosphate(X),not r_phosphate(X).
single(f_phosphate_3(X),f_phosphate_2(X)) :- phosphate(X),not r_phosphate(X).
single(f_phosphate_1(X),f_phosphate_4(X)) :- phosphate(X),not r_phosphate(X).
single(f_phosphate_4(X),f_phosphate_1(X)) :- phosphate(X),not r_phosphate(X).
single(f_phosphate_4(X),f_phosphate_5(X)) :- phosphate(X),not r_phosphate(X).
single(f_phosphate_5(X),f_phosphate_4(X)) :- phosphate(X),not r_phosphate(X).
single(f_phosphate_1(X),f_phosphate_6(X)) :- phosphate(X),not r_phosphate(X).
single(f_phosphate_6(X),f_phosphate_1(X)) :- phosphate(X),not r_phosphate(X).
single(f_phosphate_6(X),f_phosphate_7(X)) :- phosphate(X),not r_phosphate(X).
single(f_phosphate_7(X),f_phosphate_6(X)) :- phosphate(X),not r_phosphate(X).
double(f_phosphate_1(X),f_phosphate_8(X)) :- phosphate(X),not r_phosphate(X).
double(f_phosphate_8(X),f_phosphate_1(X)) :- phosphate(X),not r_phosphate(X).
hasAtom(X,f_phosphate_1(X)) :- phosphate(X),not r_phosphate(X).
hasAtom(X,f_phosphate_2(X)) :- phosphate(X),not r_phosphate(X).
hasAtom(X,f_phosphate_3(X)) :- phosphate(X),not r_phosphate(X).
hasAtom(X,f_phosphate_4(X)) :- phosphate(X),not r_phosphate(X).
hasAtom(X,f_phosphate_5(X)) :- phosphate(X),not r_phosphate(X).
hasAtom(X,f_phosphate_6(X)) :- phosphate(X),not r_phosphate(X).
hasAtom(X,f_phosphate_7(X)) :- phosphate(X),not r_phosphate(X).
hasAtom(X,f_phosphate_8(X)) :- phosphate(X),not r_phosphate(X).
g_phosphate(f_phosphate_1(X)) :- phosphate(X),not r_phosphate(X).
g_phosphate(f_phosphate_2(X)) :- phosphate(X),not r_phosphate(X).
g_phosphate(f_phosphate_3(X)) :- phosphate(X),not r_phosphate(X).
g_phosphate(f_phosphate_4(X)) :- phosphate(X),not r_phosphate(X).
g_phosphate(f_phosphate_5(X)) :- phosphate(X),not r_phosphate(X).
g_phosphate(f_phosphate_6(X)) :- phosphate(X),not r_phosphate(X).
g_phosphate(f_phosphate_7(X)) :- phosphate(X),not r_phosphate(X).
g_phosphate(f_phosphate_8(X)) :- phosphate(X),not r_phosphate(X).
s(f_thiol_1(X)) :- thiol(X),not r_thiol(X).
h(f_thiol_2(X)) :- thiol(X),not r_thiol(X).
single(f_thiol_1(X),f_thiol_2(X)) :- thiol(X),not r_thiol(X).
single(f_thiol_2(X),f_thiol_1(X)) :- thiol(X),not r_thiol(X).
single(f_thiol_1(X),f_thiol_3(X)) :- thiol(X),not r_thiol(X).
single(f_thiol_3(X),f_thiol_1(X)) :- thiol(X),not r_thiol(X).
hasAtom(X,f_thiol_1(X)) :- thiol(X),not r_thiol(X).
hasAtom(X,f_thiol_2(X)) :- thiol(X),not r_thiol(X).
hasAtom(X,f_thiol_3(X)) :- thiol(X),not r_thiol(X).
g_thiol(f_thiol_1(X)) :- thiol(X),not r_thiol(X).
g_thiol(f_thiol_2(X)) :- thiol(X),not r_thiol(X).
g_thiol(f_thiol_3(X)) :- thiol(X),not r_thiol(X).
s(f_thione_1(X)) :- thione(X),not r_thione(X).
c(f_thione_2(X)) :- thione(X),not r_thione(X).
double(f_thione_1(X),f_thione_2(X)) :- thione(X),not r_thione(X).
double(f_thione_2(X),f_thione_1(X)) :- thione(X),not r_thione(X).
single(f_thione_2(X),f_thione_3(X)) :- thione(X),not r_thione(X).
single(f_thione_3(X),f_thione_2(X)) :- thione(X),not r_thione(X).
hasAtom(X,f_thione_1(X)) :- thione(X),not r_thione(X).
hasAtom(X,f_thione_2(X)) :- thione(X),not r_thione(X).
hasAtom(X,f_thione_3(X)) :- thione(X),not r_thione(X).
g_thione(f_thione_1(X)) :- thione(X),not r_thione(X).
g_thione(f_thione_2(X)) :- thione(X),not r_thione(X).
g_thione(f_thione_3(X)) :- thione(X),not r_thione(X).
s(f_disulphide_1(X)) :- disulphide(X),not r_disulphide(X).
c(f_disulphide_2(X)) :- disulphide(X),not r_disulphide(X).
s(f_disulphide_4(X)) :- disulphide(X),not r_disulphide(X).
c(f_disulphide_5(X)) :- disulphide(X),not r_disulphide(X).
single(f_disulphide_1(X),f_disulphide_2(X)) :- disulphide(X),not r_disulphide(X).
single(f_disulphide_2(X),f_disulphide_1(X)) :- disulphide(X),not r_disulphide(X).
single(f_disulphide_2(X),f_disulphide_3(X)) :- disulphide(X),not r_disulphide(X).
single(f_disulphide_3(X),f_disulphide_2(X)) :- disulphide(X),not r_disulphide(X).
single(f_disulphide_1(X),f_disulphide_4(X)) :- disulphide(X),not r_disulphide(X).
single(f_disulphide_4(X),f_disulphide_1(X)) :- disulphide(X),not r_disulphide(X).
single(f_disulphide_4(X),f_disulphide_5(X)) :- disulphide(X),not r_disulphide(X).
single(f_disulphide_5(X),f_disulphide_4(X)) :- disulphide(X),not r_disulphide(X).
single(f_disulphide_5(X),f_disulphide_6(X)) :- disulphide(X),not r_disulphide(X).
single(f_disulphide_6(X),f_disulphide_5(X)) :- disulphide(X),not r_disulphide(X).
hasAtom(X,f_disulphide_1(X)) :- disulphide(X),not r_disulphide(X).
hasAtom(X,f_disulphide_2(X)) :- disulphide(X),not r_disulphide(X).
hasAtom(X,f_disulphide_3(X)) :- disulphide(X),not r_disulphide(X).
hasAtom(X,f_disulphide_4(X)) :- disulphide(X),not r_disulphide(X).
hasAtom(X,f_disulphide_5(X)) :- disulphide(X),not r_disulphide(X).
hasAtom(X,f_disulphide_6(X)) :- disulphide(X),not r_disulphide(X).
g_disulphide(f_disulphide_1(X)) :- disulphide(X),not r_disulphide(X).
g_disulphide(f_disulphide_2(X)) :- disulphide(X),not r_disulphide(X).
g_disulphide(f_disulphide_3(X)) :- disulphide(X),not r_disulphide(X).
g_disulphide(f_disulphide_4(X)) :- disulphide(X),not r_disulphide(X).
g_disulphide(f_disulphide_5(X)) :- disulphide(X),not r_disulphide(X).
g_disulphide(f_disulphide_6(X)) :- disulphide(X),not r_disulphide(X).
s(f_sulphide_1(X)) :- sulphide(X),not r_sulphide(X).
c(f_sulphide_2(X)) :- sulphide(X),not r_sulphide(X).
c(f_sulphide_4(X)) :- sulphide(X),not r_sulphide(X).
single(f_sulphide_1(X),f_sulphide_2(X)) :- sulphide(X),not r_sulphide(X).
single(f_sulphide_2(X),f_sulphide_1(X)) :- sulphide(X),not r_sulphide(X).
single(f_sulphide_2(X),f_sulphide_3(X)) :- sulphide(X),not r_sulphide(X).
single(f_sulphide_3(X),f_sulphide_2(X)) :- sulphide(X),not r_sulphide(X).
single(f_sulphide_1(X),f_sulphide_4(X)) :- sulphide(X),not r_sulphide(X).
single(f_sulphide_4(X),f_sulphide_1(X)) :- sulphide(X),not r_sulphide(X).
single(f_sulphide_4(X),f_sulphide_5(X)) :- sulphide(X),not r_sulphide(X).
single(f_sulphide_5(X),f_sulphide_4(X)) :- sulphide(X),not r_sulphide(X).
hasAtom(X,f_sulphide_1(X)) :- sulphide(X),not r_sulphide(X).
hasAtom(X,f_sulphide_2(X)) :- sulphide(X),not r_sulphide(X).
hasAtom(X,f_sulphide_3(X)) :- sulphide(X),not r_sulphide(X).
hasAtom(X,f_sulphide_4(X)) :- sulphide(X),not r_sulphide(X).
hasAtom(X,f_sulphide_5(X)) :- sulphide(X),not r_sulphide(X).
g_sulphide(f_sulphide_1(X)) :- sulphide(X),not r_sulphide(X).
g_sulphide(f_sulphide_2(X)) :- sulphide(X),not r_sulphide(X).
g_sulphide(f_sulphide_3(X)) :- sulphide(X),not r_sulphide(X).
g_sulphide(f_sulphide_4(X)) :- sulphide(X),not r_sulphide(X).
g_sulphide(f_sulphide_5(X)) :- sulphide(X),not r_sulphide(X).
s(f_sulphate_1(X)) :- sulphate(X),not r_sulphate(X).
o(f_sulphate_2(X)) :- sulphate(X),not r_sulphate(X).
o(f_sulphate_3(X)) :- sulphate(X),not r_sulphate(X).
o(f_sulphate_4(X)) :- sulphate(X),not r_sulphate(X).
double(f_sulphate_1(X),f_sulphate_2(X)) :- sulphate(X),not r_sulphate(X).
double(f_sulphate_2(X),f_sulphate_1(X)) :- sulphate(X),not r_sulphate(X).
double(f_sulphate_1(X),f_sulphate_3(X)) :- sulphate(X),not r_sulphate(X).
double(f_sulphate_3(X),f_sulphate_1(X)) :- sulphate(X),not r_sulphate(X).
single(f_sulphate_1(X),f_sulphate_4(X)) :- sulphate(X),not r_sulphate(X).
single(f_sulphate_4(X),f_sulphate_1(X)) :- sulphate(X),not r_sulphate(X).
single(f_sulphate_1(X),f_sulphate_5(X)) :- sulphate(X),not r_sulphate(X).
single(f_sulphate_5(X),f_sulphate_1(X)) :- sulphate(X),not r_sulphate(X).
hasAtom(X,f_sulphate_1(X)) :- sulphate(X),not r_sulphate(X).
hasAtom(X,f_sulphate_2(X)) :- sulphate(X),not r_sulphate(X).
hasAtom(X,f_sulphate_3(X)) :- sulphate(X),not r_sulphate(X).
hasAtom(X,f_sulphate_4(X)) :- sulphate(X),not r_sulphate(X).
hasAtom(X,f_sulphate_5(X)) :- sulphate(X),not r_sulphate(X).
g_sulphate(f_sulphate_1(X)) :- sulphate(X),not r_sulphate(X).
g_sulphate(f_sulphate_2(X)) :- sulphate(X),not r_sulphate(X).
g_sulphate(f_sulphate_3(X)) :- sulphate(X),not r_sulphate(X).
g_sulphate(f_sulphate_4(X)) :- sulphate(X),not r_sulphate(X).
g_sulphate(f_sulphate_5(X)) :- sulphate(X),not r_sulphate(X).
c(f_organicHydroxy_1(X)) :- organicHydroxy(X),not r_organicHydroxy(X).
o(f_organicHydroxy_2(X)) :- organicHydroxy(X),not r_organicHydroxy(X).
h(f_organicHydroxy_3(X)) :- organicHydroxy(X),not r_organicHydroxy(X).
single(f_organicHydroxy_1(X),f_organicHydroxy_2(X)) :- organicHydroxy(X),not r_organicHydroxy(X).
single(f_organicHydroxy_2(X),f_organicHydroxy_1(X)) :- organicHydroxy(X),not r_organicHydroxy(X).
single(f_organicHydroxy_2(X),f_organicHydroxy_3(X)) :- organicHydroxy(X),not r_organicHydroxy(X).
single(f_organicHydroxy_3(X),f_organicHydroxy_2(X)) :- organicHydroxy(X),not r_organicHydroxy(X).
hasAtom(X,f_organicHydroxy_1(X)) :- organicHydroxy(X),not r_organicHydroxy(X).
hasAtom(X,f_organicHydroxy_2(X)) :- organicHydroxy(X),not r_organicHydroxy(X).
hasAtom(X,f_organicHydroxy_3(X)) :- organicHydroxy(X),not r_organicHydroxy(X).
g_organicHydroxy(f_organicHydroxy_1(X)) :- organicHydroxy(X),not r_organicHydroxy(X).
g_organicHydroxy(f_organicHydroxy_2(X)) :- organicHydroxy(X),not r_organicHydroxy(X).
g_organicHydroxy(f_organicHydroxy_3(X)) :- organicHydroxy(X),not r_organicHydroxy(X).
s(f_thial_1(X)) :- thial(X),not r_thial(X).
c(f_thial_2(X)) :- thial(X),not r_thial(X).
h(f_thial_3(X)) :- thial(X),not r_thial(X).
double(f_thial_1(X),f_thial_2(X)) :- thial(X),not r_thial(X).
double(f_thial_2(X),f_thial_1(X)) :- thial(X),not r_thial(X).
single(f_thial_2(X),f_thial_3(X)) :- thial(X),not r_thial(X).
single(f_thial_3(X),f_thial_2(X)) :- thial(X),not r_thial(X).
single(f_thial_2(X),f_thial_4(X)) :- thial(X),not r_thial(X).
single(f_thial_4(X),f_thial_2(X)) :- thial(X),not r_thial(X).
hasAtom(X,f_thial_1(X)) :- thial(X),not r_thial(X).
hasAtom(X,f_thial_2(X)) :- thial(X),not r_thial(X).
hasAtom(X,f_thial_3(X)) :- thial(X),not r_thial(X).
hasAtom(X,f_thial_4(X)) :- thial(X),not r_thial(X).
g_thial(f_thial_1(X)) :- thial(X),not r_thial(X).
g_thial(f_thial_2(X)) :- thial(X),not r_thial(X).
g_thial(f_thial_3(X)) :- thial(X),not r_thial(X).
g_thial(f_thial_4(X)) :- thial(X),not r_thial(X).
b(f_borinicAcid_1(X)) :- borinicAcid(X),not r_borinicAcid(X).
o(f_borinicAcid_2(X)) :- borinicAcid(X),not r_borinicAcid(X).
h(f_borinicAcid_3(X)) :- borinicAcid(X),not r_borinicAcid(X).
single(f_borinicAcid_1(X),f_borinicAcid_2(X)) :- borinicAcid(X),not r_borinicAcid(X).
single(f_borinicAcid_2(X),f_borinicAcid_1(X)) :- borinicAcid(X),not r_borinicAcid(X).
single(f_borinicAcid_2(X),f_borinicAcid_3(X)) :- borinicAcid(X),not r_borinicAcid(X).
single(f_borinicAcid_3(X),f_borinicAcid_2(X)) :- borinicAcid(X),not r_borinicAcid(X).
single(f_borinicAcid_1(X),f_borinicAcid_4(X)) :- borinicAcid(X),not r_borinicAcid(X).
single(f_borinicAcid_4(X),f_borinicAcid_1(X)) :- borinicAcid(X),not r_borinicAcid(X).
single(f_borinicAcid_1(X),f_borinicAcid_5(X)) :- borinicAcid(X),not r_borinicAcid(X).
single(f_borinicAcid_5(X),f_borinicAcid_1(X)) :- borinicAcid(X),not r_borinicAcid(X).
hasAtom(X,f_borinicAcid_1(X)) :- borinicAcid(X),not r_borinicAcid(X).
hasAtom(X,f_borinicAcid_2(X)) :- borinicAcid(X),not r_borinicAcid(X).
hasAtom(X,f_borinicAcid_3(X)) :- borinicAcid(X),not r_borinicAcid(X).
hasAtom(X,f_borinicAcid_4(X)) :- borinicAcid(X),not r_borinicAcid(X).
hasAtom(X,f_borinicAcid_5(X)) :- borinicAcid(X),not r_borinicAcid(X).
g_borinicAcid(f_borinicAcid_1(X)) :- borinicAcid(X),not r_borinicAcid(X).
g_borinicAcid(f_borinicAcid_2(X)) :- borinicAcid(X),not r_borinicAcid(X).
g_borinicAcid(f_borinicAcid_3(X)) :- borinicAcid(X),not r_borinicAcid(X).
g_borinicAcid(f_borinicAcid_4(X)) :- borinicAcid(X),not r_borinicAcid(X).
g_borinicAcid(f_borinicAcid_5(X)) :- borinicAcid(X),not r_borinicAcid(X).
bond(X,Y) :- single(X,Y).
bond(X,Y) :- double(X,Y).
bond(X,Y) :- triple(X,Y).

% molecules that contain barium
bariumMolEntity(X) :- hasAtom(X,Y), ba(Y).

% molecules that contain beryllium
berylliumMolEntity(X) :- hasAtom(X,Y), be(Y).

% molecules that contain calcium
calciumMolEntity(X) :- hasAtom(X,Y), ca(Y).

% molecules that contain magnesium
magnesiumMolEntity(X) :- hasAtom(X,Y), mg(Y).

% molecules that contain radium
radiumMolEntity(X) :- hasAtom(X,Y), ra(Y).

% molecules that contain strontium
strontiumMolEntity(X) :- hasAtom(X,Y), sr(Y).

% molecules that contain halogens
alkalineEarthMetalMolEntity(X) :- bariumMolEntity(X).
alkalineEarthMetalMolEntity(X) :- berylliumMolEntity(X).
alkalineEarthMetalMolEntity(X) :- calciumMolEntity(X).
alkalineEarthMetalMolEntity(X) :- magnesiumMolEntity(X).
alkalineEarthMetalMolEntity(X) :- radiumMolEntity(X).
alkalineEarthMetalMolEntity(X) :- strontiumMolEntity(X).

% molecules that contain astatine
astatineMolEntity(X) :- hasAtom(X,Y), at(Y).

% molecules that contain bromine
bromineMolEntity(X) :- hasAtom(X,Y), br(Y).

% molecules that contain chlorine
chlorineMolEntity(X) :- hasAtom(X,Y), cl(Y).

% molecules that contain fluorine
fluorineMolEntity(X) :- hasAtom(X,Y), f(Y).

% molecules that contain iodine
iodineMolEntity(X) :- hasAtom(X,Y), i(Y).

% molecules that contain halogens
halogenMolEntity(X) :- bromineMolEntity(X).
halogenMolEntity(X) :- chlorineMolEntity(X).
halogenMolEntity(X) :- fluorineMolEntity(X).
halogenMolEntity(X) :- astatineMolEntity(X).
halogenMolEntity(X) :- iodineMolEntity(X).


% molecules that contain polonium
poloniumMolEntity(X) :- hasAtom(X,Y), po(Y).

% molecules that contain selenium
seleniumMolEntity(X) :- hasAtom(X,Y), se(Y).

% molecules that contain sulfur
sulfurMolEntity(X) :- hasAtom(X,Y), s(Y).

% molecules that contain tellurium
telluriumMolEntity(X) :- hasAtom(X,Y), te(Y).

% molecules that are chalcogens
chalcogenMolEntity(X) :- oxygenMolEntity(X).
chalcogenMolEntity(X) :- poloniumMolEntity(X).
chalcogenMolEntity(X) :- seleniumMolEntity(X).
chalcogenMolEntity(X) :- sulfurMolEntity(X).
chalcogenMolEntity(X) :- telluriumMolEntity(X).

% molecules that contain antimony
antimonyMolEntity(X) :- hasAtom(X,Y), sb(Y).

% molecules that contain arsenic
arsenicMolEntity(X) :- hasAtom(X,Y), as(Y).

% molecules that contain bismuth
bismuthMolEntity(X) :- hasAtom(X,Y), bi(Y).

% molecules that contain nitrogen
nitrogenMolEntity(X) :- hasAtom(X,Y), n(Y).

% molecules that are pnictogens
pnictogenMolEntity(X) :- antimonyMolEntity(X).
pnictogenMolEntity(X) :- arsenicMolEntity(X).
pnictogenMolEntity(X) :- bismuthMolEntity(X).
pnictogenMolEntity(X) :- nitrogenMolEntity(X).
pnictogenMolEntity(X) :- phosphorusMolEntity(X).

% molecules that contain chromium
chromiumMolEntity(X) :- hasAtom(X,Y), cr(Y).

% molecules that contain molybdenum
molybdenumMolEntity(X) :- hasAtom(X,Y), mo(Y).

% molecules that contain seaborgium
seaborgiumMolEntity(X) :- hasAtom(X,Y), sg(Y).

% molecules that contain tungsten
tungstenMolEntity(X) :- hasAtom(X,Y), w(Y).

% molecules that belong to the chromium group
chromiumGroupMolEntity(X) :- chromiumMolEntity(X).
chromiumGroupMolEntity(X) :- molybdenumMolEntity(X).
chromiumGroupMolEntity(X) :- seaborgiumMolEntity(X).
chromiumGroupMolEntity(X) :- tungstenMolEntity(X).

%noble gas atoms
noble(X) :- ar(X).
noble(X) :- he(X).
noble(X) :- kr(X).
noble(X) :- ne(X).
noble(X) :- rn(X).
noble(X) :- xe(X).

% molecules that contain noble gas atoms
nobleGasMolEntity(X) :- hasAtom(X,Y), noble(Y).

% molecules that contain carbon
carbonMolEntity(X) :- hasAtom(X,Y), c(Y).

% molecules that contain oxygen
oxygenMolEntity(X) :- hasAtom(X,Y), o(Y).

% molecules that contain hydrogen
hydrogenMolEntity(X) :- hasAtom(X,Y), h(Y).

% molecules that contain phosphorus
phosphorusMolEntity(X) :- hasAtom(X,Y), p(Y).

% molecules that do not contain carbon
inorganic(X) :- molecule(X), not carbonMolEntity(X).

% molecules that contain carbon, hydrogen and consist only of carbon and hydrogen
notHydroCarbon(X) :- molecule(X), hasAtom(X,Y), not c(Y), not h(Y).
hydroCarbon(X) :- molecule(X), carbonMolEntity(X), not notHydroCarbon(X).

% molecules that contain carbon, hydrogen and halogen and consist only of carbon, hydrogen and halogen
notHaloHydroCarbon(X) :- molecule(X), hasAtom(X,Y), not c(Y), not h(Y), not halogen(Y).
haloHydroCarbon(X) :- molecule(X), carbonMolEntity(X), halogenMolEntity(X), not notHaloHydroCarbon(X).

% molecules that contain exactly one carbon
atLeast2Carbons(X) :- molecule(X), hasAtom(X,Y1), c(Y1), hasAtom(X,Y2), c(Y2), Y1 != Y2.
exactly1Carbon(X) :- molecule(X), carbonMolEntity(X), not atLeast2Carbons(X).

% molecules that contain exactly two carbons
atLeast3Carbons(X) :- molecule(X), hasAtom(X,Y1), c(Y1), hasAtom(X,Y2), c(Y2), Y1 != Y2, hasAtom(X,Y3), c(Y3), Y1 != Y3, Y2 != Y3.
exactly2Carbons(X) :- atLeast2Carbons(X), not atLeast3Carbons(X).

% molecules that contain exactly three carbons
atLeast4Carbons(X) :- molecule(X), hasAtom(X,Y1), c(Y1), hasAtom(X,Y2), c(Y2), Y1 != Y2, hasAtom(X,Y3), c(Y3), Y1 != Y3, Y2 != Y3, hasAtom(X,Y4), c(Y4), Y1 != Y4, Y2 != Y4, Y3 != Y4.
exactly3Carbons(X) :- atLeast3Carbons(X), not atLeast4Carbons(X).

% molecules that contain exactly four carbons
atLeast5Carbons(X) :- molecule(X), hasAtom(X,Y1), c(Y1), hasAtom(X,Y2), c(Y2), Y1 != Y2, hasAtom(X,Y3), c(Y3), Y1 != Y3, Y2 != Y3, hasAtom(X,Y4), c(Y4), Y1 != Y4, Y2 != Y4, Y3 != Y4, hasAtom(X,Y5), c(Y5), Y1 != Y5, Y2 != Y5, Y3 != Y5, Y4 != Y5.
exactly4Carbons(X) :- atLeast4Carbons(X), not atLeast5Carbons(X).

% molecules that contain at least two atoms
polyatomic(X) :- molecule(X), hasAtom(X,Y1), hasAtom(X,Y2), Y1 != Y2.

% molecules that contains exactly one atom
monoatomic(X) :- molecule(X), hasAtom(X,Y1),not polyatomic(X).

% molecules that contain exactly one carboxy group
%atLeast2CarboxyGroups(X) :- molecule(X), hasAtom(X,Y1), c(Y1), hasAtom(X,Y2), o(Y2), hasAtom(X,Y3), o(Y3), hasAtom(X,Y4), horc(Y4), double(Y1,Y2), double(Y2,Y1), single(Y1,Y3), single(Y3,Y1), single(Y1,Y4), single(Y4,Y1), not midOxygen(Y3), not charged(Y3), hasAtom(X,Y5), c(Y5), hasAtom(X,Y6), o(Y6), hasAtom(X,Y7), o(Y7), hasAtom(X,Y8), horc(Y8), double(Y5,Y6), double(Y6,Y5), single(Y5,Y7), single(Y7,Y5), single(Y5,Y8), single(Y8,Y5), not midOxygen(Y7), not charged(Y7), Y1!=Y5.
%exactly1CarboxyGroup(X) :- acid(X), not atLeast2CarboxyGroups(X).

% molecules that contain exactly two carboxy groups
%atLeast3CarboxyGroups(X) :- molecule(X), hasAtom(X,Y1), c(Y1), hasAtom(X,Y2), o(Y2), hasAtom(X,Y3), o(Y3), hasAtom(X,Y4), horc(Y4), double(Y1,Y2), double(Y2,Y1), single(Y1,Y3), single(Y3,Y1), single(Y1,Y4), single(Y4,Y1), not midOxygen(Y3), not charged(Y3), hasAtom(X,Y5), c(Y5), hasAtom(X,Y6), o(Y6), hasAtom(X,Y7), o(Y7), hasAtom(X,Y8), horc(Y8), double(Y5,Y6), double(Y6,Y5), single(Y5,Y7), single(Y7,Y5), single(Y5,Y8), single(Y8,Y5), not midOxygen(Y7), not charged(Y7), hasAtom(X,Y9), c(Y9), hasAtom(X,Y10), o(Y10), hasAtom(X,Y11), o(Y11), hasAtom(X,Y12), horc(Y12), double(Y9,Y10), double(Y10,Y9), single(Y9,Y11), single(Y11,Y9), single(Y9,Y12), single(Y12,Y9), not midOxygen(Y11), not charged(Y11), Y1!=Y5, Y9!=Y5, Y9!=Y1.
%exactly2CarboxyGroups(X) :- atLeast2CarboxyGroups(X), not atLeast3CarboxyGroups(X).

% molecules that contain a benzene ring
hasBenzeneRing(X) :- molecule(X), hasAtom(X,Y1), c(Y1),  hasAtom(X,Y2), c(Y2), single(Y1,Y2), single(Y2,Y1), hasAtom(X,Y3), c(Y3), double(Y2,Y3), double(Y3,Y2), hasAtom(X,Y4), c(Y4), single(Y3,Y4), single(Y4,Y3), hasAtom(X,Y5), double(Y4,Y5), double(Y5,Y4), c(Y5), hasAtom(X,Y6), c(Y6), single(Y5,Y6), single(Y6,Y5), double(Y6,Y1), double(Y1,Y6).

% molecules that contain a three-membered ring
hasThreeMemberedRing(X) :- hasAtom(X,Y1), hasAtom(X,Y2), Y1 != Y2, bond(Y1,Y2), bond(Y2,Y1), hasAtom(X,Y3), Y1 != Y3,  Y2 != Y3, bond(Y2,Y3), bond(Y3,Y2), bond(Y3,Y1), bond(Y1,Y3).

% molecules that contain a four-membered ring
hasFourMemberedRing(X) :- hasAtom(X,Y1), hasAtom(X,Y2), Y1 != Y2, bond(Y1,Y2), bond(Y2,Y1), hasAtom(X,Y3), Y1 != Y3,  Y2 != Y3, bond(Y2,Y3), bond(Y3,Y2), hasAtom(X,Y4), Y1 != Y4, Y2 != Y4, Y3 != Y4, bond(Y3,Y4), bond(Y4,Y3), bond(Y4,Y1), bond(Y1,Y4).

% organic molecules that are unsaturated
unsaturated(X) :- hasAtom(X,Y1), c(Y1), hasAtom(X,Y2), c(Y2), double(Y1,Y2), double(Y2,Y1).
unsaturated(X) :- hasAtom(X,Y1), c(Y1), hasAtom(X,Y2), c(Y2), triple(Y1,Y2), triple(Y2,Y1).

% organic molecules that are saturated
saturated(X) :- molecule(X), hasAtom(X,Y1), c(Y1), not unsaturated(X).

% organophosphorus molecules
organophosphorus(X) :- hasAtom(X,Y1), c(Y1), hasAtom(X,Y2), p(Y2), single(Y1,Y2), single(Y2,Y1).

% organooxygen molecules
organooxygen(X) :- hasAtom(X,Y1), c(Y1), hasAtom(X,Y2), o(Y2), bond(Y1,Y2), bond(Y2,Y1).

% molecules that contain at least one (possibly acyl) carbon connected with a non-carbon atom
heteroOrganic(X) :- hasAtom(X,Y1), c(Y1), hasAtom(X,Y2), not c(Y2),  not h(Y2), bond(Y1,Y2), bond(Y2,Y1).
