system implementation sys.impl
    parameters
        A0: set of indices;
        B0: set of indices;
        C: set of indices;

    subcomponents
        a0: set indexed by A0;
        b0: set indexed by B0;
        c: set indexed by C;

    connections
        a0[x] -> c[y] for x in A0, y in C;
        c[y] -> a0[x] for x in A0, y in C;
        b0[x] -> c[y] for x in B0, y in C;
        c[y] -> b0[x] for x in B0, y in C;



    reconfigurations
        exists(x not in A0, next(A0) = add(A0, x));

        exists(x in A0, next(A0) = remove(A0, x));

        exists(x not in B0, next(B0) = add(B0, x));

        exists(x in B0, next(B0) = remove(B0, x));

        exists(x not in C, next(C) = add(C, x));
        exists(x in C, next(C) = remove(C, x));
end sys.impl;
