I'm looking for a way to make my code more simple.  This code takes a list of vectors and returns all subset of that list that sum up to another vector.

For example:

> `{'a','b','c'}` is the subset consisting of: `a (1100000)`, `b (0110000)`, and `c (0011000)`.

    def AddVectors(A, B):
        if not A:
            return B
        if not B:
            return A
        return [A[i] + B[i] for i in range(len(A))]
    
    def SumVectorList(lst, SuperSet):
        result = []
        for l in lst:
            if not result:
                result = SuperSet[l]
            else:
                for j in range(len(l)):
                    result = AddVectors(result, SuperSet[l[j]])
        return result
    
    def GetPowerSet(lst):
        result = [[]]
        for x in lst:
            result.extend([subset + [x] for subset in result])
        return result
    
    S = {'a': [one, one, 0, 0, 0, 0, 0], 'b': [0, one, one, 0, 0, 0, 0],
         'c': [0, 0, one, one, 0, 0, 0], 'd': [0, 0, 0, one, one, 0, 0],
         'e': [0, 0, 0, 0, one, one, 0], 'f': [0, 0, 0, 0, 0, one, one]}
    P = GetPowerSet(S)
    u = [0, 0, one, 0, 0, one, 0]
    v = [0, one, 0, 0, 0, one, 0]
    u_0010010 = {y for x in P for y in x if SumVectorList(x, S) == u}
    u_0100010 = {y for x in P for y in x if SumVectorList(x, S) == v}