//------------------------------------------------------ // EVIDENCE: ocsr.ml.plugins.base.MLOCSRBasePlugin //------------------------------------------------------ CarbonLine(cp,cp) CarbonFormulaLine(cp,fp) FormulaLine(fp,fp) SameFormulaEndPoints(fp,fp) DoubleLine(dp,dp) DoubleCarbonLine(dp,cp) DoubleFormulaLine(dp,fp) CollinearCCC(cp,cp,cp) CollinearFCF(fp,cp,fp) CollinearFCC(fp,cp,cp) VeryCloseCarbons(cp,cp) VeryCloseDoubleCarbon(dp,cp) //------------------------------------------------------ // EVIDENCE: ocsr.ml.plugins.aromatic.MLOCSRAromaticPlugin //------------------------------------------------------ VeryCloseCarbonAromatic(cp,ap) VeryCloseFormulaAromatic(fp,ap) //------------------------------------------------------ // EVIDENCE: ocsr.ml.plugins.stereo.MLOCSRStereoPlugin //------------------------------------------------------ DashedCarbonLine(cp,cp) DashedCarbonFormulaLine(cp,fp) DashedFormulaCarbonLine(fp,cp) DashedFormulaLine(fp,fp) BlackCarbonsTriangle(cp,cp,cp) BlackCarbonFormulasTriangle(cp,fp,fp) BlackFormulaCarbonsTriangle(fp,cp,cp) BlackFormulasTriangle(fp,fp,fp) WaveCarbonLine(cp,cp) WaveCarbonFormulaLine(cp,fp) //------------------------------------------------------ // EVIDENCE: ocsr.ml.plugins.ck.MLOCSRChemicalKnowledgePlugin //------------------------------------------------------ IsOxygen(fp) IsHydroxyl(fp) //------------------------------------------------------ // QUERY: ocsr.ml.plugins.base.MLOCSRBasePlugin //------------------------------------------------------ SameCarbonPoint(cp,cp) AreCarbonsBonded(cp,cp) AreCarbonAndFormulaBonded(cp,fp) AreFormulasBonded(fp,fp) DoubleCarbonsBond(cp,cp) DoubleCarbonFormulaBond(cp,fp) DoubleFormulasBond(fp,fp) TripleCarbonsBond(cp,cp) TripleCarbonFormulaBond(cp,fp) //------------------------------------------------------ // QUERY: ocsr.ml.plugins.aromatic.MLOCSRAromaticPlugin //------------------------------------------------------ AromaticCarbonBond(cp,cp) AromaticFormulaBond(fp,cp) //------------------------------------------------------ // QUERY: ocsr.ml.plugins.stereo.MLOCSRStereoPlugin //------------------------------------------------------ WedgeCarbonsBond(cp,cp) WedgeCarbonFormulaBond(cp,fp) WedgeFormulaCarbonBond(fp,cp) WedgeFormulasBond(fp,fp) HashCarbonsBond(cp,cp) HashCarbonFormulaBond(cp,fp) HashFormulaCarbonBond(fp,cp) HashFormulasBond(fp,fp) WaveCarbonsBond(cp,cp) WaveCarbonFormulaBond(cp,fp) //------------------------------------------------------ // QUERY: ocsr.ml.plugins.ck.MLOCSRChemicalKnowledgePlugin //------------------------------------------------------ //------------------------------------------------------ // RULES: ocsr.ml.plugins.base.MLOCSRBasePlugin //------------------------------------------------------ !CarbonLine(c,c). !FormulaLine(f,f). !DoubleLine(d,d). !CollinearCCC(a1,a1,a1). !CollinearCCC(a1,a2,a2). !CollinearCCC(a1,a2,a1). !CollinearCCC(a1,a1,a2). !CollinearFCC(a1,a2,a2). !CollinearFCF(a1,a2,a1). !AreCarbonsBonded(c,c). !DoubleCarbonsBond(c,c). !DoubleFormulasBond(c,c). !TripleCarbonsBond(c,c). !AreFormulasBonded(f,f). SameCarbonPoint(c,c). 3 !SameCarbonPoint(c1,c2) 3 !AreCarbonsBonded(c1,c2) 3 !AreCarbonAndFormulaBonded(c,f) 3 !AreFormulasBonded(f1,f2) 3 !DoubleCarbonsBond(c1,c2) 3 !DoubleFormulasBond(c1,c2) 3 !DoubleCarbonFormulaBond(c,f) 3 !TripleCarbonsBond(c1,c2) 3 !TripleCarbonFormulaBond(c,f) 10 AreCarbonsBonded(c1,c2) v !AreCarbonsBonded(c2,c1) 10 AreFormulasBonded(f1,f2) v !AreFormulasBonded(f2,f1) 10 SameCarbonPoint(c1,c2) v !SameCarbonPoint(c2,c1) 10 DoubleCarbonsBond(c1,c2) v !DoubleCarbonsBond(c2,c1) 10 DoubleFormulasBond(f1,f2) v !DoubleFormulasBond(f2,f1) 10 TripleCarbonsBond(c1,c2) v !TripleCarbonsBond(c2,c1) 5 !VeryCloseCarbons(c1,c2) v !CarbonLine(c1,c2) v SameCarbonPoint(c1,c2) 5 VeryCloseCarbons(c1,c2) v !CarbonLine(c1,c2) v AreCarbonsBonded(c1,c2) 5 SameFormulaEndPoints(f1,f2) v !FormulaLine(f1,f2) v AreFormulasBonded(f1,f2) 5 !CarbonFormulaLine(c,f) v AreCarbonAndFormulaBonded(c,f) 5 !VeryCloseDoubleCarbon(d1,c1) v !DoubleCarbonLine(d1,c2) v d1=d2 v VeryCloseDoubleCarbon(d2,c2) v AreCarbonsBonded(c1,c2) 5 !VeryCloseDoubleCarbon(d1,c1) v !DoubleFormulaLine(d1,f1) v AreCarbonAndFormulaBonded(c1,f1) 5 !VeryCloseDoubleCarbon(d1,c1) v !DoubleFormulaLine(d1,f1) v !VeryCloseDoubleCarbon(d2,c1) v !DoubleFormulaLine(d2,f2) v !SameFormulaEndPoints(f1,f2) v DoubleCarbonFormulaBond(c1,f1) 5 !DoubleLine(d1,d2) v !VeryCloseDoubleCarbon(d1,c1) v !VeryCloseDoubleCarbon(d2,c2) v !CarbonLine(c1,c2) v DoubleCarbonsBond(c1,c2) 5 !DoubleCarbonLine(d1,c1) v !DoubleCarbonLine(d2,c2) v !VeryCloseCarbons(c1,c2) v !VeryCloseDoubleCarbon(d1,c3) v !VeryCloseDoubleCarbon(d2,d3) v DoubleCarbonsBond(c1,c3) 5 !DoubleCarbonLine(d1,c1) v !DoubleCarbonLine(d2,c2) v !VeryCloseCarbons(c1,c2) v !VeryCloseDoubleCarbon(d1,c3) v !VeryCloseDoubleCarbon(d2,d3) v DoubleCarbonsBond(c2,c3) 5 !DoubleCarbonLine(d1,c1) v !DoubleCarbonLine(d2,c2) v !VeryCloseCarbons(c1,c2) v !VeryCloseDoubleCarbon(d1,c3) v !VeryCloseDoubleCarbon(d2,d3) v SameCarbonPoint(c1,c2) 5 VeryCloseCarbons(c1,c2) v VeryCloseCarbons(c3,c4) v !CarbonLine(c1,c2) v !CarbonLine(c3,c4) v !VeryCloseCarbons(c1,c3) v !VeryCloseCarbons(c2,c4) v CarbonLine(c1,c3) v DoubleCarbonsBond(c1,c2) v CollinearCCC(c1,c3,c2) v CollinearCCC(c1,c3,c4) v CollinearCCC(c3,c1,c2) v CollinearCCC(c3,c1,c4) 5 VeryCloseCarbons(c1,c2) v VeryCloseCarbons(c3,c4) v !CarbonLine(c1,c2) v !CarbonLine(c3,c4) v !VeryCloseCarbons(c1,c3) v !VeryCloseCarbons(c2,c4) v CarbonLine(c1,c3) v DoubleCarbonsBond(c3,c4) v CollinearCCC(c1,c3,c2) v CollinearCCC(c1,c3,c4) v CollinearCCC(c3,c1,c2) v CollinearCCC(c3,c1,c4) 5 VeryCloseCarbons(c1,c2) v VeryCloseCarbons(c3,c4) v !CarbonLine(c1,c2) v !CarbonLine(c3,c4) v !VeryCloseCarbons(c1,c3) v !VeryCloseCarbons(c2,c4) v CarbonLine(c1,c3) v SameCarbonPoint(c1,c3) v CollinearCCC(c1,c3,c2) v CollinearCCC(c1,c3,c4) v CollinearCCC(c3,c1,c2) v CollinearCCC(c3,c1,c4) 5 VeryCloseCarbons(c1,c2) v VeryCloseCarbons(c3,c4) v !CarbonLine(c1,c2) v !CarbonLine(c3,c4) v !VeryCloseCarbons(c1,c3) v !VeryCloseCarbons(c2,c4) v CarbonLine(c1,c3) v SameCarbonPoint(c2,c4) v CollinearCCC(c1,c3,c2) v CollinearCCC(c1,c3,c4) v CollinearCCC(c3,c1,c2) v CollinearCCC(c3,c1,c4) 5 !DoubleFormulaLine(d,f1) v !VeryCloseDoubleCarbon(d,c) v !CarbonFormulaLine(c,f2) v !SameFormulaEndPoints(f1,f2) v DoubleCarbonFormulaBond(c,f2) 5 f1=f2 v !CarbonFormulaLine(c1,f1) v !CarbonFormulaLine(c2,f2) v !VeryCloseCarbons(c1,c2) v !SameFormulaEndPoints(f1,f2) v FormulaLine(f1,f2) v DoubleCarbonFormulaBond(c1,f1) 5 f1=f2 v !CarbonFormulaLine(c1,f1) v !CarbonFormulaLine(c2,f2) v !VeryCloseCarbons(c1,c2) v !SameFormulaEndPoints(f1,f2) v FormulaLine(f1,f2) v DoubleCarbonFormulaBond(c2,f2) 5 f1=f2 v !CarbonFormulaLine(c1,f1) v !CarbonFormulaLine(c2,f2) v !VeryCloseCarbons(c1,c2) v !SameFormulaEndPoints(f1,f2) v FormulaLine(f1,f2) v SameCarbonPoint(c1,c2) 5 f1=f2 v !CarbonFormulaLine(c,f1) v !CarbonFormulaLine(c,f2) v !SameFormulaEndPoints(f1,f2) v FormulaLine(f1,f2) v DoubleCarbonFormulaBond(c,f1) 5 f1=f2 v !CarbonFormulaLine(c,f1) v !CarbonFormulaLine(c,f2) v !SameFormulaEndPoints(f1,f2) v FormulaLine(f1,f2) v DoubleCarbonFormulaBond(c,f2) 5 !FormulaLine(f1,f2) v !FormulaLine(f3, f4) v !SameFormulaEndPoints(f1,f3) v !SameFormulaEndPoints(f2,f4) v FormulaLine(f1,f3) v DoubleFormulasBond(f1,f2) 5 !FormulaLine(f1,f2) v !FormulaLine(f3, f4) v !SameFormulaEndPoints(f1,f3) v !SameFormulaEndPoints(f2,f4) v FormulaLine(f1,f3) v DoubleFormulasBond(f3,f4) 5 !CarbonLine(c1,c2) v !VeryCloseDoubleCarbon(d1,c2) v !VeryCloseDoubleCarbon(d2,c2) v d1=d2 v !DoubleCarbonLine(d1,c3) v !DoubleCarbonLine(d2,c3) v DoubleCarbonsBond(c2,c3) 5 !CarbonLine(c1,c2) v !VeryCloseDoubleCarbon(d1,c2) v !VeryCloseDoubleCarbon(d2,c2) v d1=d2 v !DoubleCarbonLine(d1,c3) v !DoubleCarbonLine(d2,c3) v !AreCarbonsBonded(c1,c3) 5 !CarbonLine(c1,c2) v !VeryCloseDoubleCarbon(d1,c2) v !VeryCloseDoubleCarbon(d2,c2) v d1=d2 v !DoubleFormulaLine(d1,f1) v !DoubleFormulaLine(d2,f2) v !SameFormulaEndPoints(f1,f2) v DoubleCarbonFormulaBond(c2,f1) 5 !CarbonLine(c1,c2) v !VeryCloseDoubleCarbon(d1,c2) v !VeryCloseDoubleCarbon(d2,c2) v d1=d2 v !DoubleFormulaLine(d1,f1) v !DoubleFormulaLine(d2,f2) v !SameFormulaEndPoints(f1,f2) v !AreCarbonAndFormulaBonded(c1,f1) 5 d1=d3 v d2=d4 v !DoubleLine(d1,d2) v !DoubleLine(d3,d4) v !VeryCloseDoubleCarbon(d1,c1) v !VeryCloseDoubleCarbon(d2,c2) v !VeryCloseDoubleCarbon(d3,c1) v !VeryCloseDoubleCarbon(d4,c2) v !CarbonLine(c1,c2) v TripleCarbonsBond(c1,c2) 5 d1=d3 v d2=d4 v !DoubleLine(d1,d2) v !DoubleLine(d3,d4) v !VeryCloseDoubleCarbon(d1,c1) v !VeryCloseDoubleCarbon(d2,c2) v !VeryCloseDoubleCarbon(d3,c1) v !VeryCloseDoubleCarbon(d4,c2) v !CarbonLine(c1,c2) v !DoubleCarbonsBond(c1,c2) 5 d1=d2 v f1=f2 v !DoubleFormulaLine(d1,f1) v !DoubleFormulaLine(d2,f2) v !VeryCloseDoubleCarbon(d1,c) v !VeryCloseDoubleCarbon(d2,c) v !SameFormulaEndPoints(f1,f2) v !CarbonFormulaLine(c,f3) v !SameFormulaEndPoints(f1,f3) v !SameFormulaEndPoints(f2,f3) v TripleCarbonFormulaBond(c,f3) 10 !VeryCloseCarbons(c2,c3) v !CollinearCCC(c1,c2,c4) v !CollinearCCC(c1,c3,c4) v !CarbonLine(c1,c2) v CarbonLine(c2,c3) v !CarbonLine(c3,c4) v AreCarbonsBonded(c1,c4) 10 !VeryCloseCarbons(c2,c3) v !CollinearCCC(c1,c2,c4) v !CollinearCCC(c1,c3,c4) v !CarbonLine(c1,c2) v CarbonLine(c2,c3) v !CarbonLine(c3,c4) v !AreCarbonsBonded(c1,c2) 10 !VeryCloseCarbons(c2,c3) v !CollinearCCC(c1,c2,c4) v !CollinearCCC(c1,c3,c4) v !CarbonLine(c1,c2) v CarbonLine(c2,c3) v !CarbonLine(c3,c4) v !AreCarbonsBonded(c2,c3) 10 !VeryCloseCarbons(c2,c3) v !CollinearCCC(c1,c2,c4) v !CollinearCCC(c1,c3,c4) v !CarbonLine(c1,c2) v CarbonLine(c2,c3) v !CarbonLine(c3,c4) v !AreCarbonsBonded(c3,c4) 10 !VeryCloseCarbons(c2,c3) v !CollinearCCC(c1,c2,c4) v !CollinearCCC(c1,c3,c4) v !CarbonLine(c1,c2) v CarbonLine(c2,c3) v !CarbonLine(c3,c4) v !SameCarbonPoint(c1,c2) 10 !VeryCloseCarbons(c2,c3) v !CollinearCCC(c1,c2,c4) v !CollinearCCC(c1,c3,c4) v !CarbonLine(c1,c2) v CarbonLine(c2,c3) v !CarbonLine(c3,c4) v !SameCarbonPoint(c3,c4) 5 !VeryCloseCarbons(c1,c2) v c2=c3 v c1=c3 v !CarbonLine(c1,c3) v !CarbonLine(c2,c3) v CarbonLine(c1,c2) v SameCarbonPoint(c1,c2) 15 !CollinearCCC(c1,c2,c3) v VeryCloseCarbons(c1,c2) v VeryCloseCarbons(c2,c3) v !CarbonLine(c1,c2) v !CarbonLine(c2,c3) v !AreCarbonsBonded(c1,c3) 15 !CollinearFCC(f1,c2,c3) v VeryCloseCarbons(c2,c3) v !CarbonFormulaLine(c2,f1) v !CarbonLine(c2,c3) v !AreCarbonAndFormulaBonded(c3,f1) 15 !CollinearFCC(f1,c2,c3) v !SameFormulaEndPoints(f1,f2) v VeryCloseCarbons(c2,c3) v !CarbonFormulaLine(c2,f2) v !CarbonLine(c2,c3) v !AreCarbonAndFormulaBonded(c3,f1) 15 !CollinearFCC(f1,c2,c3) v !SameFormulaEndPoints(f1,f2) v VeryCloseCarbons(c2,c3) v !CarbonFormulaLine(c2,f2) v !CarbonLine(c2,c3) v !AreCarbonAndFormulaBonded(c3,f2) 15 !CollinearFCF(f1,c2,f3) v !CarbonFormulaLine(c2,f1) v !CarbonFormulaLine(c2,f3) v !AreFormulasBonded(f1,f3) 10 f1=f2 v !CollinearFCC(f1,c1,c2) v !CollinearFCC(f2,c1,c2) v !SameFormulaEndPoints(f1,f2) v !CarbonLine(c1,c2) v !DoubleCarbonFormulaBond(c2,f1) 10 f1=f2 v !CollinearFCC(f1,c1,c2) v !CollinearFCC(f2,c1,c2) v !SameFormulaEndPoints(f1,f2) v !CarbonLine(c1,c2) v !DoubleCarbonFormulaBond(c2,f2) //------------------------------------------------------ // RULES: ocsr.ml.plugins.aromatic.MLOCSRAromaticPlugin //------------------------------------------------------ !AromaticCarbonBond(c,c). 3 !AromaticCarbonBond(c1,c2) 3 !AromaticFormulaBond(f,c) 10 AromaticCarbonBond(c1,c2) v !AromaticCarbonBond(c2,c1) 5 !VeryCloseCarbonAromatic(c1,a) v !VeryCloseCarbonAromatic(c2,a) v !CarbonLine(c1,c2) v AromaticCarbonBond(c1,c2) 5 !VeryCloseFormulaAromatic(f,a) v !VeryCloseCarbonAromatic(c,a) v !CarbonFormulaLine(c,f) v AromaticFormulaBond(f,c) //------------------------------------------------------ // RULES: ocsr.ml.plugins.stereo.MLOCSRStereoPlugin //------------------------------------------------------ !DashedCarbonLine(c,c). !DashedFormulaLine(f,f). !BlackCarbonsTriangle(c1,c1,c1). !BlackCarbonsTriangle(c1,c2,c2). !BlackCarbonsTriangle(c1,c2,c1). !BlackCarbonsTriangle(c1,c1,c2). !BlackFormulasTriangle(f1,f1,f1). !BlackFormulasTriangle(f1,f2,f2). !BlackFormulasTriangle(f1,f2,f1). !BlackFormulasTriangle(f1,f1,f2). !BlackCarbonFormulasTriangle(c,f,f). !BlackFormulaCarbonsTriangle(f,c,c). !WaveCarbonLine(c,c). !WedgeCarbonsBond(c,c). !WedgeFormulasBond(f,f). !HashCarbonsBond(c,c). !HashFormulasBond(f,f). !WaveCarbonsBond(c,c). 3 !WedgeCarbonsBond(c1,c2) 3 !WedgeCarbonFormulaBond(c,f) 3 !WedgeFormulaCarbonBond(f,c) 3 !WedgeFormulasBond(f1,f2) 3 !HashCarbonsBond(c1,c2) 3 !HashCarbonFormulaBond(c,f) 3 !HashFormulaCarbonBond(f,c) 3 !HashFormulasBond(f1,f2) 3 !WaveCarbonsBond(c1,c2) 3 !WaveCarbonFormulaBond(c,f) 5 !DashedCarbonLine(c1,c2) v HashCarbonsBond(c1,c2) 5 !DashedCarbonFormulaLine(c,f) v HashCarbonFormulaBond(c,f) 5 !DashedFormulaCarbonLine(f,c) v HashFormulaCarbonBond(f,c) 5 !DashedFormulaLine(f1,f2) v HashFormulasBond(f1,f2) 10 !DashedCarbonLine(c1,c2) v !VeryCloseCarbons(c1,c2) v SameCarbonPoint(c1,c2) 5 !BlackCarbonsTriangle(c1,c2,c3) v WedgeCarbonsBond(c1,c2) 5 !BlackCarbonsTriangle(c1,c2,c3) v WedgeCarbonsBond(c1,c3) 10 !BlackCarbonsTriangle(c1,c2,c3) v SameCarbonPoint(c2,c3) 5 !BlackCarbonFormulasTriangle(c1,f2,f3) v !SameFormulaEndPoints(f2,f3) v WedgeCarbonFormulaBond(c1,f2) 5 !BlackCarbonFormulasTriangle(c1,f2,f3) v !SameFormulaEndPoints(f2,f3) v WedgeCarbonFormulaBond(c1,f3) 5 !BlackFormulaCarbonsTriangle(f1,c2,c3) v WedgeFormulaCarbonBond(f1,c2) 5 !BlackFormulaCarbonsTriangle(f1,c2,c3) v WedgeFormulaCarbonBond(f1,c3) 10 !BlackFormulaCarbonsTriangle(f1,c2,c3) v SameCarbonPoint(c2,c3) 5 !BlackFormulasTriangle(f1,f2,f3) v !SameFormulaEndPoints(f2,f3) v WedgeFormulasBond(f1,f2) 5 !BlackFormulasTriangle(f1,f2,f3) v !SameFormulaEndPoints(f2,f3) v WedgeFormulasBond(f1,f3) 5 !WaveCarbonLine(c1,c2) v WaveCarbonsBond(c1,c2) 5 !WaveCarbonFormulaLine(c,f) v WaveCarbonFormulaBond(c,f) //------------------------------------------------------ // RULES: ocsr.ml.plugins.ck.MLOCSRChemicalKnowledgePlugin //------------------------------------------------------ IsHydroxyl(fp1) ^ CarbonFormulaLine(cp1,fp1) => !DoubleCarbonFormulaBond(cp1,fp1). 10 !IsHydroxyl(fp1) v !SameFormulaEndPoints(fp1,fp2) v !CarbonFormulaLine(cp1,fp1) v !CarbonFormulaLine(cp1,fp2) v !CarbonFormulaLine(cp2,fp1) v VeryCloseCarbons(cp1,cp2) v !AreCarbonAndFormulaBonded(cp2,fp1) 10 !IsOxygen(fp1) v !CarbonFormulaLine(cp1,fp1) v !VeryCloseCarbons(cp1,cp2) v !SameFormulaEndPoints(fp1,fp2) v DoubleCarbonFormulaBond(cp2,fp1)