Give proper semantics to nested marks in programs.
Give proper semantics to nested marks in programs.

Suppose that marks appear in order L1, L2, L3 in a program.
Previously, x@L2@L1@L3 would end up with the value of x at mark L1 (the latest mark encountered by WP, that is, the earliest mark in the program).
Now, x@L2@L1@L3 will end up with the value of x at mark L2 (the innermost mark in the expression).

From a WP point of view, the sequence was
x@L2@L1@L3 -> x@L2@L1@now (L3) -> x@L2@L1 (unref) -> x@now@L1 (L2) -> x@now@L1 (unref) -> x@now@now (L1) -> x_L1 (unref).
Now the sequence of substitution is
x@L2@L1@L3 -> x@L2@L1@now (L3) -> x@L2@L1 (unref) -> x@now@L1 (L2) -> x_L2 (unref).

ssaavedra/why3,ssaavedra/why3,ssaavedra/why3,jpdeplaix/why3,douglas-larocca/why3,jpdeplaix/why3,douglas-larocca/why3,jpdeplaix/why3,douglas-larocca/why3