Theorems / mh_alge_2e2be9
Mathlib held-out
Algebra · hard
theorem lg_target {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Abelian C] {I : C} [CategoryTheory.Injective I] {L : CochainComplex C ℤ} {i : ℤ} (ι : (CochainComplex.singleFunctor C i).obj I ⟶ L) [L.IsStrictlyGE i] [QuasiIsoAt ι i] : CategoryTheory.IsSplitMono ι := by- Mathlib declaration
- CochainComplex.isSplitMono_from_singleFunctor_obj_of_injective
- Held-out module
- Mathlib.Algebra.Homology.DerivedCategory.Ext.EnoughInjectives
- Banned modules (itself + downstream)
- 15
- Reference proof premises (reachable / held-out)
- 46 / 0
Traces
Each configuration's full record: what was retrieved, what the model wrote, what Lean said back.
Not verified1 model calls · 1 Lean checks · $0.00010
Attempts
- sample 0 · round 0Wrong tactic3.5 s model time
Proof intro h apply CategoryTheory.IsSplitMono.of_exists_right_inverse use (L.isStrictlyGE i).homological_lemma ι constructor · exact (L.isStrictlyGE i).homological_lemma_is_morphism ι · intro j cases j · exact (L.isStrictlyGE i).homological_lemma_is_zero ι · rw [CategoryTheory.CochainComplex.gradedAt, CategoryTheory.CochainComplex.gradedAt] exact (L.isStrictlyGE i).homological_lemma_is_zero ιWhat Lean printed (this is all the model sees on repair) 4:8: error: Tactic `introN` failed: There are no additional binders or `let` bindings in the goal to introduce C : Type u inst✝⁴ : CategoryTheory.Category.{v, u} C inst✝³ : CategoryTheory.Abelian C I : C inst✝² : CategoryTheory.Injective I L : CochainComplex C ℤ i : ℤ ι : (CochainComplex.singleFunctor C i).obj I ⟶ L inst✝¹ : L.IsStrictlyGE i inst✝ : QuasiIsoAt ι i ⊢ CategoryTheory.IsSplitMono ι
Reference proof
Mathlib's own source for this declaration, shown for comparison. It may use lemmas the prover is not allowed to use.
lemma isSplitMono_from_singleFunctor_obj_of_injective
{I : C} [Injective I] {L : CochainComplex C ℤ} {i : ℤ}
(ι : (CochainComplex.singleFunctor C i).obj I ⟶ L) [L.IsStrictlyGE i] [QuasiIsoAt ι i] :
IsSplitMono ι := by
let e := L.pOpcyclesIso (i - 1) i (by simp)
((L.isZero_of_isStrictlyGE i (i - 1) (by simp)).eq_of_src _ _)
let α := (singleObjHomologySelfIso _ _ _).inv ≫ homologyMap ι i ≫ L.homologyι i ≫ e.inv
have : ι.f i = (singleObjXSelf (ComplexShape.up ℤ) i I).hom ≫ α := by
rw [← cancel_mono e.hom]
dsimp [α, e]
rw [assoc, assoc, assoc, assoc, pOpcyclesIso_inv_hom_id, comp_id, homologyι_naturality]
dsimp [singleFunctor, singleFunctors]
rw [singleObjHomologySelfIso_inv_homologyι_assoc,
← pOpcycles_singleObjOpcyclesSelfIso_inv_assoc, Iso.inv_hom_id_assoc, p_opcyclesMap]
exact ⟨⟨{
retraction := mkHomToSingle (Injective.factorThru (𝟙 I) α) (by
rintro j rfl
apply (L.isZero_of_isStrictlyGE (j + 1) j (by simp)).eq_of_src)
id := by
apply HomologicalComplex.to_single_hom_ext
rw [comp_f, mkHomToSingle_f, id_f, this, assoc, Injective.comp_factorThru_assoc,
id_comp, Iso.hom_inv_id] }⟩⟩