Theory ring

Parents

Contents

Type operators

Constants

Definitions

EuclideanRing_defFiniteIntegralDomain_defFiniteRing_defIntegralDomain_defPrincipalIdealRing_defRingAuto_defRingEndo_defRingHomo_defRingIso_defRing_defZN_defZP_defZ_add_defZ_defZ_ideal_defZ_mult_defZ_multiple_defchar_defcompute_ordz_defhomo_ideal_defhomo_ring_defideal_congruence_defideal_coset_add_defideal_coset_mult_defideal_defideal_gen_defideal_maximal_defideal_sum_defirreducible_defkernel_ideal_defmonoid_of_ring_nonzero_mult_defprincipal_ideal_defquotient_ring_add_defquotient_ring_defquotient_ring_mult_defrecordtype_ring_seldef_carrier_defrecordtype_ring_seldef_carrier_fupd_defrecordtype_ring_seldef_prod_defrecordtype_ring_seldef_prod_fupd_defrecordtype_ring_seldef_sum_defrecordtype_ring_seldef_sum_fupd_defring_TY_DEFring_associates_defring_case_defring_divides_defring_fun_defring_gcd_defring_homo_image_defring_inj_image_defring_list_defring_nonzero_defring_ordering_defring_prime_defring_size_defring_sub_defring_sum_defsubring_defsymdiff_set_inter_deftrivial_integal_domain_deftrivial_ring_defunit_eq_def

Theorems

EXISTS_ringFORALL_ringLIST_REL_ring_associates_productWHILE_RULE_PRE_POSTZN_1_expZN_cardZN_charZN_coprime_euler_elementZN_coprime_exp_modZN_coprime_invertibleZN_coprime_orderZN_coprime_order_altZN_coprime_order_divides_phiZN_coprime_order_divides_totientZN_coprime_order_gt_1ZN_coprime_order_ltZN_evalZN_expZN_finiteZN_finite_ringZN_idsZN_ids_altZN_invertiblesZN_invertibles_finite_groupZN_invertibles_groupZN_invertibles_orderZN_mult_inv_coprimeZN_mult_inv_coprime_iffZN_not_coprimeZN_numZN_num_0ZN_num_1ZN_num_modZN_order_0ZN_order_1ZN_order_divides_expZN_order_divides_phiZN_order_divides_tops_indexZN_order_divisibilityZN_order_eq_0ZN_order_eq_0_iffZN_order_eq_0_testZN_order_eq_1ZN_order_eq_1_altZN_order_eq_1_by_prime_factorsZN_order_gt_1_propertyZN_order_leZN_order_le_tops_indexZN_order_ltZN_order_minimalZN_order_modZN_order_mod_1ZN_order_nonzeroZN_order_nonzero_iffZN_order_propertyZN_order_property_altZN_order_test_1ZN_order_test_2ZN_order_test_3ZN_order_test_4ZN_order_test_properyZN_order_upperZN_order_with_coprime_1ZN_order_with_coprime_2ZN_propertyZN_ringZN_to_ZN_elementZN_to_ZN_prod_monoid_homoZN_to_ZN_ring_homoZN_to_ZN_sum_group_homoZP_finiteZP_finite_integral_domainZP_integral_domainZ_add_abelian_groupZ_add_groupZ_add_invZ_euclid_ringZ_ideal_map_bijZ_ideal_map_elementZ_ideal_map_group_homoZ_ideal_map_monoid_homoZ_ideal_sum_groupZ_ideal_sum_normalZ_ideal_sum_subgroupZ_ideal_thmZ_mult_abelian_monoidZ_mult_monoidZ_multiple_less_neg_eqZ_principal_ideal_ringZ_quotient_iso_ZNZ_ringZ_sum_cogenZ_sum_coset_eqchar_eq_0char_minimalchar_propertycompute_ordz_0compute_ordz_1compute_ordz_eqncompute_ordz_hoaredatatype_ringeuclid_ring_mapeuclid_ring_principal_ideal_ringeuclid_ring_propertyeuclid_ring_ringfinite_integral_domain_nonzero_groupfinite_integral_domain_nonzero_invertiblefinite_integral_domain_nonzero_invertible_altfinite_integral_domain_period_existsfinite_ring_add_finite_abelian_groupfinite_ring_add_finite_groupfinite_ring_card_eq_1finite_ring_card_posfinite_ring_card_primefinite_ring_charfinite_ring_char_altfinite_ring_char_dividesfinite_ring_char_posfinite_ring_is_ringfinite_ring_mult_finite_abelian_monoidfinite_ring_mult_finite_monoidhomo_ring_by_injhomo_ring_propertyhomo_ring_ringhomo_ring_subringideal_antisymideal_carrier_singideal_carriersideal_cogen_propertyideal_congruence_elementsideal_congruence_equivideal_congruence_iff_inCosetideal_congruence_multideal_congruence_reflideal_congruence_symideal_congruence_transideal_coset_addideal_coset_elementideal_coset_eqideal_coset_eq_carrierideal_coset_eq_congruenceideal_coset_has_gen_diffideal_coset_multideal_coset_negideal_coset_of_elementideal_coset_propertyideal_coset_zeroideal_elementideal_element_propertyideal_eq_idealideal_gen_existsideal_gen_minimalideal_has_diffideal_has_multipleideal_has_negideal_has_oneideal_has_principal_idealideal_has_productideal_has_subgroupideal_has_sumideal_has_zeroideal_in_quotient_ringideal_opsideal_product_propertyideal_propertyideal_reflideal_sub_idealideal_sub_itselfideal_subgroup_ideal_sumideal_sum_commideal_sum_elementideal_sum_groupideal_sum_has_idealideal_sum_has_ideal_commideal_sum_idealideal_sum_sub_idealideal_sum_subgroupideal_with_oneideal_with_unitideal_zerointegral_domain_charintegral_domain_divides_primeintegral_domain_exp_eqintegral_domain_exp_eq_zerointegral_domain_exp_nonzerointegral_domain_is_ringintegral_domain_mult_eq_zerointegral_domain_mult_lcancelintegral_domain_mult_nonzerointegral_domain_mult_rcancelintegral_domain_nonzero_monoidintegral_domain_nonzero_mult_carrierintegral_domain_nonzero_mult_is_monoidintegral_domain_nonzero_mult_propertyintegral_domain_nonzero_orderintegral_domain_one_ne_zerointegral_domain_one_nonzerointegral_domain_order_eq_0integral_domain_order_nonzerointegral_domain_order_zerointegral_domain_prime_factors_uniqueintegral_domain_ring_isointegral_domain_zero_not_unitintegral_domain_zero_productirreducible_associatesirreducible_elementirreducible_factorskernel_ideal_elementkernel_ideal_gen_add_mapkernel_ideal_gen_id_mapkernel_ideal_gen_mult_mapkernel_ideal_quotient_bijkernel_ideal_quotient_element_eqkernel_ideal_quotient_homokernel_ideal_quotient_injkernel_ideal_quotient_isokernel_ideal_quotient_surjkernel_ideal_sum_eqnordz_evalprime_is_irreducibleprincipal_ideal_elementprincipal_ideal_element_dividesprincipal_ideal_eq_principal_idealprincipal_ideal_equal_principal_idealprincipal_ideal_groupprincipal_ideal_has_elementprincipal_ideal_has_principal_idealprincipal_ideal_idealprincipal_ideal_propertyprincipal_ideal_ring_atom_is_primeprincipal_ideal_ring_ideal_maximalprincipal_ideal_ring_irreducible_is_primeprincipal_ideal_sub_implies_dividesprincipal_ideal_subgroupprincipal_ideal_subgroup_normalprincipal_ideal_sum_eq_idealprincipal_ideal_sum_equal_idealquotient_ring_add_abelian_groupquotient_ring_add_assocquotient_ring_add_commquotient_ring_add_elementquotient_ring_add_groupquotient_ring_add_idquotient_ring_add_invquotient_ring_by_principal_idealquotient_ring_elementquotient_ring_has_idealquotient_ring_homoquotient_ring_homo_kernelquotient_ring_homo_kernel_idealquotient_ring_homo_surjquotient_ring_mult_abelian_monoidquotient_ring_mult_assocquotient_ring_mult_commquotient_ring_mult_elementquotient_ring_mult_idquotient_ring_mult_laddquotient_ring_mult_monoidquotient_ring_propertyquotient_ring_ringquotient_ring_ring_singring_11ring_Axiomring_accessorsring_accfupdsring_add_abelian_groupring_add_assocring_add_assoc_commring_add_char_2ring_add_commring_add_elementring_add_eq_zeroring_add_exp_eqnring_add_groupring_add_group_rwtring_add_lcancelring_add_lnegring_add_lneg_assocring_add_lzeroring_add_pair_subring_add_rcancelring_add_rnegring_add_rneg_assocring_add_rzeroring_add_subring_add_sub_assocring_add_sub_commring_add_sub_identityring_add_zero_zeroring_associates_dividesring_associates_multring_associates_reflring_associates_symring_associates_transring_auto_Iring_auto_bijring_auto_congring_auto_elementring_auto_idsring_auto_linv_autoring_auto_onering_auto_zeroring_binomial_2ring_binomial_3ring_binomial_4ring_binomial_genlist_index_shiftring_binomial_index_shiftring_binomial_term_merge_xring_binomial_term_merge_yring_binomial_thmring_carrier_nonemptyring_carriersring_case_congring_case_eqring_char_0ring_char_1ring_char_2_doublering_char_2_neg_onering_char_2_propertyring_char_altring_char_dividesring_char_eq_1ring_char_primering_char_prime_endoring_component_equalityring_divides_associatesring_divides_by_onering_divides_by_unitring_divides_isoring_divides_lering_divides_reflring_divides_transring_divides_zeroring_eq_unit_eqring_exp_0ring_exp_1ring_exp_SUCring_exp_addring_exp_add_assocring_exp_commring_exp_elementring_exp_mod_orderring_exp_multring_exp_mult_commring_exp_negring_exp_smallring_exp_sucring_factor_multiplering_fermat_allring_fermat_thmring_first_isomorphism_thmring_fn_updatesring_freshman_allring_freshman_all_subring_freshman_thmring_freshman_thm_subring_fun_addring_fun_from_ring_funring_fun_from_ring_fun_expring_fun_genlistring_fun_mapring_fupdcanonring_fupdcanon_compring_fupdfupdsring_fupdfupds_compring_gcd_dividesring_gcd_elementring_gcd_is_gcdring_gcd_linearring_gcd_propertyring_gcd_symring_gcd_zeroring_homo_I_reflring_homo_addring_homo_char_dividesring_homo_composering_homo_congring_homo_elementring_homo_eq_zeroring_homo_expring_homo_ideal_groupring_homo_ideal_idealring_homo_ideal_subgroupring_homo_idsring_homo_image_bijring_homo_image_carrierring_homo_image_homoring_homo_image_is_subringring_homo_image_isoring_homo_image_ringring_homo_image_subringring_homo_image_subring_subringring_homo_image_surj_propertyring_homo_invring_homo_kernel_idealring_homo_linv_homoring_homo_multring_homo_negring_homo_numring_homo_num_nonzeroring_homo_onering_homo_one_eq_zeroring_homo_propertyring_homo_ring_homo_subringring_homo_subring_homo_subring_homoring_homo_sum_num_propertyring_homo_symring_homo_sym_anyring_homo_transring_homo_unitring_homo_unit_invring_homo_unit_inv_elementring_homo_unit_inv_nonzeroring_homo_unit_nonzeroring_homo_zeroring_inductionring_inj_image_altring_inj_image_carrierring_inj_image_prod_abelian_monoidring_inj_image_prod_monoidring_inj_image_prod_monoid_homoring_inj_image_ringring_inj_image_ring_homoring_inj_image_sum_abelian_groupring_inj_image_sum_groupring_inj_image_sum_group_homoring_inj_image_sum_monoidring_inv_onering_irreducible_gcdring_iso_I_reflring_iso_addring_iso_bijring_iso_card_eqring_iso_char_eqring_iso_composering_iso_congring_iso_elementring_iso_element_uniquering_iso_eq_onering_iso_eq_zeroring_iso_expring_iso_idsring_iso_invring_iso_inversering_iso_inverse_elementring_iso_linv_isoring_iso_multring_iso_negring_iso_nonzeroring_iso_numring_iso_onering_iso_propertyring_iso_ring_homo_subringring_iso_subring_iso_subring_isoring_iso_symring_iso_sym_anyring_iso_transring_iso_unitring_iso_zeroring_list_SNOCring_list_consring_list_from_genlistring_list_from_genlist_ring_funring_list_front_lastring_list_gen_from_ring_funring_list_nilring_literal_11ring_literal_nchotomyring_mult_abelian_monoidring_mult_addring_mult_add_negring_mult_add_neg_assocring_mult_add_neg_multring_mult_add_neg_mult_assocring_mult_assocring_mult_assoc_commring_mult_commring_mult_dividesring_mult_elementring_mult_expring_mult_laddring_mult_lnegring_mult_lonering_mult_lsubring_mult_lzeroring_mult_monoidring_mult_monoid_rwtring_mult_neg_negring_mult_one_onering_mult_pair_diffring_mult_pair_subring_mult_raddring_mult_rnegring_mult_ronering_mult_rsubring_mult_rzeroring_mult_zero_zeroring_nchotomyring_neg_addring_neg_add_commring_neg_add_negring_neg_add_neg_assocring_neg_add_neg_multring_neg_add_neg_mult_assocring_neg_char_2ring_neg_elementring_neg_eqring_neg_eq_swapring_neg_eq_zeroring_neg_expring_neg_multring_neg_mult_add_neg_multring_neg_mult_add_neg_mult_assocring_neg_negring_neg_nonzeroring_neg_one_eq_onering_neg_squarering_neg_subring_neg_zeroring_nonzero_elementring_nonzero_eqring_nonzero_mult_carrierring_num_0ring_num_1ring_num_2ring_num_SUCring_num_addring_num_add_assocring_num_add_multring_num_add_mult_assocring_num_all_zeroring_num_char_coprime_nonzeroring_num_elementring_num_eqring_num_expring_num_modring_num_multring_num_mult_assocring_num_mult_elementring_num_mult_expring_num_mult_negring_num_mult_raddring_num_mult_smallring_num_mult_sucring_num_negativering_num_onering_num_subring_num_sucring_one_elementring_one_eq_zeroring_one_expring_one_uniquering_prime_divides_productring_prime_isoring_product_factors_dividering_single_add_multring_single_add_mult_assocring_single_add_neg_multring_single_add_neg_mult_assocring_single_add_singlering_single_add_single_assocring_single_mult_expring_single_mult_exp_assocring_single_mult_singlering_single_mult_single_assocring_sub_addring_sub_elementring_sub_eqring_sub_eq_addring_sub_eq_zeroring_sub_lcancelring_sub_pair_reducering_sub_rcancelring_sub_zeroring_sum_SNOCring_sum_appendring_sum_consring_sum_decompose_firstring_sum_decompose_first_lastring_sum_decompose_lastring_sum_elementring_sum_freshman_allring_sum_freshman_thmring_sum_fun_zeroring_sum_genlist_addring_sum_genlist_appendring_sum_genlist_constring_sum_genlist_sumring_sum_multring_sum_mult_laddring_sum_nilring_sum_singring_sum_zeroring_unit_elementring_unit_has_invring_unit_inv_elementring_unit_inv_invring_unit_inv_nonzeroring_unit_linvring_unit_linv_invring_unit_linv_uniquering_unit_mult_eq_unitring_unit_mult_unitring_unit_mult_zeroring_unit_negring_unit_nonzeroring_unit_onering_unit_propertyring_unit_rinvring_unit_rinv_invring_unit_rinv_uniquering_unit_zeroring_units_abelain_groupring_units_elementring_units_groupring_units_has_onering_units_has_zeroring_units_propertyring_updates_eq_literalring_zero_dividesring_zero_elementring_zero_expring_zero_fixring_zero_subring_zero_uniquesubring_I_antisymsubring_addsubring_by_subgroup_submonoidsubring_carrier_antisymsubring_carrier_finitesubring_carrier_subsetsubring_charsubring_char_dividessubring_elementsubring_element_altsubring_expsubring_finite_ringsubring_homo_homosubring_idssubring_multsubring_negsubring_numsubring_onesubring_prod_submonoidsubring_propertysubring_reflsubring_ring_iso_composesubring_ring_iso_ring_homo_subringsubring_subsubring_sum_subgroupsubring_transsubring_unitsubring_unit_invsubring_unit_inv_elementsubring_unit_inv_nonzerosubring_unit_nonzerosubring_zerosymdiff_evalsymdiff_set_inter_charsymdiff_set_inter_ringsymdiff_univ_univ_eq_emptytrivial_chartrivial_integral_domaintrivial_ringtrivial_ring_thmunit_eq_reflunit_eq_symunit_eq_transzero_ideal_idealzero_ideal_sing

Definitions

⊢ ∀r f.
    EuclideanRing r f ⇔
    Ring r ∧ (∀x. f x = 0 ⇔ x = #0) ∧
    ∀x y.
      x ∈ R ∧ y ∈ R ∧ y ≠ #0 ⇒
      ∃q t. q ∈ R ∧ t ∈ R ∧ x = q * y + t ∧ f t < f y
⊢ ∀r. FiniteIntegralDomain r ⇔ IntegralDomain r ∧ FINITE R
⊢ ∀r. FiniteRing r ⇔ Ring r ∧ FINITE R
⊢ ∀r. IntegralDomain r ⇔
      Ring r ∧ #1 ≠ #0 ∧
      ∀x y. x ∈ R ∧ y ∈ R ⇒ (x * y = #0 ⇔ x = #0 ∨ y = #0)
⊢ ∀r. PrincipalIdealRing r ⇔ Ring r ∧ ∀i. i << r ⇒ ∃p. p ∈ R ∧ <p> = i
⊢ ∀f r. RingAuto f r ⇔ RingIso f r r
⊢ ∀f r. RingEndo f r ⇔ RingHomo f r r
⊢ ∀f r s.
    RingHomo f r s ⇔
    (∀x. x ∈ R ⇒ f x ∈ s.carrier) ∧ GroupHomo f r.sum s.sum ∧
    MonoidHomo f r.prod s.prod
⊢ ∀f r s. RingIso f r s ⇔ RingHomo f r s ∧ BIJ f R s.carrier
⊢ ∀r. Ring r ⇔
      AbelianGroup r.sum ∧ AbelianMonoid r.prod ∧ r.sum.carrier = R ∧
      r.prod.carrier = R ∧
      ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ x * (y + z) = x * y + x * z
⊢ ∀n. ZN n = <|carrier := count n; sum := add_mod n; prod := times_mod n|>
⊢ ∀p. ZP p = <|carrier := count p; sum := add_mod p; prod := times_mod p|>
⊢ Z_add = <|carrier := 𝕌(:int); op := (λx y. x + y); id := 0|>
⊢ Z = <|carrier := 𝕌(:int); sum := Z_add; prod := Z_mult|>
⊢ ∀n. Z* n =
      <|carrier := Z_multiple n;
        sum := <|carrier := Z_multiple n; op := Z.sum.op; id := Z.sum.id|>;
        prod :=
          <|carrier := Z_multiple n; op := Z.prod.op; id := Z.prod.id|> |>
⊢ Z_mult = <|carrier := 𝕌(:int); op := (λx y. x * y); id := 1|>
⊢ ∀n. Z_multiple n = {&n * z | z ∈ 𝕌(:int)}
⊢ ∀r. char r = order r.sum #1
⊢ ∀m n.
    compute_ordz m n =
    if m = 0 then ordz 0 n
    else if m = 1 then 1
    else if coprime m n then WHILE (λi. n ** i MOD m ≠ 1) SUC 1
    else 0
⊢ ∀f r s i.
    homo_ideal f r s i =
    <|carrier := IMAGE f I;
      sum := <|carrier := IMAGE f I; op := s.sum.op; id := f #0|>;
      prod := <|carrier := IMAGE f I; op := s.prod.op; id := f #1|> |>
⊢ ∀r f.
    homo_ring r f =
    <|carrier := IMAGE f R; sum := homo_group r.sum f;
      prod := homo_group r.prod f|>
⊢ ∀r i x y. x === y ⇔ x − y ∈ I
⊢ ∀r i x y. x + y = (gen x + gen y) ∘ I
⊢ ∀r i x y. x * y = (gen x * gen y) ∘ I
⊢ ∀i r.
    i << r ⇔
    i.sum ≤ r.sum ∧ i.sum.carrier = I ∧ i.prod.carrier = I ∧
    i.prod.op = $* ∧ i.prod.id = #1 ∧
    ∀x y. x ∈ I ∧ y ∈ R ⇒ x * y ∈ I ∧ y * x ∈ I
ideal_gen_def
⊢ ∀r i f.
    Ring r ∧ i << r ∧ i ≠ <#0> ∧ (∀x. f x = 0 ⇔ x = #0) ⇒
    ideal_gen r i f ∈ I ∧ ideal_gen r i f ≠ #0 ∧
    ∀z. z ∈ I ∧ z ≠ #0 ⇒ f (ideal_gen r i f) ≤ f z
⊢ ∀r i. maxi i ⇔ i << r ∧ ∀j. i << j ∧ j << r ⇒ i = j ∨ j = r
⊢ ∀r i j.
    i + j =
    <|carrier := {x + y | x ∈ I ∧ y ∈ J};
      sum := <|carrier := {x + y | x ∈ I ∧ y ∈ J}; op := $+; id := #0|>;
      prod := <|carrier := {x + y | x ∈ I ∧ y ∈ J}; op := $*; id := #1|> |>
⊢ ∀r z.
    atom z ⇔
    z ∈ R+ ∧ z ∉ R* ∧ ∀x y. x ∈ R ∧ y ∈ R ∧ z = x * y ⇒ unit x ∨ unit y
⊢ ∀f r s.
    kernel_ideal f r s =
    <|carrier := kernel f r.sum s.sum;
      sum := <|carrier := kernel f r.sum s.sum; op := $+; id := #0|>;
      prod := <|carrier := kernel f r.sum s.sum; op := $*; id := #1|> |>
⊢ ∀r. monoid_of_ring_nonzero_mult r = <|carrier := R+; op := $*; id := #1|>
⊢ ∀r p.
    <p> =
    <|carrier := p * R; sum := <|carrier := p * R; op := $+; id := #0|>;
      prod := <|carrier := p * R; op := $*; id := #1|> |>
⊢ ∀r i. quotient_ring_add r i = <|carrier := R/I; id := I; op := $+ |>
⊢ ∀r i.
    r / i =
    <|carrier := R/I; sum := quotient_ring_add r i;
      prod := quotient_ring_mult r i|>
⊢ ∀r i.
    quotient_ring_mult r i = <|carrier := R/I; id := #1 ∘ I; op := $* |>
recordtype_ring_seldef_carrier_def
⊢ ∀f m m0. (ring f m m0).carrier = f
recordtype_ring_seldef_carrier_fupd_def
⊢ ∀f0 f m m0. ring f m m0 with carrier updated_by f0 = ring (f0 f) m m0
recordtype_ring_seldef_prod_def
⊢ ∀f m m0. (ring f m m0).prod = m0
recordtype_ring_seldef_prod_fupd_def
⊢ ∀f0 f m m0. ring f m m0 with prod updated_by f0 = ring f m (f0 m0)
recordtype_ring_seldef_sum_def
⊢ ∀f m m0. (ring f m m0).sum = m
recordtype_ring_seldef_sum_fupd_def
⊢ ∀f0 f m m0. ring f m m0 with sum updated_by f0 = ring f (f0 m) m0
ring_TY_DEF
⊢ ∃rep.
    TYPE_DEFINITION
      (λa0'.
           ∀ $var$('ring').
             (∀a0'.
                (∃a0 a1 a2.
                   a0' =
                   (λa0 a1 a2.
                        ind_type$CONSTR 0 (a0,a1,a2) (λn. ind_type$BOTTOM))
                     a0 a1 a2) ⇒
                $var$('ring') a0') ⇒
             $var$('ring') a0') rep
⊢ ∀r p q. rassoc p q ⇔ ∃s. unit s ∧ p = s * q
ring_case_def
⊢ ∀a0 a1 a2 f. ring_CASE (ring a0 a1 a2) f = f a0 a1 a2
⊢ ∀r q p. q rdivides p ⇔ ∃s. s ∈ R ∧ p = s * q
⊢ ∀r f. rfun f ⇔ ∀x. f x ∈ R
⊢ ∀r f p q.
    rgcd p q =
    if p = #0 then q
    else if q = #0 then p
    else
      (let
         s =
           {a * p + b * q | (a,b) | a ∈ R ∧ b ∈ R ∧ 0 < f (a * p + b * q)}
       in
         CHOICE (preimage f s (MIN_SET (IMAGE f s))))
⊢ ∀f r r_.
    ring_homo_image f r r_ =
    <|carrier := IMAGE f R; sum := homo_image f r.sum r_.sum;
      prod := homo_image f r.prod r_.prod|>
⊢ ∀r f.
    ring_inj_image r f =
    <|carrier := IMAGE f R;
      sum :=
        <|carrier := IMAGE f R; op := (λx y. f (LINV f R x + LINV f R y));
          id := f #0|>;
      prod :=
        <|carrier := IMAGE f R; op := (λx y. f (LINV f R x * LINV f R y));
          id := f #1|> |>
⊢ (∀r. rlist [] ⇔ T) ∧ ∀r h t. rlist (h::t) ⇔ h ∈ R ∧ rlist t
⊢ ∀r. R+ = R DIFF {#0}
⊢ ∀r f. ring_ordering r f ⇔ ∀a b. a ∈ R ∧ b ∈ R ∧ b ≠ #0 ⇒ f a ≤ f (a * b)
⊢ ∀r p.
    rprime p ⇔
    ∀a b. a ∈ R ∧ b ∈ R ∧ p rdivides a * b ⇒ p rdivides a ∨ p rdivides b
ring_size_def
⊢ ∀f a0 a1 a2.
    ring_size f (ring a0 a1 a2) = 1 + (monoid_size f a1 + monoid_size f a2)
⊢ ∀r x y. x − y = x + -y
⊢ (∀r. rsum [] = #0) ∧ ∀r h t. rsum (h::t) = h + rsum t
⊢ ∀s r. subring s r ⇔ RingHomo I s r
⊢ symdiff_set_inter =
  <|carrier := 𝕌(:α -> bool); sum := symdiff_set; prod := set_inter|>
⊢ ∀e0 e1.
    trivial_integal_domain e0 e1 =
    <|carrier := {e0; e1};
      sum :=
        <|carrier := {e0; e1}; id := e0;
          op := (λx y. if x = e0 then y else if y = e0 then x else e0)|>;
      prod :=
        <|carrier := {e0; e1}; id := e1;
          op := (λx y. if x = e0 then e0 else if y = e0 then e0 else e1)|> |>
⊢ ∀z. trivial_ring z =
      <|carrier := {z};
        sum := <|carrier := {z}; id := z; op := (λx y. z)|>;
        prod := <|carrier := {z}; id := z; op := (λx y. z)|> |>
⊢ ∀r x y. x =~ y ⇔ ∃u. unit u ∧ x = u * y

Theorems

EXISTS_ring
⊢ ∀P. (∃r. P r) ⇔ ∃f m0 m. P <|carrier := f; sum := m0; prod := m|>
FORALL_ring
⊢ ∀P. (∀r. P r) ⇔ ∀f m0 m. P <|carrier := f; sum := m0; prod := m|>
⊢ Ring r ⇒
  ∀l1 l2.
    LIST_REL rassoc l1 l2 ∧ set l2 ⊆ R ⇒
    rassoc (GBAG r.prod (LIST_TO_BAG l1)) (GBAG r.prod (LIST_TO_BAG l2))
⊢ (∀x. Invariant x ∧ Guard x ⇒ f (Cmd x) < f x) ∧
  (∀x. Precond x ⇒ Invariant x) ∧
  (∀x. Invariant x ∧ ¬Guard x ⇒ Postcond x) ∧
  HOARE_SPEC (λx. Invariant x ∧ Guard x) Cmd Invariant ⇒
  HOARE_SPEC Precond (WHILE Guard Cmd) Postcond
⊢ ∀n k. (ZN 1).prod.exp n k = 0
⊢ ∀n. CARD (ZN n).carrier = n
⊢ ∀n. 0 < n ⇒ char (ZN n) = n
⊢ ∀m n. 1 < m ∧ coprime m n ⇒ n MOD m ∈ Euler m
⊢ ∀m n.
    0 < m ∧ coprime m n ⇒ ∀k. n ** k MOD m = n ** (k MOD ordz m n) MOD m
⊢ ∀m n. 1 < m ∧ coprime m n ⇒ Unit (ZN m) (n MOD m)
⊢ ∀m n. 0 < m ∧ coprime m n ⇒ 0 < ordz m n ∧ n ** ordz m n MOD m = 1 MOD m
⊢ ∀m n. 1 < m ∧ coprime m n ⇒ 0 < ordz m n ∧ n ** ordz m n MOD m = 1
⊢ ∀m n. 0 < m ∧ coprime m n ⇒ ordz m n divides phi m
⊢ ∀m n. 0 < m ∧ coprime m n ⇒ ordz m n divides totient m
⊢ ∀m n. 1 < m ∧ 1 < n MOD m ∧ coprime m n ⇒ 1 < ordz m n
⊢ ∀m n. 1 < m ∧ coprime m n ⇒ ordz m n < m
⊢ ∀n. (ZN n).carrier = count n ∧ (ZN n).sum = add_mod n ∧
      (ZN n).prod = times_mod n
⊢ ∀n. 0 < n ⇒ ∀x k. (ZN n).prod.exp x k = x ** k MOD n
⊢ ∀n. FINITE (ZN n).carrier
⊢ ∀n. 0 < n ⇒ FiniteRing (ZN n)
⊢ ∀n. 0 < n ⇒ (ZN n).sum.id = 0 ∧ (ZN n).prod.id = 1 MOD n
⊢ ∀n. 1 < n ⇒ (ZN n).sum.id = 0 ∧ (ZN n).prod.id = 1
⊢ ∀n. 1 < n ⇒ Invertibles (ZN n).prod = Estar n
⊢ ∀n. 0 < n ⇒ FiniteGroup (Invertibles (ZN n).prod)
⊢ ∀n. 0 < n ⇒ Group (Invertibles (ZN n).prod)
⊢ ∀m n. 0 < m ⇒ order (Invertibles (ZN m).prod) (n MOD m) = ordz m n
⊢ ∀n. 0 < n ⇒ ∀x y. x * y MOD n = 1 ⇒ coprime x n
⊢ ∀n. 1 < n ⇒ ∀x. coprime x n ⇔ ∃y. x * y MOD n = 1
⊢ ∀m n. 0 < m ∧ gcd m n ≠ 1 ⇒ ∀k. 0 < k ⇒ n ** k MOD m ≠ 1
⊢ ∀n. 0 < n ⇒ ∀k. (ZN n).sum.exp 1 k = k MOD n
⊢ ∀n c. 0 < n ⇒ (ZN n).sum.exp 0 c = 0
⊢ ∀n. (ZN n).sum.exp (ZN n).prod.id 1 = 1 MOD n
⊢ ∀n c. 0 < n ⇒ (ZN n).sum.exp (ZN n).prod.id c = c MOD n
⊢ ∀n. 0 < n ⇒ ordz n 0 = if n = 1 then 1 else 0
⊢ ∀n. 0 < n ⇒ ordz n 1 = 1
⊢ ∀m n k. 1 < m ∧ 0 < k ⇒ (n ** k MOD m = 1 ⇔ ordz m n divides k)
⊢ ∀m n. 0 < m ∧ 0 < ordz m n ⇒ ordz m n divides phi m
⊢ ∀n j k. 1 < n ∧ 0 < j ∧ 1 < k ⇒ (k divides tops n j ⇔ ordz k n divides j)
⊢ ∀m n. 0 < m ⇒ m divides tops n (ordz m n)
⊢ ∀m n. 0 < m ⇒ (ordz m n = 0 ⇔ gcd m n ≠ 1)
⊢ ∀m n. 1 < m ⇒ (ordz m n = 0 ⇔ ∀k. 0 < k ⇒ n ** k MOD m ≠ 1)
⊢ ∀m n. 1 < m ⇒ (ordz m n = 0 ⇔ ∀j. 0 < j ∧ j < m ⇒ n ** j MOD m ≠ 1)
⊢ ∀m n. 0 < m ⇒ (ordz m n = 1 ⇔ n MOD m = 1 MOD m)
⊢ ∀m n. 1 < m ⇒ (ordz m n = 1 ⇔ n MOD m = 1)
⊢ ∀m n.
    0 < m ∧ coprime m n ∧ (∀p. prime p ∧ p divides n ⇒ ordz m p = 1) ⇒
    ordz m n = 1
⊢ ∀m n. 0 < m ∧ 1 < ordz m n ⇒ ∃p. prime p ∧ p divides n ∧ 1 < ordz m p
⊢ ∀m n. 0 < m ⇒ ordz m n ≤ m
⊢ ∀n j k. 1 < n ∧ 0 < j ∧ 1 < k ∧ k divides tops n j ⇒ ordz k n ≤ j
⊢ ∀k n m. 0 < k ∧ k < m ⇒ ordz k n < m
⊢ ∀m n k. 0 < m ∧ 0 < k ∧ k < ordz m n ⇒ n ** k MOD m ≠ 1
⊢ ∀m n. 0 < m ⇒ ordz m (n MOD m) = ordz m n
⊢ ∀n. ordz 1 n = 1
⊢ ∀m n. 0 < m ⇒ (ordz m n ≠ 0 ⇔ coprime m n)
⊢ ∀m n. 1 < m ⇒ (ordz m n ≠ 0 ⇔ ∃k. 0 < k ∧ n ** k MOD m = 1)
⊢ ∀m n. 0 < m ⇒ n ** ordz m n MOD m = 1 MOD m
⊢ ∀m n. 1 < m ⇒ n ** ordz m n MOD m = 1
⊢ ∀m n k.
    1 < m ∧ 0 < k ⇒
    (ordz m n = k ⇔ n ** k MOD m = 1 ∧ ∀j. 0 < j ∧ j < k ⇒ n ** j MOD m ≠ 1)
⊢ ∀m n k.
    1 < m ∧ 0 < k ⇒
    (ordz m n = k ⇔
     n ** k MOD m = 1 ∧
     ∀j. 0 < j ∧ j < k ∧ j divides phi m ⇒ n ** j MOD m ≠ 1)
⊢ ∀m n k.
    1 < m ∧ 0 < k ⇒
    (ordz m n = k ⇔
     k divides phi m ∧ n ** k MOD m = 1 ∧
     ∀j. 0 < j ∧ j < k ∧ j divides phi m ⇒ n ** j MOD m ≠ 1)
⊢ ∀m n k.
    1 < m ⇒
    (ordz m n = k ⇔
     n ** k MOD m = 1 ∧
     ∀j. 0 < j ∧ j < (if k = 0 then m else k) ⇒ n ** j MOD m ≠ 1)
⊢ ∀m n k.
    1 < m ∧ 0 < k ∧ n ** k MOD m = 1 ∧
    (∀j. 0 < j ∧ j < k ∧ j divides phi m ⇒ n ** j MOD m ≠ 1) ⇒
    ∀j. 0 < j ∧ j < k ∧ ¬(j divides phi m) ⇒
        ordz m n = k ∨ n ** j MOD m ≠ 1
⊢ ∀m n. 0 < m ⇒ ordz m n ≤ phi m
⊢ ∀m n. 1 < n ∧ coprime m n ∧ 1 < ordz m n ⇒ 1 < m
⊢ ∀m n k. 1 < m ∧ m divides n ∧ 1 < ordz k m ∧ coprime k n ⇒ 1 < n ∧ 1 < k
⊢ ∀n. (∀x. x ∈ (ZN n).carrier ⇔ x < n) ∧ (ZN n).sum.id = 0 ∧
      (ZN n).prod.id = (if n = 1 then 0 else 1) ∧
      (∀x y. (ZN n).sum.op x y = (x + y) MOD n) ∧
      (∀x y. (ZN n).prod.op x y = x * y MOD n) ∧ FINITE (ZN n).carrier ∧
      CARD (ZN n).carrier = n
⊢ ∀n. 0 < n ⇒ Ring (ZN n)
⊢ ∀n m x. 0 < m ∧ x ∈ (ZN n).carrier ⇒ x MOD m ∈ (ZN m).carrier
⊢ ∀n m.
    0 < n ∧ m divides n ⇒ MonoidHomo (λx. x MOD m) (ZN n).prod (ZN m).prod
⊢ ∀n m. 0 < n ∧ m divides n ⇒ RingHomo (λx. x MOD m) (ZN n) (ZN m)
⊢ ∀n m. 0 < n ∧ m divides n ⇒ GroupHomo (λx. x MOD m) (ZN n).sum (ZN m).sum
⊢ ∀p. FINITE (ZP p).carrier
⊢ ∀p. prime p ⇒ FiniteIntegralDomain (ZP p)
⊢ ∀p. prime p ⇒ IntegralDomain (ZP p)
⊢ AbelianGroup Z_add
⊢ Group Z_add
⊢ ∀z. z ∈ Z_add.carrier ⇒ Z_add.inv z = -z
⊢ EuclideanRing Z Num
⊢ ∀n. 0 < n ⇒
      BIJ (λj. coset Z.sum (&j) (Z* n).sum.carrier) (ZN n).carrier
        (Z / Z* n).carrier
⊢ ∀n j.
    0 < n ∧ j ∈ (ZN n).carrier ⇒
    coset Z.sum (&j) (Z* n).sum.carrier ∈ (Z / Z* n).carrier
⊢ ∀n. 0 < n ⇒
      GroupHomo (λj. coset Z.sum (&j) (Z* n).sum.carrier) (ZN n).sum
        (Z / Z* n).sum
⊢ ∀n. 0 < n ⇒
      MonoidHomo (λj. coset Z.sum (&j) (Z* n).sum.carrier) (ZN n).prod
        (Z / Z* n).prod
⊢ ∀n. Group (Z* n).sum
⊢ ∀n. (Z* n).sum << Z.sum
⊢ ∀n. (Z* n).sum ≤ Z.sum
⊢ ∀n. Z* n << Z
⊢ AbelianMonoid Z_mult
⊢ Monoid Z_mult
⊢ ∀n x y. 0 < n ∧ x < n ∧ y < n ∧ -&x + &y ∈ Z_multiple n ⇒ x = y
⊢ PrincipalIdealRing Z
⊢ ∀n. 0 < n ⇒
      RingIso (λj. coset Z.sum (&j) (Z* n).sum.carrier) (ZN n) (Z / Z* n)
⊢ Ring Z
⊢ ∀n. 0 < n ⇒
      ∀x. x ∈ Z.sum.carrier ⇒
          ∃y. cogen Z.sum (Z* n).sum (coset Z.sum x (Z* n).sum.carrier) =
              x + &n * y
⊢ ∀n. 0 < n ⇒
      ∀p. coset Z.sum p (Z* n).sum.carrier =
          coset Z.sum (p % &n) (Z* n).sum.carrier
⊢ ∀r. char r = 0 ⇔ ∀n. 0 < n ⇒ ##n ≠ #0
⊢ ∀r. 0 < char r ⇒ ∀n. 0 < n ∧ n < char r ⇒ ##n ≠ #0
⊢ ∀r. ##(char r) = #0
⊢ ∀n. compute_ordz 0 n = ordz 0 n
⊢ ∀n. compute_ordz 1 n = 1
⊢ ∀m n. compute_ordz m n = ordz m n
⊢ ∀m n.
    1 < m ∧ coprime m n ⇒
    HOARE_SPEC (λi. 0 < i ∧ i ≤ ordz m n)
      (WHILE (λi. n ** i MOD m ≠ 1) SUC) (λi. i = ordz m n)
datatype_ring
⊢ DATATYPE (record ring carrier sum prod)
⊢ ∀r f. EuclideanRing r f ⇒ ∀x. f x = 0 ⇔ x = #0
⊢ ∀r f. EuclideanRing r f ⇒ PrincipalIdealRing r
⊢ ∀r f.
    EuclideanRing r f ⇒
    ∀x y.
      x ∈ R ∧ y ∈ R ∧ y ≠ #0 ⇒
      ∃q t. q ∈ R ∧ t ∈ R ∧ x = q * y + t ∧ f t < f y
⊢ ∀r f. EuclideanRing r f ⇒ Ring r
⊢ ∀r. FiniteIntegralDomain r ⇒ Group f*
⊢ ∀r. FiniteIntegralDomain r ⇒ monoid_invertibles r.prod = R+
⊢ ∀r. FiniteIntegralDomain r ⇒ monoid_invertibles f* = F*
⊢ ∀r. FiniteIntegralDomain r ⇒ ∀x. x ∈ R+ ⇒ ∃k. 0 < k ∧ x ** k = #1
⊢ ∀r. FiniteRing r ⇒ FiniteAbelianGroup r.sum ∧ r.sum.carrier = R
⊢ ∀r. FiniteRing r ⇒ FiniteGroup r.sum ∧ r.sum.carrier = R
⊢ ∀r. FiniteRing r ⇒ (CARD R = 1 ⇔ #1 = #0)
⊢ ∀r. FiniteRing r ⇒ 0 < CARD R
⊢ ∀r. FiniteRing r ∧ prime (CARD R) ⇒ char r = CARD R
⊢ ∀r. FiniteRing r ⇒ 0 < char r ∧ char r = order r.sum #1
⊢ ∀r. FiniteRing r ⇒
      ∀n. char r = n ⇔ 0 < n ∧ ##n = #0 ∧ ∀m. 0 < m ∧ m < n ⇒ ##m ≠ #0
⊢ ∀r. FiniteRing r ⇒ char r divides CARD R
⊢ ∀r. FiniteRing r ⇒ 0 < char r
⊢ ∀r. FiniteRing r ⇒ Ring r
⊢ ∀r. FiniteRing r ⇒ FiniteAbelianMonoid r.prod
⊢ ∀r. FiniteRing r ⇒ FiniteMonoid r.prod
⊢ ∀r f. Ring r ∧ INJ f R 𝕌(:β) ⇒ RingHomo f r (homo_ring r f)
⊢ ∀r f.
    fR = IMAGE f R ∧ (homo_ring r f).sum = homo_group r.sum f ∧
    (homo_ring r f).prod = homo_group r.prod f
⊢ ∀r f. Ring r ∧ RingHomo f r (homo_ring r f) ⇒ Ring (homo_ring r f)
⊢ ∀r s f. (r ~r~ s) f ⇒ subring (homo_ring r f) s
⊢ ∀r i. i << r ∧ r << i ⇒ i = r
⊢ ∀r i. Ring r ∧ i << r ⇒ (SING I ⇔ i = <#0>)
⊢ ∀r i. i << r ⇒ i.sum.carrier = I ∧ i.prod.carrier = I
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x. x ∈ R/I ⇒ gen x ∈ R ∧ gen x ∘ I = x
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x y. x ∈ I ∧ y ∈ R ⇒ (y ∈ I ⇔ x === y)
⊢ ∀r i. Ring r ∧ i << r ⇒ $=== equiv_on R
⊢ ∀r i.
    Ring r ∧ i << r ⇒
    ∀x y. x ∈ I ∧ y ∈ I ⇒ (x === y ⇔ inCoset r.sum i.sum x y)
⊢ ∀r i.
    Ring r ∧ i << r ⇒
    ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ x === y ⇒ z * x === z * y
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x. x ∈ R ⇒ x === x
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ (x === y ⇔ y === x)
⊢ ∀r i.
    Ring r ∧ i << r ⇒
    ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ x === y ∧ y === z ⇒ x === z
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ x ∘ I + y ∘ I = (x + y) ∘ I
⊢ ∀r i x. Ring r ∧ i << r ∧ x ∈ R ⇒ ∀z. z ∈ x ∘ I ⇔ ∃y. y ∈ I ∧ z = x + y
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ (x ∘ I = y ∘ I ⇔ x − y ∈ I)
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x. x ∈ R ∧ x ∘ I = I ⇔ x ∈ I
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ (x ∘ I = y ∘ I ⇔ x === y)
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x. x ∈ R ⇒ gen (x ∘ I) − x ∈ I
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ x ∘ I * y ∘ I = (x * y) ∘ I
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x. x ∈ R ⇒ x ∘ I + -x ∘ I = I
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x. x ∈ I ⇒ x ∘ I = I
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x. x ∈ R ⇒ x ∘ I ∈ R/I ∧ gen (x ∘ I) ∘ I = x ∘ I
⊢ ∀r i. Ring r ∧ i << r ⇒ #0 ∘ I = I
⊢ ∀r i. i << r ⇒ ∀x. x ∈ I ⇒ x ∈ r.sum.carrier
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x. x ∈ I ⇒ x ∈ R
⊢ ∀r i j. Ring r ∧ i << r ∧ j << r ⇒ (i = j ⇔ I = J)
⊢ ∀r i.
    Ring r ∧ i << r ∧ i ≠ <#0> ⇒
    ∀f. (∀x. f x = 0 ⇔ x = #0) ⇒
        ∃p. p ∈ I ∧ p ≠ #0 ∧ ∀z. z ∈ I ∧ z ≠ #0 ⇒ f p ≤ f z
⊢ ∀r i.
    Ring r ∧ i << r ∧ i ≠ <#0> ⇒
    ∀f. (∀x. f x = 0 ⇔ x = #0) ⇒
        ∀z. z ∈ I ⇒ (f z < f (ideal_gen r i f) ⇔ z = #0)
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x y. x ∈ I ∧ y ∈ I ⇒ x − y ∈ I
⊢ ∀r i. i << r ⇒ ∀x y. x ∈ I ∧ y ∈ R ⇒ x * y ∈ I
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x. x ∈ I ⇒ -x ∈ I
⊢ ∀r i. Ring r ∧ i << r ∧ #1 ∈ I ⇒ I = R
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀p. p ∈ R ⇒ (p ∈ I ⇔ <p> << i)
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x y. x ∈ I ∧ y ∈ I ⇒ x * y ∈ I
⊢ ∀r i. i << r ⇒ i.sum ≤ r.sum
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x y. x ∈ I ∧ y ∈ I ⇒ x + y ∈ I
⊢ ∀r i. Ring r ∧ i << r ⇒ #0 ∈ I
⊢ ∀r i. Ring r ∧ i << r ⇒ I ∈ R/I
⊢ ∀r i. i << r ⇒ i.sum.op = $+ ∧ i.prod.op = $*
⊢ ∀r i. i << r ⇒ ∀x y. x ∈ I ∧ y ∈ R ⇒ x * y ∈ I ∧ y * x ∈ I
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x y. x ∈ I ∧ y ∈ I ⇒ x + y ∈ I ∧ x * y ∈ I
⊢ ∀r. Ring r ⇒ r << r
⊢ ∀r i j. Ring r ∧ i << r ∧ j << r ⇒ (i << j ⇔ I ⊆ J)
⊢ ∀r i. Ring r ∧ i << r ⇒ i << i
⊢ ∀r i j. Ring r ∧ i << r ∧ j << r ⇒ i.sum ≤ (i + j).sum
⊢ ∀r i j. Ring r ∧ i << r ∧ j << r ⇒ i + j = j + i
⊢ ∀i j x. x ∈ (i + j).carrier ⇔ ∃y z. y ∈ I ∧ z ∈ J ∧ x = y + z
⊢ ∀r i j. Ring r ∧ i << r ∧ j << r ⇒ Group (i + j).sum
⊢ ∀r i j. Ring r ∧ i << r ∧ j << r ⇒ i << (i + j)
⊢ ∀r i j. Ring r ∧ i << r ∧ j << r ⇒ j << (i + j)
⊢ ∀r i j. Ring r ∧ i << r ∧ j << r ⇒ (i + j) << r
⊢ ∀r i j. Ring r ∧ i << r ∧ j << r ⇒ ((i + j) << j ⇔ i << j)
⊢ ∀r i j. Ring r ∧ i << r ∧ j << r ⇒ (i + j).sum ≤ r.sum
⊢ ∀r. Ring r ⇒ ∀i. i << r ∧ #1 ∈ I ⇔ i = r
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x. x ∈ I ∧ unit x ⇒ i = r
⊢ ∀r i. Ring r ∧ i << r ⇒ i.sum.id = #0
⊢ ∀r. IntegralDomain r ⇒ char r = 0 ∨ prime (char r)
⊢ ∀r p x.
    IntegralDomain r ∧ x ∈ R ∧ p ∈ R ∧ p ≠ #0 ∧ rprime p ∧ p ∉ R* ∧
    x ∉ R* ∧ x rdivides p ⇒
    rassoc x p
⊢ ∀r. IntegralDomain r ⇒
      ∀x. x ∈ R+ ⇒ ∀m n. m < n ∧ x ** m = x ** n ⇒ x ** (n − m) = #1
⊢ ∀r. IntegralDomain r ⇒ ∀x. x ∈ R ⇒ ∀n. x ** n = #0 ⇔ n ≠ 0 ∧ x = #0
⊢ ∀r. IntegralDomain r ⇒ ∀x. x ∈ R+ ⇒ ∀n. x ** n ∈ R+
⊢ ∀r. IntegralDomain r ⇒ Ring r
⊢ ∀r. IntegralDomain r ⇒
      ∀x y. x ∈ R ∧ y ∈ R ⇒ (x * y = #0 ⇔ x = #0 ∨ y = #0)
⊢ ∀r. IntegralDomain r ⇒
      ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ (x * y = x * z ⇔ x = #0 ∨ y = z)
⊢ ∀r. IntegralDomain r ⇒ ∀x y. x ∈ R+ ∧ y ∈ R+ ⇒ x * y ∈ R+
⊢ ∀r. IntegralDomain r ⇒
      ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ (y * x = z * x ⇔ x = #0 ∨ y = z)
⊢ ∀r. IntegralDomain r ⇒ Monoid f*
⊢ ∀r. IntegralDomain r ⇒ F* = R+
⊢ ∀r. IntegralDomain r ⇒ Monoid (monoid_of_ring_nonzero_mult r)
⊢ ∀r. IntegralDomain r ⇒ F* = R+ ∧ f*.id = #1 ∧ f*.op = $* ∧ f*.exp = $**
⊢ ∀r. IntegralDomain r ⇒ ∀x. order r.prod x = order f* x
⊢ ∀r. IntegralDomain r ⇒ #1 ≠ #0
⊢ ∀r. IntegralDomain r ⇒ #1 ∈ R+
⊢ ∀r. FiniteIntegralDomain r ⇒ ∀x. x ∈ R ⇒ (order f* x = 0 ⇔ x = #0)
⊢ ∀r. FiniteIntegralDomain r ⇒ ∀x. x ∈ R+ ⇒ order f* x ≠ 0
⊢ ∀r. IntegralDomain r ⇒ order f* #0 = 0
⊢ IntegralDomain r ⇒
  ∀l1 l2.
    (∀m. MEM m l1 ⇒ m ∈ R ∧ rprime m ∧ m ≠ #0 ∧ m ∉ R* ) ∧
    (∀m. MEM m l2 ⇒ m ∈ R ∧ rprime m ∧ m ≠ #0 ∧ m ∉ R* ) ∧
    rassoc (GBAG r.prod (LIST_TO_BAG l1)) (GBAG r.prod (LIST_TO_BAG l2)) ⇒
    ∃l3. PERM l2 l3 ∧ LIST_REL rassoc l1 l3
⊢ IntegralDomain r ∧ Ring s ∧ RingIso f r s ⇒ IntegralDomain s
⊢ ∀r. IntegralDomain r ⇒ #0 ∉ R*
⊢ ∀r. IntegralDomain r ⇒
      ∀x y. x ∈ R ∧ y ∈ R ⇒ (x * y = #0 ⇔ x = #0 ∨ y = #0)
⊢ ∀r. Ring r ∧ #1 ≠ #0 ⇒ ∀p s. p ∈ R ∧ unit s ⇒ (atom p ⇔ atom (s * p))
⊢ ∀r p. atom p ⇒ p ∈ R
⊢ ∀r z.
    atom z ⇒
    z ∈ R+ ∧ z ∉ R* ∧ ∀p. p ∈ R ∧ p rdivides z ⇒ rassoc z p ∨ unit p
⊢ ∀r r_ f x.
    x ∈ (kernel_ideal f r r_).carrier ⇔ x ∈ r.sum.carrier ∧ f x = #0_
⊢ ∀r r_ f.
    (r ~r~ r_) f ⇒
    (let
       i = kernel_ideal f r r_
     in
       ∀x y.
         x ∈ R/I ∧ y ∈ R/I ⇒
         f (gen ((gen x + gen y) ∘ I)) = f (gen x) +_ f (gen y))
⊢ ∀r r_ f.
    (r ~r~ r_) f ⇒ (let i = kernel_ideal f r r_ in f (gen (#1 ∘ I)) = #1_)
⊢ ∀r r_ f.
    (r ~r~ r_) f ⇒
    (let
       i = kernel_ideal f r r_
     in
       ∀x y.
         x ∈ R/I ∧ y ∈ R/I ⇒
         f (gen ((gen x * gen y) ∘ I)) = f (gen x) *_ f (gen y))
⊢ ∀r r_ f.
    (r ~r~ r_) f ⇒
    (let i = kernel_ideal f r r_ in BIJ (f ∘ gen) R/I (IMAGE f R))
⊢ ∀r r_ f.
    (r ~r~ r_) f ⇒
    (let
       i = kernel_ideal f r r_
     in
       ∀x y. x ∈ R/I ∧ y ∈ R/I ⇒ (gen x − gen y ∈ I ⇔ x = y))
⊢ ∀r s f.
    (r ~r~ s) f ⇒
    (let
       i = kernel_ideal f r s
     in
       RingHomo (f ∘ gen) (r / i) (ring_homo_image f r s))
⊢ ∀r r_ f.
    (r ~r~ r_) f ⇒
    (let i = kernel_ideal f r r_ in INJ (f ∘ gen) R/I (IMAGE f R))
⊢ ∀r s f.
    (r ~r~ s) f ⇒
    (let
       i = kernel_ideal f r s
     in
       RingIso (f ∘ gen) (r / i) (ring_homo_image f r s))
⊢ ∀r r_ f.
    (r ~r~ r_) f ⇒
    (let i = kernel_ideal f r r_ in SURJ (f ∘ gen) R/I (IMAGE f R))
⊢ ∀r s f. (kernel_ideal f r s).sum = kernel_group f r.sum s.sum
⊢ ∀m n. order (times_mod m) n = compute_ordz m n
⊢ ∀r p. IntegralDomain r ∧ p ∈ R ∧ rprime p ∧ p ≠ #0 ∧ p ∉ R* ⇒ atom p
⊢ ∀p x. x ∈ <p>.carrier ⇔ ∃z. z ∈ R ∧ x = p * z
⊢ ∀r. Ring r ⇒ ∀p. p ∈ R ⇒ ∀x. x ∈ <p>.carrier ⇔ p rdivides x
⊢ ∀r. Ring r ⇒ ∀p q u. p ∈ R ∧ q ∈ R ∧ unit u ∧ p = q * u ⇒ <p> = <q>
⊢ ∀r. IntegralDomain r ⇒
      ∀p q. p ∈ R ∧ q ∈ R ⇒ (<p> = <q> ⇔ ∃u. unit u ∧ p = q * u)
⊢ ∀r. Ring r ⇒ ∀p. p ∈ R ⇒ Group <p>.sum
⊢ ∀r. Ring r ⇒ ∀p. p ∈ R ⇒ p ∈ <p>.carrier
⊢ ∀r. Ring r ⇒ ∀p q. p ∈ R ∧ q ∈ <p>.carrier ⇒ <q> << <p>
⊢ ∀r. Ring r ⇒ ∀p. p ∈ R ⇒ <p> << r
⊢ ∀r p.
    <p>.carrier = p * R ∧ <p>.sum.carrier = p * R ∧
    <p>.prod.carrier = p * R ∧ <p>.sum.op = $+ ∧ <p>.prod.op = $* ∧
    <p>.sum.id = #0 ∧ <p>.prod.id = #1
⊢ ∀r. PrincipalIdealRing r ⇒ ∀p. atom p ⇒ rprime p
⊢ ∀r. PrincipalIdealRing r ⇒ ∀p. atom p ⇒ maxi <p>
⊢ ∀r. PrincipalIdealRing r ⇒ ∀p. atom p ⇒ rprime p
⊢ ∀r. Ring r ⇒ ∀p q. p ∈ R ∧ q ∈ R ⇒ (q rdivides p ⇔ <p> << <q>)
⊢ ∀r. Ring r ⇒ ∀p. p ∈ R ⇒ <p>.sum ≤ r.sum
⊢ ∀r. Ring r ⇒ ∀p. p ∈ R ⇒ <p>.sum << r.sum
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀p. p ∈ I ⇒ <p> + i = i
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀p. p ∈ I ⇔ p ∈ R ∧ <p> + i = i
⊢ ∀r. Ring r ∧ i << r ⇒ AbelianGroup (quotient_ring_add r i)
⊢ ∀r i.
    Ring r ∧ i << r ⇒
    ∀x y z. x ∈ R/I ∧ y ∈ R/I ∧ z ∈ R/I ⇒ x + y + z = x + (y + z)
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x y. x ∈ R/I ∧ y ∈ R/I ⇒ x + y = y + x
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x y. x ∈ R/I ∧ y ∈ R/I ⇒ x + y ∈ R/I
⊢ ∀r i. Ring r ∧ i << r ⇒ Group (quotient_ring_add r i)
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x. x ∈ R/I ⇒ I + x = x
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x. x ∈ R/I ⇒ ∃y. y ∈ R/I ∧ y + x = I
⊢ ∀r. Ring r ⇒ ∀p. p ∈ R ⇒ Ring (r / <p>)
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀z. z ∈ R/I ⇔ ∃x. x ∈ R ∧ z = x ∘ I
⊢ ∀r i. Ring r ∧ i << r ⇒ I ∈ R/I
⊢ ∀r i. Ring r ∧ i << r ⇒ RingHomo (λx. x ∘ I) r (r / i)
⊢ ∀r i. Ring r ∧ i << r ⇒ kernel (λx. x ∘ I) r.sum (r / i).sum = I
⊢ ∀r i.
    Ring r ∧ i << r ⇒
    RingHomo (λx. x ∘ I) r (r / i) ∧ kernel_ideal (λx. x ∘ I) r (r / i) = i
⊢ ∀r i. Ring r ∧ i << r ⇒ SURJ (λx. x ∘ I) R R/I
⊢ ∀r. Ring r ∧ i << r ⇒ AbelianMonoid (quotient_ring_mult r i)
⊢ ∀r i.
    Ring r ∧ i << r ⇒
    ∀x y z. x ∈ R/I ∧ y ∈ R/I ∧ z ∈ R/I ⇒ x * y * z = x * (y * z)
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x y. x ∈ R/I ∧ y ∈ R/I ⇒ x * y = y * x
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x y. x ∈ R/I ∧ y ∈ R/I ⇒ x * y ∈ R/I
⊢ ∀r i. Ring r ∧ i << r ⇒ ∀x. x ∈ R/I ⇒ #1 ∘ I * x = x ∧ x * #1 ∘ I = x
⊢ ∀r i.
    Ring r ∧ i << r ⇒
    ∀x y z. x ∈ R/I ∧ y ∈ R/I ∧ z ∈ R/I ⇒ x * (y + z) = x * y + x * z
⊢ ∀r i. Ring r ∧ i << r ⇒ Monoid (quotient_ring_mult r i)
⊢ ∀r i.
    (r / i).carrier = R/I ∧ (r / i).sum = quotient_ring_add r i ∧
    (r / i).prod = quotient_ring_mult r i
⊢ ∀r i. Ring r ∧ i << r ⇒ Ring (r / i)
⊢ ∀r. Ring r ⇒ (r / r).carrier = {R}
ring_11
⊢ ∀a0 a1 a2 a0' a1' a2'.
    ring a0 a1 a2 = ring a0' a1' a2' ⇔ a0 = a0' ∧ a1 = a1' ∧ a2 = a2'
ring_Axiom
⊢ ∀f. ∃fn. ∀a0 a1 a2. fn (ring a0 a1 a2) = f a0 a1 a2
ring_accessors
⊢ (∀f m m0. (ring f m m0).carrier = f) ∧ (∀f m m0. (ring f m m0).sum = m) ∧
  ∀f m m0. (ring f m m0).prod = m0
ring_accfupds
⊢ (∀r f. (r with sum updated_by f).carrier = R) ∧
  (∀r f. (r with prod updated_by f).carrier = R) ∧
  (∀r f. (r with carrier updated_by f).sum = r.sum) ∧
  (∀r f. (r with prod updated_by f).sum = r.sum) ∧
  (∀r f. (r with carrier updated_by f).prod = r.prod) ∧
  (∀r f. (r with sum updated_by f).prod = r.prod) ∧
  (∀r f. (r with carrier updated_by f).carrier = f R) ∧
  (∀r f. (r with sum updated_by f).sum = f r.sum) ∧
  ∀r f. (r with prod updated_by f).prod = f r.prod
⊢ ∀r. Ring r ⇒ AbelianGroup r.sum
ring_add_assoc
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ x + y + z = x + (y + z)
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ x + (y + z) = y + (x + z)
⊢ ∀r. Ring r ∧ char r = 2 ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ x + y = x − y
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ x + y = y + x
ring_add_element
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ x + y ∈ R
ring_add_eq_zero
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ (x + y = #0 ⇔ y = -x)
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀n. r.sum.exp x n = x * ##n
⊢ ∀r. Ring r ⇒
      Group r.sum ∧ r.sum.carrier = R ∧ ∀x y. x ∈ R ∧ y ∈ R ⇒ x + y = y + x
⊢ ∀r. Ring r ⇒ Group r.sum ∧ r.sum.carrier = R
ring_add_lcancel
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ (x + y = x + z ⇔ y = z)
ring_add_lneg
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ -x + x = #0
ring_add_lneg_assoc
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ y = x + (-x + y) ∧ y = -x + (x + y)
ring_add_lzero
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ #0 + x = x
⊢ ∀r. Ring r ⇒
      ∀x y p q.
        x ∈ R ∧ y ∈ R ∧ p ∈ R ∧ q ∈ R ⇒ x + y − (p + q) = x − p + (y − q)
ring_add_rcancel
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ (y + x = z + x ⇔ y = z)
ring_add_rneg
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ x + -x = #0
ring_add_rneg_assoc
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ y = y + -x + x ∧ y = y + x + -x
ring_add_rzero
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ x + #0 = x
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ x + y − y = x
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ x + y − z = x + (y − z)
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ y + x − y = x
⊢ ∀r. Ring r ⇒
      ∀x y z t.
        x ∈ R ∧ y ∈ R ∧ z ∈ R ∧ t ∈ R ⇒ (x + y = z + t ⇔ x − z = t − y)
ring_add_zero_zero
⊢ ∀r. Ring r ⇒ #0 + #0 = #0
⊢ ∀r p q x. Ring r ∧ rassoc p q ∧ q ∈ R ∧ p rdivides x ⇒ q rdivides x
⊢ ∀r p q x.
    Ring r ∧ p ∈ R ∧ q ∈ R ∧ x ∈ R ∧ rassoc p q ⇒ rassoc (x * p) (x * q)
⊢ ∀r x. Ring r ∧ x ∈ R ⇒ rassoc x x
⊢ ∀r p q. Ring r ∧ q ∈ R ∧ rassoc p q ⇒ rassoc q p
⊢ ∀r x y z. Ring r ∧ z ∈ R ∧ rassoc x y ∧ rassoc y z ⇒ rassoc x z
⊢ ∀r. RingAuto I r
⊢ ∀r f. Ring r ∧ RingAuto f r ⇒ f PERMUTES R
⊢ ∀r f1 f2.
    Ring r ∧ (∀x. x ∈ R ⇒ f1 x = f2 x) ⇒ (RingAuto f1 r ⇔ RingAuto f2 r)
⊢ ∀r f. RingAuto f r ⇒ ∀x. x ∈ R ⇒ f x ∈ R
⊢ ∀r f. Ring r ∧ RingAuto f r ⇒ f #0 = #0 ∧ f #1 = #1
⊢ ∀r f. Ring r ∧ RingAuto f r ⇒ RingAuto (LINV f R) r
⊢ ∀r f. Ring r ∧ RingAuto f r ⇒ f #1 = #1
⊢ ∀r f. Ring r ∧ RingAuto f r ⇒ f #0 = #0
⊢ ∀r. Ring r ⇒
      ∀x y. x ∈ R ∧ y ∈ R ⇒ (x + y) ** 2 = x ** 2 + ##2 * (x * y) + y ** 2
⊢ ∀r. Ring r ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒
        (x + y) ** 3 =
        x ** 3 + ##3 * (x ** 2 * y) + ##3 * (x * y ** 2) + y ** 3
⊢ ∀r. Ring r ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒
        (x + y) ** 4 =
        x ** 4 + ##4 * (x ** 3 * y) + ##6 * (x ** 2 * y ** 2) +
        ##4 * (x * y ** 3) + y ** 4
⊢ ∀r. Ring r ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒
        ∀n. GENLIST
              ((λk. ##(binomial n k) * x ** SUC (n − k) * y ** k) ∘ SUC) n =
            GENLIST
              (λk. ##(binomial n (SUC k)) * x ** (n − k) * y ** SUC k) n
⊢ ∀r. Ring r ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒
        ∀n. (λk. ##(binomial (SUC n) k) * x ** (SUC n − k) * y ** k) ∘ SUC =
            (λk. ##(binomial (SUC n) (SUC k)) * x ** (n − k) * y ** SUC k)
⊢ ∀r. Ring r ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒
        ∀n. (λk. x * k) ∘ (λk. ##(binomial n k) * x ** (n − k) * y ** k) =
            (λk. ##(binomial n k) * x ** SUC (n − k) * y ** k)
⊢ ∀r. Ring r ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒
        ∀n. (λk. y * k) ∘ (λk. ##(binomial n k) * x ** (n − k) * y ** k) =
            (λk. ##(binomial n k) * x ** (n − k) * y ** SUC k)
⊢ ∀r. Ring r ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒
        ∀n. (x + y) ** n =
            rsum
              (GENLIST (λk. ##(binomial n k) * x ** (n − k) * y ** k)
                 (SUC n))
⊢ ∀r. Ring r ⇒ R ≠ ∅
⊢ ∀r. Ring r ⇒ r.sum.carrier = R ∧ r.prod.carrier = R
ring_case_cong
⊢ ∀M M' f.
    M = M' ∧ (∀a0 a1 a2. M' = ring a0 a1 a2 ⇒ f a0 a1 a2 = f' a0 a1 a2) ⇒
    ring_CASE M f = ring_CASE M' f'
ring_case_eq
⊢ ring_CASE x f = v ⇔ ∃f' m m0. x = ring f' m m0 ∧ f f' m m0 = v
⊢ ∀r. Ring r ∧ char r = 0 ⇒ INFINITE R
⊢ ∀r. Ring r ∧ char r = 1 ⇒ R = {#0}
⊢ ∀r. Ring r ∧ char r = 2 ⇒ ∀x. x ∈ R ⇒ x + x = #0
⊢ ∀r. Ring r ∧ char r = 2 ⇒ -#1 = #1
⊢ ∀r. Ring r ∧ char r = 2 ⇒ #1 + #1 = #0
⊢ ∀r. Ring r ⇒
      ∀n. 0 < n ⇒ (char r = n ⇔ ##n = #0 ∧ ∀m. 0 < m ∧ m < n ⇒ ##m ≠ #0)
⊢ ∀r. Ring r ⇒ ∀n. ##n = #0 ⇔ char r divides n
⊢ ∀r. Ring r ⇒ (char r = 1 ⇔ #1 = #0)
⊢ ∀r. Ring r ⇒
      (prime (char r) ⇔
       1 < char r ∧ ∀k. 0 < k ∧ k < char r ⇒ ##(binomial (char r) k) = #0)
⊢ ∀r. Ring r ∧ prime (char r) ⇒ RingEndo (λx. x ** char r) r
ring_component_equality
⊢ ∀r1 r2.
    r1 = r2 ⇔ r1.carrier = r2.carrier ∧ r1.sum = r2.sum ∧ r1.prod = r2.prod
⊢ ∀r x y p.
    Ring r ∧ rassoc x y ∧ p ∈ R ∧ y ∈ R ∧ p rdivides x ⇒ p rdivides y
⊢ ∀r. Ring r ⇒ ∀p. p ∈ R ⇒ #1 rdivides p
⊢ ∀r. Ring r ⇒ ∀p t. p ∈ R ∧ unit t ⇒ t rdivides p
⊢ ∀r r_ f.
    (r =r= r_) f ⇒ ∀p q. p ∈ R ∧ p rdivides q ⇒ ring_divides r_ (f p) (f q)
⊢ ∀r f.
    EuclideanRing r f ∧ ring_ordering r f ⇒
    ∀p q. p ∈ R ∧ q ∈ R ∧ p ≠ #0 ∧ q rdivides p ⇒ f q ≤ f p
⊢ ∀r. Ring r ⇒ ∀p. p ∈ R ⇒ p rdivides p
⊢ ∀r. Ring r ⇒
      ∀p q t.
        p ∈ R ∧ q ∈ R ∧ t ∈ R ∧ p rdivides q ∧ q rdivides t ⇒ p rdivides t
⊢ ∀r. Ring r ⇒ ∀p. p ∈ R ⇒ p rdivides #0
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ∧ x = y ⇒ x =~ y
⊢ ∀x. x ** 0 = #1
ring_exp_1
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ x ** 1 = x
⊢ ∀x n. x ** SUC n = x * x ** n
ring_exp_add
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀n k. x ** (n + k) = x ** n * x ** k
⊢ ∀r. Ring r ⇒
      ∀x y. x ∈ R ∧ y ∈ R ⇒ ∀n k. x ** n * (x ** k * y) = x ** (n + k) * y
ring_exp_comm
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀n. x ** n * x = x * x ** n
ring_exp_element
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀n. x ** n ∈ R
⊢ ∀r. Ring r ⇒
      ∀x. x ∈ R ∧ 0 < order r.prod x ⇒
          ∀n. x ** n = x ** (n MOD order r.prod x)
ring_exp_mult
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀n k. x ** (n * k) = (x ** n) ** k
ring_exp_mult_comm
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀m n. (x ** m) ** n = (x ** n) ** m
⊢ ∀r. Ring r ⇒
      ∀x. x ∈ R ⇒ ∀n. -x ** n = if EVEN n then x ** n else -(x ** n)
⊢ ∀r. Ring r ⇒
      ∀x. x ∈ R ⇒
          x ** 0 = #1 ∧ x ** 1 = x ∧ x ** 2 = x * x ∧ x ** 3 = x * x ** 2 ∧
          x ** 4 = x * x ** 3 ∧ x ** 5 = x * x ** 4 ∧ x ** 6 = x * x ** 5 ∧
          x ** 7 = x * x ** 6 ∧ x ** 8 = x * x ** 7 ∧ x ** 9 = x * x ** 8
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀n. x ** SUC n = x ** n * x
⊢ ∀r. Ring r ⇒
      ∀p q.
        p ∈ R ∧ q ∈ R ∧ (∃k. k ∈ R ∧ p = k * q) ⇒
        ∀z. z ∈ R ∧ (∃s. s ∈ R ∧ z = s * p) ⇒ ∃t. t ∈ R ∧ z = t * q
⊢ ∀r. Ring r ∧ prime (char r) ⇒ ∀n k. ##n ** char r ** k = ##n
⊢ ∀r. Ring r ∧ prime (char r) ⇒ ∀n. ##n ** char r = ##n
⊢ ∀r r_ f.
    (r ~r~ r_) f ⇒
    (let
       i = kernel_ideal f r r_
     in
       i << r ∧ ring_homo_image f r r_ ≤ r_ ∧
       RingIso (f ∘ gen) (r / i) (ring_homo_image f r r_))
ring_fn_updates
⊢ (∀f0 f m m0. ring f m m0 with carrier updated_by f0 = ring (f0 f) m m0) ∧
  (∀f0 f m m0. ring f m m0 with sum updated_by f0 = ring f (f0 m) m0) ∧
  ∀f0 f m m0. ring f m m0 with prod updated_by f0 = ring f m (f0 m0)
⊢ ∀r. Ring r ∧ prime (char r) ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒
        ∀n. (x + y) ** char r ** n = x ** char r ** n + y ** char r ** n
⊢ ∀r. Ring r ∧ prime (char r) ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒
        ∀n. (x − y) ** char r ** n = x ** char r ** n − y ** char r ** n
⊢ ∀r. Ring r ∧ prime (char r) ⇒
      ∀x y. x ∈ R ∧ y ∈ R ⇒ (x + y) ** char r = x ** char r + y ** char r
⊢ ∀r. Ring r ∧ prime (char r) ⇒
      ∀x y. x ∈ R ∧ y ∈ R ⇒ (x − y) ** char r = x ** char r − y ** char r
⊢ ∀r. Ring r ⇒ ∀a b. rfun a ∧ rfun b ⇒ rfun (λk. a k + b k)
⊢ ∀r. Ring r ⇒ ∀f. rfun f ⇒ ∀x. x ∈ R ⇒ rfun (λj. f j * x ** j)
⊢ ∀r. Ring r ⇒ ∀f. rfun f ⇒ ∀x. x ∈ R ⇒ ∀n. rfun (λj. (f j * x ** j) ** n)
⊢ ∀f. rfun f ⇒ ∀n. rlist (GENLIST f n)
⊢ ∀f l. rfun f ⇒ rlist (MAP f l)
ring_fupdcanon
⊢ (∀r g f.
     r with <|sum updated_by f; carrier updated_by g|> =
     r with <|carrier updated_by g; sum updated_by f|>) ∧
  (∀r g f.
     r with <|prod updated_by f; carrier updated_by g|> =
     r with <|carrier updated_by g; prod updated_by f|>) ∧
  ∀r g f.
    r with <|prod updated_by f; sum updated_by g|> =
    r with <|sum updated_by g; prod updated_by f|>
ring_fupdcanon_comp
⊢ ((∀g f. sum_fupd f ∘ carrier_fupd g = carrier_fupd g ∘ sum_fupd f) ∧
   ∀h g f.
     sum_fupd f ∘ carrier_fupd g ∘ h = carrier_fupd g ∘ sum_fupd f ∘ h) ∧
  ((∀g f. prod_fupd f ∘ carrier_fupd g = carrier_fupd g ∘ prod_fupd f) ∧
   ∀h g f.
     prod_fupd f ∘ carrier_fupd g ∘ h = carrier_fupd g ∘ prod_fupd f ∘ h) ∧
  (∀g f. prod_fupd f ∘ sum_fupd g = sum_fupd g ∘ prod_fupd f) ∧
  ∀h g f. prod_fupd f ∘ sum_fupd g ∘ h = sum_fupd g ∘ prod_fupd f ∘ h
ring_fupdfupds
⊢ (∀r g f.
     r with <|carrier updated_by f; carrier updated_by g|> =
     r with carrier updated_by f ∘ g) ∧
  (∀r g f.
     r with <|sum updated_by f; sum updated_by g|> =
     r with sum updated_by f ∘ g) ∧
  ∀r g f.
    r with <|prod updated_by f; prod updated_by g|> =
    r with prod updated_by f ∘ g
ring_fupdfupds_comp
⊢ ((∀g f. carrier_fupd f ∘ carrier_fupd g = carrier_fupd (f ∘ g)) ∧
   ∀h g f. carrier_fupd f ∘ carrier_fupd g ∘ h = carrier_fupd (f ∘ g) ∘ h) ∧
  ((∀g f. sum_fupd f ∘ sum_fupd g = sum_fupd (f ∘ g)) ∧
   ∀h g f. sum_fupd f ∘ sum_fupd g ∘ h = sum_fupd (f ∘ g) ∘ h) ∧
  (∀g f. prod_fupd f ∘ prod_fupd g = prod_fupd (f ∘ g)) ∧
  ∀h g f. prod_fupd f ∘ prod_fupd g ∘ h = prod_fupd (f ∘ g) ∘ h
⊢ ∀r f.
    EuclideanRing r f ⇒
    ∀p q. p ∈ R ∧ q ∈ R ⇒ rgcd p q rdivides p ∧ rgcd p q rdivides q
⊢ ∀r f. EuclideanRing r f ⇒ ∀p q. p ∈ R ∧ q ∈ R ⇒ rgcd p q ∈ R
⊢ ∀r f.
    EuclideanRing r f ⇒
    ∀p q.
      p ∈ R ∧ q ∈ R ⇒
      rgcd p q rdivides p ∧ rgcd p q rdivides q ∧
      ∀d. d ∈ R ∧ d rdivides p ∧ d rdivides q ⇒ d rdivides rgcd p q
⊢ ∀r f.
    EuclideanRing r f ⇒
    ∀p q. p ∈ R ∧ q ∈ R ⇒ ∃a b. a ∈ R ∧ b ∈ R ∧ rgcd p q = a * p + b * q
⊢ ∀r f.
    EuclideanRing r f ⇒
    ∀p q.
      p ∈ R ∧ q ∈ R ⇒
      ∀d. d ∈ R ∧ d rdivides p ∧ d rdivides q ⇒ d rdivides rgcd p q
⊢ ∀r f. EuclideanRing r f ⇒ ∀p q. p ∈ R ∧ q ∈ R ⇒ rgcd p q = rgcd q p
⊢ ∀r f p. rgcd p #0 = p ∧ rgcd #0 p = p
⊢ ∀r. RingHomo I r r
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ f (x + y) = f x +_ f y
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ char r_ divides char r
⊢ ∀r s t f1 f2. RingHomo f1 r s ∧ RingHomo f2 s t ⇒ RingHomo (f2 ∘ f1) r t
⊢ ∀r r_ f1 f2.
    Ring r ∧ Ring r_ ∧ (∀x. x ∈ R ⇒ f1 x = f2 x) ⇒
    (RingHomo f1 r r_ ⇔ RingHomo f2 r r_)
⊢ ∀r r_ f. RingHomo f r r_ ⇒ ∀x. x ∈ R ⇒ f x ∈ R_
⊢ ∀r r_ f. (r ~r~ r_) f ∧ INJ f R R_ ⇒ ∀x. x ∈ R ⇒ (f x = #0_ ⇔ x = #0)
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ ∀x. x ∈ R ⇒ ∀n. f (x ** n) = f x **_ n
⊢ ∀r s f. (r ~r~ s) f ⇒ ∀i. i << r ⇒ Group (homo_ideal f r s i).sum
⊢ ∀r s f.
    Ring r ∧ Ring s ∧ RingHomo f r s ∧ SURJ f R s.carrier ⇒
    ∀i. i << r ⇒ homo_ideal f r s i << s
⊢ ∀r s f. (r ~r~ s) f ⇒ ∀i. i << r ⇒ (homo_ideal f r s i).sum ≤ s.sum
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ f #0 = #0_ ∧ f #1 = #1_
⊢ ∀r r_ f.
    (r ~r~ r_) f ∧ INJ f R R_ ⇒ BIJ f R (ring_homo_image f r r_).carrier
⊢ ∀r r_ f. (ring_homo_image f r r_).carrier = IMAGE f R
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ RingHomo f r (ring_homo_image f r r_)
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ subring (ring_homo_image f r r_) r_
⊢ ∀r r_ f. (r ~r~ r_) f ∧ INJ f R R_ ⇒ RingIso f r (ring_homo_image f r r_)
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ Ring (ring_homo_image f r r_)
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ ring_homo_image f r r_ ≤ r_
⊢ ∀r r_ f.
    (r ~r~ r_) f ⇒
    ∀s. Ring s ∧ subring s r ⇒ subring (ring_homo_image f s r_) r_
⊢ ∀r r_ f.
    Ring r ∧ Ring r_ ∧ SURJ f R R_ ⇒ RingIso I r_ (ring_homo_image f r r_)
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ ∀x. unit x ⇒ f ( |/ x) = |/_ (f x)
⊢ ∀f r s. (r ~r~ s) f ⇒ kernel_ideal f r s << r
⊢ ∀r r_ f. (r ~r~ r_) f ∧ BIJ f R R_ ⇒ RingHomo (LINV f R) r_ r
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ f (x * y) = f x *_ f y
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ ∀x. x ∈ R ⇒ f (-x) = $-_ (f x)
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ ∀n. f (##n) = ##_ #1_ n
⊢ ∀r r_ f.
    (r ~r~ r_) f ⇒ ∀c. 0 < c ∧ c < char r_ ⇒ ##c ≠ #0 ∧ f (##c) ≠ #0_
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ f #1 = #1_
⊢ ∀r r_ f. (r ~r~ r_) f ∧ #1 = #0 ⇒ #1_ = #0_
⊢ ∀r r_ f.
    Ring r ∧ RingHomo f r r_ ⇒
    ∀x y. x ∈ R ∧ y ∈ R ⇒ f (x + y) = f x +_ f y ∧ f (x * y) = f x *_ f y
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ subring (ring_homo_image f r r_) r_
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ f (x − y) = f x -_ f y
⊢ ∀r s r_ f. (r ~r~ r_) f ∧ s ≤ r ⇒ (s ~r~ ring_homo_image f s r_) f
⊢ ∀r r_ f.
    (r ~r~ r_) f ⇒ ∀c. 0 < c ∧ c < char r_ ⇒ ##c ≠ #0 ∧ ##_ #1_ c ≠ #0_
⊢ ∀r r_ f. (r ~r~ r_) f ∧ BIJ f R R_ ⇒ RingHomo (LINV f R) r_ r
⊢ Ring r ∧ Ring s ∧ RingHomo f r s ∧
  (∀x. x ∈ s.carrier ⇒ i x ∈ R ∧ f (i x) = x) ∧ (∀x. x ∈ R ⇒ i (f x) = x) ⇒
  RingHomo i s r
⊢ ∀r s t f1 f2. RingHomo f1 r s ∧ RingHomo f2 s t ⇒ RingHomo (f2 ∘ f1) r t
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ ∀x. unit x ⇒ unit_ (f x)
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ ∀x. unit x ⇒ |/_ (f x) = f ( |/ x)
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ ∀x. unit x ⇒ |/_ (f x) ∈ R_
⊢ ∀r r_ f. (r ~r~ r_) f ∧ #1_ ≠ #0_ ⇒ ∀x. unit x ⇒ |/_ (f x) ≠ #0_
⊢ ∀r r_ f. (r ~r~ r_) f ∧ #1_ ≠ #0_ ⇒ ∀x. unit x ⇒ f x ≠ #0_
⊢ ∀r r_ f. (r ~r~ r_) f ⇒ f #0 = #0_
ring_induction
⊢ ∀P. (∀f m m0. P (ring f m m0)) ⇒ ∀r. P r
⊢ ∀r f.
    Ring r ⇒
    ring_inj_image r f =
    <|carrier := IMAGE f R; sum := monoid_inj_image r.sum f;
      prod := monoid_inj_image r.prod f|>
⊢ ∀r f. (ring_inj_image r f).carrier = IMAGE f R
⊢ ∀r f. Ring r ∧ INJ f R 𝕌(:β) ⇒ AbelianMonoid (ring_inj_image r f).prod
⊢ ∀r f. Ring r ∧ INJ f R 𝕌(:β) ⇒ Monoid (ring_inj_image r f).prod
⊢ ∀r f.
    Ring r ∧ INJ f R 𝕌(:β) ⇒ MonoidHomo f r.prod (ring_inj_image r f).prod
⊢ ∀r f. Ring r ∧ INJ f R 𝕌(:β) ⇒ Ring (ring_inj_image r f)
⊢ ∀r f. Ring r ∧ INJ f R 𝕌(:β) ⇒ RingHomo f r (ring_inj_image r f)
⊢ ∀r f. Ring r ∧ INJ f R 𝕌(:β) ⇒ AbelianGroup (ring_inj_image r f).sum
⊢ ∀r f. Ring r ∧ INJ f R 𝕌(:β) ⇒ Group (ring_inj_image r f).sum
⊢ ∀r f. Ring r ∧ INJ f R 𝕌(:β) ⇒ GroupHomo f r.sum (ring_inj_image r f).sum
⊢ ∀r f. Ring r ∧ INJ f R 𝕌(:β) ⇒ Monoid (ring_inj_image r f).sum
⊢ ∀r. Ring r ⇒ |/ #1 = #1
⊢ ∀r f.
    EuclideanRing r f ⇒
    ∀p. p ∈ R ∧ atom p ⇒ ∀q. q ∈ R ⇒ unit (rgcd p q) ∨ p rdivides q
⊢ ∀r. RingIso I r r
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ f (x + y) = f x +_ f y
⊢ ∀r r_ f. (r =r= r_) f ⇒ BIJ f R R_
⊢ ∀r r_ f. RingIso f r r_ ∧ FINITE R ⇒ CARD R = CARD R_
⊢ ∀r r_ f. (r =r= r_) f ⇒ char r_ = char r
⊢ ∀r s t f1 f2. RingIso f1 r s ∧ RingIso f2 s t ⇒ RingIso (f2 ∘ f1) r t
⊢ ∀r r_ f1 f2.
    Ring r ∧ Ring r_ ∧ (∀x. x ∈ R ⇒ f1 x = f2 x) ⇒
    (RingIso f1 r r_ ⇔ RingIso f2 r r_)
⊢ ∀r r_ f. RingIso f r r_ ⇒ ∀x. x ∈ R ⇒ f x ∈ R_
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ (f x = f y ⇔ x = y)
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀x. x ∈ R ⇒ (f x = #1_ ⇔ x = #1)
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀x. x ∈ R ⇒ (f x = #0_ ⇔ x = #0)
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀x. x ∈ R ⇒ ∀n. f (x ** n) = f x **_ n
⊢ ∀r r_ f. (r =r= r_) f ⇒ f #0 = #0_ ∧ f #1 = #1_
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀x. unit x ⇒ f ( |/ x) = |/_ (f x)
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀y. y ∈ R_ ⇒ ∃x. x ∈ R ∧ y = f x
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀y. y ∈ R_ ⇒ LINV f R y ∈ R ∧ y = f (LINV f R y)
⊢ ∀r r_ f. (r =r= r_) f ⇒ RingIso (LINV f R) r_ r
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ f (x * y) = f x *_ f y
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀x. x ∈ R ⇒ f (-x) = $-_ (f x)
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀x. x ∈ R+ ⇒ f x ∈ R+_
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀n. f (##n) = ##_ #1_ n
⊢ ∀r r_ f. (r =r= r_) f ⇒ f #1 = #1_
⊢ ∀r r_ f.
    Ring r ∧ RingIso f r r_ ⇒
    ∀x y. x ∈ R ∧ y ∈ R ⇒ f (x + y) = f x +_ f y ∧ f (x * y) = f x *_ f y
⊢ ∀r r_ f. (r =r= r_) f ⇒ subring (ring_homo_image f r r_) r_
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ f (x − y) = f x -_ f y
⊢ ∀r s r_ f. (r =r= r_) f ∧ s ≤ r ⇒ (s =r= ring_homo_image f s r_) f
⊢ ∀r r_ f. (r =r= r_) f ⇒ RingIso (LINV f R) r_ r
⊢ Ring r ∧ Ring s ∧ RingIso f r s ∧
  (∀x. x ∈ s.carrier ⇒ i x ∈ R ∧ f (i x) = x) ∧ (∀x. x ∈ R ⇒ i (f x) = x) ⇒
  RingIso i s r
⊢ ∀r s t f1 f2. RingIso f1 r s ∧ RingIso f2 s t ⇒ RingIso (f2 ∘ f1) r t
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀x. unit x ⇒ unit_ (f x)
⊢ ∀r r_ f. (r =r= r_) f ⇒ f #0 = #0_
⊢ ∀x s. rlist (SNOC x s) ⇔ x ∈ R ∧ rlist s
⊢ ∀r h t. rlist (h::t) ⇔ h ∈ R ∧ rlist t
⊢ ∀r f. rfun f ⇒ ∀n. rlist (GENLIST f n)
⊢ ∀r f. rfun f ⇒ ∀n g. rlist (GENLIST (f ∘ g) n)
⊢ ∀s. rlist (FRONT s) ∧ LAST s ∈ R ⇒ rlist s
⊢ ∀r. Ring r ⇒
      ∀f. rfun f ⇒ ∀x. x ∈ R ⇒ ∀n. rlist (GENLIST (λj. f j * x ** j) n)
⊢ ∀r. rlist [] ⇔ T
ring_literal_11
⊢ ∀f1 m01 m1 f2 m02 m2.
    <|carrier := f1; sum := m01; prod := m1|> =
    <|carrier := f2; sum := m02; prod := m2|> ⇔
    f1 = f2 ∧ m01 = m02 ∧ m1 = m2
ring_literal_nchotomy
⊢ ∀r. ∃f m0 m. r = <|carrier := f; sum := m0; prod := m|>
⊢ ∀r. Ring r ⇒ AbelianMonoid r.prod
⊢ ∀r. Ring r ⇒
      ∀z y x.
        x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒
        x * (y + z) = x * y + x * z ∧ (y + z) * x = y * x + z * x
⊢ ∀r. Ring r ⇒
      ∀x. x ∈ R ⇒ ∀n. ##n * x + -x = if n = 0 then -x else ##(n − 1) * x
⊢ ∀r. Ring r ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒
        ∀n. ##n * x + (-x + y) =
            if n = 0 then -x + y else ##(n − 1) * x + y
⊢ ∀r. Ring r ⇒
      ∀x. x ∈ R ⇒
          ∀m n.
            ##m * x + -(##n * x) =
            if m < n then -(##(n − m) * x) else ##(m − n) * x
⊢ ∀r. Ring r ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒
        ∀m n.
          ##m * x + (-(##n * x) + y) =
          if m < n then -(##(n − m) * x) + y else ##(m − n) * x + y
ring_mult_assoc
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ x * y * z = x * (y * z)
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ x * (y * z) = y * (x * z)
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ x * y = y * x
⊢ ∀r p q x.
    Ring r ∧ p * q rdivides x ∧ p ∈ R ∧ q ∈ R ⇒ p rdivides x ∧ q rdivides x
ring_mult_element
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ x * y ∈ R
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ ∀n. (x * y) ** n = x ** n * y ** n
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ (y + z) * x = y * x + z * x
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ -x * y = -(x * y)
ring_mult_lone
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ #1 * x = x
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ x * z − y * z = (x − y) * z
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ #0 * x = #0
⊢ ∀r. Ring r ⇒
      Monoid r.prod ∧ r.prod.carrier = R ∧
      ∀x y. x ∈ R ∧ y ∈ R ⇒ x * y = y * x
⊢ ∀r. Ring r ⇒ Monoid r.prod ∧ r.prod.carrier = R
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ -x * -y = x * y
ring_mult_one_one
⊢ ∀r. Ring r ⇒ #1 * #1 = #1
⊢ ∀r. Ring r ⇒
      ∀x y p q.
        x ∈ R ∧ y ∈ R ∧ p ∈ R ∧ q ∈ R ⇒
        x * y − p * q = (x − p) * y + p * (y − q)
⊢ ∀r. Ring r ⇒
      ∀x y p q.
        x ∈ R ∧ y ∈ R ∧ p ∈ R ∧ q ∈ R ⇒
        x * y − p * q = (x − p) * (y − q) + (x − p) * q + p * (y − q)
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ x * (y + z) = x * y + x * z
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ x * -y = -(x * y)
ring_mult_rone
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ x * #1 = x
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ x * y − x * z = x * (y − z)
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ x * #0 = #0
⊢ ∀r. Ring r ⇒ #0 * #0 = #0
ring_nchotomy
⊢ ∀rr. ∃f m m0. rr = ring f m m0
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ -(x + y) = -x + -y
ring_neg_add_comm
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ -(x + y) = -y + -x
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ -x + -x = -(##2 * x)
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ -x + (-x + y) = -(##2 * x) + y
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀n. -x + -(##n * x) = -(##(n + 1) * x)
⊢ ∀r. Ring r ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒ ∀n. -x + (-(##n * x) + y) = -(##(n + 1) * x) + y
⊢ ∀r. Ring r ∧ char r = 2 ⇒ ∀x. x ∈ R ⇒ -x = x
ring_neg_element
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ -x ∈ R
ring_neg_eq
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ (-x = -y ⇔ x = y)
ring_neg_eq_swap
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ (-x = y ⇔ x = -y)
ring_neg_eq_zero
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ (-x = #0 ⇔ x = #0)
⊢ ∀r. Ring r ⇒
      ∀x. x ∈ R ⇒ ∀n. -x ** n = if EVEN n then x ** n else -(x ** n)
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ -(x * y) = -x * y ∧ -(x * y) = x * -y
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀m n. -(##m * x) + -(##n * x) = -(##(m + n) * x)
⊢ ∀r. Ring r ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒
        ∀m n. -(##m * x) + (-(##n * x) + y) = -(##(m + n) * x) + y
ring_neg_neg
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ --x = x
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R+ ⇒ -x ∈ R+
⊢ ∀r. Ring r ∧ #1 ≠ #0 ⇒ (-#1 = #1 ⇔ char r = 2)
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ -x ** 2 = x ** 2
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ -(x − y) = y − x
ring_neg_zero
⊢ ∀r. Ring r ⇒ -#0 = #0
⊢ ∀r x. x ∈ R+ ⇒ x ∈ R
⊢ ∀r x. x ∈ R+ ⇔ x ∈ R ∧ x ≠ #0
⊢ ∀r. Ring r ⇒ F* = R+
⊢ ∀r. ##0 = #0
ring_num_1
⊢ ∀r. Ring r ⇒ ##1 = #1
⊢ ∀r. Ring r ⇒ ##2 = #1 + #1
ring_num_SUC
⊢ ∀r. Ring r ⇒ ∀n. ##(SUC n) = #1 + ##n
ring_num_add
⊢ ∀r. Ring r ⇒ ∀n k. ##(n + k) = ##n + ##k
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀m n. ##m + (##n + x) = ##(m + n) + x
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀m n. ##(m + n) * x = ##m * x + ##n * x
⊢ ∀r. Ring r ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒ ∀m n. ##(m + n) * x + y = ##m * x + (##n * x + y)
⊢ ∀r. Ring r ⇒ #1 = #0 ⇒ ∀c. ##c = #0
⊢ ∀r. Ring r ∧ #1 ≠ #0 ⇒ ∀c. coprime c (char r) ⇒ ##c ≠ #0
ring_num_element
⊢ ∀r. Ring r ⇒ ∀n. ##n ∈ R
⊢ ∀r. Ring r ⇒ ∀n m. n < char r ∧ m < char r ⇒ (##n = ##m ⇔ n = m)
⊢ ∀r. Ring r ⇒ ∀m n. ##m ** n = ##(m ** n)
⊢ ∀r. Ring r ∧ 0 < char r ⇒ ∀n. ##n = ##(n MOD char r)
⊢ ∀r. Ring r ⇒ ∀m n. ##m * ##n = ##(m * n)
⊢ ∀r. Ring r ⇒ ∀m n x. x ∈ R ⇒ ##m * (##n * x) = ##(m * n) * x
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀n. ##n * x ∈ R
⊢ ∀r. Ring r ⇒ ∀k m n. ##k * ##m ** n = ##(k * m ** n)
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀n. -(##n * x) = ##n * -x
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ ∀n. ##n * (x + y) = ##n * x + ##n * y
⊢ ∀r. Ring r ⇒
      ∀x. x ∈ R ⇒
          #0 * x = #0 ∧ #1 * x = x ∧ ##2 * x = x + x ∧
          ##3 * x = ##2 * x + x
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀n. ##(SUC n) * x = ##n * x + x
⊢ ∀r. Ring r ∧ 0 < char r ⇒ ∀z. ∃y x. y = ##x ∧ y + ##z = #0
⊢ ∀r. ##1 = #1 + #0
⊢ ∀r. Ring r ⇒ ∀n m. m < n ⇒ ##(n − m) = ##n − ##m
⊢ ∀r. Ring r ⇒ ∀n. ##(SUC n) = ##n + #1
ring_one_element
⊢ ∀r. Ring r ⇒ #1 ∈ R
⊢ ∀r. Ring r ⇒ (#1 = #0 ⇔ R = {#0})
ring_one_exp
⊢ ∀r. Ring r ⇒ ∀n. #1 ** n = #1
⊢ ∀r. Ring r ⇒ ∀y. y ∈ R ⇒ ((∀x. x ∈ R ⇒ y * x = x ∨ x * y = x) ⇔ y = #1)
⊢ ∀r. Ring r ⇒
      ∀p. p ∈ R ⇒
          (rprime p ∧ p ∉ R* ⇔
           ∀b. FINITE_BAG b ∧ SET_OF_BAG b ⊆ R ∧ p rdivides GBAG r.prod b ⇒
               ∃x. x ⋲ b ∧ p rdivides x)
⊢ ∀r r_ f. (r =r= r_) f ⇒ ∀p. p ∈ R ∧ rprime p ⇒ ring_prime r_ (f p)
⊢ ∀r. Ring r ⇒
      ∀b. FINITE_BAG b ⇒
          SET_OF_BAG b ⊆ R ∧ GBAG r.prod b rdivides x ⇒
          ∀y. y ⋲ b ⇒ y rdivides x
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀n. x + ##n * x = ##(n + 1) * x
⊢ ∀r. Ring r ⇒
      ∀x y. x ∈ R ∧ y ∈ R ⇒ ∀n. x + (##n * x + y) = ##(n + 1) * x + y
⊢ ∀r. Ring r ⇒
      ∀x. x ∈ R ⇒
          ∀n. x + -(##n * x) = if n = 0 then x else -(##(n − 1) * x)
⊢ ∀r. Ring r ⇒
      ∀x y.
        x ∈ R ∧ y ∈ R ⇒
        ∀n. x + (-(##n * x) + y) =
            if n = 0 then x + y else -(##(n − 1) * x) + y
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ x + x = ##2 * x
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ x + (x + y) = ##2 * x + y
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀n. x * x ** n = x ** (n + 1)
⊢ ∀r. Ring r ⇒
      ∀x y. x ∈ R ∧ y ∈ R ⇒ ∀n. x * (x ** n * y) = x ** (n + 1) * y
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ x * x = x ** 2
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ x * (x * y) = x ** 2 * y
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ x − y + y = x
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ x − y ∈ R
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ⇒ x − x = #0
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ (x − y = z ⇔ x = y + z)
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ (x − y = #0 ⇔ x = y)
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ (x − y = x − z ⇔ y = z)
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ x + z − (y + z) = x − y
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ⇒ (y − x = z − x ⇔ y = z)
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ x − #0 = x
⊢ ∀r. Ring r ⇒ ∀k s. k ∈ R ∧ rlist s ⇒ rsum (SNOC k s) = rsum s + k
⊢ ∀r. Ring r ⇒ ∀s t. rlist s ∧ rlist t ⇒ rsum (s ⧺ t) = rsum s + rsum t
⊢ ∀r h t. rsum (h::t) = h + rsum t
⊢ ∀r f n. rsum (GENLIST f (SUC n)) = f 0 + rsum (GENLIST (f ∘ SUC) n)
⊢ ∀r. Ring r ⇒
      ∀f n.
        rfun f ∧ 0 < n ⇒
        rsum (GENLIST f (SUC n)) =
        f 0 + rsum (GENLIST (f ∘ SUC) (PRE n)) + f n
⊢ ∀r. Ring r ⇒
      ∀f n. rfun f ⇒ rsum (GENLIST f (SUC n)) = rsum (GENLIST f n) + f n
⊢ ∀r. Ring r ⇒ ∀s. rlist s ⇒ rsum s ∈ R
⊢ ∀r. Ring r ∧ prime (char r) ⇒
      ∀f. rfun f ⇒
          ∀x. x ∈ R ⇒
              ∀n k.
                rsum (GENLIST (λj. f j * x ** j) n) ** char r ** k =
                rsum (GENLIST (λj. (f j * x ** j) ** char r ** k) n)
⊢ ∀r. Ring r ∧ prime (char r) ⇒
      ∀f. rfun f ⇒
          ∀x. x ∈ R ⇒
              ∀n. rsum (GENLIST (λj. f j * x ** j) n) ** char r =
                  rsum (GENLIST (λj. (f j * x ** j) ** char r) n)
⊢ ∀r. Ring r ⇒
      ∀f. rfun f ⇒
          ∀n. (∀k. 0 < k ∧ k < n ⇒ f k = #0) ⇒
              rsum (MAP f (GENLIST SUC (PRE n))) = #0
⊢ ∀r. Ring r ⇒
      ∀a b.
        rfun a ∧ rfun b ⇒
        ∀n. rsum (GENLIST a n) + rsum (GENLIST b n) =
            rsum (GENLIST (λk. a k + b k) n)
⊢ ∀r. Ring r ⇒
      ∀a b.
        rfun a ∧ rfun b ⇒
        ∀n. rsum (GENLIST a n ⧺ GENLIST b n) =
            rsum (GENLIST (λk. a k + b k) n)
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ ∀n. rsum (GENLIST (K x) n) = ##n * x
⊢ ∀r. Ring r ⇒
      ∀f. rfun f ⇒
          ∀n m.
            rsum (GENLIST f (n + m)) =
            rsum (GENLIST f m) + rsum (GENLIST (λk. f (k + m)) n)
⊢ ∀r. Ring r ⇒
      ∀k s. k ∈ R ∧ rlist s ⇒ k * rsum s = rsum (MAP (λx. k * x) s)
⊢ ∀r. Ring r ⇒
      ∀m n s.
        m ∈ R ∧ n ∈ R ∧ rlist s ⇒
        (m + n) * rsum s =
        rsum (MAP (λx. m * x) s) + rsum (MAP (λx. n * x) s)
⊢ ∀r. rsum [] = #0
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ rsum [x] = x
ring_sum_zero
⊢ ∀r. Ring r ⇒ ∀n. r.sum.exp #0 n = #0
⊢ ∀r. Ring r ⇒ ∀x. unit x ⇒ x ∈ R
ring_unit_has_inv
⊢ ∀r. Ring r ⇒ ∀x. unit x ⇒ unit ( |/ x)
⊢ ∀r. Ring r ⇒ ∀x. unit x ⇒ |/ x ∈ R
⊢ ∀r. Ring r ⇒ ∀u. unit u ⇒ u = |/ ( |/ u)
⊢ ∀r. Ring r ∧ #1 ≠ #0 ⇒ ∀x. unit x ⇒ |/ x ≠ #0
ring_unit_linv
⊢ ∀r. Ring r ⇒ ∀x. unit x ⇒ |/ x * x = #1
⊢ ∀r. Ring r ⇒ ∀u v. unit u ∧ v ∈ R ∧ |/ u * v = #1 ⇒ u = v
⊢ ∀r. Ring r ⇒ ∀u v. u ∈ R ∧ unit v ∧ u * v = #1 ⇒ u = |/ v
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ⇒ (unit (x * y) ⇔ unit x ∧ unit y)
⊢ ∀r. Ring r ⇒ ∀u v. unit u ∧ unit v ⇒ unit (u * v)
⊢ ∀r. Ring r ⇒ ∀x y. unit x ∧ y ∈ R ⇒ (x * y = #0 ⇔ y = #0)
⊢ ∀r. Ring r ⇒ ∀x. unit x ⇒ unit (-x)
⊢ ∀r. Ring r ∧ #1 ≠ #0 ⇒ ∀x. unit x ⇒ x ≠ #0
⊢ ∀r. Ring r ⇒ unit #1
⊢ ∀r. Ring r ⇒ ∀u. unit u ⇔ u ∈ R ∧ ∃v. v ∈ R ∧ u * v = #1
ring_unit_rinv
⊢ ∀r. Ring r ⇒ ∀x. unit x ⇒ x * |/ x = #1
⊢ ∀r. Ring r ⇒ ∀u v. u ∈ R ∧ unit v ∧ u * |/ v = #1 ⇒ u = v
⊢ ∀r. Ring r ⇒ ∀u v. unit u ∧ v ∈ R ∧ u * v = #1 ⇒ v = |/ u
⊢ ∀r. Ring r ⇒ (unit #0 ⇔ #1 = #0)
⊢ ∀r. Ring r ⇒ AbelianGroup r*
⊢ ∀r. Ring r ⇒ ∀x. unit x ⇒ x ∈ R
⊢ ∀r. Ring r ⇒ Group r*
⊢ ∀r. Ring r ⇒ unit #1
⊢ ∀r. Ring r ⇒ (unit #0 ⇔ #1 = #0)
⊢ ∀r. Ring r ⇒ r*.op = $* ∧ r*.id = #1
ring_updates_eq_literal
⊢ ∀r f m0 m.
    r with <|carrier := f; sum := m0; prod := m|> =
    <|carrier := f; sum := m0; prod := m|>
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ (#0 rdivides x ⇔ x = #0)
ring_zero_element
⊢ ∀r. Ring r ⇒ #0 ∈ R
⊢ ∀r. Ring r ⇒ ∀n. #0 ** n = if n = 0 then #1 else #0
ring_zero_fix
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ (x + x = x ⇔ x = #0)
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ #0 − x = -x
ring_zero_unique
⊢ ∀r. Ring r ⇒
      ∀x y. x ∈ R ∧ y ∈ R ⇒ (y + x = x ⇔ y = #0) ∧ (x + y = x ⇔ y = #0)
⊢ ∀r s. subring s r ∧ subring r s ⇒ RingIso I s r
⊢ ∀r s. s ≤ r ⇒ ∀x y. x ∈ B ∧ y ∈ B ⇒ s.sum.op x y = x + y
⊢ ∀r s.
    s ≤ r ⇔
    Ring r ∧ Ring s ∧ subgroup s.sum r.sum ∧ submonoid s.prod r.prod
⊢ ∀r s. subring s r ∧ R ⊆ B ⇒ RingIso I s r
⊢ ∀r s. FiniteRing r ∧ subring s r ⇒ FINITE B
⊢ ∀r s. subring s r ⇒ B ⊆ R
⊢ ∀r s. s ≤ r ⇒ char s = char r
⊢ ∀r s. s ≤ r ⇒ char r divides char s
⊢ ∀r s. subring s r ⇒ ∀x. x ∈ B ⇒ x ∈ R
⊢ ∀r s. s ≤ r ⇒ ∀x. x ∈ B ⇒ x ∈ R
⊢ ∀r s. s ≤ r ⇒ ∀x. x ∈ B ⇒ ∀n. s.prod.exp x n = x ** n
⊢ ∀r s. FiniteRing r ∧ s ≤ r ⇒ FiniteRing s
⊢ ∀r s r_ f. subring s r ∧ RingHomo f r r_ ⇒ RingHomo f s r_
⊢ ∀r s. s ≤ r ⇒ s.sum.id = #0 ∧ s.prod.id = #1
⊢ ∀r s. s ≤ r ⇒ ∀x y. x ∈ B ∧ y ∈ B ⇒ s.prod.op x y = x * y
⊢ ∀r s. s ≤ r ⇒ ∀x. x ∈ B ⇒ s.sum.inv x = -x
⊢ ∀r s. s ≤ r ⇒ ∀n. s.sum.exp s.prod.id n = ##n
⊢ ∀r s. s ≤ r ⇒ s.prod.id = #1
⊢ ∀r s. subring s r ⇒ submonoid s.prod r.prod
⊢ ∀r s.
    Ring s ∧ subring s r ⇒
    ∀x y. x ∈ B ∧ y ∈ B ⇒ s.sum.op x y = x + y ∧ s.prod.op x y = x * y
⊢ ∀r. subring r r
⊢ ∀r s r_ f. subring s r ∧ RingIso f r r_ ⇒ RingHomo f s r_
⊢ ∀r s r_ f. s ≤ r ∧ (r =r= r_) f ⇒ ring_homo_image f s r_ ≤ r_
⊢ ∀r s. s ≤ r ⇒ ∀x y. x ∈ B ∧ y ∈ B ⇒ ring_sub s x y = x − y
⊢ ∀r s. subring s r ⇒ subgroup s.sum r.sum
⊢ ∀r s t. subring r s ∧ subring s t ⇒ subring r t
⊢ ∀r s. s ≤ r ⇒ ∀x. Unit s x ⇒ unit x
⊢ ∀r s. s ≤ r ⇒ ∀x. Unit s x ⇒ Inv s x = |/ x
⊢ ∀r s. s ≤ r ⇒ ∀x. Unit s x ⇒ Inv s x ∈ B
⊢ ∀r s. s ≤ r ∧ #1 ≠ #0 ⇒ ∀x. Unit s x ⇒ Inv s x ≠ #0
⊢ ∀r s. s ≤ r ∧ #1 ≠ #0 ⇒ ∀x. Unit s x ⇒ x ≠ #0
⊢ ∀r s. s ≤ r ⇒ s.sum.id = #0
⊢ symdiff_set.carrier = 𝕌(:α -> bool) ∧
  (∀x y. symdiff_set.op x y = x ∪ y DIFF x ∩ y) ∧ symdiff_set.id = ∅
⊢ char symdiff_set_inter = 2
⊢ Ring symdiff_set_inter
⊢ symdiff 𝕌(:α) 𝕌(:α) = ∅
⊢ ∀z. char (trivial_ring z) = 1
⊢ ∀e0 e1. e0 ≠ e1 ⇒ FiniteIntegralDomain (trivial_integal_domain e0 e1)
⊢ ∀z. FiniteRing (trivial_ring z)
⊢ ∀z. Ring (trivial_ring z)
⊢ ∀r. Ring r ⇒ ∀x. x ∈ R ⇒ x =~ x
⊢ ∀r. Ring r ⇒ ∀x y. x ∈ R ∧ y ∈ R ∧ x =~ y ⇒ y =~ x
⊢ ∀r. Ring r ⇒ ∀x y z. x ∈ R ∧ y ∈ R ∧ z ∈ R ∧ x =~ y ∧ y =~ z ⇒ x =~ z
⊢ ∀r. Ring r ⇒ <#0> << r
⊢ ∀r. Ring r ⇒ <#0>.carrier = {#0}