public void Fails4() { Contract.Inhale(Contract.Acc(this.a, Permission.Wildcard) && Contract.Acc(this.b, Permission.Wildcard)); Contract.Inhale(Contract.Acc(Q(), Permission.Write)); // expect SSIL204 at next Contract.Assert(this.b > 0); }
Construction(int number) { Contract.Ensures(Contract.Acc(field)); Contract.Ensures(this.field == number); field = number; }
public static void Test(Assignments ass, CellAss cell) { Contract.Requires(Contract.Acc(ass.a) && Contract.Acc(ass.c) && Contract.Acc(ass.c.Value) && Contract.Acc(cell.Value)); var d = new Assignments(); Contract.Assert(d.a == 0); Contract.Assert(d.c.Value == 0); ass.a = 1; Contract.Assert(ass.a == 1); ass.c.Value = 2; Contract.Assert(ass.c.Value == 2); cell.Value = 3; Contract.Assert(cell.Value == 3); ass.c = cell; Contract.Assert(ass.c == cell); Contract.Assert(ass.c.Value == 3); d.a = 4; Contract.Assert(d.a == 4); d.c.Value = 5; Contract.Assert(d.c.Value == 5); d.c = ass.c; Contract.Assert(d.c == ass.c); d = ass; Contract.Assert(d.a == 1); Contract.Assert(d == ass); }
public void Fails3() { Contract.Inhale(Contract.Acc(this.a, Permission.Wildcard) && Contract.Acc(this.b, Permission.Wildcard)); Contract.Assume(this.b == 0); // expect SSIL204 at next Contract.Assert(this.a == 0); }
public Assignments() { Contract.Ensures(Contract.Acc(this.a) && this.a == 0); Contract.Ensures(Contract.Acc(this.c) && Contract.Acc(this.c.Value) && this.c.Value == 0); this.a = 0; this.c = new CellAss(); }
public void Succeeds() { Contract.Inhale(Contract.Acc(this.a, Permission.Wildcard) && Contract.Acc(this.c, Permission.Wildcard) && Contract.Acc(this.c, Permission.Half)); Contract.Assume(this.a > 0); Contract.Assert(this.a > 0); Contract.Assume(F() > 0); Contract.Fold(Contract.Acc(P(), Permission.Write)); Contract.Assume(Contract.Acc(Q(), Permission.Write)); Contract.Unfold(Contract.Acc(Q(), Permission.Write)); Contract.Assert(this.b > 0); }
public bool Q() { return(Contract.Acc(this.b, Permission.Wildcard) && this.b > 0); }
public bool P() { return(Contract.Acc(this.c, Permission.Wildcard) && F() > 0); }
public int F() { Contract.Requires(Contract.Acc(this.c, Permission.Wildcard)); return(this.c); }
public C(int a) { Contract.Ensures(Contract.Acc(this.a) && this.a == a); this.a = a; }
public CellAss() { Contract.Ensures(Contract.Acc(this.Value) && this.Value == 0); this.Value = 0; }