|
| 1 | +# Failure Analysis - 65 Remaining Issues |
| 2 | + |
| 3 | +## Category Breakdown |
| 4 | + |
| 5 | +### 1. **Domain Size Exceeded** (21 files) ⚠️ |
| 6 | +Variables with domains > 10,000,000 elements. |
| 7 | + |
| 8 | +**Files:** |
| 9 | +- arrow.fzn: [123456789, 987654321] (864M elements) |
| 10 | +- contains_array.fzn: [0, 999999999] (1B elements) |
| 11 | +- curious_set_of_integers.fzn: [0, 100000000] (100M elements) |
| 12 | +- digits_of_the_square.fzn: [1000000, 99980001] (98M elements) |
| 13 | +- divisible_by_9_trough_1.fzn: [0, 999999999] (1B elements) |
| 14 | +- enigma_1570.fzn: [0, 32461758] (32M elements) |
| 15 | +- enigma_portuguese_squares.fzn: [1, 1000000000] (1B elements) |
| 16 | +- euler_2.fzn: [0, 10000000] (10M elements) |
| 17 | +- euler_9.fzn: [0, 125000000] (125M elements) |
| 18 | +- four_power.fzn: [1, 64000000] (64M elements) |
| 19 | +- grocery.fzn: [0, 359425431] (359M elements) |
| 20 | +- magic_modulo_number.fzn: [0, 10000000] (10M elements) |
| 21 | +- number_square.fzn: [110000000, 199999999] (90M elements) |
| 22 | +- seven11.fzn: [0, 359425431] (359M elements) |
| 23 | +- shopping_basket2.fzn: [6, 30000015] (30M elements) |
| 24 | +- shopping_basket.fzn: [0, 10000435] (10M elements) |
| 25 | +- square_root_of_wonderful.fzn: [123454321, 999999999] (876M elements) |
| 26 | + |
| 27 | +**Solution:** Increase MAX_DOMAIN_SIZE or implement sparse domain representation |
| 28 | + |
| 29 | +### 2. **Parse Errors** (17 files) 🔴 |
| 30 | +Parser issues with various constructs. |
| 31 | + |
| 32 | +**Type A - "Expected Int, found IntLiteral(1)"** (11 files): |
| 33 | +- bokus_competition.fzn (line 350) |
| 34 | +- common.fzn (line 173) |
| 35 | +- connected.fzn (line 78) |
| 36 | +- in_set.fzn (line 1) |
| 37 | +- open_alldifferent.fzn (line 4) |
| 38 | +- open_among.fzn (line 11) |
| 39 | +- open_atleast.fzn (line 9) |
| 40 | +- open_atmost.fzn (line 9) |
| 41 | +- open_global_cardinality.fzn (line 22) |
| 42 | +- open_global_cardinality_low_up.fzn (line 23) |
| 43 | +- roots_test.fzn (line 26) |
| 44 | +- set_covering4b.fzn (line 2) |
| 45 | + |
| 46 | +**Type B - "Expected RightBracket, found LeftParen"** (3 files): |
| 47 | +- packing.fzn (line 20976) |
| 48 | +- queens_viz.fzn (line 12) |
| 49 | +- seg_fault.fzn (line 2736) |
| 50 | + |
| 51 | +**Type C - Other** (3 files): |
| 52 | +- debruijn_no_repetition.fzn: Expected RightParen, found LeftParen |
| 53 | +- kaprekars_constant*.fzn (3 files): Unexpected token in expression: RightBrace |
| 54 | +- regular_test.fzn: Lexical Error - Unexpected character: '/' |
| 55 | + |
| 56 | +**Solution:** Fix parser to handle these edge cases |
| 57 | + |
| 58 | +### 3. **SetLit in Array Elements** (15 files) 🟡 |
| 59 | +Array elements contain set literals like {1, 2, 3}. |
| 60 | + |
| 61 | +**Files:** |
| 62 | +- bus_scheduling_csplib.fzn |
| 63 | +- combinatorial_auction.fzn |
| 64 | +- exact_cover_dlx.fzn |
| 65 | +- hitting_set.fzn |
| 66 | +- itemset_mining.fzn |
| 67 | +- map_coloring_with_costs.fzn |
| 68 | +- maximal_independent_sets.fzn |
| 69 | +- mixing_party.fzn |
| 70 | +- number_of_regions.fzn |
| 71 | +- optimal_picking_elements_from_each_list.fzn |
| 72 | +- partial_latin_square.fzn |
| 73 | +- sat.fzn |
| 74 | +- scene_allocation.fzn |
| 75 | +- set_covering2.fzn |
| 76 | +- set_covering5.fzn |
| 77 | + |
| 78 | +**Solution:** Support SetLit in array literal expressions in mapper.rs |
| 79 | + |
| 80 | +### 4. **IntLit Mapping Errors** (6 files) 🟢 EASY FIX |
| 81 | +"Expected variable identifier or array access, got: IntLit(X)" |
| 82 | + |
| 83 | +**Files:** |
| 84 | +- buckets.fzn: IntLit(0) |
| 85 | +- einstein_opl.fzn: IntLit(1) |
| 86 | +- houses.fzn: IntLit(1) |
| 87 | +- lecture_series.fzn: IntLit(1) |
| 88 | +- olympic.fzn: IntLit(3) |
| 89 | +- timeslots_for_songs.fzn: IntLit(3) |
| 90 | +- zebra_inverse.fzn: IntLit(1) |
| 91 | + |
| 92 | +**Solution:** Find where get_var() is used instead of get_var_or_const() |
| 93 | + |
| 94 | +### 5. **ArrayAccess in Array Elements** (2 files) 🟡 |
| 95 | +Array initialization contains array access like a[1]. |
| 96 | + |
| 97 | +**Files:** |
| 98 | +- enigma_1575.fzn: ArrayAccess { array: "days", index: IntLit(3) } |
| 99 | +- locker.fzn: ArrayAccess { array: "a_d1", index: IntLit(1) } |
| 100 | + |
| 101 | +**Solution:** Support ArrayAccess in array literal expressions in mapper.rs |
| 102 | + |
| 103 | +### 6. **Reified Constraint Issues** (2 files) 🟡 |
| 104 | +Unsupported argument types for reified constraints. |
| 105 | + |
| 106 | +**Files:** |
| 107 | +- battleships_6.fzn: int_eq_reif (line 1509) |
| 108 | +- bug_unsat.fzn: int_ne_reif (line 7488) |
| 109 | + |
| 110 | +**Solution:** Check and fix reified constraint mappers |
| 111 | + |
| 112 | +### 7. **Unsupported Constraints** (1 file) 🟠 |
| 113 | +Not implemented. |
| 114 | + |
| 115 | +**Files:** |
| 116 | +- bobs_sale.fzn: global_cardinality_low_up_closed |
| 117 | + |
| 118 | +**Solution:** Implement this global constraint |
| 119 | + |
| 120 | +### 8. **Other Mapping Errors** (1 file) �� |
| 121 | +Specific mapping issues. |
| 122 | + |
| 123 | +**Files:** |
| 124 | +- smullyan_lion_and_unicorn.fzn: Expected array literal in array_bool_element |
| 125 | + |
| 126 | +**Solution:** Investigate specific case |
| 127 | + |
| 128 | +--- |
| 129 | + |
| 130 | +## Priority Ranking |
| 131 | + |
| 132 | +### 🟢 HIGH PRIORITY (Quick Wins - Est. +7 files) |
| 133 | +1. **Fix IntLit mapping errors** (7 files) |
| 134 | + - Find remaining get_var() that should be get_var_or_const() |
| 135 | + - Estimated effort: 10 minutes |
| 136 | + - Impact: +7 files |
| 137 | + |
| 138 | +### 🟡 MEDIUM PRIORITY (Est. +17 files) |
| 139 | +2. **Support SetLit in arrays** (15 files) |
| 140 | + - Add SetLit case in array literal handling |
| 141 | + - Estimated effort: 30 minutes |
| 142 | + - Impact: +15 files |
| 143 | + |
| 144 | +3. **Support ArrayAccess in arrays** (2 files) |
| 145 | + - Add ArrayAccess case in array literal handling |
| 146 | + - Estimated effort: 15 minutes |
| 147 | + - Impact: +2 files |
| 148 | + |
| 149 | +### 🟠 LOW PRIORITY (Est. +3 files) |
| 150 | +4. **Fix reified constraints** (2 files) |
| 151 | + - Debug int_eq_reif and int_ne_reif |
| 152 | + - Estimated effort: 30 minutes |
| 153 | + - Impact: +2 files |
| 154 | + |
| 155 | +5. **Implement global_cardinality_low_up_closed** (1 file) |
| 156 | + - Estimated effort: 1 hour |
| 157 | + - Impact: +1 file |
| 158 | + |
| 159 | +### ⚠️ DEFERRED (21 files - architectural decision needed) |
| 160 | +6. **Domain size limit** |
| 161 | + - Requires architectural change (sparse domains or higher limit) |
| 162 | + - Estimated effort: 2-4 hours |
| 163 | + - Impact: +21 files |
| 164 | + |
| 165 | +### 🔴 COMPLEX (17 files - parser work) |
| 166 | +7. **Fix parser errors** |
| 167 | + - Requires parser fixes for edge cases |
| 168 | + - Estimated effort: 2-3 hours |
| 169 | + - Impact: +17 files |
| 170 | + |
| 171 | +--- |
| 172 | + |
| 173 | +## Recommended Next Steps |
| 174 | + |
| 175 | +**Option A: Quick Push to 95%** (Recommended) |
| 176 | +1. Fix IntLit mapping errors → 797/851 (93.7%) |
| 177 | +2. Support SetLit in arrays → 812/851 (95.4%) ✅ **95% ACHIEVED!** |
| 178 | + |
| 179 | +**Option B: Maximum Impact** |
| 180 | +1. Do Option A (Quick push to 95%) |
| 181 | +2. Support ArrayAccess in arrays → 814/851 (95.7%) |
| 182 | +3. Fix reified constraints → 816/851 (95.9%) |
| 183 | + |
| 184 | +**Option C: Complete Coverage** (Long term) |
| 185 | +- All of Option B |
| 186 | +- Implement missing constraint |
| 187 | +- Fix parser errors |
| 188 | +- Address domain size limit |
| 189 | +→ Target: 851/851 (100%) |
| 190 | + |
0 commit comments