public Collection<USoftRulePartition> getPartitions(UGroundedSoftRule softRule) { Map<UGroundedHardRule, USoftRulePartition> partitions = new HashMap<UGroundedHardRule, USoftRulePartition>(); UFact head = softRule.getHead(); USoftRulePartition partition = new USoftRulePartition(); partition.add(new USignedFact(head, true)); partition.p_i = head.p_i; partition.n = 0; partitions.put(head.getGroundedHardRule(), partition); steps++; for (UFact fact : softRule) { steps++; if ((partition = partitions.get(fact.getGroundedHardRule())) == null) { partition = new USoftRulePartition(); partitions.put(fact.getGroundedHardRule(), partition); } partition.add(new USignedFact(fact, false)); partition.p_i += fact.p_i; partition.n++; } return partitions.values(); }