internlm/Lean-Github huggingface dataset:
Theorem: prod_smul_primesOver
Proof state before:
case pos
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS✝ : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
P : ↑(primesOver S ⊥)
inst✝ : ⊥.IsMaximal
hRS : Algebra.IsIntegral R S
this : ↑P = ⊥
⊢ ⊥ ^ Finset.univ.card = ⊥ ^ finrank R S
Tactic:
refine (zero_pow ?_).trans (zero_pow ?_).symm
Proof state after:
case pos.refine_1
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS✝ : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
P : ↑(primesOver S ⊥)
inst✝ : ⊥.IsMaximal
hRS : Algebra.IsIntegral R S
this : ↑P = ⊥
⊢ Finset.univ.card ≠ 0

case pos.refine_2
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS✝ : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
P : ↑(primesOver S ⊥)
inst✝ : ⊥.IsMaximal
hRS : Algebra.IsIntegral R S
this : ↑P = ⊥
⊢ finrank R S ≠ 0
Theorem: prod_smul_primesOver
Proof state before:
case pos.refine_1
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS✝ : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
P : ↑(primesOver S ⊥)
inst✝ : ⊥.IsMaximal
hRS : Algebra.IsIntegral R S
this : ↑P = ⊥
⊢ Finset.univ.card ≠ 0
Tactic:
rw [Finset.card_univ, Ne, Fintype.card_eq_zero_iff]
Proof state after:
case pos.refine_1
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS✝ : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
P : ↑(primesOver S ⊥)
inst✝ : ⊥.IsMaximal
hRS : Algebra.IsIntegral R S
this : ↑P = ⊥
⊢ ¬IsEmpty (L ≃ₐ[K] L)
Theorem: prod_smul_primesOver
Proof state before:
case pos.refine_1
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS✝ : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
P : ↑(primesOver S ⊥)
inst✝ : ⊥.IsMaximal
hRS : Algebra.IsIntegral R S
this : ↑P = ⊥
⊢ ¬IsEmpty (L ≃ₐ[K] L)
Tactic:
simp only [not_isEmpty_of_nonempty, not_false_eq_true]
Proof state after:
no goals
Theorem: prod_smul_primesOver
Proof state before:
case pos.refine_2
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS✝ : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
P : ↑(primesOver S ⊥)
inst✝ : ⊥.IsMaximal
hRS : Algebra.IsIntegral R S
this : ↑P = ⊥
⊢ finrank R S ≠ 0
Tactic:
have hR := not_imp_not.mp (Ring.ne_bot_of_isMaximal_of_not_isField ‹_›) rfl
Proof state after:
case pos.refine_2
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS✝ : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
P : ↑(primesOver S ⊥)
inst✝ : ⊥.IsMaximal
hRS : Algebra.IsIntegral R S
this : ↑P = ⊥
hR : IsField R
⊢ finrank R S ≠ 0
Theorem: prod_smul_primesOver
Proof state before:
case pos.refine_2
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS✝ : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
P : ↑(primesOver S ⊥)
inst✝ : ⊥.IsMaximal
hRS : Algebra.IsIntegral R S
this : ↑P = ⊥
hR : IsField R
⊢ finrank R S ≠ 0
Tactic:
letI : Field R := hR.toField
Proof state after:
case pos.refine_2
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
this✝³ : IsDomain S
this✝² : IsDedekindDomain S
hRS✝ : NoZeroSMulDivisors R S
this✝¹ : IsNoetherian R S
P : ↑(primesOver S ⊥)
inst✝ : ⊥.IsMaximal
hRS : Algebra.IsIntegral R S
this✝ : ↑P = ⊥
hR : IsField R
this : Field R := hR.toField
⊢ finrank R S ≠ 0
Theorem: prod_smul_primesOver
Proof state before:
case pos.refine_2
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
this✝³ : IsDomain S
this✝² : IsDedekindDomain S
hRS✝ : NoZeroSMulDivisors R S
this✝¹ : IsNoetherian R S
P : ↑(primesOver S ⊥)
inst✝ : ⊥.IsMaximal
hRS : Algebra.IsIntegral R S
this✝ : ↑P = ⊥
hR : IsField R
this : Field R := hR.toField
⊢ finrank R S ≠ 0
Tactic:
exact finrank_pos.ne'
Proof state after:
no goals
Theorem: prod_smul_primesOver
Proof state before:
case pos
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝¹ : IsDomain S
this✝ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
⊢ Multiset.count P' (Multiset.map (fun σ => ↑(σ • P)) Finset.univ.val) =
    Ideal.ramificationIdxIn S p * Ideal.inertiaDegIn S p * if P' ∈ primesOver S p then 1 else 0
Tactic:
rw [if_pos hP', mul_one, Multiset.count_map]
Proof state after:
case pos
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝¹ : IsDomain S
this✝ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
⊢ Multiset.card (Multiset.filter (fun a => P' = ↑(a • P)) Finset.univ.val) =
    Ideal.ramificationIdxIn S p * Ideal.inertiaDegIn S p
Theorem: prod_smul_primesOver
Proof state before:
case pos
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝¹ : IsDomain S
this✝ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
⊢ Multiset.card (Multiset.filter (fun a => P' = ↑(a • P)) Finset.univ.val) =
    Ideal.ramificationIdxIn S p * Ideal.inertiaDegIn S p
Tactic:
have : Fintype (primesOver S p) := (primesOver_finite S p hp).fintype
Proof state after:
case pos
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
this : Fintype ↑(primesOver S p)
⊢ Multiset.card (Multiset.filter (fun a => P' = ↑(a • P)) Finset.univ.val) =
    Ideal.ramificationIdxIn S p * Ideal.inertiaDegIn S p
Theorem: prod_smul_primesOver
Proof state before:
case pos
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
this : Fintype ↑(primesOver S p)
⊢ Multiset.card (Multiset.filter (fun a => P' = ↑(a • P)) Finset.univ.val) =
    Ideal.ramificationIdxIn S p * Ideal.inertiaDegIn S p
Tactic:
apply mul_left_injective₀ (Set.ncard_ne_zero_of_mem P.prop)
Proof state after:
case pos.a
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
this : Fintype ↑(primesOver S p)
⊢ (fun a => a * (primesOver S p).ncard) (Multiset.card (Multiset.filter (fun a => P' = ↑(a • P)) Finset.univ.val)) =
    (fun a => a * (primesOver S p).ncard) (Ideal.ramificationIdxIn S p * Ideal.inertiaDegIn S p)
Theorem: prod_smul_primesOver
Proof state before:
case pos.a
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
this : Fintype ↑(primesOver S p)
⊢ (fun a => a * (primesOver S p).ncard) (Multiset.card (Multiset.filter (fun a => P' = ↑(a • P)) Finset.univ.val)) =
    (fun a => a * (primesOver S p).ncard) (Ideal.ramificationIdxIn S p * Ideal.inertiaDegIn S p)
Tactic:
dsimp only
Proof state after:
case pos.a
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
this : Fintype ↑(primesOver S p)
⊢ Multiset.card (Multiset.filter (fun a => P' = ↑(a • P)) Finset.univ.val) * (primesOver S p).ncard =
    Ideal.ramificationIdxIn S p * Ideal.inertiaDegIn S p * (primesOver S p).ncard
Theorem: prod_smul_primesOver
Proof state before:
case pos.a
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
this : Fintype ↑(primesOver S p)
⊢ Multiset.card (Multiset.filter (fun a => P' = ↑(a • P)) Finset.univ.val) * (primesOver S p).ncard =
    Ideal.ramificationIdxIn S p * Ideal.inertiaDegIn S p * (primesOver S p).ncard
Tactic:
rw [Ideal.ramificationIdxIn_mul_inertiaDegIn_mul_ncard_primesOver K L p hp,
  ← IsGalois.card_aut_eq_finrank, ← MulAction.card_orbit_mul_card_stabilizer_eq_card_group
    (L ≃ₐ[K] L) P, MulAction.orbit_eq_univ, mul_comm]
Proof state after:
case pos.a
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
this : Fintype ↑(primesOver S p)
⊢ (primesOver S p).ncard * Multiset.card (Multiset.filter (fun a => P' = ↑(a • P)) Finset.univ.val) =
    Fintype.card ↑Set.univ * Fintype.card ↥(MulAction.stabilizer (L ≃ₐ[K] L) P)
Theorem: prod_smul_primesOver
Proof state before:
case pos.a
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
this : Fintype ↑(primesOver S p)
⊢ (primesOver S p).ncard * Multiset.card (Multiset.filter (fun a => P' = ↑(a • P)) Finset.univ.val) =
    Fintype.card ↑Set.univ * Fintype.card ↥(MulAction.stabilizer (L ≃ₐ[K] L) P)
Tactic:
simp only [Fintype.card_ofFinset, Set.mem_univ, Finset.mem_univ, forall_true_left,
  Subtype.forall, implies_true, forall_const, Finset.filter_true_of_mem,
  MulAction.mem_stabilizer_iff, Finset.card_univ, ← Set.Nat.card_coe_set_eq,
  Nat.card_eq_fintype_card]
Proof state after:
case pos.a
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
this : Fintype ↑(primesOver S p)
⊢ Fintype.card ↑(primesOver S p) * Multiset.card (Multiset.filter (fun a => P' = ↑(a • P)) Finset.univ.val) =
    Fintype.card ↑(primesOver S p) * Fintype.card { x // x • P = P }
Theorem: prod_smul_primesOver
Proof state before:
case pos.a
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
this : Fintype ↑(primesOver S p)
⊢ Fintype.card ↑(primesOver S p) * Multiset.card (Multiset.filter (fun a => P' = ↑(a • P)) Finset.univ.val) =
    Fintype.card ↑(primesOver S p) * Fintype.card { x // x • P = P }
Tactic:
congr 1
Proof state after:
case pos.a.e_a
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
this : Fintype ↑(primesOver S p)
⊢ Multiset.card (Multiset.filter (fun a => P' = ↑(a • P)) Finset.univ.val) = Fintype.card { x // x • P = P }
Theorem: prod_smul_primesOver
Proof state before:
case pos.a.e_a
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
this : Fintype ↑(primesOver S p)
⊢ Multiset.card (Multiset.filter (fun a => P' = ↑(a • P)) Finset.univ.val) = Fintype.card { x // x • P = P }
Tactic:
rw [← Finset.filter_val, ← Finset.card, ← Fintype.card_subtype]
Proof state after:
case pos.a.e_a
R : Type u_1
K : Type u_2
L : Type u_3
S : Type u_4
inst✝¹⁶ : CommRing R
inst✝¹⁵ : CommRing S
inst✝¹⁴ : Algebra R S
inst✝¹³ : Field K
inst✝¹² : Field L
inst✝¹¹ : IsDedekindDomain R
inst✝¹⁰ : Algebra R K
inst✝⁹ : IsFractionRing R K
inst✝⁸ : Algebra S L
inst✝⁷ : Algebra K L
inst✝⁶ : Algebra R L
inst✝⁵ : IsScalarTower R S L
inst✝⁴ : IsScalarTower R K L
inst✝³ : IsIntegralClosure S R L
inst✝² : FiniteDimensional K L
inst✝¹ : IsGalois K L
p : Ideal R
P : ↑(primesOver S p)
inst✝ : p.IsMaximal
this✝² : IsDomain S
this✝¹ : IsDedekindDomain S
hRS : NoZeroSMulDivisors R S
this✝ : IsNoetherian R S
hp : ¬p = ⊥
P' : Ideal S
hP' : P' ∈ primesOver S p
this : Fintype ↑(primesOver S p)
⊢ Fintype.card { x // P' = ↑(x • P) } = Fintype.card { x // x • P = P }