【发布时间】:2021-08-26 12:35:00
【问题描述】:
所以,我很确定这应该是没有选择的可能。也许我错了。
这是我正在尝试做的最小可重复示例:
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)
}.
我在这里使用了“内涵”平等,但我不确定这是否过于严格。为了做我想做的事,也许需要在唯一性公理的假设中使用“外延”等式。
本质上,我们有这个结构的一个子集,这样从子集到结构中的任何函数都可以使用内部操作op 来表示。确实是一个非常强大的属性。由于这种表示是唯一的,因此应该有一种方法可以生成从结构到自身的任何给定函数的“导数”。这就是我的意思:
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.
我完全不确定如何从那里继续证明,或者我什至是否正确启动它。
This question 提出了类似的问题,但没有假设唯一性。该问题已回答here,但并未真正详细说明如何在证明中使用这样的唯一性属性。
假设,至少在常规数学中,它应该直接遵循fn0 的定义,但我不确定如何表达。
【问题讨论】:
标签: coq proof theorem-proving