Introduction

Precise point positioning (PPP) (Malys and Jensen 1990; Zumberge et al. 1997; Kouba and Héroux 2001; Kouba et al. 2017) is a technique used to process GNSS observations to achieve highly accurate point positions. PPP can be divided into the network and the user side. The network side consists of globally distributed receivers observing one or multiple GNSS. With this network, precise satellite orbits and clocks can be computed and provided to the user for highly accurate point solutions. In order to generate accurate satellite orbits and clocks on the network side and accurate point positions on the user side, code and phase observations are required.

PPP-real-time kinematic (PPP–RTK) is a variation of PPP that includes the satellite phase bias parameters in addition to the satellite orbits and clocks. This enables the network and the user to estimate integer ambiguities through proper satellite phase bias and ambiguity datum handling (Geng et al. 2009; Laurichesse et al. 2009; Teunissen et al. 2010). PPP–RTK is a more general formulation of PPP, as it considers existing phase biases of receivers and satellites. For a critical review of different PPP–RTK methods, see Teunissen and Khodabandeh (2015). Here, we focus on the network side of PPP–RTK, as this is the most general case that includes the user side as well, considering that a user can be interpreted as another receiver in the network.

One commonly used method for processing dual-frequency observations is the use of IF-LC instead of the original observations. In the IF-LC, the ionospheric slant delay has been eliminated and does not have to be accounted for in the functional model. Two methods have emerged regarding dual-frequency observations using the IF-LC. The first method, often used in the conventional PPP approach where no ambiguity fixing is desired, uses one IF-LC using code observations and another IF-LC only using phase observations. For the second method, an additional third IF-LC is introduced, the Hatch–Melbourne–Wübbena LC (HMW-LC) (Hatch 1982; Melbourne 1985; Wübbena 1985) and is more commonly used in PPP–RTK see Ge et al. (2008), Collins et al. (2010), and Geng et al. (2019).

Another method of processing GNSS observations is double differencing (DD), which is commonly used in relative positioning but also used to process global networks and generate satellite orbits (Dach et al. 2021). In the DD approach, observations of the same signal are differenced between receivers and satellites, so satellite and receiver clocks and biases cancel out. When this approach is used for short baselines, it can also be assumed that atmospheric delays and orbit errors are eliminated or significantly reduced. Single differencing (SD) is also a well-known approach to GNSS processing. In the SD approach, observations are differenced between receivers or between satellites to eliminate the satellite clocks and biases or the receiver clocks and biases, respectively.

Finally, the approach of processing undifferenced and uncombined (UDUC) observations at the network and user levels (Teunissen et al. 2010; Schönemann et al. 2011; Zhang et al. 2011) has emerged. This is widely regarded as the most general approach, as the original observations are being processed, and no parameters are eliminated by LC or differencing of observations. It is regarded as the most flexible approach, offering a general formulation of the functional model while maintaining the original physical and stochastic characteristics of the observations.

Schaffrin and Grafarend (1986) introduced a concept of nuisance parameter elimination at an observational level and applied this theory to single-frequency phase observations. It was found that SD and DD are equivalent reformulations of the system of equations of single-frequency phase observations in which the satellite and/or receiver clock are eliminated. In contrast to the previously mentioned work, the reformulation method we present is applied to the general UDUC network equations, including multi-signal code and phase observations and considers existing rank deficiencies.

First, an overview of the processing of UDUC observations in the case of GNSS with CDMA is provided. This is done by briefly introducing the code and phase observation equations of a GNSS network, the resulting design matrix, and its rank deficiencies. For this, the relevant aspects of the S-system theory (Teunissen 1985) and the contribution of rank deficiencies in the UDUC processing of GNSS networks by Odijk et al. (2015) are used in this work. Then a reformulation of the system of network equations is presented. In subsequent chapters, we demonstrate that the two IF-LC and the differencing approaches are specific applications of the presented reformulation methods. By examining the implicit assumptions made in these approaches, we can show their mathematical equivalence to the respective results of the processing of UDUC observations.

UDUC network equations

The linearized code and phase observation equations for a receiver r, satellite s, and signal j can be formulated with (Hofmann-Wellenhof et al. 2007)

$$\begin{aligned} E\left( {\Delta \varphi_{r,j}^{s} \left( i \right)} \right) & = g_{r}^{sT} \left( i \right) \cdot \Delta x_{r} \left( i \right) + dt_{r} \left( i \right) + \lambda_{j} \cdot \left( {N_{r,j }^{s} + \delta_{r,j} \left( i \right) - \delta_{j}^{s} \left( i \right)} \right) \\ & \quad - dt^{s} \left( i \right) - \mu_{j} \cdot I_{r}^{s} \left( i \right) \\ \end{aligned}$$
(1)
$$E\left( {\Delta \rho_{r,j}^{s} \left( i \right)} \right) = g_{r}^{sT} \left( i \right) \cdot \Delta x_{r} \left( i \right) + dt_{r} \left( i \right) + d_{r,j} \left( i \right) - dt^{s} \left( i \right) - d_{j}^{s} \left( i \right) + \mu_{j} \cdot I_{r}^{s} \left( i \right)$$
(2)

in case of CDMA GNSS. Here, \(E\left( \cdot \right)\) denotes the expected value of the inherently stochastic observations. It is assumed that the observations have been corrected a priori with appropriate models (Kouba et al. 2017). Thus, terms usually not estimated as parameters in the context of PPP–RTK, such as phase wind-up, phase center offsets, and variations, are excluded in (1) and (2).

Given a network with \(r = 1, \ldots ,n\) receivers, \(s = 1, \ldots ,m\) satellites observing \(j = 1, \ldots ,f\) signals and \(i = 1, \ldots ,p\) epochs, we can formulate a system of equations with \(L + v = A \cdot x\), with \(L\) containing the linearized code and phase observations, \(v\) their residuals, \(A\) the design matrix and \(x\) the unknown parameters. The general design matrix \(A\) of an all-in view, i.e., all receivers observe all satellites and signals, network can be formulated with (Odijk et al. 2015)

$$A = \left[ {\begin{array}{*{20}c} {A_{{{\text{geo}}}} } & {A_{{{\text{rec}}}} } & {A_{{{\text{sat}}}} } & {A_{{{\text{ion}}}} } & {A_{{{\text{amb}}}} } \\ \end{array} } \right] \in {\mathbb{R}}^{z \times k}$$
(3)

where

$$A_{{{\text{rec}}}} = I_{p} \otimes \left( {\left[ {\begin{array}{*{20}c} {e_{f} } & {\Lambda } & 0 \\ {e_{f} } & 0 & {I_{f} } \\ \end{array} } \right] \otimes \left( {I_{n} \otimes e_{m} } \right)} \right),A_{{{\text{sat}}}} = I_{p} \otimes \left( {\left[ {\begin{array}{*{20}c} {e_{f} } & {\Lambda } & 0 \\ {e_{f} } & 0 & {I_{f} } \\ \end{array} } \right] \otimes \left( { - e_{n} \otimes I_{m} } \right)} \right)$$
(4)
$$A_{{{\text{ion}}}} = I_{p} \otimes \left( {\left[ {\begin{array}{*{20}c} { - \mu } \\ \mu \\ \end{array} } \right] \otimes I_{n \cdot m} } \right),\;A_{{{\text{amb}}}} = e_{p} \otimes \left( {\left[ {\begin{array}{*{20}c} {\Lambda } \\ 0 \\ \end{array} } \right] \otimes I_{n \cdot m} } \right)$$
(5)

here \(e_{n}\) denotes the \(n\)-vector of ones, \(I_{n} \in {\mathbb{R}}^{n \times n}\) the identity matrix, \(\otimes\) the Kronecker matrix product, \({\Lambda }\) is a diagonal matrix containing the wavelength of the observed signals, i.e., \({\Lambda } = {\text{diag}}\left( {\lambda_{1} , \ldots ,\lambda_{f} } \right)\) and \(\mu = \left[ {\begin{array}{*{20}c} {\mu_{1} } & {\mu_{2} } & {\begin{array}{*{20}c} \ldots & {\mu_{f} } \\ \end{array} } \\ \end{array} } \right]^{T}\). The design matrix \(A_{{{\text{geo}}}}\) references the geometric parameters (receiver/satellite coordinates and tropospheric delays) and is not further specified, as it is not of further relevance hereafter. All other submatrices have been created assuming epoch-wise parameters, i.e., a new parameter for every epoch for satellite clocks and biases, receiver clocks and biases, and ionospheric slant delays.

The order of the \(z = 2pnmf\) observations in \(L\) is chosen as follows: First, all phase observations of epoch \(i\) are ordered as follows:

$$\varphi \left( i \right) = \left[ {\begin{array}{*{20}c} {\varphi_{1,1}^{1} } & {\varphi_{1,1}^{2} } & {\begin{array}{*{20}c} \ldots & {\varphi_{1,1}^{m} } & {\varphi_{2,1}^{1} } & {\begin{array}{*{20}c} \ldots & {\varphi_{2,1}^{m} } & \ldots & {\varphi_{n,1}^{m} } & {\begin{array}{*{20}c} {\varphi_{1,2}^{1} } & {\begin{array}{*{20}c} \ldots & {\varphi_{n,f}^{m} } \\ \end{array} } \\ \end{array} } \\ \end{array} } \\ \end{array} } \\ \end{array} } \right]$$
(6)

Then, all code observations \(\rho \left( i \right)\) are ordered in the same manner and finally

$$L = \left[ {\begin{array}{*{20}c} {\varphi \left( 1 \right)} & {{ }\rho \left( 1 \right)} & {\varphi \left( 2 \right)} & \ldots & {\rho \left( p \right)} \\ \end{array} } \right]^{T}$$
(7)

The parameter vector \(x\) is divided into subvectors of specific parameter groups with \(x = \left[ {\begin{array}{*{20}c} {x_{{{\text{geo}}}}^{T} } & {x_{{{\text{rec}}}}^{T} } & {\begin{array}{*{20}c} {x_{{{\text{sat}}}}^{T} } & {x_{{{\text{ion}}}}^{T} } & {x_{{{\text{amb}}}}^{T} } \\ \end{array} } \\ \end{array} } \right]^{T}\), where \(x_{{{\text{geo}}}}\) contains all geometric parameters, i.e., receiver coordinates and tropospheric delays, \(x_{{{\text{rec}}}}\) all receiver clocks and biases, \(x_{{{\text{sat}}}}\) all satellite clocks and biases, \(x_{{{\text{ion}}}}\) all ionospheric slant delays, and finally \(x_{{{\text{amb}}}}\) all ambiguities. The design matrix is formulated similarly, with the submatrices referencing the respective subvector.

The design matrix \(A\) is of \({\text{rank}}\left( A \right) = \dim \left( {{\mathcal{R}}\left( A \right)} \right) = r \le k\) with \({\mathcal{R}}\left( A \right)\) denoting the range or column space. The rank deficiency \(k - r\) of matrix \(A\) is equal to the dimension of its null space, i.e., \({\text{dim}}\left( {{\text{N}}\left( {\text{A}} \right)} \right) = {\text{def}}\left( A \right)\). Here, \({\text{N}}\) denotes the null space of a matrix. We can find a basis matrix of \({\text{N}}\left( {\text{A}} \right)\) with \(V \in {\mathbb{R}}^{k \times k - r}\). Then, \({\mathcal{R}}\left( V \right) = {\text{N}}\left( {\text{A}} \right)\) and \(A \cdot V = 0\). With a basis matrix \(S\) that has a complementary range space to \(V,\) i.e., \({\mathcal{R}}\left( S \right) \otimes {\mathcal{R}}\left( V \right) = {\mathbb{R}}^{k} ,\) we obtain the parameter vector \(x\) as a unique linear combination of the form \(x = S \cdot \tilde{a} + V \cdot \beta\). We can then reformulate the system of equations to

$$Ax = A\left( {S\tilde{a} + V\beta } \right) = AS\tilde{a} = \tilde{A}\tilde{a}$$
(8)

The basis matrix \(S\) is not unique, and its choice defines what estimable parameters one solves. The matrix \(S^{ \bot }\) is defined as a basis matrix of the orthogonal complement of \({\mathcal{R}}\left( S \right),\) i.e., \({ }\left( {S^{ \bot } } \right)^{T} S = 0\). Its transpose \(\left( {S^{ \bot } } \right)^{T} \in {\mathbb{R}}^{{\left( {k - r} \right) \times k}}\) can be interpreted as containing the \(\left( {k - r} \right)\) restrictions imposed on the parameter vector, i.e., \(\left( {S^{ \bot } } \right)^{T} x = 0\) (Khodabandeh and Teunissen 2019), making \(\left[ {\begin{array}{*{20}c} {A^{T} } & {S^{ \bot } } \\ \end{array} } \right]^{T}\) a full rank matrix.

The rank deficiencies in \(A\) can be described by the identification of the rank deficiencies in the submatrices and the additional rank deficiencies occurring between the submatrices, as explained in the following Corollary.

Corollary 1 ( Rank deficiencies in submatrices)

Let matrix \(A = \left[ {\begin{array}{*{20}c} {A_{1} } & {A_{2} } \\ \end{array} } \right]\) with \(A_{i} \in {\mathbb{R}}^{{z \times k_{i} }}\), \({\text{def}}\left( {A_{i} } \right) = {\text{dim}}\left( {{\text{N}}\left( {A_{i} } \right)} \right) = r_{i}\) and \({\text{def}}\left( A \right) = r_{1} + r_{2} + l\). With \(V_{i}\) being a basis matrix of \({\text{N}}\left( {A_{i} } \right)\), it follows that \(AV^{*} = \left[ {\begin{array}{*{20}c} {A_{1} } & {A_{2} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {V_{1} } & 0 \\ 0 & {V_{2} } \\ \end{array} } \right] = 0\) and \(l \ge 0\). If and only if \(l = { }0\) is \(V^{*}\) a basis matrix of \({\text{N}}\left( A \right)\), in all other cases, we can extend \(V^{*}\) to a basis matrix \(V = \left[ {\begin{array}{*{20}c} {V^{*} } & W \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {V_{1} } & 0 & {W_{1} } \\ 0 & {V_{2} } & {W_{2} } \\ \end{array} } \right]\), with \({\text{rank}}\left( W \right) = l\). Note that all vectors in \(W_{i}\) are linearly independent of \(V_{i}\). (Proof: Let us assume a vector \(w_{1}^{*}\) in \(W_{1}\) can be expressed as a LC of vectors in \(V_{1}\). Then, we can find a matrix \(C\), so that \(\left[ {\begin{array}{*{20}c} {w_{1}^{*} } \\ {w_{2}^{*} } \\ \end{array} } \right] + C\left[ {\begin{array}{*{20}c} {V_{1} } \\ 0 \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} 0 \\ {w_{2}^{*} } \\ \end{array} } \right] \in {\text{N}}\left( {A_{2} } \right)\), which contradicts the assumption of linearly independent vectors in \(V.\))

The rank deficiencies of \(A\) can therefore be interpreted as the \(r_{1}\) and \(r_{2}\) rank deficiencies of the submatrices \(A_{1}\) and \(A_{2}\) and the \(l\) between \(A_{1}\) and \(A_{2}\) rank deficiencies. We denote with

$${\text{bdef}}\left( {A_{1} ,A_{2} } \right) = {\text{def}}\left( {\left[ {\begin{array}{*{20}c} {A_{1} } & {A_{2} } \\ \end{array} } \right]} \right) - \left( {{\text{def}}\left( {A_{1} } \right) + {\text{def}}\left( {A_{2} } \right)} \right)$$
(9)

the rank deficiency between matrices.

In Odijk et al. (2015), the different types of rank deficiencies are specifically declared as.

  1. 1.

    Between receiver and satellite parameters

    1. a.

      Between receiver and satellite clocks (size \(1\))

    2. b.

      Between receiver and satellite biases (size \(2f\))

  2. 2.

    Between receiver biases and

    1. a.

      Receiver clocks (size \(n - 1\))

    2. b.

      Ionospheric Slant Delays (size \(n - 1\))

  3. 3.

    Between satellite biases and

    1. a.

      Satellite clocks (size \(m\))

    2. b.

      Ionospheric Slant Delays (size \(m\))

  4. 4.

    Between receiver biases and ambiguities (size \(f\left( {n - 1} \right)\))

  5. 5.

    Between satellite biases and ambiguities (size \(fm\)).

The size of these rank deficiencies in the scope of this research is understood to exist at each epoch, except for the rank deficiencies between ambiguities and biases, as ambiguities are introduced as constant in (5). Often used S-basis restrictions to eliminate these rank deficiencies are the “Common Clocks” (CC) S-basis. It is further classified into the CC-R and the CC-S S-basis. The CC-R S-basis uses the receiver clock and biases of one receiver as restrictions to eliminate rank deficiencies 1a and 1b, whereas the CC-S S-basis uses the mean satellite clock and biases of a satellite system.

Since none of the individual S-basis restrictions in the CC models span across multiple parameter groups, we can express \(\left( {S^{ \bot } } \right)^{T}\) as a block diagonal matrix, with each matrix containing the restrictions imposed on a specific parameter group, as presented in the following Corollary.

Corollary 2 (Restrictions in GNSS processing)

Let \(\left( {S^{ \bot } } \right)^{T} \in {\mathbb{R}}^{r \times k} = \left[ {\begin{array}{*{20}c} {\left( {S_{1}^{ \bot } } \right)} & 0 & \cdots & 0 \\ 0 & {\left( {S_{2}^{ \bot } } \right)} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & {\left( {S_{n}^{ \bot } } \right)} \\ \end{array} } \right] = {\text{diag}}\left( {\left( {S_{i}^{ \bot } } \right)^{T} } \right)\), \(i = 1, \ldots ,n\), \(\left( {S_{i}^{ \bot } } \right)^{T} \in {\mathbb{R}}^{{r_{i} \times k_{i} }}\) and \({\text{rank}}\left( {\left( {S_{i}^{ \bot } } \right)^{T} } \right) = r_{i}\). It follows that \({\text{rank}}\left( {\left( {S^{ \bot } } \right)^{T} } \right) = \mathop \sum \limits_{i} r_{i} = r\).

We can find a basis matrix \(S \in {\mathbb{R}}^{{k \times \left( {k - r} \right)}}\) of \({\text{N}}\left( {\left( {S^{ \bot } } \right)^{T} } \right)\) with \(S = {\text{diag}}\left( {S_{i} } \right)\) for all \(i\) \(k_{i} \ne r_{i}\) and \(S_{i} \in {\mathbb{R}}^{{k_{j} \times \left( {k_{j} - r_{j} } \right)}}\) being a basis matrix of \({\text{N}}\left( {\left( {S_{i}^{ \bot } } \right)^{T} } \right)\), thus \(\left( {S^{ \bot } } \right)^{T} \cdot S = 0\).

Applying Corollary 2 to our specific GNSS parameter groups yields \(\left( {S^{ \bot } } \right)^{T} = {\text{diag}}\left( {\left( {S_{{{\text{rec}}}}^{ \bot } } \right)^{T} ,\left( {S_{{{\text{sat}}}}^{ \bot } } \right)^{T} ,\left( {S_{{{\text{ion}}}}^{ \bot } } \right)^{T} ,\left( {S_{{{\text{amb}}}}^{ \bot } } \right)^{T} } \right),\) and consequently, we can find \(S = {\text{diag}}\left( {S_{{{\text{rec}}}} ,S_{{{\text{sat}}}} ,S_{{{\text{ion}}}} ,S_{{{\text{amb}}}} } \right)\) in a similar notation. The dimensions of the submatrices of \(\left( {S^{ \bot } } \right)^{T}\) and \(S\) are defined as outlined in the corollary and vary depending on the number of S-basis restrictions imposed on each parameter group.

Transforming the network equations

This chapter is structured as follows. First, the theory required to achieve an equivalent reformulation of the UDUC network equations is presented. The presented reformulation takes existing rank deficiencies in the original design matrix and how they propagate into the transformed design matrix into account. This reformulation is then applied to obtain the two different IF, and the SD and DD processing approaches.

Theory

It is possible to transform the original system of equations as defined by the design matrix (3) of the UDUC observations with no loss of information. This is described in the following Lemma.

Lemma 1 (Reformulation of the Least Squares (LSQ) Problem)

The solution of a system of equations of the form

$$L + v = \tilde{A}\tilde{a}, v^{T} Pv \to {\text{min}}, P {\text{ positive definite}}$$
(10)

is given with

$$\tilde{a} = \left( {\tilde{A}^{T} P\tilde{A}} \right)^{ - 1} \tilde{A}^{T} PL$$
(11)

and is also known as the weighted LSQ solution with weight matrix \(P\) being the inverse of the variance covariance matrix (VCM) of the observations \(L\).

An equal solution introducing a regular matrix \(V\) can be found with

$$L^{*} = VL, v^{*} = Vv, P^{*} = \left( {V^{T} } \right)^{ - 1} PV^{ - 1} , \tilde{A}^{*} = V\tilde{A}$$
(12)
$$\tilde{a} = \left( {\tilde{A}^{*T} P^{*} \tilde{A}^{*} } \right)^{ - 1} \tilde{A}^{*T} P^{*} L^{*}$$
(13)

Lemma 1 can be summarized as follows: It is possible to use the LC \(L^{*} = VL\) instead of the original observations \(L\) to obtain solution \(\tilde{a}\). The solution \(\tilde{a}\) using observations \(L^{*}\) is equal to the solution obtained by the original observations \(L\), as long as \(V\) is a regular matrix and the design and weight matrix of the observations are transformed as demonstrated.

The motivation to perform such a transformation is given in the following Lemma.

Lemma 2 (Partial LSQ solution)

The partial solution \(x_{1}\) of the LSQ problem

$$\left[ {\begin{array}{*{20}c} {L_{1} } \\ {L_{2} } \\ \end{array} } \right] + v = \left[ {\begin{array}{*{20}c} {A_{1} } & 0 \\ {A_{2} } & {A_{3} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {x_{1} } \\ {x_{2} } \\ \end{array} } \right], v^{T} \left[ {\begin{array}{*{20}c} {P_{11} } & {P_{12} } \\ {P_{21} } & {P_{22} } \\ \end{array} } \right]v \to {\text{min}}$$
(14)
$$P^{ - 1} = Q = \left[ {\begin{array}{*{20}c} {Q_{11} } & {Q_{12} } \\ {Q_{21} } & {Q_{22} } \\ \end{array} } \right]$$
(15)

can be expressed with

$$x_{1} = \left( {A_{1}^{T} Q_{11}^{ - 1} A_{1} } \right)^{ - 1} A_{1}^{T} Q_{11}^{ - 1} L_{1}$$
(16)

if \(A_{3}\) is a regular matrix and \(P\) a symmetric and positive definite matrix.

Therefore, by applying an appropriate transformation, the matrix \(\tilde{A}^{*} = V\tilde{A}\) can be transformed into the form of the design matrix presented in Lemma 2, allowing for the pre-elimination of certain parameters \(x_{2}\) at an observational level. This enables us to obtain the partial solution \(x_{1}\) using a reduced observation vector. This partial solution is mathematically equivalent to the partial solution obtained when all observations are considered.

A generalization of this approach, including possible complications arising due to rank deficiencies, is given in the following corollary, which serves as the foundation for the next chapters, as the following methods of GNSS processing can be shown to be an application thereof. Note that in Corollary 3, it is not assumed that \({\text{rank}}\left( {\left[ {\begin{array}{*{20}c} {A_{1} } & {A_{2} } \\ \end{array} } \right]} \right) = {\text{rank}}\left( {A_{1} } \right) + {\text{rank}}\left( {A_{2} } \right)\) like it has been assumed in Schaffrin and Grafarend (1986).

Corollary 3 ( Reformulation of rank-deficient LSQ)

For a rank-deficient LSQ problem

$${\text{L}} + v = \left[ {\begin{array}{*{20}c} {A_{1} } & {A_{2} } \\ \end{array} } \right]S\left[ {\begin{array}{*{20}c} {\tilde{a}_{1} } \\ {\tilde{a}_{2} } \\ \end{array} } \right],{ }v^{T} Pv \to {\text{min}}$$
(17)

with \(L \in {\mathbb{R}}^{z} ,{ }A = \left[ {\begin{array}{*{20}c} {A_{1} } & {A_{2} } \\ \end{array} } \right] \in {\mathbb{R}}^{z \times k} ,{\text{ rank}}\left( A \right) = k - r, A_{i} \in {\mathbb{R}}^{{z_{i} \times k_{i} }}\), \({\text{def}}\left( {A_{i} } \right) = r_{i}\) and \({\text{bdef}}\left( {A_{1} ,A_{2} } \right) = b\), one can find a regular Matrix \(V = \left[ {\begin{array}{*{20}c} {V_{1} } \\ {V_{2} } \\ \end{array} } \right] \in {\mathbb{R}}^{z \times z} { }\) with \(V_{1}^{T}\) being a basis matrix of \({\text{N}}\left( {A_{2}^{T} } \right)\). The admissible S-basis restrictions are chosen so that \(\left( {S^{ \bot } } \right)^{T} \in {\mathbb{R}}^{r \times k} = \left[ {\begin{array}{*{20}c} {\left( {S_{1}^{ \bot } } \right)} & 0 \\ 0 & {\left( {S_{2}^{ \bot } } \right)} \\ \end{array} } \right]\) with \(\left( {S_{1}^{ \bot } } \right) \in {\mathbb{R}}^{{\left( {r_{1} + b} \right) \times k_{1} }}\) and \(\left( {S_{2}^{ \bot } } \right) \in {\mathbb{R}}^{{r_{2} \times k_{2} }}\). It follows that we can find \(S = \left[ {\begin{array}{*{20}c} {S_{1} } & 0 \\ 0 & {S_{2} } \\ \end{array} } \right] \in {\mathbb{R}}^{{k \times \left( {k - r} \right)}}\) with \(S_{1} \in {\mathbb{R}}^{{k_{1} \times \left( {k_{1} - r_{j} - b} \right)}}\) and \(S_{2} \in {\mathbb{R}}^{{k_{2} \times \left( {k_{2} - r_{2} } \right)}}\) (see Corollary 2). We can then reformulate the LSQ problem with

$$L^{*} + v^{*} = \left[ {\begin{array}{*{20}c} {V_{1} A_{1} S_{1} } & 0 \\ {V_{2} A_{1} S_{1} } & {V_{2} A_{2} S_{2} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {\tilde{a}_{1} } \\ {\tilde{a}_{2} } \\ \end{array} } \right],{ }v^{T} P^{*} v \to {\text{min}}$$
(18)

where matrix \(V_{2} A_{2} S_{2}\) is a regular and \(V_{1} A_{1} S_{1}\) a full rank matrix. The partial solution \(\tilde{a}_{1}\) can be computed by solving the reduced LSQ problem, as shown in Lemma 2.

The condition regarding the S-basis restrictions can be interpreted as follows: The restrictions \(\left( {S_{2}^{ \bot } } \right)^{T}\) must exclusively eliminate the \(r_{2}\) rank deficiencies in \(A_{2} ,\) and the restrictions \(\left( {S_{1}^{ \bot } } \right)^{T}\) must eliminate the \(r_{1}\) rank deficiencies occurring in \(A_{1}\), as well as the \(b\) rank deficiencies occurring between \(A_{1}\) and \(A_{2}\) (see Lemma 3).

Lemma 3 ( Null space after transformation)

Let \(A = \left[ {\begin{array}{*{20}c} {A_{1} } & {A_{2} } \\ \end{array} } \right]\) and \(V = \left[ {\begin{array}{*{20}c} {V_{1} } & 0 & {W_{1} } \\ 0 & {V_{2} } & {W_{2} } \\ \end{array} } \right]\) be a basis matrix of \({\text{N}}\left( A \right)\), \(V_{i}\) a basis matrix of \(A_{i}\), and \(F_{1}^{T}\) a basis matrix of \({\text{N}}\left( {A_{2}^{T} } \right)\). Then, \(F_{1} \left[ {\begin{array}{*{20}c} {A_{1} } & {A_{2} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {F_{1} A_{1} } & 0 \\ \end{array} } \right]\) and with \(F_{1} AV = 0,\) it follows that \(F_{1} A_{1} \left[ {\begin{array}{*{20}c} {V_{1} } & {W_{1} } \\ \end{array} } \right] = 0\). The vectors in \(\left[ {\begin{array}{*{20}c} {V_{1} } & {W_{1} } \\ \end{array} } \right]\) are linearly independent (see Corollary 1), and \(\left[ {\begin{array}{*{20}c} {V_{1} } & {W_{1} } \\ \end{array} } \right]\) is a basis matrix of \({\text{N}}\left( {F_{1} A_{1} } \right)\) and \({\text{def}}\left( {F_{1} A_{1} } \right) = {\text{def}}\left( {A_{1} } \right) + {\text{bdef}}\left( {A_{1} ,A_{2} } \right)\).

Ionospheric-free linear combinations

In the next chapters, the GNSS processing approach of formulating IF-LC is introduced and the equivalence to the processing of UDUC observations is demonstrated. First, the general case is presented, which provides an admissible and equivalent reformulation of the UDUC network equations as introduced with Eqs. (35) for any number of signals. Then, two common dual-frequency IF approaches are explored. The first approach, commonly used in PPP, involves using one code and one phase IF-LC. The second approach, often used in PPP–RTK, involves using the HMW-LC in addition to the previously mentioned IF-LC.

General case

LC in the context of GNSS processing specifically refer to LC using only code and phase observations of a specific receiver-satellite link. They can be formulated with

$$\psi_{l} = V^{l \times l} \cdot \left[ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {\varphi_{f} } \\ {\rho_{f} } \\ \end{array} } \\ \end{array} } \right]$$
(19)

where \(\psi_{l}\) are the resulting LC and \(\left[ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {\varphi_{f}^{T} } \\ \end{array} } & {\rho_{f}^{T} } \\ \end{array} } \right]^{T}\) the code and phase observations of a receiver-satellite link on \(f = \frac{l}{2}\) different signals. Here, it is assumed that only observations of the same epoch are used.

Important properties of LC might be: IF, geometric free (GF), ionospheric maintaining (IM), and geometry maintaining (GM). After introducing \(B = \left[ {\begin{array}{*{20}c} {e_{f} } & {e_{f} } \\ { - \mu } & \mu \\ \end{array} } \right] \in {\mathbb{R}}^{2 \times l}\), we can derive specific properties of a LC \(v \cdot \left[ {\begin{array}{*{20}c} {\begin{array}{*{20}c} {\varphi_{f}^{T} } & {\rho_{f}^{T} } \\ \end{array} } \\ \end{array} } \right]^{T}\):

  1. 1.

    IF and GM LC if \(B \cdot v_{{{\text{IF}}}}^{T} = \left[ {\begin{array}{*{20}c} 1 \\ 0 \\ \end{array} } \right]\)

  2. 2.

    GF and IF LC if \(B \cdot v_{{{\text{GIF}}}}^{T} = \left[ {\begin{array}{*{20}c} 0 \\ 0 \\ \end{array} } \right]\)

  3. 3.

    GF and IM LC if \(B \cdot v_{{{\text{IM}}}}^{T} = \left[ {\begin{array}{*{20}c} 0 \\ 1 \\ \end{array} } \right]\)

In the context of GNSS processing, LC are commonly used to eliminate the ionospheric slant delay present in the UDUC observations. For the given matrix \(B\), we can find a matrix

$$V^{l \times l} = \left[ {\begin{array}{*{20}c} {v_{11} } & {v_{12} } & \cdots & {v_{1l} } \\ {v_{21} } & {v_{22} } & \cdots & {v_{2l} } \\ \vdots & \vdots & \vdots & \vdots \\ {v_{l1} } & {v_{l2} } & \cdots & {v_{3l} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {v_{1} } \\ {v_{2} } \\ \vdots \\ {v_{l} } \\ \end{array} } \right]$$
(20)

of \(l\) linear independent vectors \(v_{1} , \ldots ,v_{l}\) of which \(l - 1\) are IF and one is IM. Denoting \(V_{{{\text{IF}}}} = \left[ {\begin{array}{*{20}c} {v_{1}^{T} } & \ldots & {v_{l - 1}^{T} } \\ \end{array} } \right]^{T}\) and \(V_{IM} = v_{l}\) and applying the LC defined by \(V\) to the observations of all satellite-receiver links, we obtain the regular matrix \(W\) of the entire network:

$$W = \left[ {\begin{array}{*{20}c} {W_{{{\text{IF}}}} } \\ {W_{{{\text{IM}}}} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {I_{p} \otimes V_{{{\text{IF}}}} \otimes \left( {I_{n} \otimes I_{m} } \right)} \\ {I_{p} \otimes V_{{{\text{IM}}}} \otimes \left( {I_{n} \otimes I_{m} } \right)} \\ \end{array} } \right], W_{IF} \in {\mathbb{R}}^{z - pnm \times z} , W_{IM} \in {\mathbb{R}}^{pnm \times z}$$
(21)

With \({\text{rank}}\left( {W_{{{\text{IF}}}}^{T} } \right) = z - pnm\), \(W_{{{\text{IF}}}} \cdot A_{{{\text{ion}}}} = 0\) and \({\text{def}}\left( {A_{{{\text{ion}}}}^{T} } \right) = z - pnm,\) we can conclude that \(W_{{{\text{IF}}}}^{T}\) is a basis matrix of \({\text{N}}\left( {A_{{{\text{ion}}}}^{T} } \right)\). The transformed design matrix \(\tilde{A}^{*}\) then reads

$$\tilde{A}^{*} = WAS = \left[ {\begin{array}{*{20}c} {W_{{{\text{IF}}}} A_{1} } & 0 \\ {W_{{{\text{IM}}}} A_{1} } & {W_{{{\text{IM}}}} A_{2} } \\ \end{array} } \right]S$$
(22)

Since there exist no rank deficiencies in \(A_{{{\text{ion}}}} ,\) i.e., \({\text{def}}\left( {A_{{{\text{ion}}}} } \right) = 0\), we can find \(\left( {S^{ \bot } } \right)^{T} = \left[ {\begin{array}{*{20}c} {\left( {S_{1}^{ \bot } } \right)^{T} } & 0 \\ \end{array} } \right]\) and \(S = \left[ {\begin{array}{*{20}c} {S_{1} } & 0 \\ 0 & I \\ \end{array} } \right]\) (see Corollary 2). The full rank design matrix \(\tilde{A}\) can then be obtained with

$$\tilde{A} = \left[ {\begin{array}{*{20}c} {W_{{{\text{IF}}}}^{T} A_{1} S_{1}^{ \bot } } & 0 \\ {W_{{{\text{IM}}}}^{T} A_{1} S_{1}^{ \bot } } & {W_{{{\text{IM}}}}^{T} A_{{{\text{ion}}}} } \\ \end{array} } \right]$$
(23)

where \(W_{{{\text{IM}}}}^{T} \cdot A_{{{\text{ion}}}} \in {\mathbb{R}}^{pnm \times pnm}\) is a regular matrix. Thus, we can obtain all parameters, excluding the ionospheric slant delays, only by processing the IF observations (see Lemma 2). Both the CC-R and the CC-S basis are valid choices for an IF-LC approach since ionospheric slant delays are not used as restrictions to eliminate the rank deficiencies occurring between \(\left[ {\begin{array}{*{20}c} {A_{{{\text{rec}}}} } & {A_{{{\text{sat}}}} } \\ \end{array} } \right]\) and \(A_{{{\text{ion}}}}\). Those rank deficiencies are eliminated via restrictions on the receiver and satellite biases instead.

Note that the IF-LC combination matrix \(W_{{{\text{IF}}}}^{T}\) is a basis matrix of \({\text{N}}\left( {A_{{{\text{ion}}}}^{T} } \right)\) when epoch-wise ionospheric slant delay parameters are assumed and \(l - 1\) linear independent IF-LC for each receiver-satellite link are used. If additional temporal or spatial ionospheric constraints were introduced into the submatrix \(A_{{{\text{ion}}}}\), then \(W_{{{\text{IF}}}}^{T}\) would not be a basis matrix of the null space of the transposed partial design matrix that includes the temporal and/or spatial constraints. With the greater dimension of the null space, more observations would be required.

We can conclude that the LSQ solution of the IF-LC approach using \(l - 1\) linear independent IF-LC for each receiver-satellite link is mathematically equivalent to the solution when evaluating the UDUC network equations when ionospheric slant delays are assumed to be epoch-wise parameters. We also found that both the CC-R and CC-S S-basis restrictions are viable options for the IF-LC approach. Given that the estimation of epoch-wise ionospheric slant delays is a common assumption when processing UDUC observations, the IF-LC approach presents a valid alternative that reduces the number of observations and parameters when compared to the UDUC approach.

Current practice in dual frequency IF processing

In PPP, it is common practice to process dual-frequency GNSS observations using one IF and GM code and phase LC. The LC matrix \(V\) can then be formulated with

$$V_{{2{\text{IF}}}} = \left[ {\begin{array}{*{20}c} {\alpha_{{{\text{IF}}}} } & {\beta_{{{\text{IF}}}} } & 0 & 0 \\ 0 & 0 & {\alpha_{{{\text{IF}}}} } & {\beta_{{{\text{IF}}}} } \\ \end{array} } \right],{ }B \cdot V^{T} = \left[ {\begin{array}{*{20}c} 1 & 1 \\ 0 & 0 \\ \end{array} } \right]$$
(24)

where

$$\alpha_{{{\text{IF}}}} = \frac{{\mu_{2} }}{{\mu_{2} - \mu_{1} }},\beta_{{{\text{IF}}}} = - \frac{{\mu_{1} }}{{\mu_{2} - \mu_{1} }}$$
(25)

As demonstrated in the previous chapter and explicitly mentioned in Teunissen (2020), it is evident that this is not a valid IF reformulation of the functional model described by (3) to (5). This is due to the requirement of three linearly independent IF LC for every receiver-satellite link when considering dual-frequency observations.

When reformulating the design matrix of the ionospheric delays to introduce different ionospheric slant delay parameters for code and phase observations, i.e.,

$$A_{{2{\text{ion}}}} = I_{p} \otimes \left( {\left[ {\begin{array}{*{20}c} { - 1} & 0 \\ 0 & 1 \\ \end{array} } \right] \otimes \left( {\mu \otimes I_{nm} } \right)} \right),$$
(26)

the transposed of the matrix \(I_{p} \otimes V_{{2{\text{IF}}}} \otimes \left( {I_{n} \otimes I_{m} } \right)\) (see (21)) becomes a basis matrix of \({\text{N}}\left( {A_{{2{\text{ion}}}}^{T} } \right)\) and a valid reformulation can be achieved according to Corollary 3. The conclusion is that the implicit model assumptions, when processing only two linear independent IF-LC, are epoch-wise ionospheric slant delay parameters that are different for code and phase observations.

For the purpose of PPP–RTK based on IF-LC, it is common practice to use the HMW-LC in addition to the previously mentioned LC (24). Then, a valid reformulation with pre-eliminated ionospheric slant delays as described in Corollary 3 is achieved, and integer ambiguity resolution can be performed analog to when the UDUC observations are processed. Note that this approach does not require a reparameterization of the ambiguities. Integer estimable ambiguities can be achieved as described by Khodabandeh and Teunissen (2019), and an a priori wide-lane and narrow-lane reparameterization like it is often performed (Ge et al. 2008; Laurichesse et al. 2008) and is not required. The reparameterization of the ambiguities via an admissible ambiguity transformation (Teunissen 1995) can be done independently of the chosen IF-LC. The same applies to all other remaining parameters, including receiver and satellite phase biases. They can be estimated in the same manner as in the general UDUC approach, with the only exception being that ionospheric slant delays cannot be used as S-basis restrictions.

Single differencing

SD refers to a differencing of observations between satellites (BSSD) or between receivers (BRSD) and is most commonly performed on the same signal.

Between receiver \(A\) and \(B\), SD \({\Delta }*_{AB,j}^{s}\) can be formulated with \({\Delta }*_{AB,j}^{s} = *_{A,j}^{s} - *_{B,j}^{s}\), where \(*\) is a wildcard for either a code or phase observations. Observations from different receivers but the same signal and satellite are differenced. In the resulting observation \({\Delta }*_{AB,j}^{s}\), satellite clocks and biases of satellite \(s\) have been eliminated. BSSD can be formulated similarly with \({\Delta }*_{r,j}^{{s_{A} s_{B} }} = *_{r,j}^{{s_{A} }} - *_{r,j}^{{s_{B} }} ,\) i.e., observations of a single receiver and signal are differenced between the satellites \(s_{A}\) and \(s_{B}\). Here, the receiver clocks and biases are eliminated in the resulting BSSD observation. In this chapter, both the BRSD and BSSD matrices are introduced, but for brevity, only the derivation of the implicit assumptions of BRSD is given as the derivation of the BSSD can be done similarly.

A general formulation of the BRSD and BSSD differencing matrix based on the observation order defined by (6) and (7) is given with:

$$F_{{{\text{SD}}}}^{{{\text{rec}}}} = I_{p} \otimes I_{2f} \otimes \left( {\left[ {\begin{array}{*{20}c} { - e_{n - 1} } & {I_{n - 1} } \\ \end{array} } \right] \otimes I_{m} } \right), F_{{{\text{SD}}}}^{{{\text{sat}}}} = I_{p} \otimes I_{2nf} \otimes \left[ {\begin{array}{*{20}c} { - e_{m - 1} } & {I_{m - 1} } \\ \end{array} } \right]$$
(27)

A well-known property of BRSD is that satellite clocks and biases are eliminated, i.e., \(F_{{{\text{SD}}}}^{{{\text{rec}}}} A_{{{\text{sat}}}} = 0\). With \(A_{{{\text{sat}}}} \in {\mathbb{R}}^{{z \times pm\left( {2f + 1} \right)}}\), \({\text{rank}}\left( {A_{{{\text{sat}}}} } \right) = 2pmf\), it then follows that \({\text{def}}\left( {A_{{{\text{sat}}}}^{T} } \right) = 2pmf\left( {n - 1} \right)\). Since \(F_{{{\text{SD}}}}^{{{\text{rec}}T}} \in \mathbb{R}^{{z \times 2pmf\left( {n - 1} \right)}}\) and is a full rank matrix, it is a basis matrix of \({\text{N}}\left( {A_{{{\text{sat}}}}^{T} } \right)\). We can obtain a square and invertible matrix \(F = \left[ {\begin{array}{*{20}c} {F_{{{\text{SD}}}}^{{{\text{recT}}}} } & {F_{r}^{T} } \\ \end{array} } \right]^{T}\) with \(F_{r} \in {\mathbb{R}}^{2pmf \times z} .\)

Analog to the presented method in Corollary 3, we now use \(F\) to reformulate the design matrix \(A = \left[ {\begin{array}{*{20}c} {A_{{{\text{geo}}}} } & {A_{{{\text{rec}}}} } & {A_{{{\text{ion}}}} } & {\begin{array}{*{20}c} {A_{{{\text{amb}}}} } & {A_{{{\text{sat}}}} } \\ \end{array} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {A_{1} } & {A_{{{\text{sat}}}} } \\ \end{array} } \right]\) (note that the order of the submatrices in \(A\) has been changed for ease of notation) and obtain:

$$FAS = \left[ {\begin{array}{*{20}c} {F_{{{\text{SD}}}} } \\ {F_{r} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {A_{1} } & {A_{{{\text{sat}}}} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {S_{1} } & 0 \\ 0 & {S_{{{\text{sat}}}} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {F_{{{\text{SD}}}} A_{1} S_{1} } & 0 \\ {F_{r} A_{1} S_{1} } & {F_{r} A_{{{\text{sat}}}} S_{{{\text{sat}}}} } \\ \end{array} } \right]$$
(28)

with \(F_{r} A_{{{\text{sat}}}} S_{{{\text{sat}}}}\) being a regular matrix if and only if rank deficiencies occurring between \(A_{1}\) and \(A_{{{\text{sat}}}}\) have been eliminated with restrictions imposed on parameters belonging to \(A_{1}\).

Neither the CC-R nor the CC-S S-basis restrictions can be used to obtain the partial solution since parameters in \(x_{{{\text{sat}}}}\) are used as restrictions to eliminate rank deficiencies between \(A_{1}\) and \(A_{{{\text{sat}}}}\), or more precisely: satellite biases are used to eliminate rank deficiencies of type 3b. A valid S-basis alternative can be found by using one ionospheric slant delay per satellite as a restriction instead. The corresponding S-basis is the CC-R-SD S-basis in the case of BRSD and the CC-S-SD basis in the case of BSSD given in Table 1. One can now solve for the remaining parameters only using the SD observations \(F_{{{\text{SD}}}} \cdot L\). The solution is then equal to the parameters obtained if one had used all observations and the S-basis restrictions shown in Table 1.

Table 1 Adjustments to the CC-R and CC-S basis

With this, it has been established that the LSQ solution of the BRSD (BSSD) GNSS processing approach is mathematically equivalent to the solution of the general UDUC when satellite (receiver) clocks and biases are estimated as epoch-wise parameters. The SD approach pre-eliminates the respective parameters at an observational level, reducing the number of observations and parameters in the functional model. The pre-eliminated parameters can no longer be used to eliminate rank deficiencies, and the SD observation design matrix “inherits” the rank deficiencies between its parameters and the pre-eliminated parameters (Lemma 3). This has to be accounted for when choosing the S-basis restrictions.

Double differencing

DD can be expressed with

$$\Delta \Delta *_{AB,j}^{{s_{A} s_{B} }} = \Delta *_{AB,j}^{{s_{A} }} - \Delta *_{AB,j}^{{s_{B} }} = \Delta *_{A,j}^{{s_{A} s_{B} }} - \Delta *_{B,j}^{{s_{A} s_{B} }}$$
(29)

and can be interpreted as the difference of BRSD/BSSD between different satellites/receivers. In the DD observation \(\Delta \Delta *_{{AB,j}}^{{s_{A} s_{B} }}\), all satellite and receiver clocks and biases cancel out.

For the all-in-view network case of GNSS processing, the DD observation equations are given as,

$$F_{{{\text{DD}}}} = I_{p} \otimes I_{2f} \otimes \left( {\left[ {\begin{array}{*{20}c} { - e_{n - 1} } & {I_{n - 1} } \\ \end{array} } \right] \otimes \left[ {\begin{array}{*{20}c} { - e_{m - 1} } & {I_{m - 1} } \\ \end{array} } \right]} \right) \in {\mathbb{R}}^{{2pf\left( {n - 1} \right)\left( {m - 1} \right) \times z}}$$
(30)

and eliminate all receiver and satellite clocks and biases, i.e., \(F_{{{\text{DD}}}} \left[ {\begin{array}{*{20}c} {A_{rec} } & {A_{sat} } \\ \end{array} } \right] = 0\). We can extend the DD-matrix \(F_{{{\text{DD}}}}\) to a full rank matrix \(F = \left[ {\begin{array}{*{20}c} {F_{{{\text{DD}}}}^{T} } & {F_{\text{DR}}^{T} } \\ \end{array} } \right]^{T} ,\) and we transform the Design Matrix \(A = \left[ {\begin{array}{*{20}c} {A_{{{\text{geo}}}} } & {A_{{{\text{rec}}}} } & {A_{{{\text{ion}}}} } & {\begin{array}{*{20}c} {A_{{{\text{amb}}}} } & {\left[ {\begin{array}{*{20}c} {A_{{{\text{rec}}}} } & {A_{{{\text{sat}}}} } \\ \end{array} } \right]} \\ \end{array} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {A_{1} } & {\left[ {\begin{array}{*{20}c} {A_{{{\text{rec}}}} } & {A_{{{\text{sat}}}} } \\ \end{array} } \right]} \\ \end{array} } \right]\)  to

$${\text{FAS}} = \left[ {\begin{array}{*{20}c} {F_{{{\text{DD}}}} } \\ {F_{{{\text{DR}}}} } \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {A_{1} } & {\left[ {\begin{array}{*{20}c} {A_{{{\text{rec}}}} } & {A_{{{\text{sat}}}} } \\ \end{array} } \right]} \\ \end{array} } \right]\left[ {\begin{array}{*{20}c} {S_{1} } & 0 \\ 0 & {S_{{{\text{rs}}}} } \\ \end{array} } \right] = \left[ {\begin{array}{*{20}c} {F_{{{\text{DD}}}} A_{1} S_{1} } & 0 \\ {F_{{{\text{DR}}}} A_{1} S_{1} } & {F_{r} \left[ {\begin{array}{*{20}c} {A_{{{\text{rec}}}} } & {A_{{{\text{sat}}}} } \\ \end{array} } \right]S_{{{\text{rs}}}} } \\ \end{array} } \right]$$
(31)

The same principles apply to the DD case as to the SD case: It can be shown that \(F_{{{\text{DD}}}}\) is a basis matrix of \({\text{N}}\left( {\left[ {\begin{array}{*{20}c} {A_{{{\text{rec}}}} } & {A_{{{\text{sat}}}} } \\ \end{array} } \right]^{T} } \right)\). One can then solve the partial system of equations using only the DD observations and obtain an equal solution to the UDUC approach in which receiver and satellite clocks and biases are estimated as epoch-wise parameters when similar S-basis restrictions are chosen.

Since the rank deficiencies 2b and 3b must be eliminated in the S-basis restrictions \(\left( {S_{1}^{ \bot } } \right)^{T}\), ionospheric delays must be used as restrictions to eliminate rank deficiencies 2b and 3b instead of receiver/satellite biases, as is done in the CC models. Since biases have been assumed epoch-wise, the rank deficiencies between them and the ionospheric delays must also be eliminated at every epoch. An example S-basis is given in Table 1, denoted as CC-R-DD and CC-S-DD. The estimable ionospheric delays are then of double differenced nature.

On differencing with a constant bias assumption

As shown in the previous section, the classic SD and DD approaches are equivalent to the processing of UDUC observations when all biases and clocks are estimated as epoch-wise parameters. Since biases are usually estimated as constant daily parameters (Geng et al. 2019; Schaer et al. 2021) or as varying slowly in time, the functional model of SD and DD GNSS processing is expected to be weaker due to the greater number of implicit parameters.

The SD and DD approaches can be modified so that the assumption of constant biases is made, resulting in identical outcomes to undifferenced processing with constant biases. To obtain a modification of the SD and DD approaches with the assumption of constant biases, one must look at the null space of the transposed partial design matrices under the assumption of constant biases. The design matrices are given with

$$A_{{{\text{s}},{\text{rec}}}} = \left[ {\begin{array}{*{20}c} {I_{p} \otimes \left( {e_{2f} \otimes \left( {I_{n} \otimes e_{m} } \right)} \right)} & {e_{p} \otimes \left( {\left[ {\begin{array}{*{20}c} \lambda & 0 \\ 0 & {I_{f} } \\ \end{array} } \right] \otimes \left( {I_{n} \otimes e_{m} } \right)} \right)} \\ \end{array} } \right]$$
(32)
$$A_{{{\text{s}},{\text{sat}}}} = \left[ {\begin{array}{*{20}c} {I_{p} \otimes \left( {e_{2f} \otimes \left( { - e_{n} \otimes I_{m} } \right)} \right)} & {e_{p} \otimes \left( {\left[ {\begin{array}{*{20}c} \lambda & 0 \\ 0 & {I_{f} } \\ \end{array} } \right] \otimes \left( { - e_{n} \otimes I_{m} } \right)} \right)} \\ \end{array} } \right]$$
(33)

Note that the parameter order has been changed: The first column of both matrices contains the epoch-wise receiver/satellite clocks, and the second column the constant biases. The dimensions of the null spaces are given with

$${\text{def}}\left( {A_{{{\text{s}},{\text{sat}}}}^{T} } \right) = {\text{def}}\left( {A_{{{\text{sat}}}}^{T} } \right) + m\left( {p - 1} \right)\left( {2f - 1} \right)$$
(34)
$${\text{def}}\left( {A_{{{\text{s}},{\text{rec}}}}^{T} } \right) = {\text{def}}\left( {A_{{{\text{rec}}}}^{T} } \right) + n\left( {p - 1} \right)\left( {2f - 1} \right)$$
(35)
$${\text{def}}\left( {\left[ {\begin{array}{*{20}c} {A_{{{\text{s}},{\text{sat}}}} } & {A_{{{\text{s}},{\text{rec}}}} } \\ \end{array} } \right]^{T} } \right) = {\text{def}}\left( {\left[ {\begin{array}{*{20}c} {A_{{{\text{sat}}}} } & {A_{{{\text{rec}}}} } \\ \end{array} } \right]^{T} { }} \right) + \left( {n + m - 1} \right)\left( {2f - 1} \right)\left( {p - 1} \right)$$
(36)

The SD and DD observations (27) and (30) are also valid for the constant bias assumption, i.e., are linearly independent vectors in the null space of the respective matrix, but additional observations are required to achieve an equivalent reformulation under the assumption of constant biases. The number of additional observations increases with the number of epochs \(p\), signals \(f\), and receivers \(m\)/satellites \(n,\) respectively, as shown by (34) to (36) and will require between epoch and signal differencing in addition to the regular SD or DD. Given these considerations, the differencing approach, when assuming constant biases, does not seem to offer any significant benefits over an undifferenced approach.

Conclusions

We presented a method of reformulating the functional model of the UDUC observations to pre-eliminate parameters at an observational level. This reformulation addresses existing rank deficiencies and demonstrates how they propagate into the reformulated model. It was demonstrated that the IF and differencing approaches for processing GNSS observations are specific applications of this reformulation. By applying the reformulation methods to the UDUC observations of CDMA GNSS to obtain the various other approaches, we were able to identify the implicit assumptions made in the two IF-LC and the multiple differencing approaches presented here. All approaches, or more precisely the parameters and their VCM, are mathematically equivalent to the results obtained when the UDUC functional model is evaluated with the identified assumptions.

Specifically, when using one IF code and phase observation, the dual frequency IF-LC approach assumes epoch-wise ionospheric slant delay parameters that are different for the code and phase observations. The latter assumption is discarded when using a third IF-LC, e.g., the HMW-LC, in addition to the IF code and phase observations.

The various differencing approaches make the assumptions that the eliminated receiver and or satellite clocks and biases are epoch-wise parameters in the functional model of the UDUC observations. With the general theory behind the reformulation of the original model, it would be possible to adapt the differencing approaches to make the implicit assumption of constant biases.

Understanding the implicit assumptions in the various methods of processing GNSS observations helps us to fairly compare the different approaches, their performance, and the estimated parameters. When combining satellite clocks and biases computed by different data centers into one consistent solution, it is essential to be aware of the underlying functional models and imposed S-basis restrictions since they affect the interpretation of those parameters. Furthermore, the presented reformulation can be applied to other methods of GNSS processing where LC of observations are used. One example is given with cycle slip detection in the preprocessing of GNSS observations. With the presented methods and ideas, implicit assumptions in various established cycle slip detection methods could be detected and applied to, e.g., UDUC GNSS observations.