predicate Sorted(a: string, low:int, high:int)
requires 0 <= low <= high <= |a|
forall j, k :: low <= j < k < high ==> a[j] <= a[k]
method String3Sort(a: string) returns (b: string)
ensures Sorted(b, 0, |b|);
ensures multiset{b[0], b[1], b[2]} == multiset{a[0], a[1], a[2]};
b := b[0 := b[1]][1 := b[0]];
b := b[1 := b[2]][2 := b[1]];
b := b[0 := b[1]][1 := b[0]];
var b:string := String3Sort(a);
var b1:string := String3Sort(a1);
var b2:string := String3Sort(a2);
var b3:string := String3Sort(a3);
var b4:string := String3Sort(a4);
var b5:string := String3Sort(a5);
var b6:string := String3Sort(a6);
var b7:string := String3Sort(a7);
var b8:string := String3Sort(a8);
var b9:string := String3Sort(a9);
var b10:string := String3Sort(a10);