I checked the source code for creating OrdinaryMatchNode at https://github.com/buguroo/pyknow/blob/develop/pyknow/matchers/rete/utils.py#L167-L186
And compared it to the paper's figure 2.2(a) (matched for C1^C2).
Is it needed for creating a shared OrdinaryMatchNode If two conjunctive normal form has the same facts?
for example,
Rule(OR(AND(Fact(a=1), Fact(b=2), Fact(c=3)), AND(Fact(a=1), Fact(b=2), Fact(c=4))))
It seems that two OrdinaryMatchNode node for (Fact(a=1), Fact(b=2)) will be created.
Is it right?
or should we need a same OrdinaryMatchNode for (Fact(a=1), Fact(b=2))?