Load(graph);
Import(graph);
conf := SparseDefaultConf;
opts := conf.getOpts(V(1));
opts.vec := true;
i := Ind(3);
front := var.fresh_t("frontier",TArray(TSemiring_MinTimes(TInt), opts.symbol[1]));
fdos := FDataOfs(front, opts.symbol[1], i);
rv := RowVec(fdos);
spmv := IterVStack(i, opts.symbol[1], rv);
rt := RandomRuleTree(last, opts);
srt := SumsRuleTree(rt, opts);
cs := CodeSums(BFSKernel(PullBFSKernel(srt)), opts);
PrintCode("spmv", cs, opts);

# c -> MarkDefUse(c), c -> FixValueTypes(c), c -> Compile.declareVars(c), 
#    (c, opts) -> HashConsts(c, opts)