Lemma: free_abmon_umap_properties
S:DSet. ∀M:FAbMon(S). ∀N:AbMon. ∀p:|S| ⟶ |N|.
  ((((M.umap p) M.inj) p ∈ (|S| ⟶ |N|))
  ∧ (∀f:MonHom(M.mon,N). (((f M.inj) p ∈ (|S| ⟶ |N|))  (f (M.umap p) ∈ (|M.mon| ⟶ |N|)))))

Lemma: free_abmon_umap_properties_1
S:DSet. ∀M:FAbMon(S). ∀N:AbMon. ∀p:|S| ⟶ |N|.  (((M.umap p) M.inj) p ∈ (|S| ⟶ |N|))

Lemma: free_abmon_endomorph_is_id
S:DSet. ∀M:FAbMon(S). ∀f:MonHom(M.mon,M.mon).
  (((f M.inj) M.inj ∈ (|S| ⟶ |M.mon|))  (f Id{|M.mon|} ∈ (|M.mon| ⟶ |M.mon|)))

Lemma: free_abmon_unique
S:DSet. ∀M,N:FAbMon(S).  ∃f:MonHom(M.mon,N.mon). ∃g:MonHom(N.mon,M.mon). InvFuns(|M.mon|;|N.mon|;f;g)

Lemma: mk_fabmon
s:DSet. ∀g:AbMon. ∀i:|s| ⟶ |g|. ∀U:g':AbMon ⟶ (|s| ⟶ |g'|) ⟶ |g| ⟶ |g'|.
  ((∀g':AbMon. ∀f:|s| ⟶ |g'|.
      (IsMonHom{g,g'}(U g' f)
      ∧ (((U g' f) i) f ∈ (|s| ⟶ |g'|))
      ∧ (∀u:|g| ⟶ |g'|. (IsMonHom{g,g'}(u)  ((u i) f ∈ (|s| ⟶ |g'|))  (u (U g' f) ∈ (|g| ⟶ |g'|))))))
   (<g, i, U> ∈ FAbMon(s)))

Definition: mcopower_sig
mcopower_sig{i:l}(s;g) ==  mon:AbMon × inj:|s| ⟶ |g| ⟶ |mon| × (h:AbMon ⟶ (|s| ⟶ |g| ⟶ |h|) ⟶ |mon| ⟶ |h|)

Lemma: mcopower_sig_wf
s:DSet. ∀g:AbMon.  (mcopower_sig{i:l}(s;g) ∈ 𝕌')

Definition: mcopower_mon
m.mon ==  fst(m)

Lemma: mcopower_mon_wf
s:DSet. ∀g:AbMon. ∀m:mcopower_sig{i:l}(s;g).  (m.mon ∈ AbMon)

Definition: mcopower_inj
m.inj ==  fst(snd(m))

Lemma: mcopower_inj_wf
s:DSet. ∀g:AbMon. ∀m:mcopower_sig{i:l}(s;g).  (m.inj ∈ |s| ⟶ |g| ⟶ |m.mon|)

Definition: mcopower_umap
m.umap ==  snd(snd(m))

Lemma: mcopower_umap_wf
s:DSet. ∀g:AbMon. ∀m:mcopower_sig{i:l}(s;g).  (m.umap ∈ h:AbMon ⟶ (|s| ⟶ |g| ⟶ |h|) ⟶ |m.mon| ⟶ |h|)

Definition: mcopower
MCopower(s;g) ==
  {c:mcopower_sig{i:l}(s;g)| 
   (∀j:|s|. IsMonHom{g,c.mon}(c.inj j))
   ∧ (∀h:AbMon. ∀f:|s| ⟶ MonHom(g,h).
        (c.umap f) !v:|c.mon| ⟶ |h|. (IsMonHom{c.mon,h}(v) ∧ (∀j:|s|. ((f j) (v (c.inj j)) ∈ (|g| ⟶ |h|)))))} 

Lemma: mcopower_wf
s:DSet. ∀g:AbMon.  (MCopower(s;g) ∈ 𝕌')

Lemma: mcopower_properties
s:DSet. ∀g:AbMon. ∀c:MCopower(s;g).
  ((∀j:|s|. IsMonHom{g,c.mon}(c.inj j))
  ∧ (∀h:AbMon. ∀f:|s| ⟶ MonHom(g,h).
       (c.umap f) !v:|c.mon| ⟶ |h|. (IsMonHom{c.mon,h}(v) ∧ (∀j:|s|. ((f j) (v (c.inj j)) ∈ (|g| ⟶ |h|))))))

Lemma: mcopower_inj_is_hom
s:DSet. ∀g:AbMon. ∀c:MCopower(s;g). ∀j:|s|.  IsMonHom{g,c.mon}(c.inj j)

Lemma: mcopower_umap_is_hom
s:DSet. ∀g:AbMon. ∀c:MCopower(s;g). ∀h:AbMon. ∀f:|s| ⟶ MonHom(g,h).  IsMonHom{c.mon,h}(c.umap f)

Lemma: mcopower_umap_comm_tri
s:DSet. ∀g:AbMon. ∀c:MCopower(s;g). ∀h:AbMon. ∀f:|s| ⟶ MonHom(g,h). ∀j:|s|.
  ((f j) ((c.umap f) (c.inj j)) ∈ (|g| ⟶ |h|))

Lemma: mcopower_umap_comm_tri_a
s:DSet. ∀g:AbMon. ∀c:MCopower(s;g). ∀h:AbMon. ∀f:|s| ⟶ MonHom(g,h). ∀a:|g|. ∀j:|s|.
  ((f a) (c.umap (c.inj a)) ∈ |h|)

Lemma: mcopower_umap_unique
s:DSet. ∀g:AbMon. ∀c:MCopower(s;g). ∀h:AbMon. ∀f:|s| ⟶ MonHom(g,h). ∀a':|c.mon| ⟶ |h|.
  (IsMonHom{c.mon,h}(a')
   (∀j:|s|. ((f j) (a' (c.inj j)) ∈ (|g| ⟶ |h|)))
   (a' (c.umap f) ∈ (|c.mon| ⟶ |h|)))

Definition: fabmon_of_nat_mcp
fabmon_of_nat_mcp(m) ==  <m.mon, λu.(m.inj zhgrp(1)), λm',f. (m.umap m' z,n. (nat(n) ⋅ (f z))))>

Lemma: fabmon_of_nat_mcp_wf
s:DSet. ∀m:MCopower(s;<ℤ+>↓hgrp).  (fabmon_of_nat_mcp(m) ∈ FAbMon(s))

Definition: fabgrp_sig
fabgrp_sig{i:l}(s) ==  grp:AbGrp × inj:|s| ⟶ |grp| × (grp':AbGrp ⟶ (|s| ⟶ |grp'|) ⟶ |grp| ⟶ |grp'|)

Lemma: fabgrp_sig_wf
s:DSet. (fabgrp_sig{i:l}(s) ∈ 𝕌')

Definition: fabgrp_grp
f.grp ==  fst(f)

Lemma: fabgrp_grp_wf
s:DSet. ∀f:fabgrp_sig{i:l}(s).  (f.grp ∈ AbGrp)

Definition: fabgrp_inj
f.inj ==  fst(snd(f))

Lemma: fabgrp_inj_wf
s:DSet. ∀f:fabgrp_sig{i:l}(s).  (f.inj ∈ |s| ⟶ |f.grp|)

Definition: fabgrp_umap
f.umap ==  snd(snd(f))

Lemma: fabgrp_umap_wf
s:DSet. ∀f:fabgrp_sig{i:l}(s).  (f.umap ∈ grp':AbGrp ⟶ (|s| ⟶ |grp'|) ⟶ |f.grp| ⟶ |grp'|)

Definition: fabgrp
FAbGrp(s) ==
  {fg:fabgrp_sig{i:l}(s)| 
   ∀g:AbGrp. ∀h:|s| ⟶ |g|.
     (fg.umap h) !h':|fg.grp| ⟶ |g|. (IsMonHom{fg.grp,g}(h') ∧ ((h' fg.inj) h ∈ (|s| ⟶ |g|)))} 

Lemma: fabgrp_wf
s:DSet. (FAbGrp(s) ∈ 𝕌')

Definition: gcopower_sig
gcopower_sig{i:l}(s;g) ==  grp:GrpSig × inj:|s| ⟶ |g| ⟶ |grp| × (h:AbGrp ⟶ (|s| ⟶ |g| ⟶ |h|) ⟶ |grp| ⟶ |h|)

Lemma: gcopower_sig_wf
s:PosetSig. ∀g:GrpSig.  (gcopower_sig{i:l}(s;g) ∈ 𝕌')

Definition: gcopower_grp
g1.grp ==  fst(g1)

Lemma: gcopower_grp_wf
s:PosetSig. ∀g:GrpSig. ∀g1:gcopower_sig{i:l}(s;g).  (g1.grp ∈ GrpSig)

Definition: gcopower_inj
g1.inj ==  fst(snd(g1))

Lemma: gcopower_inj_wf
s:PosetSig. ∀g:GrpSig. ∀g1:gcopower_sig{i:l}(s;g).  (g1.inj ∈ |s| ⟶ |g| ⟶ |g1.grp|)

Definition: gcopower_umap
g1.umap ==  snd(snd(g1))

Lemma: gcopower_umap_wf
s:PosetSig. ∀g:GrpSig. ∀g1:gcopower_sig{i:l}(s;g).  (g1.umap ∈ h:AbGrp ⟶ (|s| ⟶ |g| ⟶ |h|) ⟶ |g1.grp| ⟶ |h|)

Definition: mon_p
mon_p(g) ==  IsMonoid(|g|;*;e)

Lemma: mon_p_wf
g:GrpSig. (mon_p(g) ∈ ℙ)

Definition: grp_p
grp_p(g) ==  IsGroup(|g|;*;e;~)

Lemma: grp_p_wf
g:GrpSig. (grp_p(g) ∈ ℙ)

Definition: rng_p
rng_p(r) ==  grp_p(r↓+gp) ∧ mon_p(r↓xmn) ∧ BiLinear(|r|;+r;*)

Lemma: rng_p_wf
r:RngSig. (rng_p(r) ∈ ℙ)

Definition: alg_p
AlgP(r;a) ==
  rng_p(a↓rg)
  ∧ IsAction(|r|;*;1;a.car;a.act)
  ∧ IsBilinear(|r|;a.car;a.car;+r;a.plus;a.plus;a.act)
  ∧ (∀p:|r|. Dist1op2opLR(a.car;a.act p;a.times))

Lemma: alg_p_wf
r:RngSig. ∀a:algebra_sig{i:l}(|r|).  (AlgP(r;a) ∈ ℙ)

Definition: gcopower
gcopower{i}(s;g) ==
  {c:gcopower_sig{i:l}(s;g)| 
   IsEqFun(|c.grp|;=b)
   ∧ grp_p(c.grp)
   ∧ Comm(|c.grp|;*)
   ∧ (∀j:|s|. IsMonHom{g,c.grp}(c.inj j))
   ∧ (∀h:AbGrp. ∀f:|s| ⟶ MonHom(g,h).
        (c.umap f) !v:|c.grp| ⟶ |h|. (IsMonHom{c.grp,h}(v) ∧ (∀j:|s|. ((f j) (v (c.inj j)) ∈ (|g| ⟶ |h|)))))} 

Lemma: gcopower_wf
s:DSet. ∀g:AbGrp.  (gcopower{i}(s;g) ∈ 𝕌')

Lemma: gcopower_properties
s:DSet. ∀g:AbGrp. ∀c:gcopower{i}(s;g).
  (IsEqFun(|c.grp|;=b)
  ∧ grp_p(c.grp)
  ∧ Comm(|c.grp|;*)
  ∧ (∀j:|s|. IsMonHom{g,c.grp}(c.inj j))
  ∧ (∀h:AbGrp. ∀f:|s| ⟶ MonHom(g,h).
       (c.umap f) !v:|c.grp| ⟶ |h|. (IsMonHom{c.grp,h}(v) ∧ (∀j:|s|. ((f j) (v (c.inj j)) ∈ (|g| ⟶ |h|))))))

Definition: fma_sig
fma_sig{i:l}(G;A) ==
  alg:algebra_sig{i:l}(|A|) × inj:|G| ⟶ alg.car × (N:algebra{i:l}(A) ⟶ (|G| ⟶ N.car) ⟶ alg.car ⟶ N.car)

Lemma: fma_sig_wf
G:GrpSig. ∀A:RngSig.  (fma_sig{i:l}(G;A) ∈ 𝕌')

Definition: fma_alg
f.alg ==  fst(f)

Lemma: fma_alg_wf
G:GrpSig. ∀A:RngSig. ∀f:fma_sig{i:l}(G;A).  (f.alg ∈ algebra_sig{i:l}(|A|))

Definition: fma_inj
f.inj ==  fst(snd(f))

Lemma: fma_inj_wf
G:GrpSig. ∀A:RngSig. ∀f:fma_sig{i:l}(G;A).  (f.inj ∈ |G| ⟶ f.alg.car)

Definition: fma_umap
f.umap ==  snd(snd(f))

Lemma: fma_umap_wf
G:GrpSig. ∀A:RngSig. ∀f:fma_sig{i:l}(G;A).  (f.umap ∈ N:algebra{i:l}(A) ⟶ (|G| ⟶ N.car) ⟶ f.alg.car ⟶ N.car)

Definition: fmonalg
FMonAlg(g;a) ==
  {m:fma_sig{i:l}(g;a)| 
   IsMonHom{g,m.alg↓rg↓xmn}(m.inj)
   ∧ (∀n:algebra{i:l}(a). ∀f:MonHom(g,n↓rg↓xmn).
        (m.umap f) !f':m.alg.car ⟶ n.car. (alg_hom_p(a; m.alg; n; f') ∧ ((f' m.inj) f ∈ (|g| ⟶ n.car))))} 

Lemma: fmonalg_wf
g:AbMon. ∀a:CRng.  (FMonAlg(g;a) ∈ 𝕌')

Lemma: fmonalg_properties
g:AbMon. ∀a:CRng. ∀m:FMonAlg(g;a).
  (IsMonHom{g,m.alg↓rg↓xmn}(m.inj)
  ∧ (∀n:algebra{i:l}(a). ∀f:MonHom(g,n↓rg↓xmn).
       (m.umap f) !f':m.alg.car ⟶ n.car. (alg_hom_p(a; m.alg; n; f') ∧ ((f' m.inj) f ∈ (|g| ⟶ n.car)))))

Definition: polynom_alg
polynom_alg{i:l}(S;A) ==  mo:FAbMon(S) × FMonAlg(mo.mon;A)

Lemma: polynom_alg_wf
S:DSet. ∀A:CRng.  (polynom_alg{i:l}(S;A) ∈ 𝕌')

Definition: polyalg_mo
p.mo ==  fst(p)

Lemma: polyalg_mo_wf
S:DSet. ∀A:CRng. ∀p:polynom_alg{i:l}(S;A).  (p.mo ∈ FAbMon(S))

Definition: polyalg_poly
p.poly ==  snd(p)

Lemma: polyalg_poly_wf
S:DSet. ∀A:CRng. ∀p:polynom_alg{i:l}(S;A).  (p.poly ∈ FMonAlg(p.mo.mon;A))

Definition: rng_from_grp
rng_from_grp(g;times;one;div) ==  <|g|, =b, ≤b*, e, ~, times, one, div>

Lemma: rng_from_grp_wf
g:GrpSig. ∀times:|g| ⟶ |g| ⟶ |g|. ∀one:|g|. ∀div:|g| ⟶ |g| ⟶ (|g|?).  (rng_from_grp(g;times;one;div) ∈ RngSig)

Definition: alg_from_rng
alg_from_rng(A;r;act) ==  <|r|, =b, ≤b+r, 0, -r, *, 1, ÷r, act>

Lemma: alg_from_rng_wf
A:Type. ∀r:RngSig. ∀act:A ⟶ |r| ⟶ |r|.  (alg_from_rng(A;r;act) ∈ algebra_sig{i:l}(A))

Definition: fma_from_gcp
fma_from_gcp(g;r;c;a) ==  <a, λp:|g|. c.inj 1, λa.(λh:|g| ⟶ a.car. c.umap (a↓grp) p:|g|. λv:|r|. a.act (h p)))>

Lemma: fma_from_gcp_wf
g:GrpSig. ∀r:RngSig. ∀c:gcopower_sig{i:l}(g↓set;r↓+gp). ∀a:algebra{i:l}(r).
  (((a↓grp) c.grp ∈ GrpSig)  (fma_from_gcp(g;r;c;a) ∈ fma_sig{i:l}(g;r)))



Home Index