Theorem: lift_cardinal_mk_eq_lift_cardinal_mk_field_pow_lift_rank
File: Mathlib/LinearAlgebra/Dimension/FreeAndStrongRankCondition.lean

tactic: haveI := nontrivial_of_invariantBasisNumber K
state_before: K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
inst✝ : Module.Finite K V
⊢ lift.{u, v} #V = lift.{v, u} #K ^ lift.{u, v} (Module.rank K V)
state_after: K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
inst✝ : Module.Finite K V
this : Nontrivial K
⊢ lift.{u, v} #V = lift.{v, u} #K ^ lift.{u, v} (Module.rank K V)

tactic: obtain ⟨s, hs⟩ := Module.Free.exists_basis (R := K) (M := V)
state_before: K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
inst✝ : Module.Finite K V
this : Nontrivial K
⊢ lift.{u, v} #V = lift.{v, u} #K ^ lift.{u, v} (Module.rank K V)
state_after: case intro.mk
K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
inst✝ : Module.Finite K V
this : Nontrivial K
s : Type v
hs : Basis s K V
⊢ lift.{u, v} #V = lift.{v, u} #K ^ lift.{u, v} (Module.rank K V)

tactic: haveI : Finite s := by
  obtain ⟨t, ht⟩ := ‹Module.Finite K V›
  exact basis_finite_of_finite_spans _ t.finite_toSet ht hs
state_before: case intro.mk
K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
inst✝ : Module.Finite K V
this : Nontrivial K
s : Type v
hs : Basis s K V
⊢ lift.{u, v} #V = lift.{v, u} #K ^ lift.{u, v} (Module.rank K V)
state_after: case intro.mk
K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
inst✝ : Module.Finite K V
this✝ : Nontrivial K
s : Type v
hs : Basis s K V
this : Finite s
⊢ lift.{u, v} #V = lift.{v, u} #K ^ lift.{u, v} (Module.rank K V)

tactic: have := lift_mk_eq'.2 ⟨hs.repr.toEquiv⟩
state_before: case intro.mk
K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
inst✝ : Module.Finite K V
this✝ : Nontrivial K
s : Type v
hs : Basis s K V
this : Finite s
⊢ lift.{u, v} #V = lift.{v, u} #K ^ lift.{u, v} (Module.rank K V)
state_after: case intro.mk
K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
inst✝ : Module.Finite K V
this✝¹ : Nontrivial K
s : Type v
hs : Basis s K V
this✝ : Finite s
this : lift.{max u v, v} #V = lift.{v, max u v} #(s →₀ K)
⊢ lift.{u, v} #V = lift.{v, u} #K ^ lift.{u, v} (Module.rank K V)

tactic: rwa [Finsupp.equivFunOnFinite.cardinal_eq, mk_arrow, hs.mk_eq_rank'', lift_power, lift_lift,
  lift_lift, lift_umax'] at this
state_before: case intro.mk
K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
inst✝ : Module.Finite K V
this✝¹ : Nontrivial K
s : Type v
hs : Basis s K V
this✝ : Finite s
this : lift.{max u v, v} #V = lift.{v, max u v} #(s →₀ K)
⊢ lift.{u, v} #V = lift.{v, u} #K ^ lift.{u, v} (Module.rank K V)
state_after: no goals

tactic: obtain ⟨t, ht⟩ := ‹Module.Finite K V›
state_before: K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
inst✝ : Module.Finite K V
this : Nontrivial K
s : Type v
hs : Basis s K V
⊢ Finite s
state_after: case mk.intro
K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
inst✝ : Module.Finite K V
this : Nontrivial K
s : Type v
hs : Basis s K V
t : Finset V
ht : span K ↑t = ⊤
⊢ Finite s

tactic: exact basis_finite_of_finite_spans _ t.finite_toSet ht hs
state_before: case mk.intro
K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
inst✝ : Module.Finite K V
this : Nontrivial K
s : Type v
hs : Basis s K V
t : Finset V
ht : span K ↑t = ⊤
⊢ Finite s
state_after: no goals