Theorem: Zlattice.module_free
File: Mathlib/Algebra/Module/Zlattice/Basic.lean

Proof steps:
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
inst✝ : IsZlattice K L
⊢ Module.Free ℤ ↥L
state_after: 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
inst✝ : IsZlattice K L
this : Module.Finite ℤ ↥L
⊢ Module.Free ℤ ↥L
tactic: have : Module.Finite ℤ L := module_finite K L
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
inst✝ : IsZlattice K L
this : Module.Finite ℤ ↥L
⊢ Module.Free ℤ ↥L
state_after: 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
inst✝ : IsZlattice K L
this✝ : Module.Finite ℤ ↥L
this : Module ℚ E
⊢ Module.Free ℤ ↥L
tactic: have : Module ℚ E := Module.compHom E (algebraMap ℚ K)
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
inst✝ : IsZlattice K L
this✝ : Module.Finite ℤ ↥L
this : Module ℚ E
⊢ Module.Free ℤ ↥L
state_after: 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
inst✝ : IsZlattice K L
this✝¹ : Module.Finite ℤ ↥L
this✝ : Module ℚ E
this : NoZeroSMulDivisors ℤ E
⊢ Module.Free ℤ ↥L
tactic: have : NoZeroSMulDivisors ℤ E := RatModule.noZeroSMulDivisors
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
inst✝ : IsZlattice K L
this✝¹ : Module.Finite ℤ ↥L
this✝ : Module ℚ E
this : NoZeroSMulDivisors ℤ E
⊢ Module.Free ℤ ↥L
state_after: 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
inst✝ : IsZlattice K L
this✝² : Module.Finite ℤ ↥L
this✝¹ : Module ℚ E
this✝ : NoZeroSMulDivisors ℤ E
this : NoZeroSMulDivisors ℤ ↥L
⊢ Module.Free ℤ ↥L
tactic: have : NoZeroSMulDivisors ℤ L := by
    change NoZeroSMulDivisors ℤ (AddSubgroup.toIntSubmodule L)
    exact noZeroSMulDivisors _
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
inst✝ : IsZlattice K L
this✝² : Module.Finite ℤ ↥L
this✝¹ : Module ℚ E
this✝ : NoZeroSMulDivisors ℤ E
this : NoZeroSMulDivisors ℤ ↥L
⊢ Module.Free ℤ ↥L
state_after: no goals
tactic: infer_instance