use of jkind.lustre.values.RealValue in project AGREE by loonwerks.
the class TcgXmlWriter method writeSignal.
private void writeSignal(int k, Signal<Value> signal) throws Exception {
String name = escapeXml(signal.getName());
// TODO: fix this with the type map!
Type type;
if (signal.getValues().isEmpty()) {
throw new TcgException("Unable to assertain signal type in XmlWriter");
} else {
Map.Entry<Integer, Value> entry = signal.getValues().entrySet().iterator().next();
Value v = entry.getValue();
if (v instanceof IntegerValue) {
type = NamedType.INT;
} else if (v instanceof RealValue) {
type = NamedType.REAL;
} else if (v instanceof BooleanValue) {
type = NamedType.BOOL;
} else {
throw new TcgException("Unexpected signal type in XmlWriter");
}
}
out.println(" <Signal name=\"" + name + "\" type=\"" + type + "\">");
for (int i = 0; i < k; i++) {
out.println(" <Value time=\"" + i + "\">" + formatValue(signal.getValue(i)) + "</Value>");
}
out.println(" </Signal>");
}
use of jkind.lustre.values.RealValue in project AGREE by loonwerks.
the class Main method testReal.
private static void testReal() throws IOException {
System.out.println("=============Real Test=============");
final Evaluator baseEvaluator = createEvaluator(INPUT_DIRECTORY + "symb_test_real.lus");
final Evaluator evaluator = new Evaluator(baseEvaluator, Arrays.asList(new BinaryExpr(new IdExpr("__SIM_PE___ASSUME0"), BinaryOp.EQUAL, new BoolExpr(true)), new BinaryExpr(new IdExpr("__SIM_PE___ASSUME1"), BinaryOp.EQUAL, new BoolExpr(true)), new BinaryExpr(new IdExpr("__SIM_PE__TOP__ss__TILDE__0__DOT____GUARANTEE0"), BinaryOp.EQUAL, new BoolExpr(true)), new BinaryExpr(new IdExpr("__SIM_PE__TOP__ss__TILDE__0__DOT____GUARANTEE1"), BinaryOp.EQUAL, new BoolExpr(true)), new BinaryExpr(new IdExpr("in1"), BinaryOp.EQUAL, new RealExpr(BigDecimal.valueOf(60))), new BinaryExpr(new IdExpr("in2"), BinaryOp.EQUAL, new RealExpr(BigDecimal.valueOf(10)))));
testValue("in1", evaluator, new RealValue(BigFraction.valueOf(BigDecimal.valueOf(60))));
testValue("in2", evaluator, new RealValue(BigFraction.valueOf(BigDecimal.valueOf(10))));
testValue("out1", evaluator, new RealValue(BigFraction.valueOf(BigDecimal.valueOf(30))));
testValue("out2", evaluator, new RealValue(BigFraction.valueOf(BigDecimal.valueOf(20))));
}
use of jkind.lustre.values.RealValue in project AGREE by loonwerks.
the class CounterexampleLoaderHelper method lustreValueToInputConstraint.
private InputConstraint lustreValueToInputConstraint(final Value value) {
if (value instanceof BooleanValue) {
final BooleanLiteral ic = InputConstraintFactory.eINSTANCE.createBooleanLiteral();
ic.setValue(((BooleanValue) value).value);
return ic;
} else if (value instanceof IntegerValue) {
final IntegerLiteral ic = InputConstraintFactory.eINSTANCE.createIntegerLiteral();
ic.setValue(((IntegerValue) value).value);
return ic;
} else if (value instanceof RealValue) {
final BigFraction fraction = ((RealValue) value).value;
final BinaryExpression ic = ExpressionFactory.createFraction(fraction.getNumerator(), fraction.getDenominator());
return ic;
} else {
throw new RuntimeException("Unsupported value type: " + value.getClass());
}
}
use of jkind.lustre.values.RealValue in project AGREE by loonwerks.
the class AGREESimulationState method getConstantLustreValue.
// Returns the raw value stored in the counterexample provided by JKind
public Value getConstantLustreValue(final int frameIndex, final Object constant) {
if (frameIndex < 0 || frameIndex > frameInfos.size()) {
throw new IllegalArgumentException("frameIndex is outside the valid range");
}
final ConstStatement constStatement = asConstant(constant);
final com.rockwellcollins.atc.agree.agree.Expr agreeExpr = constStatement.getExpr();
if (agreeExpr instanceof IntLitExpr) {
return new IntegerValue(new BigInteger(((IntLitExpr) agreeExpr).getVal(), 10));
} else if (agreeExpr instanceof RealLitExpr) {
BigDecimal bd = new BigDecimal(((RealLitExpr) agreeExpr).getVal());
if (bd.scale() < 0) {
bd = bd.setScale(0);
}
return new RealValue(new BigFraction(bd.unscaledValue(), BigInteger.TEN.pow(bd.scale())));
} else if (agreeExpr instanceof BoolLitExpr) {
return BooleanValue.fromBoolean(((BoolLitExpr) agreeExpr).getVal().getValue());
} else {
return null;
}
}
use of jkind.lustre.values.RealValue in project AGREE by loonwerks.
the class FrameAssertionHelper method valueToExpr.
private static Expr valueToExpr(final Value value) {
assert value != null;
if (value instanceof ArrayValue) {
final ArrayValue arrayValue = (ArrayValue) value;
final ArrayList<Expr> exprList = new ArrayList<Expr>(arrayValue.elements.size());
for (final Value childValue : arrayValue.elements) {
exprList.add(valueToExpr(childValue));
}
return new ArrayExpr(exprList);
} else if (value instanceof BooleanValue) {
return new BoolExpr(((BooleanValue) value).value);
} else if (value instanceof EnumValue) {
return new IdExpr(((EnumValue) value).value);
} else if (value instanceof IntegerValue) {
return new IntExpr(((IntegerValue) value).value);
} else if (value instanceof RealValue) {
final BigFraction fraction = ((RealValue) value).value;
return new BinaryExpr(new RealExpr(new BigDecimal(fraction.getNumerator())), BinaryOp.DIVIDE, new RealExpr(new BigDecimal(fraction.getDenominator())));
}
if (value instanceof TupleValue) {
final TupleValue tupleValue = (TupleValue) value;
final ArrayList<Expr> exprList = new ArrayList<Expr>(tupleValue.elements.size());
for (final Value childValue : tupleValue.elements) {
exprList.add(valueToExpr(childValue));
}
return new TupleExpr(exprList);
} else {
throw new RuntimeException("Unhandled case. Value is of type: " + value.getClass());
}
}
Aggregations