def getMarabouQuery(self): """ Function to convert network into Marabou Query Returns: ipq: (MarabouCore.InputQuery) representing query """ ipq = MarabouCore.InputQuery() ipq.setNumberOfVariables(self.numVars) print("num vars = ", self.numVars) i = 0 # TODO: this is necessary, so IF should be added (if user define -> use the userdefined, else use regular inputs) if len(self.userDefineInputVars) > 0: for inputVar in self.userDefineInputVars: ipq.markInputVariable(inputVar, i) i += 1 print("userDefineInputVar", inputVar) else: for inputVarArray in self.inputVars: for inputVar in inputVarArray.flatten(): # ipq.markInputVariable(inputVar, i) i += 1 print("inputVar", inputVar) i = 0 for outputVar in self.outputVars.flatten(): ipq.markOutputVariable(outputVar, i) i += 1 print("outputVar", outputVar) for e in self.equList: eq = MarabouCore.Equation(e.EquationType) for (c, v) in e.addendList: assert v < self.numVars eq.addAddend(c, v) eq.setScalar(e.scalar) ipq.addEquation(eq) for r in self.reluList: assert r[1] < self.numVars and r[0] < self.numVars MarabouCore.addReluConstraint(ipq, r[0], r[1]) for m in self.maxList: assert m[1] < self.numVars for e in m[0]: assert e < self.numVars MarabouCore.addMaxConstraint(ipq, m[0], m[1]) for l in self.lowerBounds: assert l < self.numVars ipq.setLowerBound(l, self.lowerBounds[l]) for u in self.upperBounds: assert u < self.numVars ipq.setUpperBound(u, self.upperBounds[u]) return ipq
def getMarabouQuery(self): """Function to convert network into Marabou InputQuery Returns: :class:`~maraboupy.MarabouCore.InputQuery` """ ipq = MarabouCore.InputQuery() ipq.setNumberOfVariables(self.numVars) i = 0 for inputVarArray in self.inputVars: for inputVar in inputVarArray.flatten(): ipq.markInputVariable(inputVar, i) i += 1 i = 0 for outputVar in self.outputVars.flatten(): ipq.markOutputVariable(outputVar, i) i += 1 for e in self.equList: eq = MarabouCore.Equation(e.EquationType) for (c, v) in e.addendList: assert v < self.numVars eq.addAddend(c, v) eq.setScalar(e.scalar) ipq.addEquation(eq) for r in self.reluList: assert r[1] < self.numVars and r[0] < self.numVars MarabouCore.addReluConstraint(ipq, r[0], r[1]) for m in self.maxList: assert m[1] < self.numVars for e in m[0]: assert e < self.numVars MarabouCore.addMaxConstraint(ipq, m[0], m[1]) for b, f in self.absList: MarabouCore.addAbsConstraint(ipq, b, f) for b, f in self.signList: MarabouCore.addSignConstraint(ipq, b, f) for disjunction in self.disjunctionList: MarabouCore.addDisjunctionConstraint(ipq, disjunction) for l in self.lowerBounds: assert l < self.numVars ipq.setLowerBound(l, self.lowerBounds[l]) for u in self.upperBounds: assert u < self.numVars ipq.setUpperBound(u, self.upperBounds[u]) return ipq
def getMarabouQuery(self): """ Function to convert network into Marabou Query Returns: ipq: (MarabouCore.InputQuery) representing query """ ipq = MarabouCore.InputQuery() ipq.setNumberOfVariables(self.numVars) i = 0 for inputVarArray in self.inputVars: for inputVar in inputVarArray.flatten(): ipq.markInputVariable(inputVar, i) i += 1 i = 0 for outputVar in self.outputVars.flatten(): ipq.markOutputVariable(outputVar, i) i += 1 for e in self.equList: eq = MarabouCore.Equation(e.EquationType) for (c, v) in e.addendList: assert v < self.numVars eq.addAddend(c, v) eq.setScalar(e.scalar) ipq.addEquation(eq) for r in self.reluList: assert r[1] < self.numVars and r[0] < self.numVars MarabouCore.addReluConstraint(ipq, r[0], r[1]) for m in self.maxList: assert m[1] < self.numVars for e in m[0]: assert e < self.numVars MarabouCore.addMaxConstraint(ipq, m[0], m[1]) for l in self.lowerBounds: assert l < self.numVars ipq.setLowerBound(l, self.lowerBounds[l]) for u in self.upperBounds: assert u < self.numVars ipq.setUpperBound(u, self.upperBounds[u]) for i, var in enumerate(self.inputVars[0]): ipq.markInputVariable(i, var) for i, var in enumerate(self.outputVars[0]): ipq.markOutputVariable(i, var) return ipq
def getMarabouQuery(self): """ Function to convert network into Marabou Query Returns: ipq: (MarabouCore.InputQuery) representing query """ ipq = MarabouCore.InputQuery() ipq.setNumberOfVariables(self.numVars) for e in self.equList: eq = MarabouCore.Equation(e.EquationType) for (c, v) in e.addendList: assert v < self.numVars eq.addAddend(c, v) eq.setScalar(e.scalar) ipq.addEquation(eq) for r in self.reluList: assert r[1] < self.numVars and r[0] < self.numVars MarabouCore.addReluConstraint(ipq, r[0], r[1]) for m in self.maxList: assert m[1] < self.numVars for e in m[0]: assert e < self.numVars MarabouCore.addMaxConstraint(ipq, m[0], m[1]) for l in self.lowerBounds: assert l < self.numVars ipq.setLowerBound(l, self.lowerBounds[l]) for u in self.upperBounds: assert u < self.numVars ipq.setUpperBound(u, self.upperBounds[u]) return ipq
def assert_max_constraint(self, c): MarabouCore.addMaxConstraint( self.ipq, {self.get_new_var(c.var1in), self.get_new_var(c.var2in)}, self.get_new_var(c.varout))