Documentation

Mathlib.Algebra.WithConv

Type synonym for linear map convolutive ring and intrinsic star #

This files provides the type synonym WithConv which we will use in later files to put the convolutive product on linear maps instance and the intrinsic star instance. This is to ensure that we only have one multiplication, one unit, and one star.

This is given for any type A so that we can have WithConv (A →ₗ[R] B), WithConv (A →L[R] B), WithConv (Matrix m n R), etc.

structure WithConv (A : Sort u_1) :
Sort (max 1 u_1)

A type synonym for the convolutive product of linear maps and intrinsic star.

The instances for the convolutive product and intrinsic star are only available with this type.

Use WithConv.linearEquiv to coerce into this type.

  • toConv :: (
    • ofConv : A

      Converts an element of WithConv A back to A.

  • )
Instances For
    def WithConv.delabToConv :
    Lean.PrettyPrinter.Delaborator.Delab

    This prevents toConv x being printed as { ofConv := x } by delabStructureInstance.

    Instances For
      theorem WithConv.ofConv_toConv {A : Type u_2} (x : A) :
      (toConv x).ofConv = x
      @[simp]
      theorem WithConv.toConv_ofConv {A : Type u_2} (x : WithConv A) :
      theorem WithConv.ofConv_surjective {A : Type u_2} :
      Function.Surjective ofConv
      theorem WithConv.toConv_surjective {A : Type u_2} :
      Function.Surjective toConv
      theorem WithConv.ofConv_injective {A : Type u_2} :
      Function.Injective ofConv
      theorem WithConv.toConv_injective {A : Type u_2} :
      Function.Injective toConv
      @[implicit_reducible]
      instance WithConv.instCoeFunForall {A : Type u_2} {B : Type u_3} {C : Type u_4} [CoeFun A fun (x : A) => BC] :
      CoeFun (WithConv A) fun (x : WithConv A) => BC
      theorem WithConv.ext {A : Type u_2} {x y : WithConv A} (h : x.ofConv = y.ofConv) :
      x = y
      theorem WithConv.ext_iff {A : Type u_2} {x y : WithConv A} :
      x = y x.ofConv = y.ofConv
      def WithConv.equiv (A : Type u_2) :

      WithConv.ofConv and WithConv.toConv as an equivalence.

      Instances For
        @[simp]
        theorem WithConv.equiv_apply {A : Type u_2} (x : WithConv A) :
        @[simp]
        theorem WithConv.symm_equiv_apply {A : Type u_2} (x : A) :
        @[implicit_reducible]
        instance WithConv.instUnique {A : Type u_2} [Unique A] :
        @[implicit_reducible]
        instance WithConv.instDecidableEq {A : Type u_2} [DecidableEq A] :
        DecidableEq (WithConv A)
        @[implicit_reducible]
        @[implicit_reducible]
        @[implicit_reducible]
        @[implicit_reducible]
        @[implicit_reducible]
        instance WithConv.instMulAction {R : Type u_1} {A : Type u_2} [Monoid R] [MulAction R A] :
        @[implicit_reducible]
        instance WithConv.instAddAction {R : Type u_1} {A : Type u_2} [AddMonoid R] [AddAction R A] :
        @[implicit_reducible]
        @[implicit_reducible]
        instance WithConv.instModule {R : Type u_1} {A : Type u_2} [Semiring R] [AddCommMonoid A] [Module R A] :
        def WithConv.congr {A : Type u_2} {B : Type u_3} (f : A B) :

        Lift an equivalence between A and B to WithConv A and WithConv B.

        Instances For
          @[simp]
          theorem WithConv.congr_apply {A : Type u_2} {B : Type u_3} (f : A B) (x : WithConv A) :
          @[simp]
          theorem WithConv.symm_congr {A : Type u_2} {B : Type u_3} (f : A B) :
          theorem WithConv.symm_congr_apply {A : Type u_2} {B : Type u_3} (f : A B) (x : WithConv B) :
          @[simp]
          theorem WithConv.toConv_sub {A : Type u_2} [AddGroup A] (x y : A) :
          toConv (x - y) = toConv x - toConv y
          @[simp]
          theorem WithConv.ofConv_sub {A : Type u_2} [AddGroup A] (x y : WithConv A) :
          (x - y).ofConv = x.ofConv - y.ofConv
          @[simp]
          theorem WithConv.ofConv_neg {A : Type u_2} [AddGroup A] (x : WithConv A) :
          @[simp]
          theorem WithConv.toConv_neg {A : Type u_2} [AddGroup A] (x : A) :
          @[simp]
          theorem WithConv.ofConv_smul {R : Type u_1} {A : Type u_2} [Monoid R] [MulAction R A] (c : R) (x : WithConv A) :
          (c x).ofConv = c x.ofConv
          @[simp]
          theorem WithConv.toConv_smul {R : Type u_1} {A : Type u_2} [Monoid R] [MulAction R A] (c : R) (x : A) :
          toConv (c x) = c toConv x
          @[simp]
          theorem WithConv.ofConv_zero {A : Type u_2} [AddMonoid A] :
          ofConv 0 = 0
          @[simp]
          theorem WithConv.toConv_zero {A : Type u_2} [AddMonoid A] :
          toConv 0 = 0
          @[simp]
          theorem WithConv.ofConv_add {A : Type u_2} [AddMonoid A] (x y : WithConv A) :
          (x + y).ofConv = x.ofConv + y.ofConv
          @[simp]
          theorem WithConv.toConv_add {A : Type u_2} [AddMonoid A] (x y : A) :
          toConv (x + y) = toConv x + toConv y
          @[simp]
          theorem WithConv.ofConv_eq_zero {A : Type u_2} [AddMonoid A] {x : WithConv A} :
          x.ofConv = 0 x = 0
          @[simp]
          theorem WithConv.toConv_eq_zero {A : Type u_2} [AddMonoid A] {x : A} :
          toConv x = 0 x = 0

          The additive equivalence between WithConv A and A.

          Instances For
            @[simp]
            theorem WithConv.addEquiv_apply (A : Type u_2) [AddMonoid A] (self : WithConv A) :
            (WithConv.addEquiv A) self = self.ofConv
            @[simp]
            theorem WithConv.addEquiv_symm_apply_ofConv (A : Type u_2) [AddMonoid A] (ofConv : A) :
            ((WithConv.addEquiv A).symm ofConv).ofConv = ofConv
            def WithConv.linearEquiv (R : Type u_1) (A : Type u_2) [AddCommMonoid A] [Semiring R] [Module R A] :

            The linear equivalence between WithConv A and A.

            Instances For
              @[simp]
              theorem WithConv.linearEquiv_apply {R : Type u_1} {A : Type u_2} [AddCommMonoid A] [Semiring R] [Module R A] (a : WithConv A) :
              @[simp]
              theorem WithConv.symm_linearEquiv_apply {R : Type u_1} {A : Type u_2} [AddCommMonoid A] [Semiring R] [Module R A] (a : A) :
              @[simp]
              theorem WithConv.ofConv_sum {A : Type u_2} [AddCommMonoid A] {ι : Type u_5} (s : Finset ι) (f : ιWithConv A) :
              (∑ is, f i).ofConv = is, (f i).ofConv
              @[simp]
              theorem WithConv.toConv_sum {A : Type u_2} [AddCommMonoid A] {ι : Type u_5} (s : Finset ι) (f : ιA) :
              toConv (∑ is, f i) = is, toConv (f i)
              @[simp]
              theorem WithConv.ofConv_listSum {A : Type u_2} [AddCommMonoid A] (l : List (WithConv A)) :
              l.sum.ofConv = (List.map ofConv l).sum
              @[simp]
              theorem WithConv.toConv_listSum {A : Type u_2} [AddCommMonoid A] (l : List A) :
              toConv l.sum = (List.map toConv l).sum
              def WithConv.congrLinearEquiv {R : Type u_1} {A : Type u_2} {B : Type u_3} [AddCommMonoid A] [Semiring R] [Module R A] [AddCommMonoid B] [Module R B] (f : A ≃ₗ[R] B) :

              Lift a linear equivalence between A and B to WithConv A and WithConv B.

              Instances For
                @[simp]
                theorem WithConv.congrLinearEquiv_apply {R : Type u_1} {A : Type u_2} {B : Type u_3} [AddCommMonoid A] [Semiring R] [Module R A] [AddCommMonoid B] [Module R B] (f : A ≃ₗ[R] B) (x : WithConv A) :
                @[simp]
                theorem WithConv.symm_congrLinearEquiv {R : Type u_1} {A : Type u_2} {B : Type u_3} [AddCommMonoid A] [Semiring R] [Module R A] [AddCommMonoid B] [Module R B] (f : A ≃ₗ[R] B) :
                theorem WithConv.symm_congrLinearEquiv_apply {R : Type u_1} {A : Type u_2} {B : Type u_3} [AddCommMonoid A] [Semiring R] [Module R A] [AddCommMonoid B] [Module R B] (f : A ≃ₗ[R] B) (x : WithConv B) :