You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
925 B
Plaintext

(* include "notsameperiod2.lus" *)
type data = int
const v:data = 0
node current (v : data; c : bool; u : data)
returns (o : data)
let
o = merge c u ((v fby o) whenot c)
tel
node mem (v : data; cw : bool; u : data)
returns (o : data)
let
o = v fby (current (v, cw, u))
tel
node mcounter (start, limit : int)
returns (o : int)
let
o = (start -> (pre o + 1)) % limit;
tel
node twonodes (cw, cr : bool)
returns (ok : bool)
var uw, ur : int;
let
uw = mcounter((0, 5) when cw);
ur = mem(v, cw, uw) when cr;
ok = (mem(v, cr, ur) = mem(v, cw, uw))
or (mem(v, cr, ur)= mem(v, cw, v fby uw))
or (mem(v, cr, ur) = mem(v, cw, v fby v fby uw));
tel
(*
node verify (cw, cr : bool)
returns (ok : bool)
let
ok = twonodes(cw, cr);
assert(not notsameperiod2(cw, cr));
tel
*)
node main() returns (ok:bool)
var cw, cr : bool;
let
cw = false fby not cw;
cr = not cw;
ok = twonodes(cw,cr);
tel