New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Merged by Bors] - chore: improve defeq for Sup
and sSup
of LieSubmodule
s
#7608
Conversation
16bccca
to
91e0031
Compare
and some tiny additional golfing
Unfortunately because `C` is dependent, its type cannot be passed to `Submodule.iSup_induction'` so I have to provide a proof here. I have just copied the proof of `Submodule.iSup_induction'`.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks 🎉
bors merge
The point is that the following four lemmas are now all true by definition: - `LieSubmodule.inf_coe_toSubmodule` - `LieSubmodule.sInf_coe_toSubmodule` - `LieSubmodule.sup_coe_toSubmodule` [previously existed but not true by definition] - `LieSubmodule.sSup_coe_toSubmodule` [previously did not exist]
@[elab_as_elim] | ||
theorem iSup_induction' {ι} (N : ι → LieSubmodule R L M) {C : (x : M) → (x ∈ ⨆ i, N i) → Prop} | ||
(hN : ∀ (i) (x) (hx : x ∈ N i), C x (mem_iSup_of_mem i hx)) (h0 : C 0 (zero_mem _)) | ||
(hadd : ∀ x y hx hy, C x hx → C y hy → C (x + y) (add_mem ‹_› ‹_›)) {x : M} | ||
(hx : x ∈ ⨆ i, N i) : C x hx := by | ||
refine' Exists.elim _ fun (hx : x ∈ ⨆ i, N i) (hc : C x hx) => hc | ||
refine' iSup_induction N (C := fun x : M ↦ ∃ (hx : x ∈ ⨆ i, N i), C x hx) hx | ||
(fun i x hx => _) _ fun x y => _ | ||
· exact ⟨_, hN _ _ hx⟩ | ||
· exact ⟨_, h0⟩ | ||
· rintro ⟨_, Cx⟩ ⟨_, Cy⟩ | ||
refine' ⟨_, hadd _ _ _ _ Cx Cy⟩ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tried to golf this by proving it in terms of the submodule version, but ran afoul of leanprover/lean4#1926
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for trying all the same!
Pull request successfully merged into master. Build succeeded! The publicly hosted instance of bors-ng is deprecated and will go away soon. If you want to self-host your own instance, instructions are here. If you want to switch to GitHub's built-in merge queue, visit their help page. |
Sup
and sSup
of LieSubmodule
sSup
and sSup
of LieSubmodule
s
The point is that the following four lemmas are now all true by definition: - `LieSubmodule.inf_coe_toSubmodule` - `LieSubmodule.sInf_coe_toSubmodule` - `LieSubmodule.sup_coe_toSubmodule` [previously existed but not true by definition] - `LieSubmodule.sSup_coe_toSubmodule` [previously did not exist]
The point is that the following four lemmas are now all true by definition:
LieSubmodule.inf_coe_toSubmodule
LieSubmodule.sInf_coe_toSubmodule
LieSubmodule.sup_coe_toSubmodule
[previously existed but not true by definition]LieSubmodule.sSup_coe_toSubmodule
[previously did not exist]