System.out.println("solving");
    public void solve(CSFComponentDescription cd) throws SmartFrogCompileResolutionException {        top = cd;        // create the theory        try {            String filename = System.getProperty(theoryFileProperty);            if (filename == null) filename = theoryFile;            InputStream prologStream = SFClassLoader.getResourceAsStream(filename);            //System.out.println(filename);            prepareTheory(prologStream);        } catch (Exception e) {            throw new SmartFrogCompileResolutionException("unable to parse base theory for constraint resolution", e);        }        // collect and process the constraints        try {            collectConstraints();        } catch (Exception e) {            throw new SmartFrogCompileResolutionException("Error collectiong constraints during contraint resolution", e);        }        // solve the constraints        bindings = solveConstraints(initialBindings);        if (bindings == null) {            throw new SmartFrogCompileResolutionException("Constraint resolution failed - probable inconsistency in constraints");        }        // map values back        try {            mapBindings();        } catch (Exception e) {            throw new SmartFrogCompileResolutionException("Error updating description with variable bindings during constraint resolution", e);        }    }