if ty1 == ty && t1 == t && b1 == b then orig else NCic.LetIn (n,ty1,t1,b1)
| NCic.Match (r,oty,t,pl) as orig ->
let oty1 = f k oty in let t1 = f k t in let pl1 = sharing_map (f k) pl in
if ty1 == ty && t1 == t && b1 == b then orig else NCic.LetIn (n,ty1,t1,b1)
| NCic.Match (r,oty,t,pl) as orig ->
let oty1 = f k oty in let t1 = f k t in let pl1 = sharing_map (f k) pl in