You are correct about my interpretation of "unfold" differing from yours. I assumed it was meant to be identical to "fold", except that no points were removed. In other words, "unfold" has a direction just as "fold" does, and only the points on one side of the crease get replicated. So when I said "unfold a to b", that was a different operation from "unfold b to a". That seemed most analogous to unfolding a physical piece of paper. If the intent was that "unfold" has no direction, and is symmetrical about the crease, with points on both sides of the crease being replicated on the opposite side, then my solution would indeed include i in the set, and would be incorrect. In that case, saying "reflect a with b" would be clearer than "unfold a to b", since it avoids arbitrarily introducing a direction into the operation. In the context of the original definition, the description of "unfold" followed the description of "fold", and it sounded to me like it was meant to be same as "fold" except that no points were removed, but it could be interpreted either way. If the definition is taken out of context, then it's much clearer that it should be symmetrical about the crease, and that it has no direction. The general procedure for constructing arbitrary sets of points should work with either definition, but when trying to find minimal solutions, the difference clearly matters. Tom Allan Wechsler writes:
I think Tom's 3-step solution is incorrect, and produces i as well as the desired 3 points. But this could be interpreted as a difference of opinion about what the "unfold" operation does. I imagined "unfold" as the union of the original set and its reflection around the crease. Christian's web app agrees with me.
Christian: how big is the original Elm program?