awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.Topology.Category.Profinite.Nobeling.Successor (goal)
Goal:
I : Type u
C : Set (I → Bool)
inst : LinearOrder I
inst_1 : WellFoundedLT I
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun (x1 x2 : I) ↦ x1 < x2
l : (↑(MaxProducts C ho) : Type u)
h₁ :
  LE.le (α := Submodule ℤ (LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ)) ⊤
    (Submodule.span ℤ
      (Set.range (ι := { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l })
        (eval (π C fun (x : I) ↦ ord I x < o))))
this : Inhabited I
m : Products I →₀ ℤ
hmmem :
  Membership.mem (γ := Submodule ℤ (Products I →₀ ℤ))
    (Finsupp.supported ℤ ℤ {m : Products I | m < (↑l : Products I).Tail}) m
hmsum :
  Eq (α := LocallyConstant (↑(C' C ho) : Type u) ℤ)
    (m.sum fun (i : Products I) (a : ℤ) ↦ a • Products.eval (C' C ho) i : LocallyConstant (↑(C' C ho) : Type u) ℤ)
    ((Linear_CC' C hsC ho : (a : LocallyConstant (↑C : Type u) ℤ) → LocallyConstant (↑(C' C ho) : Type u) ℤ)
        (Products.eval C (↑l : Products I)) :
      LocallyConstant (↑(C' C ho) : Type u) ℤ)
hse :
  LinearMap.range (M := LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) (πs C o) =
    (Linear_CC' C hsC ho).ker
n : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ
w : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l } →₀ ℤ
hn :
  HAdd.hAdd (α := LocallyConstant (↑C : Type u) ℤ)
      (w.sum fun (a : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (b : ℤ) ↦
        (πs C o : (a : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) → LocallyConstant (↑C : Type u) ℤ)
          (b • eval (π C fun (x : I) ↦ ord I x < o) a))
      (m.sum fun (i : Products I) (a : ℤ) ↦ a • (List.map (e C) (term I ho :: (↑i : List I))).prod) =
    Products.eval C (↑l : Products I)
hc :
  (w.sum fun (i : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (a : ℤ) ↦
      a • eval (π C fun (x : I) ↦ ord I x < o) i) =
    n
q : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }
h : Ne (α := ℤ) ((w : (a : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) → ℤ) q : ℤ) (0 : ℤ)
⊢ Membership.mem (α := LocallyConstant (↑C : Type u) ℤ) (γ := Submodule ℤ (LocallyConstant (↑C : Type u) ℤ))
    (Submodule.span ℤ (Set.image (α := Products I) (Products.eval C) {m : Products I | m < (↑l : Products I)}))
    ((πs C o : (a : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) → LocallyConstant (↑C : Type u) ℤ)
        (eval (π C fun (x : I) ↦ ord I x < o) q) :
      LocallyConstant (↑C : Type u) ℤ)
have h₂ : Membership.mem (α := LocallyConstant (↑C : Type u) ℤ)
  (Set.image (α := Products I) (Products.eval C) {m : Products I | m < (↑l : Products I)})
  ((πs C o : (a : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) → LocallyConstant (↑C : Type u) ℤ)
      (eval (π C fun (x : I) ↦ ord I x < o) q) :
    LocallyConstant (↑C : Type u) ℤ)
Tactic: apply Submodule.subset_span
-- Lean 4 proof step from Mathlib.Topology.Category.Profinite.Nobeling.Successor (goal)
Goal:
I : Type u
C : Set (I → Bool)
inst : LinearOrder I
inst_1 : WellFoundedLT I
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun (x1 x2 : I) ↦ x1 < x2
l : (↑(MaxProducts C ho) : Type u)
h₁ :
  LE.le (α := Submodule ℤ (LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ)) ⊤
    (Submodule.span ℤ
      (Set.range (ι := { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l })
        (eval (π C fun (x : I) ↦ ord I x < o))))
this : Inhabited I
m : Products I →₀ ℤ
hmmem :
  Membership.mem (γ := Submodule ℤ (Products I →₀ ℤ))
    (Finsupp.supported ℤ ℤ {m : Products I | m < (↑l : Products I).Tail}) m
hmsum :
  Eq (α := LocallyConstant (↑(C' C ho) : Type u) ℤ)
    (m.sum fun (i : Products I) (a : ℤ) ↦ a • Products.eval (C' C ho) i : LocallyConstant (↑(C' C ho) : Type u) ℤ)
    ((Linear_CC' C hsC ho : (a : LocallyConstant (↑C : Type u) ℤ) → LocallyConstant (↑(C' C ho) : Type u) ℤ)
        (Products.eval C (↑l : Products I)) :
      LocallyConstant (↑(C' C ho) : Type u) ℤ)
hse :
  LinearMap.range (M := LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) (πs C o) =
    (Linear_CC' C hsC ho).ker
n : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ
w : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l } →₀ ℤ
hn :
  HAdd.hAdd (α := LocallyConstant (↑C : Type u) ℤ)
      (w.sum fun (a : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (b : ℤ) ↦
        (πs C o : (a : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) → LocallyConstant (↑C : Type u) ℤ)
          (b • eval (π C fun (x : I) ↦ ord I x < o) a))
      (m.sum fun (i : Products I) (a : ℤ) ↦ a • (List.map (e C) (term I ho :: (↑i : List I))).prod) =
    Products.eval C (↑l : Products I)
hc :
  (w.sum fun (i : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (a : ℤ) ↦
      a • eval (π C fun (x : I) ↦ ord I x < o) i) =
    n
q : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }
h : Ne (α := ℤ) ((w : (a : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) → ℤ) q : ℤ) (0 : ℤ)
⊢ Membership.mem (α := LocallyConstant (↑C : Type u) ℤ)
    (Set.image (α := Products I) (Products.eval C) {m : Products I | m < (↑l : Products I)})
    ((πs C o : (a : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) → LocallyConstant (↑C : Type u) ℤ)
        (Products.eval (π C fun (x : I) ↦ ord I x < o) (↑q : Products I)) :
      LocallyConstant (↑C : Type u) ℤ)
have h₂ : Products.eval C (↑q : Products I) ∈
  Set.image (α := Products I) (Products.eval C) {m : Products I | m < (↑l : Products I)}
Tactic: rw [Products.eval_πs C (Products.prop_of_isGood _ _ q.prop)]
-- Lean 4 proof step from Mathlib.Topology.Category.Profinite.Nobeling.Successor (goal)
Goal:
I : Type u
C : Set (I → Bool)
inst : LinearOrder I
inst_1 : WellFoundedLT I
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun (x1 x2 : I) ↦ x1 < x2
l : (↑(MaxProducts C ho) : Type u)
h₁ :
  LE.le (α := Submodule ℤ (LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ)) ⊤
    (Submodule.span ℤ
      (Set.range (ι := { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l })
        (eval (π C fun (x : I) ↦ ord I x < o))))
this : Inhabited I
m : Products I →₀ ℤ
hmmem :
  Membership.mem (γ := Submodule ℤ (Products I →₀ ℤ))
    (Finsupp.supported ℤ ℤ {m : Products I | m < (↑l : Products I).Tail}) m
hmsum :
  Eq (α := LocallyConstant (↑(C' C ho) : Type u) ℤ)
    (m.sum fun (i : Products I) (a : ℤ) ↦ a • Products.eval (C' C ho) i : LocallyConstant (↑(C' C ho) : Type u) ℤ)
    ((Linear_CC' C hsC ho : (a : LocallyConstant (↑C : Type u) ℤ) → LocallyConstant (↑(C' C ho) : Type u) ℤ)
        (Products.eval C (↑l : Products I)) :
      LocallyConstant (↑(C' C ho) : Type u) ℤ)
hse :
  LinearMap.range (M := LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) (πs C o) =
    (Linear_CC' C hsC ho).ker
n : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ
w : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l } →₀ ℤ
hn :
  HAdd.hAdd (α := LocallyConstant (↑C : Type u) ℤ)
      (w.sum fun (a : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (b : ℤ) ↦
        (πs C o : (a : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) → LocallyConstant (↑C : Type u) ℤ)
          (b • eval (π C fun (x : I) ↦ ord I x < o) a))
      (m.sum fun (i : Products I) (a : ℤ) ↦ a • (List.map (e C) (term I ho :: (↑i : List I))).prod) =
    Products.eval C (↑l : Products I)
hc :
  (w.sum fun (i : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (a : ℤ) ↦
      a • eval (π C fun (x : I) ↦ ord I x < o) i) =
    n
q : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }
h : Ne (α := ℤ) ((w : (a : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) → ℤ) q : ℤ) (0 : ℤ)
⊢ Products.eval C (↑q : Products I) ∈
    Set.image (α := Products I) (Products.eval C) {m : Products I | m < (↑l : Products I)}
have h₂ : Membership.mem (γ := Set (Products I)) {m : Products I | m < (↑l : Products I)} (↑q : Products I)
Tactic: refine ⟨q.val, ⟨?_, rfl⟩⟩
-- Lean 4 proof step from Mathlib.Topology.Category.Profinite.Nobeling.Successor (goal)
Goal:
I : Type u
C : Set (I → Bool)
inst : LinearOrder I
inst_1 : WellFoundedLT I
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun (x1 x2 : I) ↦ x1 < x2
l : (↑(MaxProducts C ho) : Type u)
h₁ :
  LE.le (α := Submodule ℤ (LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ)) ⊤
    (Submodule.span ℤ
      (Set.range (ι := { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l })
        (eval (π C fun (x : I) ↦ ord I x < o))))
this : Inhabited I
m : Products I →₀ ℤ
hmmem :
  Membership.mem (γ := Submodule ℤ (Products I →₀ ℤ))
    (Finsupp.supported ℤ ℤ {m : Products I | m < (↑l : Products I).Tail}) m
hmsum :
  Eq (α := LocallyConstant (↑(C' C ho) : Type u) ℤ)
    (m.sum fun (i : Products I) (a : ℤ) ↦ a • Products.eval (C' C ho) i : LocallyConstant (↑(C' C ho) : Type u) ℤ)
    ((Linear_CC' C hsC ho : (a : LocallyConstant (↑C : Type u) ℤ) → LocallyConstant (↑(C' C ho) : Type u) ℤ)
        (Products.eval C (↑l : Products I)) :
      LocallyConstant (↑(C' C ho) : Type u) ℤ)
hse :
  LinearMap.range (M := LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) (πs C o) =
    (Linear_CC' C hsC ho).ker
n : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ
w : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l } →₀ ℤ
hn :
  HAdd.hAdd (α := LocallyConstant (↑C : Type u) ℤ)
      (w.sum fun (a : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (b : ℤ) ↦
        (πs C o : (a : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) → LocallyConstant (↑C : Type u) ℤ)
          (b • eval (π C fun (x : I) ↦ ord I x < o) a))
      (m.sum fun (i : Products I) (a : ℤ) ↦ a • (List.map (e C) (term I ho :: (↑i : List I))).prod) =
    Products.eval C (↑l : Products I)
hc :
  (w.sum fun (i : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (a : ℤ) ↦
      a • eval (π C fun (x : I) ↦ ord I x < o) i) =
    n
q : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }
h : Ne (α := ℤ) ((w : (a : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) → ℤ) q : ℤ) (0 : ℤ)
⊢ Membership.mem (γ := Set (Products I)) {m : Products I | m < (↑l : Products I)} (↑q : Products I)
have h₂ : List.Lex (fun (x1 x2 : I) ↦ x1 < x2) (↑(↑q : Products I) : List I) (↑(↑l : Products I) : List I)
Tactic: simp only [Products.lt_iff_lex_lt, Set.mem_setOf_eq]
-- Lean 4 proof step from Mathlib.Topology.Category.Profinite.Nobeling.Successor (goal)
Goal:
I : Type u
C : Set (I → Bool)
inst : LinearOrder I
inst_1 : WellFoundedLT I
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun (x1 x2 : I) ↦ x1 < x2
l : (↑(MaxProducts C ho) : Type u)
h₁ :
  LE.le (α := Submodule ℤ (LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ)) ⊤
    (Submodule.span ℤ
      (Set.range (ι := { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l })
        (eval (π C fun (x : I) ↦ ord I x < o))))
this : Inhabited I
m : Products I →₀ ℤ
hmmem :
  Membership.mem (γ := Submodule ℤ (Products I →₀ ℤ))
    (Finsupp.supported ℤ ℤ {m : Products I | m < (↑l : Products I).Tail}) m
hmsum :
  Eq (α := LocallyConstant (↑(C' C ho) : Type u) ℤ)
    (m.sum fun (i : Products I) (a : ℤ) ↦ a • Products.eval (C' C ho) i : LocallyConstant (↑(C' C ho) : Type u) ℤ)
    ((Linear_CC' C hsC ho : (a : LocallyConstant (↑C : Type u) ℤ) → LocallyConstant (↑(C' C ho) : Type u) ℤ)
        (Products.eval C (↑l : Products I)) :
      LocallyConstant (↑(C' C ho) : Type u) ℤ)
hse :
  LinearMap.range (M := LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) (πs C o) =
    (Linear_CC' C hsC ho).ker
n : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ
w : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l } →₀ ℤ
hn :
  HAdd.hAdd (α := LocallyConstant (↑C : Type u) ℤ)
      (w.sum fun (a : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (b : ℤ) ↦
        (πs C o : (a : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) → LocallyConstant (↑C : Type u) ℤ)
          (b • eval (π C fun (x : I) ↦ ord I x < o) a))
      (m.sum fun (i : Products I) (a : ℤ) ↦ a • (List.map (e C) (term I ho :: (↑i : List I))).prod) =
    Products.eval C (↑l : Products I)
hc :
  (w.sum fun (i : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (a : ℤ) ↦
      a • eval (π C fun (x : I) ↦ ord I x < o) i) =
    n
⊢ Membership.mem (γ := Submodule ℤ (LocallyConstant (↑C : Type u) ℤ))
    (Submodule.span ℤ (Set.image (α := Products I) (Products.eval C) {m : Products I | m < (↑l : Products I)}))
    (m.sum fun (i : Products I) (a : ℤ) ↦ a • (List.map (e C) (term I ho :: (↑i : List I))).prod)
have h₂ : ∀ (c : Products I),
  Ne (α := ℤ) ((m : (a : Products I) → ℤ) c : ℤ) (0 : ℤ) →
    Membership.mem (γ := Submodule ℤ (LocallyConstant (↑C : Type u) ℤ))
      (Submodule.span ℤ (Set.image (α := Products I) (Products.eval C) {m : Products I | m < (↑l : Products I)}))
      (HSMul.hSMul (α := ℤ) ((m : (a : Products I) → ℤ) c : ℤ) (List.map (e C) (term I ho :: (↑c : List I))).prod)
Tactic: apply Submodule.finsuppSum_mem
-- Lean 4 proof step from Mathlib.Topology.Category.Profinite.Nobeling.Successor (goal)
Goal:
I : Type u
C : Set (I → Bool)
inst : LinearOrder I
inst_1 : WellFoundedLT I
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun (x1 x2 : I) ↦ x1 < x2
l : (↑(MaxProducts C ho) : Type u)
h₁ :
  LE.le (α := Submodule ℤ (LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ)) ⊤
    (Submodule.span ℤ
      (Set.range (ι := { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l })
        (eval (π C fun (x : I) ↦ ord I x < o))))
this : Inhabited I
m : Products I →₀ ℤ
hmmem :
  Membership.mem (γ := Submodule ℤ (Products I →₀ ℤ))
    (Finsupp.supported ℤ ℤ {m : Products I | m < (↑l : Products I).Tail}) m
hmsum :
  Eq (α := LocallyConstant (↑(C' C ho) : Type u) ℤ)
    (m.sum fun (i : Products I) (a : ℤ) ↦ a • Products.eval (C' C ho) i : LocallyConstant (↑(C' C ho) : Type u) ℤ)
    ((Linear_CC' C hsC ho : (a : LocallyConstant (↑C : Type u) ℤ) → LocallyConstant (↑(C' C ho) : Type u) ℤ)
        (Products.eval C (↑l : Products I)) :
      LocallyConstant (↑(C' C ho) : Type u) ℤ)
hse :
  LinearMap.range (M := LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) (πs C o) =
    (Linear_CC' C hsC ho).ker
n : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ
w : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l } →₀ ℤ
hn :
  HAdd.hAdd (α := LocallyConstant (↑C : Type u) ℤ)
      (w.sum fun (a : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (b : ℤ) ↦
        (πs C o : (a : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) → LocallyConstant (↑C : Type u) ℤ)
          (b • eval (π C fun (x : I) ↦ ord I x < o) a))
      (m.sum fun (i : Products I) (a : ℤ) ↦ a • (List.map (e C) (term I ho :: (↑i : List I))).prod) =
    Products.eval C (↑l : Products I)
hc :
  (w.sum fun (i : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (a : ℤ) ↦
      a • eval (π C fun (x : I) ↦ ord I x < o) i) =
    n
q : Products I
hq : Ne (α := ℤ) ((m : (a : Products I) → ℤ) q : ℤ) (0 : ℤ)
⊢ Membership.mem (γ := Submodule ℤ (LocallyConstant (↑C : Type u) ℤ))
    (Submodule.span ℤ (Set.image (α := Products I) (Products.eval C) {m : Products I | m < (↑l : Products I)}))
    (HSMul.hSMul (α := ℤ) ((m : (a : Products I) → ℤ) q : ℤ) (List.map (e C) (term I ho :: (↑q : List I))).prod)
have h₂ : Membership.mem (γ := Submodule ℤ (LocallyConstant (↑C : Type u) ℤ))
  (Submodule.span ℤ (Set.image (α := Products I) (Products.eval C) {m : Products I | m < (↑l : Products I)}))
  (List.map (e C) (term I ho :: (↑q : List I))).prod
Tactic: apply Submodule.smul_mem
-- Lean 4 proof step from Mathlib.Topology.Category.Profinite.Nobeling.Successor (goal)
Goal:
I : Type u
C : Set (I → Bool)
inst : LinearOrder I
inst_1 : WellFoundedLT I
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun (x1 x2 : I) ↦ x1 < x2
l : (↑(MaxProducts C ho) : Type u)
h₁ :
  LE.le (α := Submodule ℤ (LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ)) ⊤
    (Submodule.span ℤ
      (Set.range (ι := { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l })
        (eval (π C fun (x : I) ↦ ord I x < o))))
this : Inhabited I
m : Products I →₀ ℤ
hmmem :
  Membership.mem (γ := Submodule ℤ (Products I →₀ ℤ))
    (Finsupp.supported ℤ ℤ {m : Products I | m < (↑l : Products I).Tail}) m
hmsum :
  Eq (α := LocallyConstant (↑(C' C ho) : Type u) ℤ)
    (m.sum fun (i : Products I) (a : ℤ) ↦ a • Products.eval (C' C ho) i : LocallyConstant (↑(C' C ho) : Type u) ℤ)
    ((Linear_CC' C hsC ho : (a : LocallyConstant (↑C : Type u) ℤ) → LocallyConstant (↑(C' C ho) : Type u) ℤ)
        (Products.eval C (↑l : Products I)) :
      LocallyConstant (↑(C' C ho) : Type u) ℤ)
hse :
  LinearMap.range (M := LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) (πs C o) =
    (Linear_CC' C hsC ho).ker
n : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ
w : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l } →₀ ℤ
hn :
  HAdd.hAdd (α := LocallyConstant (↑C : Type u) ℤ)
      (w.sum fun (a : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (b : ℤ) ↦
        (πs C o : (a : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) → LocallyConstant (↑C : Type u) ℤ)
          (b • eval (π C fun (x : I) ↦ ord I x < o) a))
      (m.sum fun (i : Products I) (a : ℤ) ↦ a • (List.map (e C) (term I ho :: (↑i : List I))).prod) =
    Products.eval C (↑l : Products I)
hc :
  (w.sum fun (i : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (a : ℤ) ↦
      a • eval (π C fun (x : I) ↦ ord I x < o) i) =
    n
q : Products I
hq : Ne (α := ℤ) ((m : (a : Products I) → ℤ) q : ℤ) (0 : ℤ)
⊢ Membership.mem (γ := Submodule ℤ (LocallyConstant (↑C : Type u) ℤ))
    (Submodule.span ℤ (Set.image (α := Products I) (Products.eval C) {m : Products I | m < (↑l : Products I)}))
    (List.map (e C) (term I ho :: (↑q : List I))).prod
have h₂ : (List.map (e C) (term I ho :: (↑q : List I))).prod ∈
  Set.image (α := Products I) (Products.eval C) {m : Products I | m < (↑l : Products I)}
Tactic: apply Submodule.subset_span
-- Lean 4 proof step from Mathlib.Topology.Category.Profinite.Nobeling.Successor (hypothesis)
Goal:
I : Type u
C : Set (I → Bool)
inst : LinearOrder I
inst_1 : WellFoundedLT I
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun (x1 x2 : I) ↦ x1 < x2
l : (↑(MaxProducts C ho) : Type u)
h₁ :
  LE.le (α := Submodule ℤ (LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ)) ⊤
    (Submodule.span ℤ
      (Set.range (ι := { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l })
        (eval (π C fun (x : I) ↦ ord I x < o))))
this : Inhabited I
m : Products I →₀ ℤ
hmmem : (↑m.support : Set (Products I)) ⊆ {m : Products I | m < (↑l : Products I).Tail}
hmsum :
  Eq (α := LocallyConstant (↑(C' C ho) : Type u) ℤ)
    (m.sum fun (i : Products I) (a : ℤ) ↦ a • Products.eval (C' C ho) i : LocallyConstant (↑(C' C ho) : Type u) ℤ)
    ((Linear_CC' C hsC ho : (a : LocallyConstant (↑C : Type u) ℤ) → LocallyConstant (↑(C' C ho) : Type u) ℤ)
        (Products.eval C (↑l : Products I)) :
      LocallyConstant (↑(C' C ho) : Type u) ℤ)
hse :
  LinearMap.range (M := LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) (πs C o) =
    (Linear_CC' C hsC ho).ker
n : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ
w : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l } →₀ ℤ
hn :
  HAdd.hAdd (α := LocallyConstant (↑C : Type u) ℤ)
      (w.sum fun (a : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (b : ℤ) ↦
        (πs C o : (a : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) → LocallyConstant (↑C : Type u) ℤ)
          (b • eval (π C fun (x : I) ↦ ord I x < o) a))
      (m.sum fun (i : Products I) (a : ℤ) ↦ a • (List.map (e C) (term I ho :: (↑i : List I))).prod) =
    Products.eval C (↑l : Products I)
hc :
  (w.sum fun (i : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (a : ℤ) ↦
      a • eval (π C fun (x : I) ↦ ord I x < o) i) =
    n
q : Products I
hq : Ne (α := ℤ) ((m : (a : Products I) → ℤ) q : ℤ) (0 : ℤ)
⊢ (List.map (e C) (term I ho :: (↑q : List I))).prod ∈
    Set.image (α := Products I) (Products.eval C) {m : Products I | m < (↑l : Products I)}
have hq₁ : q ∈ m.support
Tactic: rw [← Finsupp.mem_support_iff] at hq
Cleared hypotheses: hq
-- Lean 4 proof step from Mathlib.Topology.Category.Profinite.Nobeling.Successor (goal)
Goal:
I : Type u
C : Set (I → Bool)
inst : LinearOrder I
inst_1 : WellFoundedLT I
o : Ordinal.{u}
hC : IsClosed C
hsC : contained C (Order.succ o)
ho : o < Ordinal.type fun (x1 x2 : I) ↦ x1 < x2
l : (↑(MaxProducts C ho) : Type u)
h₁ :
  LE.le (α := Submodule ℤ (LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ)) ⊤
    (Submodule.span ℤ
      (Set.range (ι := { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l })
        (eval (π C fun (x : I) ↦ ord I x < o))))
this : Inhabited I
m : Products I →₀ ℤ
hmmem : (↑m.support : Set (Products I)) ⊆ {m : Products I | m < (↑l : Products I).Tail}
hmsum :
  Eq (α := LocallyConstant (↑(C' C ho) : Type u) ℤ)
    (m.sum fun (i : Products I) (a : ℤ) ↦ a • Products.eval (C' C ho) i : LocallyConstant (↑(C' C ho) : Type u) ℤ)
    ((Linear_CC' C hsC ho : (a : LocallyConstant (↑C : Type u) ℤ) → LocallyConstant (↑(C' C ho) : Type u) ℤ)
        (Products.eval C (↑l : Products I)) :
      LocallyConstant (↑(C' C ho) : Type u) ℤ)
hse :
  LinearMap.range (M := LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) (πs C o) =
    (Linear_CC' C hsC ho).ker
n : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ
w : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l } →₀ ℤ
hn :
  HAdd.hAdd (α := LocallyConstant (↑C : Type u) ℤ)
      (w.sum fun (a : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (b : ℤ) ↦
        (πs C o : (a : LocallyConstant (↑(π C fun (x : I) ↦ ord I x < o) : Type u) ℤ) → LocallyConstant (↑C : Type u) ℤ)
          (b • eval (π C fun (x : I) ↦ ord I x < o) a))
      (m.sum fun (i : Products I) (a : ℤ) ↦ a • (List.map (e C) (term I ho :: (↑i : List I))).prod) =
    Products.eval C (↑l : Products I)
hc :
  (w.sum fun (i : { l : Products I // Products.isGood (π C fun (x : I) ↦ ord I x < o) l }) (a : ℤ) ↦
      a • eval (π C fun (x : I) ↦ ord I x < o) i) =
    n
q : Products I
hq : q ∈ m.support
⊢ (List.map (e C) (term I ho :: (↑q : List I))).prod ∈
    Set.image (α := Products I) (Products.eval C) {m : Products I | m < (↑l : Products I)}
have h₂ : Membership.mem (γ := Set (Products I)) {m : Products I | m < (↑l : Products I)}
  (Subtype.mk (p := fun (l : List I) ↦ List.IsChain (fun (x1 x2 : I) ↦ x1 > x2) l) (term I ho :: (↑q : List I)) sorry)
Tactic: refine ⟨⟨term I ho :: q.val, isChain_cons_of_lt C hsC ho l q (hmmem hq)⟩, ⟨?_, rfl⟩⟩