else if ("/".equals(head)) return ((PreSequence)walk(tree, 0)).sparse((Element)walk(tree, 1));
else if ("~".equals(head)) return new Hack(new Atom.Invert(new Atom.Infer((Element)walk(tree, 0))));
else if ("ps".equals(head)) return new PreSequence((Element[])walk(tree,0));
- else if ("qprod".equals(head)) {
+ else if ("ps2".equals(head)) {
+ return (new PreSequence((Element[])walk(tree,0))).sparse((Element)walk(tree, 1));
+ } else if ("qprod".equals(head)) {
String s = string(tree.child(0));
return new PreSequence(new Element[] { string(s) }, s, new boolean[] { true }).buildSequence();
} else if ("[".equals(head)) {