procedure main() s1 := ["the","that","a"] s2 := ["frog","elephant","thing"] s3 := ["walked","treaded","grows"] s4 := ["slowly","quickly"] write(amb(!s1,!s2,!s3,!s4)) end procedure amb(exprs[]) s := "" every e := !exprs do { if \c ~== e[1] then fail c := e[-1] s ||:= e || " " } return s end