def __init__(self, chainer, from_type, to_type, formula):
        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(
            self, formula=formula, outputs=[chainer.link(to_type, [A, B])], inputs=[chainer.link(from_type, [A, B])]
        )
示例#2
0
    def __init__(self, chainer):
        x = chainer.new_variable()
        A = chainer.new_variable()
        B = chainer.new_variable()

        inputs = [
            chainer.link(types.MemberLink, [x, A]),
            chainer.link(types.MemberLink, [x, B])
        ]

        outputs = [
            chainer.link(types.SubsetLink, [A, B]),
            chainer.link(types.SubsetLink, [B, A]),
            chainer.link(types.SubsetLink,
                         [chainer.link(types.NotLink, [A]), B]),
            chainer.link(types.SubsetLink,
                         [chainer.link(types.NotLink, [B]), A]),
            chainer.link(types.ExtensionalSimilarityLink, [A, B])
        ]

        Rule.__init__(self,
                      formula=formulas.extensionalEvaluationFormula,
                      inputs=inputs,
                      outputs=outputs)

        self.probabilistic_inputs = False
示例#3
0
    def __init__(self, chainer, N, link_type):
        atoms = chainer.make_n_variables(N)

        Rule.__init__(self,
                      formula=None,
                      outputs=atoms,
                      inputs=[chainer.link(link_type, atoms)])
示例#4
0
    def __init__(self, chainer, N, link_type):
        atoms = chainer.make_n_variables(N)

        Rule.__init__(self,
                      formula=None,
                      outputs=atoms,
                      inputs=[chainer.link(link_type, atoms)])
示例#5
0
    def __init__(self, chainer):
        A = chainer.new_variable()

        Rule.__init__(self,
                      formula=formulas.notFormula,
                      outputs=[A],
                      inputs=[chainer.link(types.NotLink, [A])])
示例#6
0
    def __init__(self, chainer):
        A = chainer.new_variable()

        Rule.__init__(self,
                      formula=formulas.notFormula,
                      outputs=[A],
                      inputs=[chainer.link(types.NotLink, [A])])
示例#7
0
    def __init__(self, chainer):
        self._chainer = chainer
        F = chainer.new_variable()
        args = chainer.new_variable()

        evallink = chainer.link(types.EvaluationLink, [F, args])

        Rule.__init__(self, formula=None, inputs=[], outputs=[evallink])
示例#8
0
    def __init__(self, chainer, from_type, to_type, formula):
        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(self,
            formula=formula,
            outputs=[chainer.link(to_type, [A, B])],
            inputs=[chainer.link(from_type, [A, B])])
    def __init__(self, chainer):
        Z = chainer.new_variable()
        ARG = chainer.new_variable()

        self.chainer = chainer
        Rule.__init__(self, formula=None, inputs=[chainer.link(types.MemberLink, [ARG, Z])], outputs=[])

        self.probabilistic_inputs = False
示例#10
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(self,
                      outputs=[chainer.link(link_type, [B, A])],
                      inputs=[chainer.link(link_type, [A, B]), A, B],
                      formula=formulas.inversionFormula)
示例#11
0
    def __init__(self, chainer):
        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(self,
                      formula=formulas.orBreakdownFormula,
                      outputs=[B],
                      inputs=[A, chainer.link(types.OrLink, [A, B])])
示例#12
0
    def __init__(self, chainer):
        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(self,
                      formula=formulas.orBreakdownFormula,
                      outputs=[B],
                      inputs=[A, chainer.link(types.OrLink, [A, B])])
示例#13
0
    def __init__(self, chainer):
        self._chainer = chainer
        F = chainer.new_variable()
        args = chainer.new_variable()

        evallink = chainer.link(types.EvaluationLink, [F, args])

        Rule.__init__(self, formula=None, inputs=[], outputs=[evallink])
示例#14
0
    def __init__(self, chainer, N):
        atoms = chainer.make_n_variables(N)
        self._chainer = chainer

        Rule.__init__(self,
                      formula=formulas.orFormula,
                      outputs=[chainer.link(types.OrLink, atoms)],
                      inputs=atoms)
示例#15
0
    def __init__(self, chainer, N):
        atoms = chainer.make_n_variables(N)
        self._chainer = chainer

        Rule.__init__(self,
                      formula=formulas.orFormula,
                      outputs=[chainer.link(types.OrLink, atoms)],
                      inputs=atoms,
                      name="OrCreationRule<" + str(N) + ">")
示例#16
0
    def __init__(self, chainer, N):
        atoms = chainer.make_n_variables(N)
        self._chainer = chainer

        Rule.__init__(self,
                      formula=formulas.orFormula,
                      outputs=[chainer.link(types.OrLink, atoms)],
                      inputs=atoms,
                      name = "OrCreationRule<"+str(N)+">")
示例#17
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(self,
                      outputs=[B],
                      inputs=[chainer.link(link_type, [A, B]),
                              A],
                      formula=formulas.symmetricModusPonensFormula)
示例#18
0
    def __init__(self, chainer):
        predicate_var = chainer.new_variable()
        thing_var = chainer.node(types.VariableNode, "$average_thing")

        link = chainer.link(types.EvaluationLink, [predicate_var, thing_var])
        outputs = [link]
        inputs = [chainer.link(types.AverageLink, [thing_var, link])]

        Rule.__init__(self, inputs=inputs, outputs=outputs, formula=formulas.identityFormula)
示例#19
0
    def __init__(self, chainer):
        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(self,
                      outputs=[chainer.link(types.SimilarityLink, [A, B])],
                      inputs=[chainer.link(types.AndLink, [A, B]),
                              chainer.link(types.OrLink, [A, B])],
                      formula=formulas.extensionalSimilarityFormula)
示例#20
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(self,
                      name = "InversionRule<%s>"%(get_type_name(link_type),),
                      outputs=[chainer.link(link_type, [B, A])],
                      inputs=[chainer.link(link_type, [A, B]), A, B],
                      formula=formulas.inversionFormula)
示例#21
0
    def __init__(self, chainer):
        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(self,
                      outputs=[chainer.link(types.SimilarityLink, [A, B])],
                      inputs=[chainer.link(types.AndLink, [A, B]),
                              chainer.link(types.OrLink, [A, B])],
                      formula=formulas.extensionalSimilarityFormula)
示例#22
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(self,
                      name="AndToSubsetRule1<%s>"%(get_type_name(link_type),),
                      outputs=[chainer.link(link_type, [A, B])],
                      inputs=[chainer.link(types.AndLink, [A, B]),
                              A],
                      formula=formulas.subsetFormula)
示例#23
0
    def __init__(self, chainer, link_type):
        S = chainer.new_variable()
        M = chainer.new_variable()
        L = chainer.new_variable()

        Rule.__init__(self,
                      outputs=[chainer.link(link_type, [S, L])],
                      inputs=[chainer.link(link_type, [S, M]),
                              chainer.link(link_type, [L, M]), S, M, L],
                      formula=formulas.inductionFormula)
示例#24
0
    def __init__(self, chainer, N):
        self._chainer = chainer

        vars = chainer.make_n_variables(N)

        Rule.__init__(self,
                      name="AndBulkEvaluationRule<%s>"%(N,),
                      formula=None,
                      outputs=[chainer.link(types.AndLink, vars)],
                      inputs=[])
示例#25
0
    def __init__(self, chainer):
        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(self,
                      outputs=[chainer.link(types.InheritanceLink, [A, B])],
                      inputs=[chainer.link(types.SubsetLink, [A, B]),
                              chainer.link(types.IntensionalInheritanceLink,
                                           [A, B])],
                      formula=formulas.inheritanceFormula)
示例#26
0
    def __init__(self, chainer, member_type, output_type, formula):
        x = chainer.new_variable()
        A = chainer.new_variable()
        B = chainer.new_variable()

        inputs = [chainer.link(member_type, [x, A]), chainer.link(member_type, [x, B])]

        Rule.__init__(self, formula=formula, outputs=[chainer.link(output_type, [A, B])], inputs=inputs)

        self.probabilistic_inputs = False
示例#27
0
    def __init__(self, chainer):
        self._chainer = chainer
        A = chainer.new_variable()
        B = chainer.new_variable()

        inhAB = chainer.link(types.InheritanceLink, [A, B])
        inhBA = chainer.link(types.InheritanceLink, [B, A])
        ontoinhAB = chainer.link(types.OntologicalInheritanceLink, [A, B])

        Rule.__init__(self, formula=formulas.ontoInhFormula, inputs=[inhAB, inhBA], outputs=[ontoinhAB])
示例#28
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()
        C = chainer.new_variable()

        Rule.__init__(self,
            formula=formulas.deductionGeometryFormula,
            outputs=[chainer.link(link_type, [A, C])],
            inputs=[chainer.link(link_type, [A, B]),
                    chainer.link(link_type, [B, C])])
示例#29
0
    def __init__(self, chainer):
        self._chainer = chainer

        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(self,
                      formula=None,
                      outputs=[chainer.link(types.AndLink, [A, B])],
                      inputs=[])
示例#30
0
    def __init__(self, chainer):
        quantified_var = chainer.new_variable()
        expr = chainer.new_variable()

        self._chainer = chainer

        # output is not produced, it just makes backchaining easier
        Rule.__init__(
            self, formula=None, inputs=[chainer.link(types.ExistsLink, [quantified_var, expr])], outputs=[expr]
        )
示例#31
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(self,
                      name="SymmetricModusPonensRule<%s>"%(get_type_name(link_type),),
                      outputs=[B],
                      inputs=[chainer.link(link_type, [A, B]),
                              A],
                      formula=formulas.symmetricModusPonensFormula)
示例#32
0
    def __init__(self, chainer):
        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(self,
                      outputs=[chainer.link(types.InheritanceLink, [A, B])],
                      inputs=[chainer.link(types.SubsetLink, [A, B]),
                              chainer.link(types.IntensionalInheritanceLink,
                                           [A, B])],
                      formula=formulas.inheritanceFormula)
示例#33
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()

        Rule.__init__(self,
                      name="ModusPonensRule<%s>"%(get_type_name(link_type),),
                      outputs=[B],
                      inputs=[chainer.link(link_type, [A, B]),
                              A],
                      formula=formulas.modusPonensFormula)
示例#34
0
    def __init__(self, chainer, N):
        self._chainer = chainer

        vars = chainer.make_n_variables(N)

        Rule.__init__(self,
                      name="AndBulkEvaluationRule<%s>" % (N, ),
                      formula=None,
                      outputs=[chainer.link(types.AndLink, vars)],
                      inputs=[])
示例#35
0
    def __init__(self, chainer):
        Z = chainer.new_variable()
        ARG = chainer.new_variable()

        self.chainer = chainer
        Rule.__init__(self,
                      formula=None,
                      inputs=[chainer.link(types.MemberLink, [ARG, Z])],
                      outputs=[])

        self.probabilistic_inputs = False
示例#36
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()

        AB = chainer.link(link_type, [A, B])
        BA = chainer.link(link_type, [B, A])

        Rule.__init__(self,
                      outputs=[B],
                      inputs=[AB, BA, A],
                      formula=formulas.termProbabilityFormula)
示例#37
0
    def __init__(self, chainer, link_type):
        S = chainer.new_variable()
        M = chainer.new_variable()
        L = chainer.new_variable()

        Rule.__init__(self,
                      name="AbductionRule<%s>"%(get_type_name(link_type),),
                      outputs=[chainer.link(link_type, [S, L])],
                      inputs=[chainer.link(link_type, [S, M]),
                              chainer.link(link_type, [L, M]), S, M, L],
                      formula=formulas.abductionFormula)
示例#38
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()
        C = chainer.new_variable()

        Rule.__init__(self,
                      formula=formulas.transitiveSimilarityFormula,
                      outputs=[chainer.link(link_type, [A, C])],
                      inputs=[chainer.link(link_type, [A, B]),
                              chainer.link(link_type, [B, C]),
                              A, B, C])
示例#39
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()
        C = chainer.new_variable()

        Rule.__init__(self,
            name="DeductionGeometryRule<%s>"%(get_type_name(link_type),),
            formula=formulas.deductionGeometryFormula,
            outputs=[chainer.link(link_type, [A, C])],
            inputs=[chainer.link(link_type, [A, B]),
                    chainer.link(link_type, [B, C])])
示例#40
0
 def __init__(self, chainer):
     A = chainer.new_variable()
     B = chainer.new_variable()
     Rule.__init__(self,
                   formula=formulas.identityFormula,
                   outputs=[chainer.link(types.PredictiveAttractionLink,
                                         [A, B])],
                   inputs=[chainer.link(types.AndLink,
                                        [chainer.link(types.AttractionLink,
                                                      [A, B]),
                                         chainer.link(types.BeforeLink,
                                                      [A, B])])])
示例#41
0
    def __init__(self, chainer, index, arg_count):
        self.index = index
        self.arg_count = arg_count
        self.chainer = chainer

        pred = chainer.new_variable()
        all_args = chainer.make_n_variables(arg_count)
        list_link = chainer.link(types.ListLink, all_args)

        Rule.__init__(self, formula=None, inputs=[chainer.link(types.EvaluationLink, [pred, list_link])], outputs=[])

        self.probabilistic_inputs = False
示例#42
0
    def __init__(self, chainer):
        predicate_var = chainer.new_variable()
        thing_var = chainer.node(types.VariableNode, '$average_thing')

        link = chainer.link(types.EvaluationLink, [predicate_var, thing_var])
        outputs = [link]
        inputs = [chainer.link(types.AverageLink, [thing_var, link])]

        Rule.__init__(self,
                      inputs=inputs,
                      outputs=outputs,
                      formula=formulas.identityFormula)
示例#43
0
    def __init__(self, chainer):
        quantified_var = chainer.new_variable()
        expr = chainer.new_variable()

        self._chainer = chainer

        # output is not produced, it just makes backchaining easier
        Rule.__init__(
            self,
            formula=None,
            inputs=[chainer.link(types.ExistsLink, [quantified_var, expr])],
            outputs=[expr])
示例#44
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()
        C = chainer.new_variable()

        Rule.__init__(self,
                      name="TransitiveSimilarityRule<%s>"%(get_type_name(link_type),),
                      formula=formulas.transitiveSimilarityFormula,
                      outputs=[chainer.link(link_type, [A, C])],
                      inputs=[chainer.link(link_type, [A, B]),
                              chainer.link(link_type, [B, C]),
                              A, B, C])
示例#45
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()

        AB = chainer.link(link_type, [A, B])
        BA = chainer.link(link_type, [B, A])

        Rule.__init__(self,
                      name="TermProbabilityRule<%s>"%(get_type_name(link_type),),
                      outputs=[B],
                      inputs=[AB, BA, A],
                      formula=formulas.termProbabilityFormula)
示例#46
0
    def __init__(self, chainer, link_type, N):
        vars = chainer.make_n_variables(N)
        
        lhs = chainer.link(types.AndLink, vars[:-1])
        rhs = vars[-1]

        Rule.__init__(self,
                      name="AndToSubsetRuleN<%s,%s>"%(get_type_name(link_type),N),
                      outputs=[chainer.link(link_type, [lhs, rhs])],
                      inputs=[chainer.link(types.AndLink, vars),
                              lhs],
                      formula=formulas.subsetFormula)
 def __init__(self, chainer):
     A = chainer.new_variable()
     B = chainer.new_variable()
     Rule.__init__(self,
                   formula=formulas.identityFormula,
                   outputs=[chainer.link(types.PredictiveAttractionLink,
                                         [A, B])],
                   inputs=[chainer.link(types.AndLink,
                                        [chainer.link(types.AttractionLink,
                                                      [A, B]),
                                         chainer.link(types.BeforeLink,
                                                      [A, B])])])
示例#48
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()

        notA = chainer.link(types.NotLink, [A])

        Rule.__init__(self,
                      outputs=[B],
                      inputs=[chainer.link(link_type, [A, B]),
                              chainer.link(link_type, [notA, B]),
                              A],
                      formula=formulas.preciseModusPonensFormula)
示例#49
0
    def __init__(self, chainer):
        self._chainer = chainer
        A = chainer.new_variable()
        B = chainer.new_variable()

        inhAB = chainer.link(types.InheritanceLink, [A, B])
        inhBA = chainer.link(types.InheritanceLink, [B, A])
        ontoinhAB = chainer.link(types.OntologicalInheritanceLink, [A, B])

        Rule.__init__(self,
            formula=formulas.ontoInhFormula,
            inputs=[inhAB, inhBA],
            outputs=[ontoinhAB])
示例#50
0
    def __init__(self, chainer, N):
        self._chainer = chainer

        vars = chainer.make_n_variables(N)
        notlink = chainer.link(types.NotLink,
                               [chainer.link(types.AndLink, vars[0:-1])])
        andlink = chainer.link(types.AndLink, [notlink, vars[-1]])

        Rule.__init__(self,
                      name="NegatedAndBulkEvaluationRule<%s>" % (N, ),
                      formula=None,
                      outputs=[andlink],
                      inputs=[])
示例#51
0
    def __init__(self, chainer):
        predA = chainer.new_variable()
        predB = chainer.new_variable()
        person = chainer.new_variable()

        eval1 = chainer.link(types.EvaluationLink, [predA, person])
        impl = chainer.link(types.ImplicationLink, [predA, predB])
        eval2 = chainer.link(types.EvaluationLink, [predB, person])

        Rule.__init__(self,
                      formula=formulas.evaluationImplicationFormula,
                      outputs=[eval2],
                      inputs=[eval1, eval2, predA, predB])
示例#52
0
    def __init__(self, chainer):
        self._chainer = chainer
        A = chainer.new_variable()
        B = chainer.new_variable()

        subset1 = chainer.link(types.SubsetLink, [A, B])
        subset2 = chainer.link(types.SubsetLink,
                               [chainer.link(types.NotLink, [A]), B])

        Rule.__init__(self,
                      formula=formulas.attractionFormula,
                      outputs=[chainer.link(types.AttractionLink, [A, B])],
                      inputs=[subset1, subset2])
示例#53
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()

        notA = chainer.link(types.NotLink, [A])

        Rule.__init__(self,
                      name="PreciseModusPonensRule<%s>"%(get_type_name(link_type),),
                      outputs=[B],
                      inputs=[chainer.link(link_type, [A, B]),
                              chainer.link(link_type, [notA, B]),
                              A],
                      formula=formulas.preciseModusPonensFormula)
示例#54
0
    def __init__(self, chainer, link_type):
        A = chainer.new_variable()
        B = chainer.new_variable()
        C = chainer.new_variable()
        AndAB = chainer.link(types.AndLink, [A, B])

        Rule.__init__(self,
                      name="AndAs1stArgInsideLinkRule<%s>"
                           %(get_type_name(link_type)),
                      inputs=[C, chainer.link(link_type, [A, C]),
                              chainer.link(link_type, [B, C]), A, B],
                      outputs=[chainer.link(link_type, [AndAB, C]),
                               AndAB],
                      formula=formulas.andAs1stArgInsideLinkFormula)
示例#55
0
    def __init__(self, chainer, member_type, output_type, formula):
        x = chainer.new_variable()
        A = chainer.new_variable()
        B = chainer.new_variable()

        inputs = [chainer.link(member_type, [x, A]),
                  chainer.link(member_type, [x, B])]

        Rule.__init__(self,
                      formula=formula,
                      outputs=[chainer.link(output_type, [A, B])],
                      inputs=inputs)

        self.probabilistic_inputs = False
示例#56
0
    def __init__(self, chainer, index, arg_count):
        self.index = index
        self.chainer = chainer

        time = chainer.new_variable()
        pred = chainer.new_variable()
        all_args = chainer.make_n_variables(arg_count)
        list_link = chainer.link(types.ListLink, all_args)
        eval_link = chainer.link(types.EvaluationLink, [pred, list_link])
        at_time = chainer.link(types.AtTimeLink, [time, eval_link])

        self.chainer = chainer
        Rule.__init__(self, formula=None, inputs=[at_time], outputs=[])

        self.probabilistic_inputs = False