-
Notifications
You must be signed in to change notification settings - Fork 298
[Merged by Bors] - feat(combinatorics/quiver/covering): Definition of coverings and unique lifting of paths #17828
Conversation
Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>
Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>
src/data/sigma/basic.lean
Outdated
begin | ||
split, | ||
{ rintro ⟨⟩, exact ⟨rfl, rfl⟩, }, | ||
{ induction x₀, induction x₁, rintro ⟨h, H⟩, cases h, cases H, |
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.
untested
{ induction x₀, induction x₁, rintro ⟨h, H⟩, cases h, cases H, | |
{ induction x₀, | |
induction x₁, | |
rintro ⟨rfl, ⟨⟩⟩, |
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.
Doesn't work, not sure why.
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.
{ induction x₀, induction x₁, rintro ⟨h, H⟩, cases h, cases H, | |
{ induction x₀, | |
induction x₁, | |
rintro ⟨rfl, rfl⟩, |
maybe?
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.
nope :)
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'm waiting for the CI to pass, but I can do
lemma ext_iff' {x₀ x₁ : sigma β} :
x₀ = x₁ ↔ ∃ h : x₀.1 = x₁.1, h.rec_on x₀.2 = x₁.2 :=
begin
split,
{ rintro ⟨⟩,
exact ⟨rfl, rfl⟩, },
{ induction x₀,
induction x₁,
rintros ⟨h, H⟩,
cases h,
cases H,
refl, }
end
if that's worth it? It's just one tactic per line, and refl instead of simp…
@YaelDillies can you only "approve", or also put it on the maintainer queue? That would be nice |
theorem prefunctor.path_star_bijective (hφ : φ.is_covering) (u : U) : | ||
function.bijective (φ.path_star u) := |
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.
Instead of assuming that there are inverses to the φ.star u
and φ.costar u
and showing that there's an inverse to the φ.path_star u
, can you instead construct the inverses to the φ.path_star u
from inverses for the φ.star u
and φ.costar u
?
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.
Probably can, but what's the gain? I guess it will make for a cleaner proof, let me see.
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.
Yeah, I'm hoping for a cleaner proof. But I don't know how much it will make you change your framework.
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'll try for a bit and see if helps and is reasonably easy, and give up otherwise.
Edit. Got it down to this, and I think we won't get a shorter proof in the end, even though it might be a bit cleaner. I think I'll give that up, if it's not something crucial in your mind. noncomputable! def prefunctor.path_star_bijective_aux
{ψ : ∀ u, quiver.star (φ.obj u) → quiver.star u} (ψr : ∀ u, right_inverse (ψ u) (φ.star u)) :
∀ u (p : quiver.path_star (φ.obj u)), { q : quiver.path_star u // φ.path_star u q = p }
| u ⟨_, quiver.path.nil⟩ := ⟨⟨u, quiver.path.nil⟩, rfl⟩
| u ⟨v', @quiver.path.cons _ _ _ v v'' p e⟩ :=
let
hh := prefunctor.path_star_bijective_aux _ ⟨_, p⟩,
f : quiver.star hh.val.1 := ψ _ ⟨v', e.cast (sigma.ext_iff'.mp hh.property).some.symm rfl⟩
in
⟨ ⟨_, hh.val.2.cons f.2,⟩, by
begin
dsimp [f, hh], clear f hh,
obtain ⟨⟨u', q⟩, h⟩ := prefunctor.path_star_bijective_aux _ ⟨_, p⟩,
obtain ⟨rfl, rfl⟩ := h,
let h := ψr u' ⟨_, e⟩,
rw [sigma.ext_iff'] at h ⊢,
obtain ⟨h', _⟩ := h,
change ∃ (h : φ.obj _ = _), path.cast rfl h _ = _,
refine ⟨h', _⟩,
simpa only [path.cast_cons, path.cast_rfl_rfl, eq_self_iff_true, heq_iff_eq, true_and],
end ⟩
|
To me it looks like you could be creating the equivalence instead of proving bijectivity. What happens if you make
|
Well, that specifically won't work, since you're just giving equivalences, and not proving that |
My question was mostly whether you really wanted |
Yeah. I don't really know but:
|
Okay, but the inverse of an |
So, only keep the star/costar stuff? |
… bottine/quiver_covering2
bors merge |
…ue lifting of paths (#17828) Co-authored-by: Antoine Labelle <antoinelab01@gmail.com> Co-authored-by: Rémi Bottinelli <bottine@users.noreply.github.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: antoinelab01 <66086247+antoinelab01@users.noreply.github.com> Co-authored-by: Antoine Labelle <antoinelab01@gmail.com>
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. |
* commit '65a1391a0106c9204fe45bc73a039f056558cb83': (12443 commits) feat(data/{list,multiset,finset}/*): `attach` and `filter` lemmas (leanprover-community#18087) feat(combinatorics/simple_graph): More clique lemmas (leanprover-community#19203) feat(measure_theory/order/upper_lower): Order-connected sets in `ℝⁿ` are measurable (leanprover-community#16976) move old README.md to OLD_README.md doc: Add a warning mentioning Lean 4 to the readme (leanprover-community#19243) feat(topology/metric_space): diameter of pointwise zero and addition (leanprover-community#19028) feat(topology/algebra/order/liminf_limsup): Eventual boundedness of neighborhoods (leanprover-community#18629) feat(probability/independence): Independence of singletons (leanprover-community#18506) feat(combinatorics/set_family/ahlswede_zhang): Ahlswede-Zhang identity, part I (leanprover-community#18612) feat(data/finset/lattice): `sup'`/`inf'` lemmas (leanprover-community#18989) chore(order/liminf_limsup): Generalise and move lemmas (leanprover-community#18628) feat(algebraic_topology/dold_kan): The Dold-Kan equivalence for abelian categories (leanprover-community#17926) feat(data/sum/interval): The lexicographic sum of two locally finite orders is locally finite (leanprover-community#11352) feat(analysis/convex/proj_Icc): Extending convex functions (leanprover-community#18797) feat(algebraic_topology/dold_kan): The Dold-Kan equivalence for pseudoabelian categories (leanprover-community#17925) feat(measure_theory/measure/haar_quotient): the Unfolding Trick (leanprover-community#18863) feat(linear_algebra/orientation): add `orientation.reindex` (leanprover-community#19236) feat(combinatorics/quiver/covering): Definition of coverings and unique lifting of paths (leanprover-community#17828) feat(set_theory/game/pgame): small sets of pre-games / games / surreals are bounded (leanprover-community#15260) feat(tactic/positivity): Extension for `ite` (leanprover-community#17650) ... # Conflicts: # README.md
Co-authored-by: Antoine Labelle antoinelab01@gmail.com