Skip to content

Commit d19caac

Browse files
committed
consistently add auxillary information in normalized rules
1 parent 3be7edc commit d19caac

File tree

2 files changed

+21
-20
lines changed

2 files changed

+21
-20
lines changed

nemo/src/execution/planning/analysis/variable_order.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -988,7 +988,6 @@ mod test {
988988
ImportInstruction::new(predicate, handler)
989989
}
990990

991-
// #[ignore]
992991
#[test]
993992
#[cfg_attr(miri, ignore)]
994993
fn build_preferable_variable_orders_with_galen_el_part_ie_5_rules_without_constant() {
@@ -1000,6 +999,7 @@ mod test {
1000999
let (predicate, arity) = predicates[predicate_index].clone();
10011000
program.add_import(csv_import(predicate, arity));
10021001
}
1002+
10031003
for rule in rules {
10041004
program.add_rule(rule);
10051005
}
@@ -1280,7 +1280,6 @@ mod test {
12801280
(rules, variables, predicates)
12811281
}
12821282

1283-
#[ignore]
12841283
#[test]
12851284
#[cfg_attr(miri, ignore)]
12861285
fn build_preferable_variable_orders_with_el_without_constant() {

nemo/src/execution/planning/normalization/program.rs

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,25 @@ impl NormalizedProgram {
5353

5454
/// Add a new rule to the program.
5555
pub fn add_rule(&mut self, rule: NormalizedRule) {
56+
let rule_index = self.rules.len();
57+
58+
for (predicate, arity) in rule.predicates() {
59+
self.add_predicate_arity(predicate, arity);
60+
}
61+
62+
for body in rule.positive() {
63+
self.add_body_predicate_rule(body.predicate(), rule_index);
64+
}
65+
66+
for head in rule.head() {
67+
self.add_head_predicate_rule(head.predicate(), rule_index);
68+
self.add_derived_predicate(head.predicate());
69+
}
70+
71+
for value in rule.datavalues() {
72+
self.add_datavalue(value);
73+
}
74+
5675
self.rules.push(rule);
5776
}
5877

@@ -207,24 +226,7 @@ impl NormalizedProgram {
207226
for (rule_index, rule) in program.rules().enumerate() {
208227
let normalized_rule = NormalizedRule::normalize_rule(rule, rule_index);
209228

210-
for (predicate, arity) in normalized_rule.predicates() {
211-
result.add_predicate_arity(predicate, arity);
212-
}
213-
214-
for body in normalized_rule.positive() {
215-
result.add_body_predicate_rule(body.predicate(), rule_index);
216-
}
217-
218-
for head in normalized_rule.head() {
219-
result.add_head_predicate_rule(head.predicate(), rule_index);
220-
result.add_derived_predicate(head.predicate());
221-
}
222-
223-
for value in normalized_rule.datavalues() {
224-
result.add_datavalue(value);
225-
}
226-
227-
result.rules.push(normalized_rule);
229+
result.add_rule(normalized_rule);
228230
}
229231

230232
// Handle imports

0 commit comments

Comments
 (0)