]> startSort c Id c http://example.com/2009/prd#sort.Control c id Id &pred;numeric-equal Id InitTask c id SortTask startDisplay c Id c http://example.com/2009/prd#sort.Control c id Id &pred;numeric-equal Id SortTask c id DisplayTask switchPosition first second c Id p1 p2 v1 v2 c http://example.com/2009/prd#sort.Control c id Id &pred;numeric-equal Id SortTask first http://example.com/2009/prd#sort.Element first position p1 value v1 second http://example.com/2009/prd#sort.Element second value v2 position p2 &pred;numeric-greater-than v2 first.value &pred;numeric-less-than p2 first.position first position p2 second position p1 incrementPosition e1 e2 c Id p1 p2 v1 v2 c http://example.com/2009/prd#sort.Control c id Id &pred;numeric-equal Id SortTask e1 http://example.com/2009/prd#sort.Element e2 http://example.com/2009/prd#sort.Element e2 value v2 position p2 &pred;numeric-greater-than v2 e1.value &pred;numeric-equal p2 e1.position e2 position &func;numeric-add e1.position 1 displayElement c e Id c http://example.com/2009/prd#sort.Control c id Id &pred;numeric-equal Id DisplayTask e http://example.com/2009/prd#sort.Element v e value v p e position p &act;print &func;concat value v is at position p