Commit f29c99f
committed
ecReduction: restore main's reduce_head Fapp(Fop) dispatch ordering
The deploy-tc rewrite of `reduce_head`'s `Fapp(Fop p, args)` case used
`find_map_opt` over `[user; delta; tc]` after `reduce_logic`, catching
only `NotRed NoHead` from each callback. This subtly differs from main
when `reduce_user_gen` succeeds: with the new layout, head reduction
fires of_realI on `of_reald (Real.inv X)`, then immediately delta-
unfolds the resulting `Rp.inv (of_reald X)` back to
`of_reald (Real.inv (to_real (of_reald X)))` — looping forever in the
RedTbl-memoized `whnf` driver because each step produces a fresh form.
Restoring main's ordering — try logic, then user_gen, and only fall
through to delta+tc when *both* raised `NoHead` — short-circuits the
loop in the cases that previously hung (split's lazy_match calls
during `auto`).
Also drops the file_exclude workaround that masked the symptom in three
ehoare examples; they all run end-to-end on the deploy-tc test runner
again.1 parent 40c1cad commit f29c99f
2 files changed
Lines changed: 8 additions & 18 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | 12 | | |
22 | 13 | | |
23 | 14 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1116 | 1116 | | |
1117 | 1117 | | |
1118 | 1118 | | |
1119 | | - | |
1120 | | - | |
1121 | | - | |
1122 | | - | |
1123 | | - | |
1124 | | - | |
1125 | | - | |
1126 | | - | |
1127 | | - | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + | |
| 1123 | + | |
| 1124 | + | |
| 1125 | + | |
| 1126 | + | |
1128 | 1127 | | |
1129 | 1128 | | |
1130 | 1129 | | |
| |||
0 commit comments