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() { VDMSeq s = SeqUtil.seq(10L, 11L, 12L); //@ assert ((V2J.isSeq(s) && (\forall int i; 0 <= i && i < V2J.size(s); true)) && inv_Entry_S(s)); //@ assert s != null; Utils.mapSeqUpdate(s, 1L, 'a'); //@ assert ((V2J.isSeq(s) && (\forall int i; 0 <= i && i < V2J.size(s); true)) && inv_Entry_S(s)); //@ assert s != null; Utils.mapSeqUpdate(s, 2L, null); //@ assert ((V2J.isSeq(s) && (\forall int i; 0 <= i && i < V2J.size(s); true)) && inv_Entry_S(s)); IO.println("Breaking named type invariant for sequence"); //@ assert s != null; Utils.mapSeqUpdate(s, 3L, 4L); //@ assert ((V2J.isSeq(s) && (\forall int i; 0 <= i && i < V2J.size(s); true)) && inv_Entry_S(s)); return 0L; } public String toString() { return "Entry{}"; } /*@ pure @*/ /*@ helper @*/ public static Boolean inv_Entry_S(final Object check_s) { VDMSeq s = ((VDMSeq) check_s); Boolean forAllExpResult_1 = true; VDMSet set_1 = SeqUtil.elems(Utils.copy(s)); for (Iterator iterator_1 = set_1.iterator(); iterator_1.hasNext() && forAllExpResult_1; ) { Object x = ((Object) iterator_1.next()); Boolean orResult_1 = false; if (!(Utils.is_nat(x))) { orResult_1 = true; } else { orResult_1 = ((Number) x).doubleValue() > 5L; } forAllExpResult_1 = orResult_1; } return forAllExpResult_1; } }