Definition: mdivides
==  ∃c:|g|. (a (b c) ∈ |g|)

Lemma: mdivides_wf
g:GrpSig. ∀a,b:|g|.  (a b ∈ ℙ)

Lemma: comb_for_mdivides_wf
λg,a,b,z. (a b) ∈ g:GrpSig ⟶ a:|g| ⟶ b:|g| ⟶ (↓True) ⟶ ℙ

Definition: rev_mdivides
|by in ==  a

Lemma: rev_mdivides_wf
g:GrpSig. ∀a,b:|g|.  (a |by in g ∈ ℙ)

Lemma: mdivides_id
g:IAbMonoid. ∀a:|g|.  (e a)

Lemma: mdivides_refl
g:IAbMonoid. ∀a:|g|.  (a a)

Lemma: mdivides_trans
g:IAbMonoid. ∀a,b,c:|g|.  ((a b)  (b c)  (a c))

Lemma: mdivides_preorder
g:IAbMonoid. Preorder(|g|;x,y.x y)

Lemma: mdivides_cancel
g:IAbMonoid. (Cancel(|g|;|g|;*)  (∀a,b,c:|g|.  (((a b) (a c))  (b c))))

Definition: munit
g-unit(u) ==  e

Lemma: munit_wf
g:GrpSig. ∀a:|g|.  (g-unit(a) ∈ ℙ)

Definition: massoc
==  Symmetrize(x,y.x y;a;b)

Lemma: massoc_wf
g:GrpSig. ∀a,b:|g|.  (a b ∈ ℙ)

Lemma: munit_char
g:IAbMonoid. ∀a:|g|.  (g-unit(a) ⇐⇒ e)

Lemma: munit_of_op
g:IAbMonoid. ∀a,b:|g|.  ((g-unit(a b))  ((g-unit(a)) ∧ (g-unit(b))))

Definition: mpdivides
p| ==  (a b) ∧ (b a))

Lemma: mpdivides_wf
g:GrpSig. ∀a,b:|g|.  (a p| b ∈ ℙ)

Lemma: non_munit_diff_imp_mpdivides
g:IAbMonoid. (Cancel(|g|;|g|;*)  (∀a,b,c:|g|.  ((¬(g-unit(b)))  ((a b) c ∈ |g|)  (a p| c))))

Lemma: comb_for_massoc_wf
λg,a,b,z. (a b) ∈ g:GrpSig ⟶ a:|g| ⟶ b:|g| ⟶ (↓True) ⟶ ℙ

Lemma: mdivides_weakening
g:IAbMonoid. ∀a,b:|g|.  ((a b)  (a b))

Lemma: massoc_equiv_rel
g:IAbMonoid. EquivRel(|g|;x,y.x y)

Lemma: massoc_weakening
g:IAbMonoid. ∀a,b:|g|.  ((a b ∈ |g|)  (a b))

Lemma: massoc_inversion
g:IAbMonoid. ∀a,b:|g|.  ((a b)  (b a))

Lemma: massoc_transitivity
g:IAbMonoid. ∀a,b,c:|g|.  ((a b)  (b c)  (a c))

Lemma: grp_op_ap2_functionality_wrt_mdivides
g:IAbMonoid. ∀a,a',b,b':|g|.  ((a b)  (a' b')  ((a a') (b b')))

Lemma: grp_op_ap2_functionality_wrt_massoc
g:IAbMonoid. ∀a,a',b,b':|g|.  ((a b)  (a' b')  ((a a') (b b')))

Lemma: grp_op_functionality_wrt_massoc
g:IAbMonoid. ∀a,a',b,b':|g|.  ((a b)  (a' b')  ((a a') (b b')))

Lemma: massoc_functionality_wrt_massoc
g:IAbMonoid. ∀a,a',b,b':|g|.  ((a b)  (a' b')  (a a' ⇐⇒ b'))

Lemma: massoc_cancel
g:IAbMonoid. (Cancel(|g|;|g|;*)  (∀a,b,c:|g|.  (((a b) (a c))  (b c))))

Lemma: massoc_imp_unit_diff
g:IAbMonoid. (Cancel(|g|;|g|;*)  (∀a,b:|g|.  ((a b)  (∃u:|g|. ((g-unit(u)) c∧ (a (u b) ∈ |g|))))))

Definition: mprime
IsPrime(a) ==  (g-unit(a))) ∧ (∀b,c:|g|.  ((a (b c))  ((a b) ∨ (a c))))

Lemma: mprime_wf
g:GrpSig. ∀a:|g|.  (IsPrime(a) ∈ ℙ)

Definition: mprime_ty
Prime(g) ==  {x:|g|| IsPrime(x)} 

Lemma: mprime_ty_wf
g:GrpSig. (Prime(g) ∈ Type)

Lemma: sq_stable__mprime
g:GrpSig. ((∀a,b:|g|.  Dec(a b))  (∀c:|g|. SqStable(IsPrime(c))))

Lemma: mproper_div_cond
g:IAbMonoid. (Cancel(|g|;|g|;*)  (∀a,b:|g|.  (((a b) a)  (g-unit(b)))))

Definition: mreducible
Reducible(a) ==  ∃b,c:|g|. ((¬(g-unit(b))) ∧ (g-unit(c))) ∧ (a (b c) ∈ |g|))

Lemma: mreducible_wf
g:GrpSig. ∀a:|g|.  (Reducible(a) ∈ ℙ)

Lemma: mreducible_elim
g:IAbMonoid. (Cancel(|g|;|g|;*)  (∀a:|g|. (Reducible(a) ⇐⇒ ∃b:|g|. ((¬(g-unit(b))) ∧ (b p| a)))))

Definition: matomic
Atomic(a) ==  (g-unit(a))) ∧ Reducible(a))

Lemma: matomic_wf
g:GrpSig. ∀a:|g|.  (Atomic(a) ∈ ℙ)

Lemma: mdivisor_of_atom_is_assoc2
g:IAbMonoid. ((∀a,b:|g|.  Stable{a b})  (∀a,b:|g|.  ((¬(g-unit(a)))  Atomic(b)  (a b)  (a b))))

Definition: matom_ty
Atom{g} ==  {a:|g|| Atomic(a)} 

Lemma: matom_ty_wf
g:GrpSig. (Atom{g} ∈ Type)

Lemma: matom_ty_properties
g:GrpSig. ∀a:Atom{g}.  Atomic(a)

Lemma: mcomp_imp_not_unit
g:IAbMonoid. ∀a:|g|.  (Reducible(a)  (g-unit(a))))

Lemma: mprime_imp_matomic
g:IAbMonoid. (Cancel(|g|;|g|;*)  (∀a:|g|. (IsPrime(a)  Atomic(a))))

Lemma: mprime_divs_list_el
g:IAbMonoid. ∀p:|g|.  (IsPrime(p)  (∀as:|g| List. ((p (Π as))  (∃i:ℕ||as||. (p as[i])))))

Definition: permr_massoc
as ≡ bs upto ==  as ≡ bs upto x,y.x 

Lemma: permr_massoc_wf
g:GrpSig. ∀as,bs:|g| List.  (as ≡ bs upto ~ ∈ ℙ)

Lemma: permr_massoc_weakening
g:IAbMonoid. ∀as,bs:|g| List.  ((as ≡(|g|) bs)  as ≡ bs upto ~)

Lemma: permr_massoc_functionality
g:IAbMonoid. ∀as,as',bs,bs':|g| List.  (as ≡ bs upto  as' ≡ bs' upto  (as ≡ as' upto ⇐⇒ bs ≡ bs' upto ~))

Lemma: cons_functionality_wrt_permr_massoc
g:IAbMonoid. ∀a,b:|g|. ∀as,bs:|g| List.  ((a b)  as ≡ bs upto  [a as] ≡ [b bs] upto ~)

Lemma: mfact_exists
g:IAbMonoid
  (Cancel(|g|;|g|;*)
   WellFnd{i}(|g|;x,y.x p| y)
   (∀c:|g|. Dec(Reducible(c)))
   (∀b:|g|. ((¬(g-unit(b)))  (∃as:Atom{g} List. (b (Π as) ∈ |g|)))))

Lemma: mfact_exists_a
g:IAbMonoid
  (Cancel(|g|;|g|;*)
   WellFnd{i}(|g|;x,y.x p| y)
   (∀c:|g|. Dec(Reducible(c)))
   (∀c:|g|. Dec(g-unit(c)))
   (∀b:|g|. ∃as:Atom{g} List. (b (Π as))))

Lemma: unique_mfact
g:IAbMonoid
  (Cancel(|g|;|g|;*)  (∀a,b:|g|.  Dec(a b))  (∀ps,qs:Prime(g) List.  (((Π ps) (Π qs))  ps ≡ qs upto ~)))

Definition: uni_sat_upto
!x:T. Q[x]  ==  Q[a] ∧ (∀a':T. (Q[a']  (a' [r] a)))

Lemma: uni_sat_upto_wf
T:Type. ∀r:T ⟶ T ⟶ ℙ. ∀a:T. ∀Q:T ⟶ ℙ.  (a !x:T. Q[x]  ∈ ℙ)

Definition: exists_uni_upto
(r)∃!x:T. Q[x] ==  ∃a:T. !x:T. Q[x] 

Lemma: exists_uni_upto_char
T:Type. ∀r:T ⟶ T ⟶ ℙ. ∀Q:T ⟶ ℙ.  ((∃x:T. Q[x])  (∀x,y:T.  (Q[x]  Q[y]  (x [r] y)))  (r)∃!x:T. Q[x])

Lemma: exists_uni_upto_wf
T:Type. ∀r:T ⟶ T ⟶ ℙ. ∀Q:T ⟶ ℙ.  ((r)∃!x:T. Q[x] ∈ ℙ)

Definition: permr_massoc_rel
==  as,bs:|g| List. as ≡ bs upto ~

Lemma: permr_massoc_rel_wf
g:GrpSig. (≡~ ∈ (|g| List) ⟶ (|g| List) ⟶ ℙ)

Definition: is_ufm
IsUFM(g) ==  ∀b:|g|. ((¬(g-unit(b)))  (≡~)∃!as:Atom{g} List. (b (Π as) ∈ |g|))

Lemma: is_ufm_wf
g:IMonoid. (IsUFM(g) ∈ ℙ)

Lemma: ufm_char
g:IAbMonoid
  (Cancel(|g|;|g|;*)
   WellFnd{i}(|g|;x,y.x p| y)
   (∀a:Atom{g}. IsPrime(a))
   (∀a:|g|. Dec(Reducible(a)))
   (∀a,b:|g|.  Dec(a b))
   IsUFM(g))

Definition: posint_mul_mon
<ℤ+,*> ==  <ℕ+, λx,y. (x =z y), λx,y. x ≤y, λx,y. (x y), 1, λx.x>

Lemma: posint_mul_mon_wf
<ℤ+,*> ∈ AbMon

Lemma: posint_cancel
Cancel(|<ℤ+,*>|;|<ℤ+,*>|;*)

Lemma: posint_munit_elim
a:|<ℤ+,*>|. (<ℤ+,*>-unit(a) ⇐⇒ 1 ∈ ℤ)

Lemma: posint_well_fnd
WellFnd{i}(|<ℤ+,*>|;x,y.x p| y)

Lemma: posint_reduc_dec
a:|<ℤ+,*>|. Dec(Reducible(a))

Lemma: posint_unit_dec
a:|<ℤ+,*>|. Dec(<ℤ+,*>-unit(a))

Lemma: posint_div_dec
a,b:|<ℤ+,*>|.  Dec(a b)

Lemma: posint_atom_imp_prime
a:Atom{<ℤ+,*>}. IsPrime(a)

Lemma: posint_fact_exists
i:ℕ+(∃ps:{j:ℕ+prime(j)}  List [(i (Π ps) ∈ ℤ)])

Lemma: posint_is_ufm
IsUFM(<ℤ+,*>)



Home Index