\import Algebra.Group
\import Algebra.Group.GSet.ExampleActions
\import Algebra.Group.GSet
\import Algebra.Module
\import Algebra.Module.LinearMap
\import Algebra.Pointed
\import Algebra.Ring
\import Meta
\import Paths
\import Paths.Meta
\class LinRepres \extends LModule, GroupAction {
| **-ldistr {g : G} {e e' : E} : g ** (e + e') = g ** e + g ** e'
| **-*c {g : G} {e : E} {c : R} : g ** (c *c e) = c *c (g ** e)
\lemma g**-zro {g : G} : g ** 0 = 0 => rewrite (inv *c_zro-right, **-*c, *c_zro-left, *c_zro-left) idp
\lemma g**-negative {g : G} {e : E} : g ** negative e = negative (g ** e) => rewrite (inv neg_ide_*c, **-*c, neg_ide_*c) idp
\func toLinearMap(g : G) : LinearMap \this \this \cowith
| func e => g ** e
| func-+ => **-ldistr
| func-*c => **-*c
\lemma toLinearMap-ide : toLinearMap ide = LinearMap.id
=> exts \lam _ => unfold id-action
}
\func TrivialAction {R : Ring} (E : LModule R) (G : Group) : LinRepres R G \cowith
| LModule => E
| GroupAction => trivialAction G E
| **-*c => idp
| **-ldistr => idp