Axiom
  typest_writing :
    forall t t' : type,
    typest t t' -> capst (getcap t') Write -> typest (getobj t') (getobj t).Axiom
  typest_reading :
    forall t t' : type,
    typest t t' -> capst (getcap t') Read -> typest (getobj t) (getobj t').Axiom
  typest_tail :
    forall t t' : type, typest t t' -> capst (getcap t) (getcap t').

(* Specifications: *)
Theorem subtyping_extension : forall (G D : env) (p : PP) (t1 t2 : type), envst D G -> typest t1 t2 -> envst (addenv D p t1) (addenv G p t2).
Theorem subtyping : forall (G : env) (P : proc), typing G P -> forall D : env, envst D G -> typing D P.
Theorem weaken_env : forall (G : env) (P : proc) (q : PP) (t : type), typest t (G q) -> typing G P -> typing (addenv G q t) P.
Theorem est_refl : forall G : env, envst G G.
Theorem type_with_other_subs : forall (G : env) (P : proc) (p q : PP) (x : VV) (t : type), fresh p P -> fresh q P -> typing (addenv G p t) (subs_var_proc P (pname p) x) -> typing (addenv G q t) (subs_var_proc P (pname q) x).
Theorem subs_typing : forall (G : env) (P : proc), typing G P -> forall p q : PP, typest (G p) (G q) -> typing G (subs_par_proc P (pname p) q).