let rec vars_consts_from_term = function
Pair(t1,t2)
| Scrypt(t1,t2)
| Crypt(t1,t2)
| Cons(t1,t2) -> (vars_consts_from_term t1) @ (vars_consts_from_term t2)
| Inv(t) -> vars_consts_from_term t
| Function(t,lt) ->
(vars_consts_from_term t)
@ (List.flatten (List.map vars_consts_from_term lt))
| Set(lt) -> List.flatten (List.map vars_consts_from_term lt)
| Prime(t)
| Base(t) -> [Base(t)]
| _ -> []