You definition of loop invariant is not exactly correct. Essentially it should be true only before and after each loop repetition. WikiPedia have nice definition.
The invariant of this loop would be: the values[x] and values[x + 1] are maybe not sorted or x is the last index
it's true before and after each loop iteration. And it's still true right after loop combined with false
for loop condition:
i, temp : integer;
values : array[1..100] of integer;
x := 1;
while x < 100 loop
// the values[x] and values[x + 1] are maybe not sorted or x is the last index - true
if values[x] > values[x+1] then begin
temp := values[x];
values[x] := values[x+1];
values[x+1] := temp;
end if;
x := x + 1;
// the values[x] and values[x + 1] are maybe not sorted or x is the last index - true
end loop;
// the values[x] and values[x + 1] are maybe not sorted or x is the last index - true
// and x >= 100 - true
naturally, loop invariant should be related to loop body and the task it performs. The loop invariant insures that on each step of the loop you have same conditions for the loop body to perform.