Theorem: Zlattice.covolume_eq_det_mul_measure
File: Mathlib/Algebra/Module/Zlattice/Covolume.lean

Proof steps:
state_before: E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : FiniteDimensional ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
L : AddSubgroup E
inst✝⁴ : DiscreteTopology ↥L
inst✝³ : IsZlattice ℝ L
μ : autoParam (Measure E) _auto✝
inst✝² : Measure.IsAddHaarMeasure μ
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι ℤ ↥L
b₀ : Basis ι ℝ E
⊢ covolume L μ = |b₀.det (Subtype.val ∘ ⇑b)| * (μ (Zspan.fundamentalDomain b₀)).toReal
state_after: E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : FiniteDimensional ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
L : AddSubgroup E
inst✝⁴ : DiscreteTopology ↥L
inst✝³ : IsZlattice ℝ L
μ : autoParam (Measure E) _auto✝
inst✝² : Measure.IsAddHaarMeasure μ
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι ℤ ↥L
b₀ : Basis ι ℝ E
⊢ |b₀.det ⇑(Basis.ofZlatticeBasis ℝ L b)| * (μ (parallelepiped ⇑b₀)).toReal =
    |b₀.det (Subtype.val ∘ ⇑b)| * (μ (parallelepiped ⇑b₀)).toReal
tactic: rw [covolume_eq_measure_fundamentalDomain L μ (isAddFundamentalDomain b μ),
    Zspan.measure_fundamentalDomain _ _ b₀, measure_congr
    (Zspan.fundamentalDomain_ae_parallelepiped b₀ μ), ENNReal.toReal_mul, ENNReal.toReal_ofReal
    (by positivity)]
state_before: E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : FiniteDimensional ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
L : AddSubgroup E
inst✝⁴ : DiscreteTopology ↥L
inst✝³ : IsZlattice ℝ L
μ : autoParam (Measure E) _auto✝
inst✝² : Measure.IsAddHaarMeasure μ
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι ℤ ↥L
b₀ : Basis ι ℝ E
⊢ |b₀.det ⇑(Basis.ofZlatticeBasis ℝ L b)| * (μ (parallelepiped ⇑b₀)).toReal =
    |b₀.det (Subtype.val ∘ ⇑b)| * (μ (parallelepiped ⇑b₀)).toReal
state_after: case e_a.e_a.h.e_6.h
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : FiniteDimensional ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
L : AddSubgroup E
inst✝⁴ : DiscreteTopology ↥L
inst✝³ : IsZlattice ℝ L
μ : autoParam (Measure E) _auto✝
inst✝² : Measure.IsAddHaarMeasure μ
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι ℤ ↥L
b₀ : Basis ι ℝ E
⊢ ⇑(Basis.ofZlatticeBasis ℝ L b) = Subtype.val ∘ ⇑b
tactic: congr
state_before: case e_a.e_a.h.e_6.h
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : FiniteDimensional ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
L : AddSubgroup E
inst✝⁴ : DiscreteTopology ↥L
inst✝³ : IsZlattice ℝ L
μ : autoParam (Measure E) _auto✝
inst✝² : Measure.IsAddHaarMeasure μ
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι ℤ ↥L
b₀ : Basis ι ℝ E
⊢ ⇑(Basis.ofZlatticeBasis ℝ L b) = Subtype.val ∘ ⇑b
state_after: case e_a.e_a.h.e_6.h.h
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : FiniteDimensional ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
L : AddSubgroup E
inst✝⁴ : DiscreteTopology ↥L
inst✝³ : IsZlattice ℝ L
μ : autoParam (Measure E) _auto✝
inst✝² : Measure.IsAddHaarMeasure μ
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι ℤ ↥L
b₀ : Basis ι ℝ E
x✝ : ι
⊢ (Basis.ofZlatticeBasis ℝ L b) x✝ = (Subtype.val ∘ ⇑b) x✝
tactic: ext
state_before: case e_a.e_a.h.e_6.h.h
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : FiniteDimensional ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
L : AddSubgroup E
inst✝⁴ : DiscreteTopology ↥L
inst✝³ : IsZlattice ℝ L
μ : autoParam (Measure E) _auto✝
inst✝² : Measure.IsAddHaarMeasure μ
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι ℤ ↥L
b₀ : Basis ι ℝ E
x✝ : ι
⊢ (Basis.ofZlatticeBasis ℝ L b) x✝ = (Subtype.val ∘ ⇑b) x✝
state_after: no goals
tactic: exact b.ofZlatticeBasis_apply ℝ L _