type kind: [tx, rx]; struct packet { kind; size: byte; keep size == get_size(kind); keep kind == get_kind(size); // Constraint cycle };