Require Coq.Logic.ClassicalFacts.
Local Axiom PropExt : ClassicalFacts.prop_extensionality.
Local Axiom ConstructiveIndefiniteDescription_Type :
forall T : Type, ConstructiveIndefiniteDescription_on T.
(** The type Prop is the sub-object classifier for Type_Cat. With ⊤ mapping the single element of the singleton set to (True : Prop) *)
Section Type_Cat_characteristic_function_unique.
Context {A B : Type} (F : @Monic Type_Cat A B) (h : B → Prop)
(hpb : is_PullBack (mono_morphism F) (fun _ => tt) h (fun _ => True)).

(* Specifications: *)
Theorem Type_Cat_characteristic_function_unique :
h = fun x => (exists y : A, (mono_morphism F) y = x).