/** * Copyright (c) 2012-2016 Marsha Chechik, Alessio Di Sandro, Michalis Famelis, * Rick Salay. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Alessio Di Sandro - Implementation. */ package edu.toronto.cs.se.modelepedia.z3; import com.microsoft.z3.Model; import com.microsoft.z3.Status; public class Z3Model { public enum Z3Result { SAT, UNSAT, UNKNOWN; public static Z3Result toZ3Result(Status z3Status) { switch (z3Status) { case UNSATISFIABLE: return UNSAT; case SATISFIABLE: return SAT; default: return UNKNOWN; } } public boolean isSAT() { switch(this) { case SAT: return true; case UNSAT: case UNKNOWN: default: return false; } } } private Z3Result z3Result; private Model z3InternalModel; public Z3Model(Z3Result z3Bool, Model z3InternalModel) { this.z3Result = z3Bool; this.z3InternalModel = z3InternalModel; } public Z3Model(Status z3Status, Model z3InternalModel) { this.z3Result = Z3Result.toZ3Result(z3Status); this.z3InternalModel = z3InternalModel; } public Z3Result getZ3Result() { return z3Result; } public Model getZ3InternalModel() { return z3InternalModel; } }