Local Open Scope logic_base.
Section ContextProperty.
Context {L: Language}.
Definition at_least (P cP: context -> Prop): Prop :=
forall (Phi: context), cP Phi -> P Phi.

(* Specifications: *)
Lemma at_least_self: forall P, at_least P P.
Lemma at_least_left: forall P cP1 cP2, at_least P cP1 -> at_least P (Intersection _ cP1 cP2).
Lemma at_least_right: forall P cP1 cP2, at_least P cP2 -> at_least P (Intersection _ cP1 cP2).
Definition maximal (P: context -> Prop): context -> Prop :=
fun Phi => P Phi /\ forall Psi, P Psi -> Included _ Phi Psi -> Included _ Psi Phi.
Lemma sig_context_ext: forall (cP: context -> Prop) (Phi Psi: sig cP),
(forall x, proj1_sig Phi x <-> proj1_sig Psi x) -> Phi = Psi.