Proof using.
induction tr; intros.
- constructor.
- simpl. repeat break_match; subst.
+ auto.
+ rewrite get_op_input_keys_defn. constructor; auto.
* intro. find_apply_lem_hyp get_op_input_keys_sound.
eapply remove_In; eauto.
* eapply subseq_NoDup; eauto.
eapply subseq_get_op_input_keys.
auto using subseq_remove.
+ rewrite get_op_input_keys_app.
rewrite get_op_input_keys_on_Os_nil.
* simpl.
eapply subseq_NoDup; eauto.
eapply subseq_get_op_input_keys.
apply subseq_remove_all.
apply subseq_refl.
* intros.
find_apply_lem_hyp in_dedup_was_in.
find_apply_lem_hyp In_filterMap.
break_exists.  break_and.
break_match; try discriminate.
subst. find_inversion. eauto.
Qed.

(* Specifications: *)
Lemma NoDup_output_import :
forall tr,
NoDup (get_op_output_keys key (import tr)).