import Lean open Lean unsafe def tst1 : MetaM Unit := do let e := mkApp (mkSort Level.zero) (mkSort Level.zero) let e' := e.updateApp! (mkSort Level.zero) (mkSort Level.zero) assert! ptrAddrUnsafe e == ptrAddrUnsafe e' let e' := e.replace fun _ => none assert! ptrAddrUnsafe e == ptrAddrUnsafe e' #eval tst1 set_option trace.Compiler.saveMono true def sefFn (e : Expr) (f : Expr) : Expr := match e with | .app _ a => e.updateApp! f a | _ => e