In a 4D Euclidean space, this notebook calculates the spherical tangent space basis for a spherical parameterization of span{(Subscript[e, 2]), (Subscript[e, 3]), (Subscript[e, 4])} and their duals on that volume.  The duals are calculated using the Geometric algebra methods, instead of matrix inversion.

<<"clifford.m" ;

ClearAll[ x, xx, xVec, xParam, xr, xtheta, xphi, basis, xRThetaPhi, reciprocals ] ;

xVec[xx_, r_, theta_, phi_] = { xx, r Sin[ theta] Cos[phi], r Sin[ theta]Sin[phi],r Cos[ theta]} // ToBasis ;
xr[r_, theta_, phi_] = D[xVec[xx, u, theta, phi], u] ;
xtheta[r_, theta_, phi_] = D[xVec[xx, r, u, phi], u]  /. u-> theta ;
xphi[r_, theta_, phi_] = D[xVec[xx,r, theta, u], u]  /. u-> phi ;

basis = { xr[r, θ, ϕ], xtheta[r, θ, ϕ], xphi[r, θ, ϕ] } ;

duals = OuterProduct[basis[[#[[1]]]], basis[[#[[2]]]]]  & /@ {{2,3}, {3, 1}, {1,2}} // Simplify // Expand // Factor ;

xRThetaPhi = OuterProduct[ basis[[1]], basis[[2]], basis[[3]] ] // Simplify ;

reciprocals = MapThread[ GeometricProduct, { 
duals, 
Array[ (xRThetaPhi // MultivectorInverse )+ 0&, 3] (*Repeat 3 times.*)
}  ] // Simplify // Expand // Factor ;

Grid[{
{"(Subscript[(OverVector[e]), i])· (Subscript[(OverVector[e]), j]) = ", Table[ InnerProduct[e[i],e[j]], {i,4}, {j,4}] // Simplify // MatrixForm},

{"(OverVector[x]) = ", xVec[x, r, θ, ϕ]  },
{"(Subscript[(OverVector[x]), r]) = ", basis[[1]] },
{"(Subscript[(OverVector[x]), θ]) = ", basis[[2]]},
{"(Subscript[(OverVector[x]), ϕ]) = ",basis[[3]] },

{"(Subscript[(OverVector[x]), i])· (Subscript[(OverVector[x]), j]) = ", Table[ InnerProduct[basis[[i]],basis[[j]]], {i,3}, {j,3}] // Simplify // MatrixForm},

{"((OverVector[x])^r) = ", reciprocals[[1]] },
{"((OverVector[x])^θ) = ", reciprocals[[2]]},
{"((OverVector[x])^ϕ) = ",reciprocals[[3]] },

{"(Subscript[(OverVector[x]), θ]) ⋀ (Subscript[(OverVector[x]), ϕ]) = ", duals[[1]] // Expand // Factor},
{"(Subscript[(OverVector[x]), ϕ]) ⋀ (Subscript[(OverVector[x]), r]) = ", duals[[2]] // Expand // Factor},
{"(Subscript[(OverVector[x]), r]) ⋀ (Subscript[(OverVector[x]), θ]) = ", duals[[3]] // Expand // Factor},

{"(Subscript[(OverVector[x]), r]) ⋀ (Subscript[(OverVector[x]), θ]) ⋀ (Subscript[(OverVector[x]), ϕ]) = ", xRThetaPhi},

{"((OverVector[x])^i)· (Subscript[(OverVector[x]), j]) = ", Table[ InnerProduct[basis[[i]],reciprocals[[j]]], {i,3}, {j,3}] // Simplify // MatrixForm}
} ] // TraditionalForm