There are only 19 different ways to do this, so it's not too bad to just do this symbolically to see all possibilities:
from sympy import symbols, subsets, solve, Dict
v = a1, a2, a3, b1, b2, c1 = symbols('a1 a2 a3 b1 b2 c1')
eqs = (a1 + a2 - b1, a2 + a3 - b2, b1 + b2 - c1)
# we will not assign b1,b2,c1 so we will never solve for a1,a2,a3
ignore = set(v[:3])
for i in subsets(v, 3):
if set(i) != ignore:
subs = set(v)-set(i)
sol = solve(eqs,i,dict=True)[0]
print('replace',subs,'solve for',set(sol),':\n\t', sol)
The output is
replace {b2, c1, a3} solve for {a2, a1, b1} :
{a1: a3 - 2*b2 + c1, a2: -a3 + b2, b1: -b2 + c1}
replace {c1, a3, b1} solve for {a2, b2, a1} :
{a1: a3 + 2*b1 - c1, a2: -a3 - b1 + c1, b2: -b1 + c1}
replace {b2, a3, b1} solve for {a2, c1, a1} :
{a1: a3 + b1 - b2, a2: -a3 + b2, c1: b1 + b2}
replace {a2, b2, c1} solve for {a1, a3, b1} :
{a1: -a2 - b2 + c1, b1: -b2 + c1, a3: -a2 + b2}
replace {a2, c1, b1} solve for {b2, a1, a3} :
{a1: -a2 + b1, a3: -a2 - b1 + c1, b2: -b1 + c1}
replace {a2, b2, b1} solve for {c1, a1, a3} :
{a1: -a2 + b1, a3: -a2 + b2, c1: b1 + b2}
replace {a2, c1, a3} solve for {b2, a1, b1} :
{a1: -2*a2 - a3 + c1, b1: -a2 - a3 + c1, b2: a2 + a3}
replace {a2, b2, a3} solve for {a1, b1} :
{a1: -a2 - b2 + c1, b1: -b2 + c1}
replace {a2, a3, b1} solve for {b2, a1, c1} :
{a1: -a2 + b1, b2: a2 + a3, c1: a2 + a3 + b1}
replace {a1, b2, c1} solve for {a2, a3, b1} :
{a2: -a1 - b2 + c1, a3: a1 + 2*b2 - c1, b1: -b2 + c1}
replace {a1, c1, b1} solve for {a2, b2, a3} :
{a2: -a1 + b1, a3: a1 - 2*b1 + c1, b2: -b1 + c1}
replace {b2, a1, b1} solve for {a2, c1, a3} :
{a2: -a1 + b1, a3: a1 - b1 + b2, c1: b1 + b2}
replace {a1, c1, a3} solve for {a2, b2, b1} :
{a2: -a1/2 - a3/2 + c1/2, b1: a1/2 - a3/2 + c1/2, b2: -a1/2 + a3/2 + c1/2}
replace {b2, a1, a3} solve for {a2, c1, b1} :
{a2: -a3 + b2, b1: a1 - a3 + b2, c1: a1 - a3 + 2*b2}
replace {a1, a3, b1} solve for {a2, b2, c1} :
{a2: -a1 + b1, b2: -a1 + a3 + b1, c1: -a1 + a3 + 2*b1}
replace {a1, c1, a2} solve for {b2, a3, b1} :
{a3: -a1 - 2*a2 + c1, b1: a1 + a2, b2: -a1 - a2 + c1}
replace {a2, b2, a1} solve for {c1, a3, b1} :
{b1: a1 + a2, c1: a1 + a2 + b2, a3: -a2 + b2}
replace {a2, a1, b1} solve for {b2, a3} :
{a3: -a2 - b1 + c1, b2: -b1 + c1}
replace {a2, a1, a3} solve for {b2, c1, b1} :
{b1: a1 + a2, b2: a2 + a3, c1: a1 + 2*a2 + a3}
If you want to see values, you can do Dict(sol).subs(dict(zip(subs, (1,2,3))))
where 1,2,3
are the values you want to use:
Dict(sol).subs(dict(zip(subs, (1,2,3))))
{b1: 3, b2: 4, c1: 7}