Skip to content

Commit 25236cd

Browse files
authored
Merge pull request #102 from lab-v2/fix-bug-125-127
Fix Bug 125 and 127
2 parents fa3eccb + c3266ae commit 25236cd

5 files changed

Lines changed: 363 additions & 16 deletions

File tree

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,4 @@ repos:
4848
entry: pytest tests/functional/ --tb=short -q
4949
language: system
5050
pass_filenames: false
51-
stages: [pre-push]
51+
stages: [pre-push]

pyreason/scripts/interpretation/interpretation.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1540,8 +1540,10 @@ def _update_node(interpretations, predicate_map, comp, na, ipl, rule_trace, fp_c
15401540
if current_bnd != prev_t_bnd:
15411541
if convergence_mode=='delta_bound':
15421542
for i in updated_bnds:
1543-
lower_delta = abs(i.lower-prev_t_bnd.lower)
1544-
upper_delta = abs(i.upper-prev_t_bnd.upper)
1543+
# Use each bound's own previous values instead of L's previous
1544+
prev_i_bnd = interval.closed(i.prev_lower, i.prev_upper)
1545+
lower_delta = abs(i.lower - prev_i_bnd.lower)
1546+
upper_delta = abs(i.upper - prev_i_bnd.upper)
15451547
max_delta = max(lower_delta, upper_delta)
15461548
change = max(change, max_delta)
15471549
else:
@@ -1633,7 +1635,7 @@ def _update_edge(interpretations, predicate_map, comp, na, ipl, rule_trace, fp_c
16331635
world.world[p1].set_lower_upper(lower, upper)
16341636
world.world[p1].set_static(static)
16351637
ip_update_cnt += 1
1636-
updated_bnds.append(world.world[p2])
1638+
updated_bnds.append(world.world[p1])
16371639
if store_interpretation_changes:
16381640
rule_trace.append((numba.types.uint16(t_cnt), numba.types.uint16(fp_cnt), comp, p1, interval.closed(lower, upper)))
16391641

@@ -1646,8 +1648,10 @@ def _update_edge(interpretations, predicate_map, comp, na, ipl, rule_trace, fp_c
16461648
if current_bnd != prev_t_bnd:
16471649
if convergence_mode=='delta_bound':
16481650
for i in updated_bnds:
1649-
lower_delta = abs(i.lower-prev_t_bnd.lower)
1650-
upper_delta = abs(i.upper-prev_t_bnd.upper)
1651+
# Use each bound's own previous values instead of L's previous
1652+
prev_i_bnd = interval.closed(i.prev_lower, i.prev_upper)
1653+
lower_delta = abs(i.lower - prev_i_bnd.lower)
1654+
upper_delta = abs(i.upper - prev_i_bnd.upper)
16511655
max_delta = max(lower_delta, upper_delta)
16521656
change = max(change, max_delta)
16531657
else:

pyreason/scripts/interpretation/interpretation_fp.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1658,8 +1658,10 @@ def _update_node(interpretations, predicate_map, comp, na, ipl, rule_trace, fp_c
16581658
if current_bnd != prev_t_bnd:
16591659
if convergence_mode=='delta_bound':
16601660
for i in updated_bnds:
1661-
lower_delta = abs(i.lower-prev_t_bnd.lower)
1662-
upper_delta = abs(i.upper-prev_t_bnd.upper)
1661+
# Use each bound's own previous values instead of L's previous
1662+
prev_i_bnd = interval.closed(i.prev_lower, i.prev_upper)
1663+
lower_delta = abs(i.lower - prev_i_bnd.lower)
1664+
upper_delta = abs(i.upper - prev_i_bnd.upper)
16631665
max_delta = max(lower_delta, upper_delta)
16641666
change = max(change, max_delta)
16651667
else:
@@ -1745,7 +1747,7 @@ def _update_edge(interpretations, predicate_map, comp, na, ipl, rule_trace, fp_c
17451747
world.world[p1].set_lower_upper(lower, upper)
17461748
world.world[p1].set_static(static)
17471749
ip_update_cnt += 1
1748-
updated_bnds.append(world.world[p2])
1750+
updated_bnds.append(world.world[p1])
17491751
if store_interpretation_changes:
17501752
rule_trace.append((numba.types.uint16(t_cnt), numba.types.uint16(fp_cnt), comp, p1, interval.closed(lower, upper)))
17511753

@@ -1758,8 +1760,10 @@ def _update_edge(interpretations, predicate_map, comp, na, ipl, rule_trace, fp_c
17581760
if current_bnd != prev_t_bnd:
17591761
if convergence_mode=='delta_bound':
17601762
for i in updated_bnds:
1761-
lower_delta = abs(i.lower-prev_t_bnd.lower)
1762-
upper_delta = abs(i.upper-prev_t_bnd.upper)
1763+
# Use each bound's own previous values instead of L's previous
1764+
prev_i_bnd = interval.closed(i.prev_lower, i.prev_upper)
1765+
lower_delta = abs(i.lower - prev_i_bnd.lower)
1766+
upper_delta = abs(i.upper - prev_i_bnd.upper)
17631767
max_delta = max(lower_delta, upper_delta)
17641768
change = max(change, max_delta)
17651769
else:

pyreason/scripts/interpretation/interpretation_parallel.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1540,8 +1540,10 @@ def _update_node(interpretations, predicate_map, comp, na, ipl, rule_trace, fp_c
15401540
if current_bnd != prev_t_bnd:
15411541
if convergence_mode=='delta_bound':
15421542
for i in updated_bnds:
1543-
lower_delta = abs(i.lower-prev_t_bnd.lower)
1544-
upper_delta = abs(i.upper-prev_t_bnd.upper)
1543+
# Use each bound's own previous values instead of L's previous
1544+
prev_i_bnd = interval.closed(i.prev_lower, i.prev_upper)
1545+
lower_delta = abs(i.lower - prev_i_bnd.lower)
1546+
upper_delta = abs(i.upper - prev_i_bnd.upper)
15451547
max_delta = max(lower_delta, upper_delta)
15461548
change = max(change, max_delta)
15471549
else:
@@ -1633,7 +1635,7 @@ def _update_edge(interpretations, predicate_map, comp, na, ipl, rule_trace, fp_c
16331635
world.world[p1].set_lower_upper(lower, upper)
16341636
world.world[p1].set_static(static)
16351637
ip_update_cnt += 1
1636-
updated_bnds.append(world.world[p2])
1638+
updated_bnds.append(world.world[p1])
16371639
if store_interpretation_changes:
16381640
rule_trace.append((numba.types.uint16(t_cnt), numba.types.uint16(fp_cnt), comp, p1, interval.closed(lower, upper)))
16391641

@@ -1646,8 +1648,10 @@ def _update_edge(interpretations, predicate_map, comp, na, ipl, rule_trace, fp_c
16461648
if current_bnd != prev_t_bnd:
16471649
if convergence_mode=='delta_bound':
16481650
for i in updated_bnds:
1649-
lower_delta = abs(i.lower-prev_t_bnd.lower)
1650-
upper_delta = abs(i.upper-prev_t_bnd.upper)
1651+
# Use each bound's own previous values instead of L's previous
1652+
prev_i_bnd = interval.closed(i.prev_lower, i.prev_upper)
1653+
lower_delta = abs(i.lower - prev_i_bnd.lower)
1654+
upper_delta = abs(i.upper - prev_i_bnd.upper)
16511655
max_delta = max(lower_delta, upper_delta)
16521656
change = max(change, max_delta)
16531657
else:

0 commit comments

Comments
 (0)