249 |
249 |
250 |
250 |
251 (*Accumulate all 'loose' bound vars referring to level 'lev' or beyond. |
251 (*Accumulate all 'loose' bound vars referring to level 'lev' or beyond. |
252 (Bound 0) is loose at level 0 *) |
252 (Bound 0) is loose at level 0 *) |
253 fun add_loose_bnos (Bound i, lev, js) = if i<lev then js |
253 fun add_loose_bnos (Bound i, lev, js) = if i<lev then js |
254 else (i-lev) ins_int js |
254 else insert (op =) (i - lev) js |
255 | add_loose_bnos (Abs (_,t), lev, js) = add_loose_bnos (t, lev+1, js) |
255 | add_loose_bnos (Abs (_,t), lev, js) = add_loose_bnos (t, lev+1, js) |
256 | add_loose_bnos (f$t, lev, js) = |
256 | add_loose_bnos (f$t, lev, js) = |
257 add_loose_bnos (f, lev, add_loose_bnos (t, lev, js)) |
257 add_loose_bnos (f, lev, add_loose_bnos (t, lev, js)) |
258 | add_loose_bnos (_, _, js) = js; |
258 | add_loose_bnos (_, _, js) = js; |
259 |
259 |