let remove (elt : 'a) (l : 'a list) : 'a list =
        let rec aux l res =
                match l with [] -> List.rev res
                        |(x::ls) ->         if (elt=x)
                                        then aux ls res
                                        else aux ls (x::res);
        in
        aux l []