protected SNorm extractSNorm(String line) {
        List<String> token = Op.split(line, ":");
        if (token.size() != 2) {
            throw new RuntimeException("[syntax error] "
                    + "expected property of type (key : value) in line: " + line);
        }
        String name = token.get(1).trim();
        String className = name;
        if ("MAX".equals(name)) {
            className = Maximum.class.getSimpleName();
        } else if ("ASUM".equals(name)) {
            className = AlgebraicSum.class.getSimpleName();
        } else if ("BSUM".equals(name)) {
            className = BoundedSum.class.getSimpleName();
        } else if ("NSUM".equals(name)) {
            className = NormalizedSum.class.getSimpleName();
        } else if ("DSUM".equals(name)) {
            className = DrasticSum.class.getSimpleName();
        } else if ("ESUM".equals(name)) {
            className = EinsteinSum.class.getSimpleName();
        } else if ("HSUM".equals(name)) {
            className = HamacherSum.class.getSimpleName();
        }
        return FactoryManager.instance().snorm().createInstance(className);
    }