Definition correct_entry_dec (e : entry) :
      {correct_entry client id i e} +
      {~ correct_entry client id i e}.Definition exists_dec :
      forall A (P : A -> Prop)
             (P_dec : forall x, {P x} + {~ P x}) l,
        {exists x, P x /\ In x l} +
        {~ exists x, P x /\ In x l}.Definition aiis_host_dec (net : network) :
      {aiis_host net} + {~aiis_host net}.Definition aiis_packet (net : network) : Prop :=
      exists p,
        (exists es,
           (exists e,
              correct_entry client id i e /\
              In e es) /\
           mEntries (pBody p) = Some es) /\
        In p (nwPackets net).Definition aiis_packet_dec (net : network) : {aiis_packet net} + {~aiis_packet net}.Definition applied_implies_input_state_dec (net : network) :
      {applied_implies_input_state client id i net} +
      {~ applied_implies_input_state client id i net}.Program Instance ITR : InverseTraceRelation step_failure :=
      {
        init := step_failure_init;
        R := fun s => applied_implies_input_state client id i (snd s);
        T := in_input_trace client id i
      }.

Lemma applied_implies_input : forall client id failed net tr e, @step_failure_star _ _ failure_params step_failure_init (failed, net) tr -> eClient e = client -> eId e = id -> applied_implies_input_state client id (eInput e) net -> in_input_trace client id (eInput e) tr.