finish explicit type parameters, fold, and constructing functions. on 2nd-to-last proof, stuck on refolding def