Definition zero_or_one_outputs_per_step_trace {A B C} tr :=
    forall x, In x tr -> @zero_or_one_outputs_per_step A B C x.

(* Specifications: *)
Lemma ZOOOPST_head : forall A B C x y, @zero_or_one_outputs_per_step_trace A B C (x :: y) -> zero_or_one_outputs_per_step x.
Lemma ZOOOPST_tail : forall A B C x y, @zero_or_one_outputs_per_step_trace A B C (x :: y) -> zero_or_one_outputs_per_step_trace y.
Lemma ZOOOPST_cons_elim : forall A B C x y, @zero_or_one_outputs_per_step_trace A B C (x :: y) -> zero_or_one_outputs_per_step x /\ zero_or_one_outputs_per_step_trace y.
Lemma ZOOOPST_cons_intro : forall A B C x y, @zero_or_one_outputs_per_step A B C x -> zero_or_one_outputs_per_step_trace y -> zero_or_one_outputs_per_step_trace (x :: y).
Lemma ZOOOPST_app : forall A B C xs ys, @zero_or_one_outputs_per_step_trace A B C xs -> zero_or_one_outputs_per_step_trace ys -> zero_or_one_outputs_per_step_trace (xs ++ ys).
Theorem pbj_0_or_1 : forall net tr, step_async_star (params:=PB_multi_params) step_async_init net tr -> zero_or_one_outputs_per_step_trace tr.
Lemma inputs_1_m_revert : forall net tr, step_async_star (params := PB_multi_params) step_async_init net tr -> inputs_m tr = inputs_1 (revert_trace tr) ++ queue (nwState net Primary).