sml to cpp: rework extractor's properties for concept

- use concept expansion instead of relying on recursion