TODO: this does not actually work!
We would like to use a constraint c created in context Δ from module N
in the current context Γ and current module M.
Δ is module tel Δ₁ of N extended by some local bindings Δ₂.
Γ is the current context.
The module parameter substitution from current M to N be
Γ ⊢ σ : Δ₁.
If M == N, we do not need the parameter substitution. We try raising.
We first strengthen Δ ⊢ c to live in Δ₁ and obtain c₁ = strengthen Δ₂ c.
We then transport c₁ to Γ and obtain c₂ = applySubst σ c₁.
This works for different modules, but if M == N we should not strengthen
and then weaken, because strengthening is a partial operation.
We should rather lift the substitution σ by Δ₂ and then
raise by Γ₂ - Δ₂.
This "raising" might be a strengthening if Γ₂ is shorter than Δ₂.
(TODO: If the module substitution does not exist, because N is not
a parent of M, we cannot use the constraint, as it has been created
in an unrelated context.)