package project; import java.util.*; import org.overture.codegen.runtime.*; import org.overture.codegen.vdm2jml.runtime.*; @SuppressWarnings("all") //@ nullable_by_default final public class Entry { /*@ public ghost static boolean invChecksOn = true; @*/ private Entry() {} public static Object Run() { final Number n1 = 2L; //@ assert Utils.is_nat1(n1); final Number n2 = 3L; //@ assert Utils.is_nat1(n2); { { final Number ignorePattern_1 = op(n1, 5L, n1); //@ assert (Utils.is_nat(ignorePattern_1) && inv_Entry_Even(ignorePattern_1)); /* skip */ } IO.println("Breaking named type invariant for method parameter"); { final Number ignorePattern_2 = op(n1, 6L, n2); //@ assert (Utils.is_nat(ignorePattern_2) && inv_Entry_Even(ignorePattern_2)); /* skip */ } return 0L; } } public static Number op(final Number a, final Number b, final Number c) { //@ assert (Utils.is_nat(a) && inv_Entry_Even(a)); //@ assert Utils.is_nat(b); //@ assert (Utils.is_nat(c) && inv_Entry_Even(c)); Number ret_1 = b.longValue() * (a.longValue() + c.longValue()); //@ assert (Utils.is_nat(ret_1) && inv_Entry_Even(ret_1)); return ret_1; } public String toString() { return "Entry{}"; } /*@ pure @*/ /*@ helper @*/ public static Boolean inv_Entry_Even(final Object check_n) { Number n = ((Number) check_n); return Utils.equals(Utils.mod(n.longValue(), 2L), 0L); } }