Search in sources :

Example 1 with BigFraction

use of jkind.util.BigFraction 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());
    }
}
Also used : RealValue(jkind.lustre.values.RealValue) BigFraction(jkind.util.BigFraction) BinaryExpression(edu.uah.rsesc.aadlsimulator.xtext.inputConstraint.BinaryExpression) BooleanLiteral(edu.uah.rsesc.aadlsimulator.xtext.inputConstraint.BooleanLiteral) BooleanValue(jkind.lustre.values.BooleanValue) IntegerValue(jkind.lustre.values.IntegerValue) IntegerLiteral(edu.uah.rsesc.aadlsimulator.xtext.inputConstraint.IntegerLiteral)

Example 2 with BigFraction

use of jkind.util.BigFraction 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;
    }
}
Also used : RealValue(jkind.lustre.values.RealValue) BoolLitExpr(com.rockwellcollins.atc.agree.agree.BoolLitExpr) BigFraction(jkind.util.BigFraction) IntegerValue(jkind.lustre.values.IntegerValue) BigDecimal(java.math.BigDecimal) ConstStatement(com.rockwellcollins.atc.agree.agree.ConstStatement) IntLitExpr(com.rockwellcollins.atc.agree.agree.IntLitExpr) BigInteger(java.math.BigInteger) RealLitExpr(com.rockwellcollins.atc.agree.agree.RealLitExpr)

Example 3 with BigFraction

use of jkind.util.BigFraction 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());
    }
}
Also used : RealValue(jkind.lustre.values.RealValue) BoolExpr(jkind.lustre.BoolExpr) IdExpr(jkind.lustre.IdExpr) BigFraction(jkind.util.BigFraction) EnumValue(jkind.lustre.values.EnumValue) IntegerValue(jkind.lustre.values.IntegerValue) BinaryExpr(jkind.lustre.BinaryExpr) ArrayList(java.util.ArrayList) BigDecimal(java.math.BigDecimal) TupleValue(jkind.lustre.values.TupleValue) TupleExpr(jkind.lustre.TupleExpr) ArrayExpr(jkind.lustre.ArrayExpr) BoolExpr(jkind.lustre.BoolExpr) BinaryExpr(jkind.lustre.BinaryExpr) RealExpr(jkind.lustre.RealExpr) TupleExpr(jkind.lustre.TupleExpr) ArrayExpr(jkind.lustre.ArrayExpr) Expr(jkind.lustre.Expr) IntExpr(jkind.lustre.IntExpr) IdExpr(jkind.lustre.IdExpr) BooleanValue(jkind.lustre.values.BooleanValue) RealValue(jkind.lustre.values.RealValue) TupleValue(jkind.lustre.values.TupleValue) Value(jkind.lustre.values.Value) EnumValue(jkind.lustre.values.EnumValue) ArrayValue(jkind.lustre.values.ArrayValue) BooleanValue(jkind.lustre.values.BooleanValue) IntegerValue(jkind.lustre.values.IntegerValue) IntExpr(jkind.lustre.IntExpr) ArrayValue(jkind.lustre.values.ArrayValue) RealExpr(jkind.lustre.RealExpr)

Example 4 with BigFraction

use of jkind.util.BigFraction in project AGREE by loonwerks.

the class AGREESimulationState method convertLustreValue.

/**
 * Converts a JKind API Lustre value to types that are independent of the JKind API. In cases where there isn't an equivalent type in the standard
 * Java API, the original type will be preserved. Throws an
 * @param value non-null value object.
 * @throws RuntimeException if the value is not of a supported type.
 * @return
 */
private Object convertLustreValue(final Value value) {
    assert value != null;
    if (value instanceof ArrayValue) {
        final ArrayValue arrayValue = (ArrayValue) value;
        final ArrayList<Object> newList = new ArrayList<Object>(arrayValue.elements.size());
        for (final Value childValue : arrayValue.elements) {
            newList.add(convertLustreValue(childValue));
        }
        return newList;
    } else if (value instanceof BooleanValue) {
        return ((BooleanValue) value).value;
    } else if (value instanceof EnumValue) {
        return ((EnumValue) value).value;
    } else if (value instanceof IntegerValue) {
        return ((IntegerValue) value).value;
    } else if (value instanceof RealValue) {
        final BigFraction fraction = ((RealValue) value).value;
        return new Rational(fraction.getNumerator(), fraction.getDenominator());
    } else if (value instanceof RecordValue) {
        final RecordValue recordValue = (RecordValue) value;
        final Map<String, Object> newMap = new HashMap<String, Object>();
        for (final Entry<String, Value> entry : recordValue.fields.entrySet()) {
            newMap.put(entry.getKey(), convertLustreValue(entry.getValue()));
        }
        return newMap;
    } else if (value instanceof TupleValue) {
        final TupleValue tupleValue = (TupleValue) value;
        final ArrayList<Object> newList = new ArrayList<Object>(tupleValue.elements.size());
        for (final Value childValue : tupleValue.elements) {
            newList.add(convertLustreValue(childValue));
        }
        return newList;
    } else {
        throw new RuntimeException("Unhandled case. Value is of type: " + value.getClass());
    }
}
Also used : RealValue(jkind.lustre.values.RealValue) BigFraction(jkind.util.BigFraction) Rational(edu.uah.rsesc.aadlsimulator.Rational) EnumValue(jkind.lustre.values.EnumValue) IntegerValue(jkind.lustre.values.IntegerValue) ArrayList(java.util.ArrayList) RecordValue(jkind.lustre.values.RecordValue) TupleValue(jkind.lustre.values.TupleValue) Entry(java.util.Map.Entry) BooleanValue(jkind.lustre.values.BooleanValue) TupleValue(jkind.lustre.values.TupleValue) IntegerValue(jkind.lustre.values.IntegerValue) BooleanValue(jkind.lustre.values.BooleanValue) RealValue(jkind.lustre.values.RealValue) RecordValue(jkind.lustre.values.RecordValue) Value(jkind.lustre.values.Value) EnumValue(jkind.lustre.values.EnumValue) ArrayValue(jkind.lustre.values.ArrayValue) EObject(org.eclipse.emf.ecore.EObject) InstanceObject(org.osate.aadl2.instance.InstanceObject) ArrayValue(jkind.lustre.values.ArrayValue) Map(java.util.Map) HashMap(java.util.HashMap)

Aggregations

IntegerValue (jkind.lustre.values.IntegerValue)4 RealValue (jkind.lustre.values.RealValue)4 BigFraction (jkind.util.BigFraction)4 BooleanValue (jkind.lustre.values.BooleanValue)3 BigDecimal (java.math.BigDecimal)2 ArrayList (java.util.ArrayList)2 ArrayValue (jkind.lustre.values.ArrayValue)2 EnumValue (jkind.lustre.values.EnumValue)2 TupleValue (jkind.lustre.values.TupleValue)2 Value (jkind.lustre.values.Value)2 BoolLitExpr (com.rockwellcollins.atc.agree.agree.BoolLitExpr)1 ConstStatement (com.rockwellcollins.atc.agree.agree.ConstStatement)1 IntLitExpr (com.rockwellcollins.atc.agree.agree.IntLitExpr)1 RealLitExpr (com.rockwellcollins.atc.agree.agree.RealLitExpr)1 Rational (edu.uah.rsesc.aadlsimulator.Rational)1 BinaryExpression (edu.uah.rsesc.aadlsimulator.xtext.inputConstraint.BinaryExpression)1 BooleanLiteral (edu.uah.rsesc.aadlsimulator.xtext.inputConstraint.BooleanLiteral)1 IntegerLiteral (edu.uah.rsesc.aadlsimulator.xtext.inputConstraint.IntegerLiteral)1 BigInteger (java.math.BigInteger)1 HashMap (java.util.HashMap)1