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() { IO.println("Before useOk"); { final Number ignorePattern_1 = useOk(); //@ assert Utils.is_nat(ignorePattern_1); /* skip */ } IO.println("After useOk"); IO.println("Before useNotOk"); { final Number ignorePattern_2 = useNotOk(); //@ assert Utils.is_nat(ignorePattern_2); /* skip */ } IO.println("After useNotOk"); return 0L; } public static Number useOk() { project.Entrytypes.A a = new project.Entrytypes.A(MapUtil.map(new Maplet(1L, new project.Entrytypes.B(2L)))); //@ assert Utils.is_(a,project.Entrytypes.A.class); VDMMap stateDes_1 = a.get_m(); project.Entrytypes.B stateDes_2 = ((project.Entrytypes.B) Utils.get(stateDes_1, 1L)); //@ assert stateDes_2 != null; stateDes_2.set_x(2L); //@ assert (V2J.isMap(stateDes_1) && (\forall int i_1; 0 <= i_1 && i_1 < V2J.size(stateDes_1); Utils.is_nat(V2J.getDom(stateDes_1,i_1)) && Utils.is_(V2J.getRng(stateDes_1,i_1),project.Entrytypes.B.class))); //@ assert Utils.is_(a,project.Entrytypes.A.class); //@ assert a.valid(); Number ret_1 = 0L; //@ assert Utils.is_nat(ret_1); return ret_1; } public static Number useNotOk() { project.Entrytypes.A a = new project.Entrytypes.A(MapUtil.map(new Maplet(1L, new project.Entrytypes.B(2L)))); //@ assert Utils.is_(a,project.Entrytypes.A.class); VDMMap stateDes_3 = a.get_m(); project.Entrytypes.B stateDes_4 = ((project.Entrytypes.B) Utils.get(stateDes_3, 1L)); //@ assert stateDes_4 != null; stateDes_4.set_x(1L); //@ assert (V2J.isMap(stateDes_3) && (\forall int i_1; 0 <= i_1 && i_1 < V2J.size(stateDes_3); Utils.is_nat(V2J.getDom(stateDes_3,i_1)) && Utils.is_(V2J.getRng(stateDes_3,i_1),project.Entrytypes.B.class))); //@ assert Utils.is_(a,project.Entrytypes.A.class); //@ assert a.valid(); Number ret_2 = 0L; //@ assert Utils.is_nat(ret_2); return ret_2; } public String toString() { return "Entry{}"; } }