Trace5

type t
var p(X:t) : bool
var q : bool

var y : t

after init {
   p(X) := true
}

action b(x:t) = {
    p(x) := false
}

action a = {
    q := *;
    while q
    invariant p(X)
    {
        var x : t;
        call b(x)
    }
}

invariant p(X)


export a