class AllRules(object): def __init__(self, atomspace, chainer): # contains every rule self.chainer = Chainer(atomspace, stimulateAtoms=False, agent=self, learnRuleFrequencies=False) # contains only some rules self.test_chainer = chainer conditional_probability_types = [types.InheritanceLink, types.ImplicationLink, types.PredictiveImplicationLink] similarity_types = [types.SimilarityLink, types.EquivalenceLink] for link_type in conditional_probability_types: self.chainer.add_rule(InversionRule(self.chainer, link_type)) # Rule test exists. self.chainer.add_rule(DeductionRule(self.chainer, link_type)) # Rule test exists. self.chainer.add_rule(InductionRule(self.chainer, link_type)) # Rule test exists. self.chainer.add_rule(AbductionRule(self.chainer, link_type)) # Rule test exists. # Seems better than Modus Ponens - it doesn't make anything up self.chainer.add_rule(TermProbabilityRule(self.chainer, link_type)) self.chainer.add_rule(ModusPonensRule(self.chainer, link_type)) self.chainer.add_rule(PreciseModusPonensRule(self.chainer, link_type)) for link_type in similarity_types: # SimilarityLinks don't require an InversionRule obviously self.chainer.add_rule( TransitiveSimilarityRule(self.chainer, link_type)) # Rule test exists. self.chainer.add_rule( SymmetricModusPonensRule(self.chainer, link_type)) self.chainer.add_rule(EvaluationImplicationRule(self.chainer)) # No test, appears to produce a TV not new nodes. # These two Rules create mixed links out of intensional and # extensional links self.chainer.add_rule(InheritanceRule(self.chainer)) # Rule test exists. self.chainer.add_rule(SimilarityRule(self.chainer)) for link_type in conditional_probability_types: self.chainer.add_rule(AndToSubsetRule1(self.chainer, link_type)) for N in xrange(2, 8): self.chainer.add_rule(AndToSubsetRuleN(self.chainer, link_type, N)) # boolean links for rule in create_and_or_rules(self.chainer, 2, 8): self.chainer.add_rule(rule) for N in xrange(2, 8): self.chainer.add_rule( boolean_rules.AndBulkEvaluationRule(self.chainer, N)) for N in xrange(3, 8): self.chainer.add_rule( boolean_rules.NegatedAndBulkEvaluationRule(self.chainer, N)) general_evaluation_to_member_rules = create_general_evaluation_to_member_rules(self.chainer) for rule in general_evaluation_to_member_rules: self.chainer.add_rule(rule) # create probabilistic logical links out of MemberLinks self.chainer.add_rule(AndEvaluationRule(self.chainer)) self.chainer.add_rule(OrEvaluationRule(self.chainer)) self.chainer.add_rule(ExtensionalLinkEvaluationRule(self.chainer)) self.chainer.add_rule(IntensionalLinkEvaluationRule(self.chainer)) self.chainer.add_rule(SubsetEvaluationRule(self.chainer)) self.chainer.add_rule(NegatedSubsetEvaluationRule(self.chainer)) self.chainer.add_rule( ExtensionalSimilarityEvaluationRule(self.chainer)) self.chainer.add_rule( IntensionalInheritanceEvaluationRule(self.chainer)) self.chainer.add_rule( IntensionalSimilarityEvaluationRule(self.chainer)) # self.member_rules = [GeneralEvaluationToMemberRule(self.chainer), # MemberToEvaluationRule(self.chainer)] # self.member_rules += \ # create_general_evaluation_to_member_rules(self.chainer) # for rule in self.member_rules: # self.chainer.add_rule(rule) # It's important to have both of these self.chainer.add_rule(MemberToInheritanceRule(self.chainer)) # self.chainer.add_rule(InheritanceToMemberRule(self.chainer)) # AttractionLink could be useful for causality self.chainer.add_rule(AttractionRule(self.chainer)) self.chainer.add_rule(ScholemRule(self.chainer)) for rule in create_temporal_rules(self.chainer): self.chainer.add_rule(rule) boolean_transformation_rules = create_boolean_transformation_rules(self.chainer) for rule in boolean_transformation_rules: self.chainer.add_rule(rule) def lookup_rule(self, rule_schema_node): rule = self.chainer.lookup_rule(rule_schema_node.name) rule._chainer = self.test_chainer return rule
class AllRules(object): def __init__(self, atomspace, chainer): from pln.rules import rules, temporal_rules, boolean_rules, quantifier_rules, context_rules, predicate_rules # contains every rule self.chainer = Chainer(atomspace, stimulateAtoms = False, agent = self, learnRuleFrequencies=False) # contains only some rules self.test_chainer = chainer conditional_probability_types = [types.InheritanceLink, types.ImplicationLink, types.PredictiveImplicationLink] similarity_types = [types.SimilarityLink, types.EquivalenceLink] for link_type in conditional_probability_types: self.chainer.add_rule(rules.InversionRule(self.chainer, link_type)) self.chainer.add_rule(rules.DeductionRule(self.chainer, link_type)) self.chainer.add_rule(rules.InductionRule(self.chainer, link_type)) self.chainer.add_rule(rules.AbductionRule(self.chainer, link_type)) # Seems better than Modus Ponens - it doesn't make anything up self.chainer.add_rule(rules.TermProbabilityRule(self.chainer, link_type)) self.chainer.add_rule(rules.ModusPonensRule(self.chainer, link_type)) for link_type in similarity_types: # SimilarityLinks don't require an InversionRule obviously self.chainer.add_rule(rules.TransitiveSimilarityRule(self.chainer, link_type)) self.chainer.add_rule(rules.SymmetricModusPonensRule(self.chainer, link_type)) self.chainer.add_rule(predicate_rules.EvaluationImplicationRule(self.chainer)) # These two Rules create mixed links out of intensional and extensional links self.chainer.add_rule(rules.InheritanceRule(self.chainer)) self.chainer.add_rule(rules.SimilarityRule(self.chainer)) # boolean links for rule in boolean_rules.create_and_or_rules(self.chainer, 2, 8): self.chainer.add_rule(rule) # create probabilistic logical links out of MemberLinks self.chainer.add_rule(rules.AndEvaluationRule(self.chainer)) self.chainer.add_rule(rules.OrEvaluationRule(self.chainer)) self.chainer.add_rule(rules.ExtensionalLinkEvaluationRule(self.chainer)) self.chainer.add_rule(rules.IntensionalLinkEvaluationRule(self.chainer)) self.chainer.add_rule(rules.SubsetEvaluationRule(self.chainer)) self.chainer.add_rule(rules.NegatedSubsetEvaluationRule(self.chainer)) self.chainer.add_rule(rules.ExtensionalSimilarityEvaluationRule(self.chainer)) self.chainer.add_rule(rules.IntensionalInheritanceEvaluationRule(self.chainer)) self.chainer.add_rule(rules.IntensionalSimilarityEvaluationRule(self.chainer)) self.member_rules = [rules.EvaluationToMemberRule(self.chainer), rules.MemberToEvaluationRule(self.chainer)] self.member_rules += rules.create_general_evaluation_to_member_rules(self.chainer) for rule in self.member_rules: self.chainer.add_rule(rule) # It's important to have both of these self.chainer.add_rule(rules.MemberToInheritanceRule(self.chainer)) # self.chainer.add_rule(rules.InheritanceToMemberRule(self.chainer)) # AttractionLink could be useful for causality self.chainer.add_rule(rules.AttractionRule(self.chainer)) self.chainer.add_rule(quantifier_rules.ScholemRule(self.chainer)) for rule in temporal_rules.create_temporal_rules(self.chainer): self.chainer.add_rule(rule) def lookup_rule(self, rule_schema_node): rule = self.chainer.lookup_rule(rule_schema_node.name) rule._chainer = self.test_chainer return rule
class AllRules(object): def __init__(self, atomspace, chainer): # contains every rule self.chainer = Chainer(atomspace, stimulateAtoms=False, agent=self, learnRuleFrequencies=False) # contains only some rules self.test_chainer = chainer conditional_probability_types = [ types.InheritanceLink, types.ImplicationLink, types.PredictiveImplicationLink ] similarity_types = [types.SimilarityLink, types.EquivalenceLink] for link_type in conditional_probability_types: self.chainer.add_rule(InversionRule( self.chainer, link_type)) # Rule test exists. self.chainer.add_rule(DeductionRule( self.chainer, link_type)) # Rule test exists. self.chainer.add_rule(InductionRule( self.chainer, link_type)) # Rule test exists. self.chainer.add_rule(AbductionRule( self.chainer, link_type)) # Rule test exists. # Seems better than Modus Ponens - it doesn't make anything up self.chainer.add_rule(TermProbabilityRule(self.chainer, link_type)) self.chainer.add_rule(ModusPonensRule(self.chainer, link_type)) self.chainer.add_rule( PreciseModusPonensRule(self.chainer, link_type)) self.chainer.add_rule( AndAs1stArgInsideLinkRule(self.chainer, link_type)) self.chainer.add_rule( AndAs2ndArgInsideLinkRule(self.chainer, link_type)) for link_type in similarity_types: # SimilarityLinks don't require an InversionRule obviously self.chainer.add_rule( TransitiveSimilarityRule(self.chainer, link_type)) # Rule test exists. self.chainer.add_rule( SymmetricModusPonensRule(self.chainer, link_type)) self.chainer.add_rule(EvaluationImplicationRule( self.chainer)) # No test, appears to produce a TV not new nodes. # These two Rules create mixed links out of intensional and # extensional links self.chainer.add_rule(InheritanceRule( self.chainer)) # Rule test exists. self.chainer.add_rule(SimilarityRule(self.chainer)) for link_type in conditional_probability_types: self.chainer.add_rule(AndToSubsetRule1(self.chainer, link_type)) for N in xrange(2, 8): self.chainer.add_rule( AndToSubsetRuleN(self.chainer, link_type, N)) # boolean links for rule in create_and_or_rules(self.chainer, 2, 8): self.chainer.add_rule(rule) for N in xrange(2, 8): self.chainer.add_rule( boolean_rules.AndBulkEvaluationRule(self.chainer, N)) for N in xrange(3, 8): self.chainer.add_rule( boolean_rules.NegatedAndBulkEvaluationRule(self.chainer, N)) general_evaluation_to_member_rules = create_general_evaluation_to_member_rules( self.chainer) for rule in general_evaluation_to_member_rules: self.chainer.add_rule(rule) # create probabilistic logical links out of MemberLinks self.chainer.add_rule(AndEvaluationRule(self.chainer)) self.chainer.add_rule(OrEvaluationRule(self.chainer)) self.chainer.add_rule(ExtensionalLinkEvaluationRule(self.chainer)) self.chainer.add_rule(IntensionalLinkEvaluationRule(self.chainer)) self.chainer.add_rule(SubsetEvaluationRule(self.chainer)) self.chainer.add_rule(NegatedSubsetEvaluationRule(self.chainer)) self.chainer.add_rule(ExtensionalSimilarityEvaluationRule( self.chainer)) self.chainer.add_rule( IntensionalInheritanceEvaluationRule(self.chainer)) self.chainer.add_rule(IntensionalSimilarityEvaluationRule( self.chainer)) self.chainer.add_rule(SatisfyingSetToConceptRule(self.chainer, 1)) # context rules self.chainer.add_rule(InheritanceToContextRule(self.chainer)) self.chainer.add_rule(EvaluationToContextRule(self.chainer)) self.chainer.add_rule(SubsetToContextRule(self.chainer)) self.chainer.add_rule(ContextToInheritanceRule(self.chainer)) self.chainer.add_rule(ContextToEvaluationRule(self.chainer)) self.chainer.add_rule(ContextToSubsetRule(self.chainer)) # self.member_rules = [GeneralEvaluationToMemberRule(self.chainer), # MemberToEvaluationRule(self.chainer)] # self.member_rules += \ # create_general_evaluation_to_member_rules(self.chainer) # for rule in self.member_rules: # self.chainer.add_rule(rule) # It's important to have both of these self.chainer.add_rule(MemberToInheritanceRule(self.chainer)) # self.chainer.add_rule(InheritanceToMemberRule(self.chainer)) # AttractionLink could be useful for causality self.chainer.add_rule(AttractionRule(self.chainer)) self.chainer.add_rule(ScholemRule(self.chainer)) for rule in create_temporal_rules(self.chainer): self.chainer.add_rule(rule) boolean_transformation_rules = create_boolean_transformation_rules( self.chainer) for rule in boolean_transformation_rules: self.chainer.add_rule(rule) def lookup_rule(self, rule_schema_node): rule = self.chainer.lookup_rule(rule_schema_node.name) rule._chainer = self.test_chainer return rule
class AllRules(object): def __init__(self, atomspace, chainer): from pln.rules import rules, temporal_rules, boolean_rules, quantifier_rules, context_rules, predicate_rules # contains every rule self.chainer = Chainer(atomspace, stimulateAtoms=False, agent=self, learnRuleFrequencies=False) # contains only some rules self.test_chainer = chainer conditional_probability_types = [ types.InheritanceLink, types.ImplicationLink, types.PredictiveImplicationLink ] similarity_types = [types.SimilarityLink, types.EquivalenceLink] for link_type in conditional_probability_types: self.chainer.add_rule(rules.InversionRule(self.chainer, link_type)) self.chainer.add_rule(rules.DeductionRule(self.chainer, link_type)) self.chainer.add_rule(rules.InductionRule(self.chainer, link_type)) self.chainer.add_rule(rules.AbductionRule(self.chainer, link_type)) # Seems better than Modus Ponens - it doesn't make anything up self.chainer.add_rule( rules.TermProbabilityRule(self.chainer, link_type)) self.chainer.add_rule( rules.ModusPonensRule(self.chainer, link_type)) for link_type in similarity_types: # SimilarityLinks don't require an InversionRule obviously self.chainer.add_rule( rules.TransitiveSimilarityRule(self.chainer, link_type)) self.chainer.add_rule( rules.SymmetricModusPonensRule(self.chainer, link_type)) self.chainer.add_rule( predicate_rules.EvaluationImplicationRule(self.chainer)) # These two Rules create mixed links out of intensional and extensional links self.chainer.add_rule(rules.InheritanceRule(self.chainer)) self.chainer.add_rule(rules.SimilarityRule(self.chainer)) # boolean links for rule in boolean_rules.create_and_or_rules(self.chainer, 2, 8): self.chainer.add_rule(rule) # create probabilistic logical links out of MemberLinks self.chainer.add_rule(rules.AndEvaluationRule(self.chainer)) self.chainer.add_rule(rules.OrEvaluationRule(self.chainer)) self.chainer.add_rule(rules.ExtensionalLinkEvaluationRule( self.chainer)) self.chainer.add_rule(rules.IntensionalLinkEvaluationRule( self.chainer)) self.chainer.add_rule(rules.SubsetEvaluationRule(self.chainer)) self.chainer.add_rule(rules.NegatedSubsetEvaluationRule(self.chainer)) self.chainer.add_rule( rules.ExtensionalSimilarityEvaluationRule(self.chainer)) self.chainer.add_rule( rules.IntensionalInheritanceEvaluationRule(self.chainer)) self.chainer.add_rule( rules.IntensionalSimilarityEvaluationRule(self.chainer)) self.member_rules = [ rules.EvaluationToMemberRule(self.chainer), rules.MemberToEvaluationRule(self.chainer) ] self.member_rules += rules.create_general_evaluation_to_member_rules( self.chainer) for rule in self.member_rules: self.chainer.add_rule(rule) # It's important to have both of these self.chainer.add_rule(rules.MemberToInheritanceRule(self.chainer)) # self.chainer.add_rule(rules.InheritanceToMemberRule(self.chainer)) # AttractionLink could be useful for causality self.chainer.add_rule(rules.AttractionRule(self.chainer)) self.chainer.add_rule(quantifier_rules.ScholemRule(self.chainer)) for rule in temporal_rules.create_temporal_rules(self.chainer): self.chainer.add_rule(rule) def lookup_rule(self, rule_schema_node): rule = self.chainer.lookup_rule(rule_schema_node.name) rule._chainer = self.test_chainer return rule