diff --git a/cadbiom/models/clause_constraints/mcl/MCLSolutions.py b/cadbiom/models/clause_constraints/mcl/MCLSolutions.py
index 89d88ab066350b8079ab00e3c8333fdef4ebb8f3..bbb11599578d420a0194230b0e8d6b7ef4633033 100644
--- a/cadbiom/models/clause_constraints/mcl/MCLSolutions.py
+++ b/cadbiom/models/clause_constraints/mcl/MCLSolutions.py
@@ -228,15 +228,15 @@ class RawSolution(object):
         """
         extract active __inputs and clocks from a state vector
         """
-        out = []
-        for s_varcode in s_vector:
-            cond1 = s_varcode in self.__unfolder.get_inputs()
-            cond2 = s_varcode in self.__unfolder.get_free_clocks()
-            if cond1 or cond2:
-                if s_varcode > 0:
-                    out.append(s_varcode)
-        return out
-     
+
+        inputs      = frozenset(self.__unfolder.get_inputs())
+        free_clocks = frozenset(self.__unfolder.get_free_clocks())
+
+        return [s_varcode for s_varcode in s_vector
+                if (s_varcode > 0)
+                and ((s_varcode in inputs)
+                    or (s_varcode in free_clocks))]
+
 
     def extract_act_input_clock_seq(self):
         """