let up_add g t rt lvs = let g = if mem rt g then g else add rt (ST.empty, SA.empty) g in L.fold_left (fun g x -> add_term x t g) g lvs