| EProj (e, _, d) ->
let err () = mem err f e b in mem err f d b
-let replace f n0 e =
+let set_layer f n0 e =
let rec aux f = function
| ESort -> f ESort
| EBind (e, a, Abst (r, n, w)) -> aux (push_bind f a (Abst (r, n0, w))) e
| EBind (e, a, b) -> aux (push_bind f a b) e
| EAppl (e, a, x, v) -> aux (push_appl f a x v) e
| EProj (e, a, d) -> let f d = aux (push_proj f a d) e in aux f d
+ in
+ aux f e
+let set_attrs f a0 e =
+ let rec aux f = function
+ | ESort -> f ESort
+ | EBind (e, a, b) ->
+ let a = E.compose a a0 in
+ aux (push_bind f a b) e
+ | EAppl (e, a, x, v) ->
+ let a = E.compose a a0 in
+ aux (push_appl f a x v) e
+ | EProj (e, a, d) ->
+ let a = E.compose a a0 in
+ let f d = aux (push_proj f a d) e in
+ aux f d
in
aux f e