summaryrefslogblamecommitdiff
path: root/tests/source/two_counters.scade
blob: 7970aab394be71265c2d5be4bdb1af965de2626e (plain) (tree)



























                                                                                
const n1: int = 10;
const n2: int = 6;


node top(a,b,c : bool) returns (ok, r1, r2 : bool)
var
  x, y, pre_x, pre_y: int;
  o1, o2: bool;

  m: bool;
let
  x = if (b or c) then 0 else (if (a and pre_x < n1) then pre_x + 1 else pre_x);
  y = if (c) then 0 else (if (a and pre_y < n2) then pre_y + 1 else pre_y);
  o1= x = n1;
  o2= y = n2;
  ok= if o1 then o2 else true;
  r1 = 0<=x and x<=n1;
  r2 = 0<=y and y<=n2;
  pre_x = 0 -> pre(x);
  pre_y = 0 -> pre(y);

  m = true -> pre o2;

  guarantee g1: ok;
  guarantee g2: r1;
  guarantee g3: r2;
tel