
node after (a: bool) returns (o: bool);
var prev_o: bool;
let
  prev_o = false -> pre o;
  o = prev_o or a;
tel;

node always_since (a: bool; b: bool) returns (o: bool);
var prev_o: bool;
let
  prev_o = false -> pre o;
  o = if b then a else prev_o and a;
tel;

node once_since(a: bool; reset: bool) returns (o: bool);
var a_happened: bool;
let
  a_happened = a -> if reset then false else (pre a_happened or a);
  o = (a and not reset) -> a_happened;
tel;

node always_from_to(b: bool; reset: bool; c: bool) returns (x: bool);
var
  c_happened: bool;
  prev_b: bool;
let
  c_happened = c -> if reset then false else (c or pre c_happened);*
  prev_b = b -> if reset then true else (b and prev_b);
tel;
