So, I'm pretty sure this should be possible without choice. Maybe I am wrong.
Here is a minimal reproducible example of what I'm trying to do:
Record MRE :=
{ set : Prop
; elem : set
; op : set -> set -> set
; subset : Prop
; subset_incl : subset -> set
; exist_axiom : forall (f : subset -> set), exists (x : set), f = fun y => op (subset_incl y) x
; uniq_axiom : forall (f : subset -> set), forall (x : set),
f = (fun y => op (subset_incl y) x) -> x = ex_proj1 (exist_axiom f)
}.
I used "intensional" equality here, and I'm not sure if that makes it too strict. Perhaps "extensional" equality needs to be used in the hypothesis of the uniqueness axiom in order to do what I want.
In essence, we have a subset of this structure such that any function from the subset into the structure can be represented using the intrinsic operation op
. A very strong property, indeed. Since this representation is unique, there should be a way to produce a "derivative" of any given function from the structure to itself. Here's what I mean:
Definition witness_fcn : forall (M : MRE),
forall (f : set M -> set M),
exists (fn : set M -> set M),
forall (x : subset M),
(fun y => f (op M (subset_incl M x) y)) = (fun y => op M (subset_incl M x) (fn y)).
Proof.
intros M f.
pose (fn0 := fun y => exist_axiom M (fun x => f (op M (subset_incl M x) y))).
exists (fun y => ex_proj1 (fn0 y)).
intros x.
unfold fn0.
I'm not at all sure how to continue the proof from there, or if I even started it correctly.
This question asks something similar, but without the assumption of uniqueness. The question is answered here, but doesn't really go into detail on how a uniqueness property like this would be used in a proof.
Hypothetically, at least in regular math, it should follow directly from the definition of fn0
, but I'm not sure how to express that.