Theorem inp_ind : forall Pr : proc -> proc -> PP -> PP -> Prop, (forall (p q : PP) (x : VV) (P : proc), Pr (inp (pname p) x P) (subs_var_proc P (pname q) x) p q) -> (forall (P P' : proc) (p q : PP) (x y : VV) (t : type), (forall r : PP, sem (subs_var_proc P (pname r) x) (ainp p q) (subs_var_proc P' (pname r) y)) -> (forall r : PP, Pr (subs_var_proc P (pname r) x) (subs_var_proc P' (pname r) y) p q) -> Pr (res x t P) (res y t P') p q) -> (forall (P P' : proc) (p q : PP), sem (par (ban P) P) (ainp p q) P' -> Pr (par (ban P) P) P' p q -> Pr (ban P) P' p q) -> (forall (P P' Q : proc) (p q : PP), sem P (ainp p q) P' -> Pr P P' p q -> Pr (par P Q) (par P' Q) p q) -> (forall (P P' Q : proc) (p q : PP), sem P (ainp p q) P' -> Pr P P' p q -> Pr (par Q P) (par Q P') p q) -> (forall (P P' Q : proc) (p q : PP), sem P (ainp p q) P' -> Pr P P' p q -> Pr (sum P Q) P' p q) -> (forall (P P' Q : proc) (p q : PP), sem P (ainp p q) P' -> Pr P P' p q -> Pr (sum Q P) P' p q) -> (forall (P P' : proc) (p q r : PP), sem P (ainp p q) P' -> Pr P P' p q -> Pr (mat (pname r) (pname r) P) P' p q) -> forall (P P' : proc) (p q : PP), sem P (ainp p q) P' -> Pr P P' p q.