/// <summary> Assert will first pass the facts to the parameters. Once the /// parameters are set, it should call execute to get the result. /// </summary> public override void assertLeft(Index linx, Rete engine, WorkingMemory mem) { Map leftmem = (Map)mem.getBetaLeftMemory(this); if (!leftmem.containsKey(linx)) { Parameters = linx.Facts; ReturnVector rv = func.executeFunction(engine, params_Renamed); if (!rv.firstReturnValue().BooleanValue) { BetaMemory bmem = new BetaMemoryImpl(linx); leftmem.put(bmem.Index, bmem); } // only propogate if left memories count is zero if (leftmem.size() == 0) { propogateAssert(linx, engine, mem); } } }