Theorem tau_ind : forall Pr : proc -> proc -> Prop, (forall (P P' Q Q' : proc) (p q : PP), sem P (ainp p q) P' -> sem Q (aout p q) Q' -> Pr (par P Q) (par P' Q')) -> (forall (P P' Q Q' : proc) (p q : PP), sem P (ainp p q) P' -> sem Q (aout p q) Q' -> Pr (par Q P) (par Q' P')) -> (forall (P P' Q Q' : proc) (p q r : PP) (t : type) (x : VV), fresh q P -> freshvar x P' -> freshvar x Q' -> sem P (ainp p q) P' -> sem Q (about p r t) Q' -> Pr (par P Q) (res x t (par (subs_par_proc P' (vname x) q) (subs_par_proc Q' (vname x) r)))) -> (forall (P P' Q Q' : proc) (p q r : PP) (t : type) (x : VV), fresh q P -> freshvar x P' -> freshvar x Q' -> sem P (ainp p q) P' -> sem Q (about p r t) Q' -> Pr (par Q P) (res x t (par (subs_par_proc Q' (vname x) r) (subs_par_proc P' (vname x) q)))) -> (forall (x y : VV) (t' : type) (P P' : proc), (forall r : PP, sem (subs_var_proc P (pname r) x) tau (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)) -> Pr (res x t' P) (res y t' P')) -> (forall P P' : proc, sem (par (ban P) P) tau P' -> Pr (par (ban P) P) P' -> Pr (ban P) P') -> (forall P P' Q : proc, sem P tau P' -> Pr P P' -> Pr (par P Q) (par P' Q)) -> (forall P P' Q : proc, sem P tau P' -> Pr P P' -> Pr (par Q P) (par Q P')) -> (forall P P' Q : proc, sem P tau P' -> Pr P P' -> Pr (sum P Q) P') -> (forall P P' Q : proc, sem P tau P' -> Pr P P' -> Pr (sum Q P) P') -> (forall (P P' : proc) (r : PP), sem P tau P' -> Pr P P' -> Pr (mat (pname r) (pname r) P) P') -> forall P P' : proc, sem P tau P' -> Pr P P'.