(** Using subtypes to relativize the domain, independence of general premises is equivalent to excluded-middle in the theory of Boolean values (see Kirst and Zeng, 2024) *)
Notation "x .1" := (projT1 x) (at level 1, left associativity, format "x .1").
Notation "( x ; y )" := (existT _ x y) (at level 0, format "'[' ( x ;  '/  ' y ) ']'").
Definition RelativizedIndependenceOfGeneralPremises A (P : A -> Prop) :=
IndependenceOfGeneralPremises {a:A & P a}.
Lemma
relativized_independence_general_premises_excluded_middle :
(forall P, RelativizedIndependenceOfGeneralPremises bool P) -> excluded_middle.
(** Similarly, using subtypes, drinker's paradox on Boolean values implies excluded-middile *)
Definition RelativizedDualDrinkerParadox A (P : A -> Prop) :=
DualDrinkerParadox {a : A & P a}.
Lemma
relativized_dual_drinker_paradox_excluded_middle :
(forall P, RelativizedDualDrinkerParadox bool P) -> excluded_middle.
(** * Axioms equivalent to classical logic *)
(** ** Principle of unrestricted minimization *)
Definition Minimal (P:nat -> Prop) (n:nat) : Prop :=
P n /\ forall k, P k -> n<=k.
Definition Minimization_Property (P : nat -> Prop) : Prop :=
forall n, P n -> exists m, Minimal P m.
Section Unrestricted_minimization_entails_excluded_middle.
Hypothesis unrestricted_minimization: forall P, Minimization_Property P.

(* Specifications: *)
Theorem unrestricted_minimization_entails_excluded_middle : forall A, A\/~A.
End Unrestricted_minimization_entails_excluded_middle.