Theorem: Basis.ofZlatticeBasis_span
File: Mathlib/Algebra/Module/Zlattice/Basic.lean

tactic: calc (span ℤ (Set.range (b.ofZlatticeBasis K))).toAddSubgroup
  _ = (span ℤ (L.subtype.toIntLinearMap '' (Set.range b))).toAddSubgroup := by congr; ext; simp
  _ = (map L.subtype.toIntLinearMap (span ℤ (Set.range b))).toAddSubgroup := by
      rw [Submodule.map_span]
  _ = L := by simp [b.span_eq]
state_before: K : Type u_1
inst✝⁷ : NormedLinearOrderedField K
inst✝⁶ : HasSolidNorm K
inst✝⁵ : FloorRing K
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace K E
inst✝² : FiniteDimensional K E
inst✝¹ : ProperSpace E
L : AddSubgroup E
inst✝ : DiscreteTopology ↥L
ι : Type u_3
hs : IsZlattice K L
b : Basis ι ℤ ↥L
⊢ (span ℤ (Set.range ⇑(ofZlatticeBasis K L b))).toAddSubgroup = L
state_after: no goals

tactic: congr
state_before: K : Type u_1
inst✝⁷ : NormedLinearOrderedField K
inst✝⁶ : HasSolidNorm K
inst✝⁵ : FloorRing K
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace K E
inst✝² : FiniteDimensional K E
inst✝¹ : ProperSpace E
L : AddSubgroup E
inst✝ : DiscreteTopology ↥L
ι : Type u_3
hs : IsZlattice K L
b : Basis ι ℤ ↥L
⊢ (span ℤ (Set.range ⇑(ofZlatticeBasis K L b))).toAddSubgroup =
    (span ℤ (⇑L.subtype.toIntLinearMap '' Set.range ⇑b)).toAddSubgroup
state_after: case e_p.e_s
K : Type u_1
inst✝⁷ : NormedLinearOrderedField K
inst✝⁶ : HasSolidNorm K
inst✝⁵ : FloorRing K
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace K E
inst✝² : FiniteDimensional K E
inst✝¹ : ProperSpace E
L : AddSubgroup E
inst✝ : DiscreteTopology ↥L
ι : Type u_3
hs : IsZlattice K L
b : Basis ι ℤ ↥L
⊢ Set.range ⇑(ofZlatticeBasis K L b) = ⇑L.subtype.toIntLinearMap '' Set.range ⇑b

tactic: ext
state_before: case e_p.e_s
K : Type u_1
inst✝⁷ : NormedLinearOrderedField K
inst✝⁶ : HasSolidNorm K
inst✝⁵ : FloorRing K
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace K E
inst✝² : FiniteDimensional K E
inst✝¹ : ProperSpace E
L : AddSubgroup E
inst✝ : DiscreteTopology ↥L
ι : Type u_3
hs : IsZlattice K L
b : Basis ι ℤ ↥L
⊢ Set.range ⇑(ofZlatticeBasis K L b) = ⇑L.subtype.toIntLinearMap '' Set.range ⇑b
state_after: case e_p.e_s.h
K : Type u_1
inst✝⁷ : NormedLinearOrderedField K
inst✝⁶ : HasSolidNorm K
inst✝⁵ : FloorRing K
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace K E
inst✝² : FiniteDimensional K E
inst✝¹ : ProperSpace E
L : AddSubgroup E
inst✝ : DiscreteTopology ↥L
ι : Type u_3
hs : IsZlattice K L
b : Basis ι ℤ ↥L
x✝ : E
⊢ x✝ ∈ Set.range ⇑(ofZlatticeBasis K L b) ↔ x✝ ∈ ⇑L.subtype.toIntLinearMap '' Set.range ⇑b

tactic: simp
state_before: case e_p.e_s.h
K : Type u_1
inst✝⁷ : NormedLinearOrderedField K
inst✝⁶ : HasSolidNorm K
inst✝⁵ : FloorRing K
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace K E
inst✝² : FiniteDimensional K E
inst✝¹ : ProperSpace E
L : AddSubgroup E
inst✝ : DiscreteTopology ↥L
ι : Type u_3
hs : IsZlattice K L
b : Basis ι ℤ ↥L
x✝ : E
⊢ x✝ ∈ Set.range ⇑(ofZlatticeBasis K L b) ↔ x✝ ∈ ⇑L.subtype.toIntLinearMap '' Set.range ⇑b
state_after: no goals

tactic: rw [Submodule.map_span]
state_before: K : Type u_1
inst✝⁷ : NormedLinearOrderedField K
inst✝⁶ : HasSolidNorm K
inst✝⁵ : FloorRing K
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace K E
inst✝² : FiniteDimensional K E
inst✝¹ : ProperSpace E
L : AddSubgroup E
inst✝ : DiscreteTopology ↥L
ι : Type u_3
hs : IsZlattice K L
b : Basis ι ℤ ↥L
⊢ (span ℤ (⇑L.subtype.toIntLinearMap '' Set.range ⇑b)).toAddSubgroup =
    (map L.subtype.toIntLinearMap (span ℤ (Set.range ⇑b))).toAddSubgroup
state_after: no goals

tactic: simp [b.span_eq]
state_before: K : Type u_1
inst✝⁷ : NormedLinearOrderedField K
inst✝⁶ : HasSolidNorm K
inst✝⁵ : FloorRing K
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace K E
inst✝² : FiniteDimensional K E
inst✝¹ : ProperSpace E
L : AddSubgroup E
inst✝ : DiscreteTopology ↥L
ι : Type u_3
hs : IsZlattice K L
b : Basis ι ℤ ↥L
⊢ (map L.subtype.toIntLinearMap (span ℤ (Set.range ⇑b))).toAddSubgroup = L
state_after: no goals