Documentation

Mathlib.Algebra.Module.StablyFree.Basic

Stably free modules #

Main definition #

class Module.IsStablyFree (R : Type u) [Ring R] (M : Type u_1) [AddCommGroup M] [Module R M] :

A module M over a commutative ring R is called stably free if there exists a finite free module N over R such that M ⊕ N is free.

The underlying constructor is marked as private. The intended constructor of IsStablyFree is IsStablyFree.of_free_prod, and use IsStablyFree.exist_free_prod to extract the property from IsStablyFree.

Instances
    theorem Module.IsStablyFree.exist_free_prod (R : Type u) [Ring R] (M : Type v) [AddCommGroup M] [Module R M] [IsStablyFree R M] :
    ∃ (N : Type u) (x : AddCommGroup N) (x_1 : Module R N) (_ : Module.Finite R N) (_ : Free R N), Free R (M × N)
    theorem Module.IsStablyFree.equiv {R : Type u} [Ring R] {M : Type v} [AddCommGroup M] [Module R M] {N : Type w} [AddCommGroup N] [Module R N] (e : M ≃ₗ[R] N) [IsStablyFree R M] :
    theorem Module.IsStablyFree.equiv_iff {R : Type u} [Ring R] {M : Type v} [AddCommGroup M] [Module R M] {N : Type w} [AddCommGroup N] [Module R N] (e : M ≃ₗ[R] N) :
    instance Module.instIsStablyFreeOfFree (R : Type u) [Ring R] (M : Type v) [AddCommGroup M] [Module R M] [Free R M] :
    theorem Module.IsStablyFree.of_free_prod (R : Type u) [Ring R] (M : Type v) [AddCommGroup M] [Module R M] (N : Type w) [AddCommGroup N] [Module R N] [Module.Finite R N] [Free R N] [Free R (M × N)] :
    theorem Module.IsStablyFree.of_free_prod' (R : Type u) [Ring R] (M : Type v) [AddCommGroup M] [Module R M] (N : Type w) [AddCommGroup N] [Module R N] [Module.Finite R N] [Free R N] [Free R (N × M)] :
    @[instance 100]