load("__common__.sage")
def generator():
context=choice(["context_pol","context_mat"])
task=choice(["task_ind","task_spa"])
if task=="task_ind":
n=4
independent = choice([false,true])
if independent:
A=simple_random_matrix_of_rank(n,rows=4,columns=n)
else:
A=simple_random_matrix_of_rank(choice([2,3]),rows=4,columns=n)
result=independent
if task=="task_spa":
n=choice([4,5,6])
span = choice([false,true])
if span:
A=simple_random_matrix_of_rank(4,rows=4,columns=n)
else:
A=simple_random_matrix_of_rank(choice([2,3]),rows=4,columns=n)
result=span
if context=="context_pol":
polys=[ sum([v[i]*x^i for i in range(0,len(v))]) for v in A.columns() ]
vset=polys
vars=[var("y_"+str(i+1)) for i in range(0,A.ncols())]
lc=linearCombination(vars,polys,parentheses=true)
if task=="independent":
eq=Equation(lc,"0")
else:
eq=lc
if context=="context_mat":
matrices = [ matrix(ZZ,2,v) for v in A.columns()]
vset=matrices
vars=[var("y_"+str(i+1)) for i in range(0,A.ncols())]
lc=linearCombination(vars,matrices)
if task=="independent":
eq=Equation(lc,matrix(ZZ,2))
else:
eq=lc
return {
task: True,
context: True,
"set": bracedSet(vset),
"equation": eq,
"result": result,
"matrix": A,
"rref": A.rref(),
}