File: Mathlib/RingTheory/WittVector/Isocrystal.lean

full_name: Isocrystal.«_aux_Mathlib_RingTheory_WittVector_Isocrystal___macroRules_Isocrystal_termK(_,_)_1»
code: scoped[Isocrystal] notation "K(" p ", " k ")" => FractionRing (WittVector p k)
goal: Lean.Macro

full_name: Isocrystal._aux_Mathlib_RingTheory_WittVector_Isocrystal___unexpand_FractionRing_1
code: scoped[Isocrystal] notation "K(" p ", " k ")" => FractionRing (WittVector p k)
goal: Lean.PrettyPrinter.Unexpander

full_name: WittVector.FractionRing.frobenius
code: /-- The Frobenius automorphism of `k` induces an automorphism of `K`. -/
def FractionRing.frobenius : K(p, k) ≃+* K(p, k) 
goal: FractionRing (WittVector p k) ≃+* FractionRing (WittVector p k)

full_name: WittVector.FractionRing.frobeniusRingHom
code: /-- The Frobenius automorphism of `k` induces an endomorphism of `K`. For notation purposes. -/
def FractionRing.frobeniusRingHom : K(p, k) →+* K(p, k) 
goal: FractionRing (WittVector p k) →+* FractionRing (WittVector p k)

full_name: Isocrystal.«_aux_Mathlib_RingTheory_WittVector_Isocrystal___macroRules_Isocrystal_termφ(_,_)_1»
code: scoped[Isocrystal] notation "φ(" p ", " k ")" => WittVector.FractionRing.frobeniusRingHom p k
goal: Lean.Macro

full_name: Isocrystal._aux_Mathlib_RingTheory_WittVector_Isocrystal___unexpand_WittVector_FractionRing_frobeniusRingHom_1
code: scoped[Isocrystal] notation "φ(" p ", " k ")" => WittVector.FractionRing.frobeniusRingHom p k
goal: Lean.PrettyPrinter.Unexpander

full_name: WittVector.inv_pair₁
code: instance inv_pair₁ : RingHomInvPair φ(p, k) (FractionRing.frobenius p k).symm 
goal: RingHomInvPair (WittVector.FractionRing.frobeniusRingHom p k) ↑(WittVector.FractionRing.frobenius p k).symm

full_name: WittVector.inv_pair₂
code: instance inv_pair₂ : RingHomInvPair ((FractionRing.frobenius p k).symm : K(p, k) →+* K(p, k))
    (FractionRing.frobenius p k) 
goal: RingHomInvPair ↑(WittVector.FractionRing.frobenius p k).symm ↑(WittVector.FractionRing.frobenius p k)

full_name: Isocrystal.«_aux_Mathlib_RingTheory_WittVector_Isocrystal___macroRules_Isocrystal_term_→ᶠˡ[_,_]__1»
code: scoped[Isocrystal]
  notation:50 M " →ᶠˡ[" p ", " k "] " M₂ =>
    LinearMap (WittVector.FractionRing.frobeniusRingHom p k) M M₂
goal: Lean.Macro

full_name: Isocrystal._aux_Mathlib_RingTheory_WittVector_Isocrystal___unexpand_LinearMap_1
code: scoped[Isocrystal]
  notation:50 M " →ᶠˡ[" p ", " k "] " M₂ =>
    LinearMap (WittVector.FractionRing.frobeniusRingHom p k) M M₂
goal: Lean.PrettyPrinter.Unexpander

full_name: Isocrystal.«_aux_Mathlib_RingTheory_WittVector_Isocrystal___macroRules_Isocrystal_term_≃ᶠˡ[_,_]__1»
code: scoped[Isocrystal]
  notation:50 M " ≃ᶠˡ[" p ", " k "] " M₂ =>
    LinearEquiv (WittVector.FractionRing.frobeniusRingHom p k) M M₂
goal: Lean.Macro

full_name: Isocrystal._aux_Mathlib_RingTheory_WittVector_Isocrystal___unexpand_LinearEquiv_1
code: scoped[Isocrystal]
  notation:50 M " ≃ᶠˡ[" p ", " k "] " M₂ =>
    LinearEquiv (WittVector.FractionRing.frobeniusRingHom p k) M M₂
goal: Lean.PrettyPrinter.Unexpander

full_name: WittVector.Isocrystal
code: /-- An isocrystal is a vector space over the field `K(p, k)` additionally equipped with a
Frobenius-linear automorphism.
-/
class Isocrystal (V : Type*) [AddCommGroup V] extends Module K(p, k) V where
  frob : V ≃ᶠˡ[p, k] V
goal: Type (max u_1 u_2)

full_name: WittVector.Isocrystal.frob
code: /-- An isocrystal is a vector space over the field `K(p, k)` additionally equipped with a
Frobenius-linear automorphism.
-/
class Isocrystal (V : Type*) [AddCommGroup V] extends Module K(p, k) V where
  frob : V ≃ᶠˡ[p, k] V
goal: V ≃ₛₗ[WittVector.FractionRing.frobeniusRingHom p k] V

full_name: WittVector.Isocrystal.frobenius
code: /--
Project the Frobenius automorphism from an isocrystal. Denoted by `Φ(p, k)` when V can be inferred.
-/
def Isocrystal.frobenius : V ≃ᶠˡ[p, k] V 
goal: V ≃ₛₗ[WittVector.FractionRing.frobeniusRingHom p k] V

full_name: Isocrystal.«_aux_Mathlib_RingTheory_WittVector_Isocrystal___macroRules_Isocrystal_termΦ(_,_)_1»
code: scoped[Isocrystal] notation "Φ(" p ", " k ")" => WittVector.Isocrystal.frobenius p k
goal: Lean.Macro

full_name: Isocrystal._aux_Mathlib_RingTheory_WittVector_Isocrystal___unexpand_WittVector_Isocrystal_frobenius_1
code: scoped[Isocrystal] notation "Φ(" p ", " k ")" => WittVector.Isocrystal.frobenius p k
goal: Lean.PrettyPrinter.Unexpander

full_name: WittVector.IsocrystalHom
code: /-- A homomorphism between isocrystals respects the Frobenius map. -/
-- Porting note(#5171): this linter isn't ported yet. @[nolint has_nonempty_instance]
structure IsocrystalHom extends V →ₗ[K(p, k)] V₂ where
  frob_equivariant : ∀ x : V, Φ(p, k) (toLinearMap x) = toLinearMap (Φ(p, k) x)
goal: Type (max u_2 u_3)

full_name: WittVector.IsocrystalHom.frob_equivariant
code: /-- A homomorphism between isocrystals respects the Frobenius map. -/
-- Porting note(#5171): this linter isn't ported yet. @[nolint has_nonempty_instance]
structure IsocrystalHom extends V →ₗ[K(p, k)] V₂ where
  frob_equivariant : ∀ x : V, Φ(p, k) (toLinearMap x) = toLinearMap (Φ(p, k) x)
goal: (WittVector.Isocrystal.frobenius p k) (self.toLinearMap x) = self.toLinearMap ((WittVector.Isocrystal.frobenius p k) x)

full_name: WittVector.IsocrystalEquiv.frob_equivariant
code: /-- An isomorphism between isocrystals respects the Frobenius map. -/
-- Porting note(#5171): this linter isn't ported yet. @[nolint has_nonempty_instance]
structure IsocrystalEquiv extends V ≃ₗ[K(p, k)] V₂ where
  frob_equivariant : ∀ x : V, Φ(p, k) (toLinearEquiv x) = toLinearEquiv (Φ(p, k) x)
goal: (WittVector.Isocrystal.frobenius p k) (self.toLinearEquiv x) =
  self.toLinearEquiv ((WittVector.Isocrystal.frobenius p k) x)

full_name: WittVector.IsocrystalEquiv
code: /-- An isomorphism between isocrystals respects the Frobenius map. -/
-- Porting note(#5171): this linter isn't ported yet. @[nolint has_nonempty_instance]
structure IsocrystalEquiv extends V ≃ₗ[K(p, k)] V₂ where
  frob_equivariant : ∀ x : V, Φ(p, k) (toLinearEquiv x) = toLinearEquiv (Φ(p, k) x)
goal: Type (max u_2 u_3)

full_name: Isocrystal.«_aux_Mathlib_RingTheory_WittVector_Isocrystal___macroRules_Isocrystal_term_→ᶠⁱ[_,_]__1»
code: scoped[Isocrystal] notation:50 M " →ᶠⁱ[" p ", " k "] " M₂ => WittVector.IsocrystalHom p k M M₂
goal: Lean.Macro

full_name: Isocrystal._aux_Mathlib_RingTheory_WittVector_Isocrystal___unexpand_WittVector_IsocrystalHom_1
code: scoped[Isocrystal] notation:50 M " →ᶠⁱ[" p ", " k "] " M₂ => WittVector.IsocrystalHom p k M M₂
goal: Lean.PrettyPrinter.Unexpander

full_name: Isocrystal.«_aux_Mathlib_RingTheory_WittVector_Isocrystal___macroRules_Isocrystal_term_≃ᶠⁱ[_,_]__1»
code: scoped[Isocrystal] notation:50 M " ≃ᶠⁱ[" p ", " k "] " M₂ => WittVector.IsocrystalEquiv p k M M₂
goal: Lean.Macro

full_name: Isocrystal._aux_Mathlib_RingTheory_WittVector_Isocrystal___unexpand_WittVector_IsocrystalEquiv_1
code: scoped[Isocrystal] notation:50 M " ≃ᶠⁱ[" p ", " k "] " M₂ => WittVector.IsocrystalEquiv p k M M₂
goal: Lean.PrettyPrinter.Unexpander

full_name: WittVector.StandardOneDimIsocrystal
code: /-- Type synonym for `K(p, k)` to carry the standard 1-dimensional isocrystal structure
of slope `m : ℤ`.
-/
@[nolint unusedArguments]
-- Porting note(#5171): this linter isn't ported yet. @[nolint has_nonempty_instance]
def StandardOneDimIsocrystal (_m : ℤ) : Type _ 
goal: Type u_1

full_name: WittVector.instAddCommGroupStandardOneDimIsocrystal
code: instance {m : ℤ} : AddCommGroup (StandardOneDimIsocrystal p k m) 
goal: AddCommGroup (WittVector.StandardOneDimIsocrystal p k m)

full_name: WittVector.instModuleFractionRingStandardOneDimIsocrystal
code: instance {m : ℤ} : Module K(p, k) (StandardOneDimIsocrystal p k m) 
goal: Module (FractionRing (WittVector p k)) (WittVector.StandardOneDimIsocrystal p k m)

full_name: WittVector.instIsocrystalStandardOneDimIsocrystal
code: /-- The standard one-dimensional isocrystal of slope `m : ℤ` is an isocrystal. -/
instance (m : ℤ) : Isocrystal p k (StandardOneDimIsocrystal p k m) 
goal: WittVector.Isocrystal p k (WittVector.StandardOneDimIsocrystal p k m)

full_name: WittVector.StandardOneDimIsocrystal.frobenius_apply
code: @[simp]
theorem StandardOneDimIsocrystal.frobenius_apply (m : ℤ) (x : StandardOneDimIsocrystal p k m) :
    Φ(p, k) x = (p : K(p, k)) ^ m • φ(p, k) x 
goal: (WittVector.Isocrystal.frobenius p k) x = ↑p ^ m • (WittVector.FractionRing.frobeniusRingHom p k) x

full_name: WittVector.isocrystal_classification
code: /-- A one-dimensional isocrystal over an algebraically closed field
admits an isomorphism to one of the standard (indexed by `m : ℤ`) one-dimensional isocrystals. -/
theorem isocrystal_classification (k : Type*) [Field k] [IsAlgClosed k] [CharP k p] (V : Type*)
    [AddCommGroup V] [Isocrystal p k V] (h_dim : finrank K(p, k) V = 1) :
    ∃ m : ℤ, Nonempty (StandardOneDimIsocrystal p k m ≃ᶠⁱ[p, k] V) 
goal: ∃ m, Nonempty (WittVector.IsocrystalEquiv p k (WittVector.StandardOneDimIsocrystal p k m) V)