def product(lags, Vx, Vt, Cx, Ct):
    """Product model

    Separable space-time variogram model. This model is based on the product
    of the marginal space and time models.

    Parameters
    ----------
    lags : tuple
        Tuple of the space (x) and time (t) lag given as tuple: (x, t) which
        will be used to calculate the dependent semivariance.
    Vx : skgstat.Variogram.fitted_model
        instance of the space marginal variogram with a fitted theoretical
        model sufficiently describing the marginal. If this model does not fit
        the experimental variogram, the space-time model fit will be poor as
        well.
    Vt : skgstat.Variogram.fitted_model
        instance of the time marginal variogram with a fitted theoretical
        model sufficiently describing the marginal. If this model does not fit
        the experimental variogram, the space-time model fit will be poor as
        well.
    Cx : float
        Marginal space sill.
    Ct : float
        Marignal time sill.

    Returns
    -------
    gamma : float
        The semi-variance modeled for the given lags.

    Notes
    -----
    The product sum model is implemented following [14]_:

    .. math::
        \gamma (h,t) = C_x * \gamma_t(t) + C_t * \gamma_x(h) - \gamma_x(h) * \gamma_t(t) 
    
    Where :math:`\gamma_x(h)` is the spatial marginal variogram and 
    :math:`\gamma_t(t)` is the temporal marginal variogram.

    References
    ----------
    .. [14] De Cesare, L., Myers, D., and Pose, D. (201b), FORTRAN 77 programs
       for space-time modeling, Computers & Geoscience 28, 205-212.

    """
    h, t = lags
    return Cx * Vt(t) + Ct * Vx(h) - Vx(h) * Vt(t)