(* Bounded Universal Quantification *)
Definition AllBnd (T:pred world) (X:pred world -> pred world)
:= ALL tau:pred world, !!(TT |-- tau >=> T) --> X tau.

(* Specifications: *)
Lemma sub_AllBnd : forall T1 T2 (X1 X2:pred world -> pred world),
TT |-- T2 >=> T1 ->
(forall x, TT |-- x >=> T2 -> TT |-- X1 x >=> X2 x) ->
TT |-- AllBnd T1 X1 >=> AllBnd T2 X2.
Lemma AllBnd_ALL : forall (X:pred world -> pred world),
allp X = AllBnd TT X.
Lemma T_UnivBoundedI : forall G e T (X:pred world -> pred world),
openValue e ->
(forall tau, TT |-- tau >=> T -> Typ G e (X tau)) ->
Typ G e (AllBnd T X).
Lemma T_UnivBoundedE : forall G e T (X:pred world -> pred world) tau,
TT |-- tau >=> T ->
Typ G e (AllBnd T X) ->
Typ G e (X tau).
(* Unbounded allps *)
Lemma T_UnivI : forall G e (X:pred world -> pred world),
openValue e ->
(forall tau, Typ G e (X tau)) ->
Typ G e (allp X).
Lemma T_UnivE : forall G e (X:pred world -> pred world) tau,
Typ G e (allp X) ->
Typ G e (X tau).