Tuples: Tuples are of the form $(v_1, \dots, v_n)$. The are indexed by natural numbers, which means that we can access its elements by $(v_1, \dots, v_n)(i)=v_i$. One way to create a set of tuples from sets $S_1, \dots, S_n$ is by this notation: $\prod_{i=1}^n S_i$
My question: Now, I want to achieve the same for records. Records are of the form $(x_1=v_1, \dots, x_n=v_n)$, where $x_1, \dots, x_n$ are variable names. We can access its elements by those variable names: $(x_1=v_1, \dots, x_n=v_n)(x_i)=v_i$.
How can I now create a set of records from some sets? In particular, if I have sets $S_1, \dots, S_n$, what is the standard notation for $\{ (x_1=v_1, \dots, x_n=v_n) \mid \forall i \in [n]: v_i \in S_i \}$?
A possible solution: I guess it would help to embed sets $S$ into tuples by something like $(x=S) := \{(x=v) \mid v \in S\}$. Then, I could use $\prod_{i=1}^n (x_i=S_i)$ to achieve what I want.
But is this the standard way? Or are there better ways?
Edit: Some context: I want to give semantics to a programming language. For this, it is convenient to model the set of states by a set of records. If I have a state $\sigma$ and want to evaluate a variable $x$ in that state, I can simply use that variable's name, as in $\sigma(x)$.