package org.batfish.z3; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import com.microsoft.z3.BitVecExpr; import com.microsoft.z3.BoolExpr; import com.microsoft.z3.Context; import com.microsoft.z3.FuncDecl; public class NodProgram { private Context _context; private final List<BoolExpr> _queries; private final Map<String, FuncDecl> _relationDeclarations; private final List<BoolExpr> _rules; private final Map<String, BitVecExpr> _variables; private final Map<String, BitVecExpr> _variablesAsConsts; private final Map<String, Integer> _variableSizes; public NodProgram(Context context) { _context = context; _queries = new ArrayList<>(); _relationDeclarations = new LinkedHashMap<>(); _rules = new ArrayList<>(); _variables = new LinkedHashMap<>(); _variableSizes = new LinkedHashMap<>(); _variablesAsConsts = new LinkedHashMap<>(); } public NodProgram append(NodProgram queryProgram) { NodProgram result = new NodProgram(_context); result._queries.addAll(_queries); result._relationDeclarations.putAll(_relationDeclarations); result._rules.addAll(_rules); result._variables.putAll(_variables); result._variableSizes.putAll(_variableSizes); result._variablesAsConsts.putAll(_variablesAsConsts); result._queries.addAll(queryProgram._queries); result._relationDeclarations.putAll(queryProgram._relationDeclarations); result._rules.addAll(queryProgram._rules); result._variables.putAll(queryProgram._variables); result._variableSizes.putAll(queryProgram._variableSizes); result._variablesAsConsts.putAll(queryProgram._variablesAsConsts); return result; } public Context getContext() { return _context; } public List<BoolExpr> getQueries() { return _queries; } public Map<String, FuncDecl> getRelationDeclarations() { return _relationDeclarations; } public List<BoolExpr> getRules() { return _rules; } public Map<String, BitVecExpr> getVariables() { return _variables; } public Map<String, BitVecExpr> getVariablesAsConsts() { return _variablesAsConsts; } public Map<String, Integer> getVariableSizes() { return _variableSizes; } }