CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.

| Download

Try doing some basic maths questions in the Lean Theorem Prover. Functions, real numbers, equivalence relations and groups. Click on README.md and then on "Open in CoCalc with one click".

Project: Xena
Views: 18536
License: APACHE
oleanfile3.4.2, commit cbd2b6686ddb��#�initalgebragrouptacticnorm_cast���export_decloptionnonenonesomesomeexport_declboolffffttttexport_declhas_andthenandthenandthenexport_declhas_powpowpowexport_declhas_appendappendappendexport_decldecidableis_trueis_trueis_falseis_falseto_boolto_boolexport_declhas_purepurepureexport_declhas_bindbindbindexport_declhas_monad_lift_tmonad_lift!monad_liftexport_declmonad_functor_tmonad_map$monad_mapexport_declmonad_runrun'runexport_decllistmmap*mmapmmap'*mmap'mfilter*mfiltermfoldl*mfoldlexport_declnativenat_map3rb_mapmkexport_declname_mapnativerb_mapmkexport_declexpr_mapnativerb_mapmkexport_decltacticinteraction_monadfailedfailexport_decltactic_resultinteraction_monadresultexport_decltacticFtransparencyreducibleGreduciblesemireducibleGsemireducibleexport_decltacticmk_simp_attrLmk_simp_attrexport_declmonad_exceptthrowOthrowcatchOcatchexport_declmonad_except_adapteradapt_exceptTadapt_exceptexport_declmonad_state_adapteradapt_stateWadapt_stateexport_declmonad_readerreadZreadexport_declmonad_reader_adapteradapt_reader]adapt_readerexport_declis_lawful_functormap_const_eq`map_const_eqid_map`id_mapcomp_map`comp_mapexport_declis_lawful_applicativeseq_left_eqgseq_left_eqseq_right_eqgseq_right_eqpure_seq_eq_mapgpure_seq_eq_mapmap_puregmap_pureseq_puregseq_pureseq_assocgseq_assocexport_declis_lawful_monadbind_pure_comp_eq_maptbind_pure_comp_eq_mapbind_map_eq_seqtbind_map_eq_seqpure_bindtpure_bindbind_assoctbind_assocexport_decltraversabletraverse}traversedeclmul_twouα�_inst_1semiringneqhas_mulmulmul_zero_classto_has_mulsemiringto_mul_zero_classbit0distribto_has_add�to_distribhas_oneonemonoidto_has_one�to_monoidhas_addadd���eqtrans	�to_has_mul)##)6#;+left_distrib##eqmpr=+trueideqIKeqtransOI++Ka�e_1a�e_2congruOg`j\congr_argg�gO`\j[=+chas_adda[�\e_2`�a�be_3j�	�'�a`�\�u���
`\�[;mul_one	!;�++eqrefl+propextXKeq_self_iff_trueu+trivial�PInfo�5declbit0_eq_two_mul���n$����symm�+two_mul�PInfo�8declmul_iteu_1α�_inst_2semiringPO_inst_3decidablea[�\�\�\�\[ite\�\�\�\[has_zerozero\�to_has_zero\��������O���[dite�	hG�`�`�`�`\�[`�`�`�`\�`�`���(���#MP�.�2�`�ae_1�b�g��e_2���O��>`�A\��>��>O`\�A[�*�0chas_mul`�a�be_2�g����e_3�A��b��ba`�f\��b��b
`\�f[��`�)�#if_pos[`�#�(�-���(G�2KMP�2KU�2�K�W�0�`�!�����K�`��not�/���(�(M�4���X�����(if_neg[`�#�(�-�(���(G��KMP��KU����(�(K�W���(mul_zero`��(�(���(���K���(��PInfo�;ATTRsimp���declzero_ne_one_or_forall_eq_0���orne��a������not_or_of_imp���classicaldec�h�aeqmp[[
[[[[[�)��[��[�&�"�5�[�\e_1��a�be_2�f�O�`�>\q���O`\�>[�0�[�-�6�5�[�&�[[�/�5�)�[�5�/�PInfo�Bdoc�Either zero and one are nonequal in a semiring, or the semiring is the zero ring.decleq_zero_of_zero_eq_one���h�a�:�����neg_resolve_left�#�rzero_ne_one_or_forall_eq_0�PInfo�Gdoc�If zero equals one in a semiring, the semiring is the zero ring.declsubsingleton_of_zero_eq_one���h�subsingleton����subsingletonintroab[G_]��\��\\[MP_��eqrec\_a\P���O_��eq_zero_of_zero_eq_one\[G������MP������_a\P���`��``\�����������\���PInfo�Kdoc�If zero equals one in a semiring, all elements of that semiring are equal.declunitshas_neg_proof_1��_inst_1ringuunitsringto_monoid	semigroupto_has_mul�to_semigroup��has_negnegadd_groupto_has_negadd_comm_groupto_add_group�to_add_comm_groupcoe����coe_to_lift��coe_base��unitshas_coe�����has_invinv���	has_inv�����������G�KMP�KU���K���1	
ringto_semiring��
�������*���(��,mul_neg_eq_neg_mul_symm��chas_neg�[�\e_2��aa��a[���/�+1�/���'���+neg_mul_eq_neg_mul_symm���G�L��	mul_inv��neg_neg���������K����PInfo�T	decl�_proof_2�����������
���������G�zKMP�zKU�z�K��x�1�'�
��,���������,�5�
��G���+1�����'���+�R���G����	inv_mul���d���i�o��PInfo�T	decl�������9������has_negmk�����unitsmk����
�����PInfo�T	prt�VMR�VMC�T	���

��	inv'

doc�Each element of the group of units of a ring has an additive inverse.decl�equations_eqn_1���������������������PInfo�T	ATTR_refl_lemma���EqnL�SEqnL�ATTRinstance���class����decl�coe_neg�����u���������������#��rfl���PInfo�"Xprt�"doc�"Representing an element of a ring's unit group as an element of the ring commutes with
   mapping this element to its additive inverse.ATTR� ���"ATTR����"decl�neg_inv�����u�����
����������&���������PInfo�%\prt�%doc�%Mapping an element of a ring's unit group to its inverse commutes with mapping this element
   to its additive inverse.ATTR� ���%ATTR����%decl�neg_neg�����u�������������(��unitsext�����c��PInfo�'_prt�'doc�'An element of a ring's unit group equals the additive inverse of its additive inverse.ATTR����'decl�neg_mul�����u₁��u₂����[��[��	has_mul[������[�������,���-����[����P[���[���[���[��[��val[��PInfo�+dprt�+doc�+Multiplication of elements of a ring's unit group commutes with mapping the first
   argument to its additive inverse.ATTR����+decl�mul_neg�����u₁��u₂���
��������1���2���$�A��g��[��[��[��[�#�$�%�"[�8�3�X�Q�Yneg_mul_eq_mul_neg[�W�Y�PInfo�0iprt�0doc�0Multiplication of elements of a ring's unit group commutes with mapping the second argument
   to its additive inverse.ATTR����0decl�neg_mul_neg�����u₁��u₂���
��@������5���6��G�mKMP�mKU�m�
K�w�
���y�����\��\[e_1��`��`\���a��a`���b��bae_2��g��gbf������gO��`��\q�����O`\��[�k�0��k����������0[���9�������e_2�����������[����+[�'[��������
����right_cancel_semigroupto_semigroup�groupto_right_cancel_semigroup��	group[����ymul_right_inj�����yK����PInfo�4nprt�4doc�4Multiplication of the additive inverses of two elements of a ring's unit group equals
   multiplication of the two original elements.ATTR����4decl�neg_eq_neg_one_mul�����u����������������	has_one�������A��G�"KMP�"KU�"���K�����e_1��������e_2��f��O��`��\q�����O`\��[����������!��0���!�����������9�������e_2�����������[���Vone_mul��groupto_monoid��������,K�������PInfo�@rprt�@doc�@The additive inverse of an element of a ring's unit group equals the additive inverse of
   one times the original element.declwith_zerosemiring_proof_1��_inst_1a�Ib��c��[��\'��has_addmk��add_comm_monoidadd��with_zeroadd_comm_monoid\�Rto_add_comm_semigroup\�to_add_comm_monoid\[��������Ladd_comm_monoidadd_assoc���������PInfo�Kv	decl�J_proof_2���La����'��add_semigroupto_has_add���\mk����������������������has_zeromk���Rzero������L�Xzero_add�����PInfo�Zv	decl�J_proof_3���La����������L�Xadd_zero�����PInfo�cv	decl�J_proof_4���La��b����'����������������[��[��[����������L�Xadd_comm�����PInfo�fv	decl�J_proof_5���La��b��c������has_mulmk���mul��with_zeromonoid\\[�����Lmonoidmul_assoc����	�PInfo�jv	decl�J_proof_6���La�����������mk������!�(���5��has_onemk���one���5��L�sone_mul���+�PInfo�uv	decl�J_proof_7���La�����<�D��L�smul_one���+�PInfo�|v	decl�J_proof_8���La��b��c��������`�]��]mul_zero_classmul�]with_zeromul_zero_class`��`��``\'�]���]���]��`��`��`\�{�o�o��L������������optioncases_on�\������
��a���c\��\��\���none\��a\��`���]��a������a���ca��a��aa`��somea'������������a��a��a`�����������]��������a����������]�n��`�{��`��c`���������b`��a������b������a���cb��b��bba��b'������������b��b��ba��������������������a�b��bb2bba'bb�%�,�(�(��@b�%�PInfo�v	decl�J_proof_9���La��b��c�������^�n�{[�{�n[�n��L���������������TM������������������G���

����
\����with_zerohas_add\\\[����with_zerohas_zero\�u�m�|�m�|KMP��KU�����|�|K�����]e_1��������ge_2���f���O��`��\q�����O`\��[�}�|�\���k�w���|0�����u�|�|�|������]���e_2��������e_3������>��'��a`��\���������b`\��[�t���|�����|��add_zero��with_zeroadd_monoid\add_monoidto_add_semigroup\�Rto_add_monoid\���|���K����|�c\�����]������[����������[��[�����]�����������������	���n����b`��������a`�����������������������[���������a�!�'�.�,�'�'��right_distribb�%�PInfo��v	decl�J_proof_10���La�����/����a���c����!�����zero���Z�b��L��zero_mul���c�����	�PInfo��v	decl�J_proof_11���La�����]�b�b��L��mul_zero���q�PInfo��v	decl�J���L����L�mk���������K��������Z��c��f��a���q�j��@���+�u��|�������������PInfo�Jv	prt�JVMR�J_lambda_1VMR�J_lambda_2VMR�J_lambda_3VMR�JVMC��v	a��_fresh!��=
VMC��v	b��_fresh!��B��
VMC��
v	o₂o₁��	��optionmapVMC�Jv	�L���optionlift_or_get_main��
decl�Jequations_eqn_1���L���J�����L������PInfo��v	ATTR� ����EqnL��SEqnL�JATTR�!���Jclasssemiring�J��ATTRrefl��dvd_reflREL��ATTRtrans��dvdtransREL��PInfois_semiring_hom�indl�vαβ��_inst_1_inst_2semiring%fa[[C��e_1map_zero�&\������[�%\�%\�%\map_one��`aa��\�%`�%`�%`[map_addxbyg��g`���b�%g�%g�%ga``map_mulxgy����a�
��g�%��%����baa\n�����a`\[�����������������������O��mk����������������������[��������[��[��[����``�g[��\��\��\����a��b��b\'ggga��b�	b�	b`\\����b��g��`�
��b�	g�	g��ga�	�	
�	-gba`\�������������������������	,������a��aa\��`��`��`[����a[bb��`��a��a��a\����g����	a'���g����	��	�b�	"�	$�����������b�>
�>�>��	��	����gbb\[�nspace��prt��recgind����decl��map_zero���������������������c�	-\[�����������������������	�
Proj�������������rec���`\[�������������	���	([�PInfo�ފATTRreducibility����proj����decl��map_one������������������������	��	Z���������������������	�
Proj����������	Z�
�	Z�����������	���	(�PInfo��ATTR������proj����decl��map_add������������������������	���`��a�	�[�)�*�$`��a�	a�	a\[[���������������������	�
Proj����������
6�
�
6�����������	���	(�PInfo��ATTR������proj����decl��map_mul������������������������	���`��a�	�[�"
bb`�	a�	a��a\�
0�
2���������������������	�
Proj����������
^�
�
^�����������	���	(�PInfo��ATTR������proj����decl��rec_on������������������������������	-`\[�����	����	����	����	�`�������������������������
w���
{��rec�����ba`\[�PInfo��ATTR������auxrec��prt��auxrec��rec_ondecl��cases_on������
��
��PInfo��ATTR������auxrec��decl��drec�������������������������h�	����������������	���	(\������gba`[���	2���������������������
����
����	2�
����	-ba`\[�
2���	�[��b��b�
M��a��a�
W���	[\ggga��b��b��b`���������	�b'�>�>�>�����	��	�g�	��	���������>���>g�b
�b�b��	�>�	�>���>�gg_�	-�>��gba\[�PInfo��ATTR������auxrec��prt��decl��drec_on��������������������������
����
w�����	����	����	����	�`�
���gba[���������������������
����
w���"�
����
����
����
����
�_�`\[�PInfo��ATTR������auxrec��prt��decl��dcases_on������+�?�PInfo��ATTR������auxrec��prt��doc��Predicate for semiring homomorphisms (deprecated -- use the bundled `ring_hom` version).ATTRclass����class��declis_semiring_homid��_inst_1is_semiring_homid������F��F��P�F������[�E['[[[�����W�X�(�PInfo��	prt��VMR��VMC�����doc��The identity map is a semiring homomorphism.decl��equations_eqn_1������G����l�����G�s�PInfo���	ATTR� ����EqnL��SEqnL��ATTR�!����class������decl��comp���u_1�β������_inst_2��f��_inst_3�	�γ�_inst_4�g��a_inst_5is_semiring_hom%��b`is_semiring_hom2�[bfunctioncomp%2�g[`��������������������	����������}�����2�[b��G�[���������	v��2[�[����g��g�	���MP�����[�\e_1���a�be_2�^�=�O��`��\�H��F`\��[�����5[��`����functioncomp_app45�g[`����g���e_1�	��45�>a\������map_zero%�gba`\������[���
%2g[aG�������b�z2[�[����g��g��ga�MP��!�������`��������)���map_one%�gba`\������%2g[ax�y�G����>�`[b�
��add2`\�N�N�[�
��S[�	�[�	�MP�X�`�W�O�Z��`�O[�
��Z���>�`[b�
�������>�	���b���oga�
��
���map_add%�>��gba�W�_c�`�a�be_2�^����e_3�`�d�Q�ba`��\�s��[\�T�\�p�V�^�pG�`��2`�2`�2`\�\�^�_MP�`���5`�Z_a`P�a\���>�	�>�	�>�g�
��Qa`\��\�
��������`���%2�`g\[�	��	�����x�y�G��N�	��mul2`\�T�V�[�	����\�^MP�����W�����g��[�	����p�	��~�	��	���map_mul%�>��gba��������a�be_2�^����e_3�`�d���ba`�
\�s�
[\�T�\���V�^��G�����\�^��MP���
=����_a`P��\�
����
���a`�������
J�����
;�%2�`g\[�	��	����
;�PInfo���	prt��VMR��
VMC��

������������������doc��The composition of two semiring homomorphisms is a semiring homomorphism.decl��equations_eqn_1�������������������������	����������}����o����������gba`\[�
e��������������������	����������}����x���
{�PInfo��	ATTR� ���EqnL�SEqnL��ATTR�!
��class���
decl��is_add_monoid_hom�����������������������	�is_add_monoid_hom%`\��`�u[��%\�W%\��������������������	�is_add_monoid_hommk%`\�
��
�is_add_hommk%`\��`��`�
��]%\��%\�
���`\[��`\[�PInfo��	prt�VMR�VMC������������doc�A semiring homomorphism is an additive monoid homomorphism.decl�equations_eqn_1�����������������������	��o�
�����`\[�
���������������������	��x�
��
��PInfo�$�	ATTR� ���$EqnL�$SEqnL�ATTR�!d�class��ddecl��is_monoid_hom�����������������������	�is_monoid_hom%`\�	O�	W��������������������	�is_monoid_hommk%`\�	O�	Wis_mul_hommk%`\�e�f�	O�%\�%\�	W�
`\[�1`\[�PInfo�%�	prt�%VMR�%VMC�%�����������doc�%A semiring homomorphism is a monoid homomorphism.decl�%equations_eqn_1�����������������������	��o�
��%���`\[���������������������	��x�
��(�PInfo�,�	ATTR� ���,EqnL�,SEqnL�%ATTR�!d�%class�&�%ddeclmul_neg_one��_inst_1��a�'�+����.���/G�=KMP�=KU�=�K�F�<�<�G��:�<1�:���9��<�5��G�Q����<�<��<��K�Gneg_inj'����GK���PInfo�-�doc�-An element of a ring multiplied by the additive inverse of one is the element's additive
   inverse.declneg_one_mul���.��a�'�+�<��.���2G�|KMP�|KU�|�GK���K�G��z�<1�z���'��<�R��G���o���<�<�a�k�q��PInfo�1�doc�1The additive inverse of one multiplied by an element of a ring is the element's additive
   inverse.declmul_add_eq_mul_add_iff_sub_mul_add_eq���.��abc[d\e`iffa'aa�to_distriba`a
a�	��"a`\����[������has_subsubaadd_group_has_suba��a��a`\[��.���4�5�6[�7\�8`ifftrans����������������������
G����KMP��KU��������������KaO�@Oe_1PbO�BOe_2���OO��`��\�O�BOO`\��[�����a�be_1�����e_2�>f�bO�b`�\q�b��bO`\�[����add_comma�������������9�������<�����a�����Kiff_self���Annotcalc
iffintro����h��Gc��b��b��b��ba�)�*��ba�"�
K�
L�"ba`[�j\KMP�tKU�tcK�b�g�D�>����>�E�f�oO�o`��\q�o��oO`\��[�r0b�r�)��b��badd_groupto_add_monoidb�_�e�q��b��b�_�q���a���q��chas_subb�g��e_2���>��be_3���������a`��\������`\��[�`�n���q�q�b�qsub_eq_add_negb�_���qadd_neg_cancel_rightb�_�q����|K�b�h��Gc�n��KMP�KU�c[[K�c�e[�l��
���n��5b���g�l[��������)��add_comm_semigroupto_add_semigroupb�[�#�q�m�����%�
�&�(��e�+�q�,��b�g��e_2����>��be_3����'��a`�5\���5[�d�+���������[���l���J�a��q�L�J�r�T�b�r�����q�q������qadd_assocb��[�l���q�q����+�qadd_left_commb��q[�&�G[[��[�'�ladd_add_neg_cancel'_rightb�^�q�l�c�)��add_right_cancel_semigroupto_add_semigroupbadd_groupto_right_cancel_add_semigroupb�_[�l���
add_right_injb���l[[��
K��[�Annot�H
G������KMP��KU�����������?��a������������2a��\��K������2����0a������a��a��a�������������������������N��a�b�g�P������>�Q����o�o���oa`��\��o��o��`\��[�������;�����G����a�������ia�������G�����2�����������������a�8����a�b�g�W������>�X����'�oa`�2\���2[����������������[���G����\�H�K��a�b�ge_2������>e_3�����oa`�W\���W[�����O�\[�G�Ca��\�H�D�����G���J���Pa`[�G�9��������K�N���Annot�H�PInfo�3�
doc�3An iff statement following from right distributivity in rings and the definition
   of subtraction.declsub_mul_add_eq_of_mul_add_eq_mul_add���.���4�5�6[�7\�8`����c�e�j�a`\[��.���4�5�6[�7\�8`h�������r
G���rKMP��KU���
K��c�
�e�"�#�c`����\���
���������e��[�$���G��������������\�����j�e`������Tb�g��e_2����>��be_3������a`��\����[�i������`\���D�c`���G�������������Pba\[[�����[�r�������
�����N���������a�$���&���$���[�q���������$���l�����c�����B�
����[[���Annot�H
�uc�a�e�q�qM�w�X��b�n_abPj��g��g��g��gb�	\�	]��gbg
gg�"gba\�q`[j�e�x[���t�TG�XKMP�XKU�X�|K���V���V�����T����q�q�q��add_sub_cancelb�_�q�����Annot�H�PInfo�c�
doc�cA simplification of one side of an equation exploiting right distributivity in rings
   and the definition of subtraction.declne_zero_and_ne_zero_of_mul_ne_zero���.��abh��[�V�2�3�Tand��\�������"\[������.���j�k�l��andintro����M��ha]��G�`
`���"`\[������KMP��KU�������K�`�ae_1e�g��e_2��f�>O�`�\q�>�J`\�[����0`����������T`�a�be_2�����e_3���b�b�
�a`�\��b�p`\�[��[���`zero_mul`�������-�����K�`���M��hb^����������	�������([�-[���\`��[�����9�@��PInfo�i�
doc�iIf the product of two elements of a ring is nonzero, both elements are nonzero.declzero_dvd_iff��_inst_1comm_semiringa��has_dvddvdcomm_semiring_has_dvd��
comm_semiringto_semiring��x��x�l�z�W�z�|eq_zero_of_zero_dvdh�|G�m[�o[�2�3�%�s[����MP������[_a[P�m\�o\[�������s\[����������[���PInfo�w�doc�wGiven an element a of a commutative semiring, there exists another element whose product
   with zero equals a iff a equals zero.ATTR����wdeclmul_self_sub_mul_self��_inst_1comm_ringab�"��[��[�L�Mcomm_ringto_ring[�#�$�%�R�������Y�Z��[�������������G�������#2[��������MP������������_a[P]��\��\��\��\��\[\�i��������'\�p��\�����������add_mul[����G������������MP���*������_a[P����2\�
��3����8�����'mul_sub[��G�*���(������MP�*�S������_a[P�����8��\���*�Q�GG�S�������#��[comm_semigroupto_semigroup[��to_comm_semigroup[�QMP�S�}���w_a[P��\������������S�ymul_comm[�tG�}����MP�}�����Y��[��[��[���z���y��_a[P��������p\�r\[������}��sub_add_sub_cancel[�����y���W���PInfo���
doc��Representation of a difference of two squares in a commutative ring as a product.decldvd_neg������ab������comm_ringto_comm_semiring[�J�K��������������W����dvd_of_dvd_neg[dvd_neg_of_dvd[�PInfo���doc��An element a of a commutative ring divides the additive inverse of an element b iff a
   divides b.ATTR�����declneg_dvd������ab������������������W����dvd_of_neg_dvd[neg_dvd_of_dvd[�PInfo���doc��The additive inverse of an element a of a commutative ring divides another element b iff a
   divides b.ATTR�����decldvd_add_left������abc[h������\[���m`�o`��`\['``��`��`\������������[���iffsymm�,�*dvd_add_iff_left`\[�PInfo���
doc��If an element a divides another element c in a commutative ring, a divides the sum of another
   element b with c iff a divides b.decldvd_add_right������abc[h��+������������[���E�4�F�*dvd_add_iff_right`\[�PInfo���
doc��If an element a divides another element b in a commutative ring, a divides the sum of b and
   another element c iff a divides c.decldvd_add_self_left������ab�����������������dvd_add_right[�����PInfo���doc��An element a divides the sum a + b if and only if a divides b.ATTR�����decldvd_add_self_right������ab�����������������dvd_add_left[�l�PInfo���doc��An element a divides the sum b + a if and only if a divides b.ATTR�����declVieta_formula_quadratic������bcx[h]�����������Exists`y`������������a`���������������	�������\[�	��	���������\����[�����������[����Existsintro`����`��`��`��`�$[M����'�����������$������[������������'��[�����G��KMP��KU����KKKaO��Oe_1��bO��Oe_2������`��\���[��KU�������K���������'��2`�%[��`��`�������to_has_zero`��`���� �
��`�t�u����(��'��'����+���'�0��2�4��`�a�be_2�����e_3��'�ba`�>\��>[�&���0����)�(�'�[�/��T�0�S�'�V��X�Z�S� �
��
���V��U��_�S���V�f�h�N��`�a�be_2�����e_3�����ba`�q\��q[�����V����,�U�.�(�T�(�+�.�����(�f������'�f�,������'��'[�[�����������������&��������`��[������@`�%��[���P���f����e�p`�r`\��[�U����f����[������`����[��[[���P�T�T�-�T����3`�$[����������-�+������'���[������������������������[���P������[�����������[�����+���������2�+����������9`�a�be_2������[���2��������������a`���+�5`�%��+�y`�%�f�+��P�+�+�-�+��������(��f���W��B�f��J��T��J�+�T�.���f�������f�o������&�[[�O�������������V�f�P�V�V�-�V�g�^���d�T��d���X�^neg_add_rev`���T��P����;��X�X�-�X�J�V��X�P���-��Y�/��Y�(�X�V�/�B�V�Xneg_add_cancel_left`���T�/�8�����/�d��2eq_of_sub_eq_zero`����G������!��(�'�/���MP�������������d��'��0�������������.��������/�����P�.�������d��0�d��0�������0�P��/�;�/���-��!���-���!��'���/������������'���(���P������/��.�B�����������+�J�0��2���3���3��.��N�)�(�2�/�O�N�R�0�T�B�0�2�J�2��/���S�.���+�.��`����add_right_neg`����������	K�>����KU����K���KU���[[K���[�������[�P�-�������j[[[�O���K�>[��KU�����K����8�8������8��*���'�*[�*���8���*�����u����������[���P�����[���2�5�8�D��� �
���`��`����2������`���2�����K�>����Kand_selfK����PInfo���doc��Vieta's formula for a quadratic equation, relating the coefficients of the polynomial with
 its roots. This particular version states that if we have a root `x` of a monic quadratic
 polynomial, then there is another root `y` such that `x + y` is negative the `a_1` coefficient
 and `x * y` is the `a_0` coefficient.PInfois_ring_hom�indl���αβ��_inst_1��_inst_2ring%f��C��e_1map_one���	M�	N��[�	T�	U�%\map_mulxayb�	[\�j�k�l�ma�	b�	b��b�%b`�	l�	nmap_addxbyg��`������b�	�	�:%ga�	�	
[n�����a`\[��������������
����	;��mk���������
����������	@\\����[��[�[����`��a�	�[�"�
K�
L�f`�
T�
U�
V�#a\�
0�
2����a��b�	[\�	\�	]�fa�	f�	g�6b`�	l�	n�Cba`\[���������
��������������B����������\�����`[����b��g��`�	s�	t�	u�"�b�	}�	~�	�#ga�	�	
����g����	a�	��	����g�	��	��6�b�	"�	$[�nspace��prt��recgind����decl��map_one������������
�������c�C\[����������
�����������
Proj������������rec���`\[�������-���?�PInfo���ATTR������proj����decl��map_mul������������
������������t���������
�����������
Proj����������t���t������-���?�PInfo���ATTR������proj����decl��map_add������������
�������������`��a�	�[�)�*�b`�
*�
+�6a\�
0�
2���������
�����������
Proj����������
���
������-���?�PInfo���ATTR������proj����decl��rec_on��������������
��������������C`\[��������������\���������
��������������%���(��rec�����ba`\[�PInfo���ATTR������auxrec��prt��auxrec��rec_ondecl��cases_on������0�A�PInfo���ATTR������auxrec��decl��drec��������������
���������h������������-���?[�����gba`\���H�
����������
����������B���O���H�6�����
2���	�[�	��	���`�	��	��a\����g����	a�	�	�	�"�g�	�	�	�#�b�	"�	$���������	�b�
��
����>��
��
��6�g�	��	�_�C��gba`[�PInfo���ATTR������auxrec��prt��decl��drec_on��������������
����������B���%��������������\�C�gba`�#���������
����������B���%�����Y���c���v����_���	��PInfo���ATTR������auxrec��prt��decl��dcases_on����������PInfo���ATTR������auxrec��prt��doc��Predicate for ring homomorphisms (deprecated -- use the bundled `ring_hom` version).ATTR������class��declis_ring_homof_semiring�����_inst_1�
_inst_2�f��H�	����#[�%��������
������������C`\[���[�#\�
�����
������PInfo���doc��A map of rings that is a semiring homomorphism is also a ring homomorphism.decl��map_zero�����������
���f��_inst_3����������������������������
�����������eqtrans%\���<%\�=%\�%\�%\� �!�"[��������
G��������\�	\�6\������MP���F\�_a\P���	��	��	���\��`��`�`�`[������\�*�*�+�,�4�+������map_add%`\[����G�KMP�KU�����K�\�`e_1�	��b�ge_2�	�F�O�	�`�	�\�FF���O`\�	�[�����F\����������
��
��M%\��has_negneg%\add_groupto_has_neg%\������R%\�����S%\�������ZK�%\���Annot�H
G�����KMP��KU��������%\����K�y������������������������N�O%\�`�ae_2�	[�g��e_3���FF�>�>���>a`��\�FH�>��>�b`\��[������`��ae_1e�Fgb\�
����`�����[�������~��������%\��������}�������K�����Annot�H�PInfo���doc��Ring homomorphisms map zero to zero.decl��map_neg�����������
�����������x`���?������\��`��`�2�
���������
������������`��`�*�4�7�)�
��0
G�+�?�+�4��`�	`�6`[�*�
��
�MP�B�N�$`�=_a`P�	�[�����\�]`��a��a�a�a\[��Y�
0�[�c�
0���B�K�Ha`\[�)G�NKMP�NKU�N�+�*K�`�ae_1���g��e_2���a�>O�
�`�
�\�j�>�J`\�
�[�*�*�|`�*�M�*�9�M�D�
�`�V%`�V%`�
�`�#`[�0�I�
��*�*���D���
�`��`�2���0�����4���
����N��`�a�be_2������e_3�
����b�b���ba`��\���b�p`\��[�3�K���F%`���*�
��
��
����
���`�2���
������0��%`�2�
��*���K��`�*�Annot�H
G���?�0KMP�KU����
��
�K����0�0����?�0�9�?���	��	��	����0�0�#�4�&�
��(���=�&�9�=�	��a���&�&��a��be_1����g`�<�5add_left_nega�&��map_zero%a`\[�
��
������&�
�zero_add%`���0�0�0���0����0%`�2�
��
���K��
��Annot�H�PInfo�
�doc�
Ring homomorphisms preserve additive inverses.decl��map_sub�����������
������������`ya�	�[�Z�[�V�c�
0�
2��������
������������`�aG��KMP��KU���	��
0�
0K���	��	��a��a�a�
2�����a�be_1������e_2���a�bO�s`�s\�j�b�%`\�s[������a���	[�X����[�)�������V������b��ge_1������a�������V�Hba`\[����%a�b�ge_2�`����>e_3�u���o�o���oa`��\���o��`\��[��
0�
0�|a�
0������map_neg%ba`\[������a�a�
0�
2��	��
*�
�a�]%a�_%a�a�
0���(���`%a�#���
0�
0���K��a�
0��PInfo��$doc�Ring homomorphisms preserve subtraction.decl��id������is_ring_hom�F��������F�P�F���������W�X�������W�X�Y�Z���PInfo��(	prt�VMR�VMC����doc�The identity map is a ring homomorphism.decl�equations_eqn_1�������o�L���h������x�L�n�PInfo� �(	ATTR� ��� EqnL� SEqnL�ATTR�!���class����decl��comp���u_1��������
�����������γ�_inst_4ring�"g�}_inst_5is_ring_hom%Jb`is_ring_homJ�[b����������
������������#��$�x�&�}�'�~��J�[b��G�����
���b��J[�����ga��MP��������������`����������������map_one%�gba`\���������*%Jg[ax�y�G��N�	��	��	��"�>��mulJ`\�T�V�[�	��	��	��#�g�	��	����\�^MP�����W�����g��[b�����p���~������map_mul%�>��gba����c�w`�a�be_2�^����e_3�`�d���ba`�
\�s�
[\�T�\���V�^��G�������J`\�\�^��MP���0����_a`P��\�
��
��
��#�>����
���a`�������B�����.�.%J�`g\[�	��	����.x�y�G��N�|�addJ`\�T�V�[���b�\�^MP�e�k�W�^�g�g�^[�}�g�p�|�~�}���H�>��gba�d�j�/��a�be_2�^����e_3�`�d�`�ba`��\�s��[\�T�\���V�^��G�k������:J`\�\�^�jMP�k�����g_a`P��\�����6�>����
��`a`�����������k����map_add%J�`g\[�	��	������PInfo�!�,	prt�!VMR�!
VMC�!

�'�&�$�#�����������doc�!The composition of two ring homomorphisms is a ring homomorphism.decl�!equations_eqn_1��"����������
������������#��$�x�&�}�'�~�o���!����"�gba`\[����������
������������#��$�x�&�}�'�~�x�����PInfo�;�,	ATTR� ���;EqnL�;SEqnL�!ATTR�!
�!class�)�!
decl��is_semiring_hom�����������
������������
t������������
������������
�`\�����J`\[��`\[�N��`\[�PInfo�<�4	prt�<VMR�<VMC�<�����������doc�<A ring homomorphism is also a semiring homomorphism.decl�<equations_eqn_1�����������
������������o� 
�<���`\[� +��������
������������x� 
� 9�PInfo�>�4	ATTR� ���>EqnL�>SEqnL�<ATTR�!d�<classis_semiring_hom�<ddecl��is_add_group_hom�����������
�����������is_add_group_hom%`\�����������
�����������is_add_group_hommk%`\����to_is_add_hom%`\�����
������ 9�PInfo�@�8	prt�@VMR�@VMC�@�����������decl�@equations_eqn_1�����������
������������o� O�@���`\[� g��������
������������x� O� u�PInfo�F�8	ATTR� ���FEqnL�FSEqnL�@ATTR�!d�@class�A�@dPInforing_hom�A
indlu_1u_2α�β�J_inst_1�_inst_2semiringRCn�G�I�J[��e_1to_fun��\\map_one'�S\��� [�R\�R\�R\map_mul'xayb� �b[�g��Ig�Vg�ga�Rb�Rb�Rb� �b`�
0�
2map_zero'� �a�b��Vb��Vb�WVb`�Ra��Ra��Ra�WRa\map_add'xgy�� ��`����]V���V�� ��� ��g�R��]R���R�� ��� ��b�	�	
`�GmkTU�gba\[�Q� �`\[�
��G�I�J�K��L� ��M� ��N� �VS�\�K��L� ��M� ��N� ��S���T� �[���� �[� �[� �[�U�V`�Wa� �[�b� �b� �b�b`� �a� �a� �a� �a\�
0�
2�X� �`�a� �a� �a� �a\� �`� �`� �`� �`[�Y�Zb�[g� �g`���� ��� ��� ��� ��b� �g� �g� �g� �g� �ga�	�	
� �gba`�K��L� ��M� ��N� ��P� ��R�!�S��``�T�!E�a�a�a\� �`� �`� �`[�U�Vb�Wg�!Y[��� ��� ����b� �g� �g� �g� �ga�
0�
2�X� ��g� �g� �g� �ga� �b� �b� �b� �b`�Y�Z��[�� ��`���>� ��>� ��>� ��>� ��>�� ��� ��� ��� ��� ��g�	�	
�/�nspace�Gprt�Grecdecl�Gsizeof�I�J�K��L� ��M� ��N� �x� �nat�K��L� ��M� ��N� ��Grec�I�J[x� ��!��S���T�!+�U�!D�X�!X�Y�!vhas_addadd�!�nathas_add�!��!��!��!���!�nathas_onesizeofWS��ggdefault_has_sizeofWS�"\�i� �\�g�g� �� �b� �b� ��j�"[�"	�Vg�W�� �a��� ��� ����g� ��� ��� ��� ��b�	"�	$�"�"4�"	� �\�!��!��"�"=�"	�Zg�[�� �a� �� ��	"�	$�"�"J�PInfo�^�A
ATTR�����^prt�^decl�Ghas_sizeof_inst�I�J�K��L� ��M� ��N� �has_sizeofX� ��K��L� ��M� ��N� �has_sizeofmkX� ��^YZ[�PInfo�k�A
ATTR�!���kclass�l�k��prt�kdecl�\sizeof_spec�I�J�K��L� ��M� ��N� ��S���T�!+�U�!D�X�!X�Y�!vN�!��"bgba`� �gba`\[�!��K��L� ��M� ��N� ��S���T�!+�U�!D�X�!X�Y�!v���!��"z�PInfo�o�A
ATTR� ���oEqnL�oprt�ogind�G�\decl�Gto_fun�I�J�K��L� ��M� ��N� �c� �� ��K��L� ��M� ��N� ��q� �
Proj�G�\�p�I�J� ��GrecWS�I�J\[�q� �\[�!��S� ��T� ��U� ��X� ��Y� �\�PInfo�p�A
ATTR�����pproj�p�\decl�Gmap_one'�I�J�K��L� ��M� ��N� ��q� ��!�p^_\[�!"�!*�K��L� ��M� ��N� ��q� �
Proj�G�\�s�I�J�"��r^_\[�q�"�� ��"�`\[� �� ��S� ��T� ��U� ��X� ��Y� �[�PInfo�s�A
ATTR�����sproj�s�\decl�Gmap_mul'�I�J�K��L� ��M� ��N� ��q� ��V\�W`�!E�"�a`\[�a� �a� �a�!�� �`� �`� �`�!��"��"��K��L� ��M� ��N� ��q� �
Proj�G�\�t�I�J�"��"��q�"��V`�Wa� ��"�ba`\�!5�!?�"��"��S� ��T� ��U� ��X� ��Y� ��PInfo�t�A
ATTR�����tproj�t�\decl�Gmap_zero'�I�J�K��L� ��M� ��N� ��q� ��!�"���� �\� �\� �\� �[� �[� �[� �[�K��L� ��M� ��N� ��q� �
Proj�G�\�u�I�J�#'�"��q�"�� ��"��%� �`� �`� �`[� �\� �\� �\� �\�S� ��T� ��U� ��X� ��Y� ��PInfo�u�A
ATTR�����uproj�u�\decl�Gmap_add'�I�J�K��L� ��M� ��N� ��q� ��Z\�[`�!E�"���a� �a� �a�!K� �`� �`� �`�!U�"��"��K��L� ��M� ��N� ��q� �
Proj�G�\�v�I�J�#b�"��q�"��Z`�[a� ��"���b� �b� �b� �� �a� �a� �a� ��#�#�S� ��T� ��U� ��X� ��Y� ��PInfo�v�A
ATTR�����vproj�v�\decl�Grec_on�H�I�J�K��L� ��M� ��N� ��P� ��Q�"��R�S�!��T�!��U�!��X�!��Y�!�a� ���gb\[�#�K��L� ��M� ��N� ��P� ��Q�"��R�#��Grec�H�I�Ja`\[�PInfo�w�A
ATTR�����wauxrec�wprt�wauxrec�Grec_ondecl�Gcases_on�H�I�J�#��#��PInfo�z�A
ATTR�����zauxrec�zdecl�Gto_monoid_hom�I�J�K��L� ��M� ��N� �s� �monoid_homVR\[�! �!(�K��L� ��M� ��N� ��|� �monoid_hommkVR\[�! �!(�"��Gmap_one'�I�J\[�Gmap_mul'cd\[�PInfo�{�A
VMR�{VMC�{�A
���|�N�M�L�Kdecl�Gto_add_monoid_hom�I�J�K��L� ��M� ��N� �s� �add_monoid_homVR\[�#�#$�K��L� ��M� ��N� ���� �add_monoid_hommkVR\[�#�#$�"��Gmap_zero'cd\[�Gmap_add'cd\[�PInfo���A
VMR��VMC���A
�����N�M�L�Kdoc�GBundled semiring homomorphisms; use this for bundled ring homomorphisms too.decl�Gno_confusion_type�H�I�J�K��L� ��M� ��N� �P��v1�"�v2�!���K��L� ��M� ��N� ��������"����!�z�H�I�Ja`\[��� �a`\[���S��aa�T� ��b�b�!0� �a� �a�!<�U�Vg�W�� �[�"%�"/�
0�
2�X�!Y��� ���!`� �g� �g�!n�Y�Z��[�>� ��>`���b� ��b� ��b� ��b� ��b�� ��>� ��>� ��>� ��>� ��>��	�	
�#��>��g��� ��>��g��`�S���>�>�T�$(��b��b��b�� ��>� ��>� ��>��U�V�o�W��� ���[���� ���� �������o� ���� ���� ���� ����b�
0�
2�X� ��o���� ���� ���� ����b� ��o� ��o� ��o� ��o�>�Y�Z���[� ��$�`��� ��$�� ��$�� ��$�� ��$���� ��$�� ��$�� ��$�� ��$�� ��$����	�	
��to_fun_eq�^_���$��$��\�o�o�PInfo���A
ATTR������prt��decl�Gno_confusion�H�I�J�K��L� ��M� ��N� ��������"����!h12�$��$���H�I�Jba`\[�K��L� ��M� ��N� ��������"����!���$��l^_� �ba`\a�$�h1a�$��!z[�$��gba`\h11�$��$��zlmngba`���!z�$�[�S�"�T�!Y�����!�� �g� �g�!��U�V��W�>�$([�e� ��b� ��b�$U� ��>� ��>� ��>�$]�
0�
2�X�!���>� ��>�!�� ��� ���!��Y�Z�b�[�o�${`����� ���� ����$�� ��o� ��o� ��o�$��	�	
�����$����o�o\\��mn������`�PInfo���A
ATTR������no_conf��prt��decl�\inj�I�J�K��L� ��M� ��N� ��S���T�!+�U�!D�X�!X�Y�!v�S�"�T�%�U�%�X�%&�Y�%;���$�� ��o�b�>�� ��o�b�>��gba`�%b\[�$��%B�`�K��L� ��M� ��N� ��S���T�!+�U�!D�X�!X�Y�!v�S�"�T�%�U�%�X�%&�Y�%;���%n�Gno_confusionTU���o�b�>�%q� ����o�b�>��gba�%�`\[���%q�PInfo���A
decl�\inj_arrowl�I�J�K��L� ��M� ��N� ��S���T�!+�U�!D�X�!X�Y�!v�S�"�T�%�U�%�X�%&�Y�%;���%nP�������$��������>a�K��L� ��M� ��N� ��S���T�!+�U�!D�X�!X�Y�!v�S�"�T�%�U�%�X�%&�Y�%;���%n�������%��\inj�I�J�$������o�b�>��gba`\[�PInfo���A
decl�\inj_eq�I�J�K��L� ��M� ��N� ��S���T�!+�U�!D�X�!X�Y�!v�S�"�T�%�U�%�X�%&�Y�%;P�%n�%=�\�K��L� ��M� ��N� ��S���T�!+�U�!D�X�!X�Y�!vto_fun_1�"map_one'_1�%map_mul'_1�%map_zero'_1�%&map_add'_1�%;��%n�%��W�%n�%�h�%n�%����o�b�>��gba`\[a�%��M����N� ����S�$��S���$��$�e_3�$����&�T� ��&���&��&\� ��&� ��&� ��&[�T� ��&���&"��&"`� ��&� ��&� ��&\�U�V�W� ��&3a�� ��&5� ��&5��&5g� ��&3� ��&3� ��&3� ��&3b�	"�	$�U�V�&3�W�&5� ��&5a�� ��&P� ��&P��&P�� ��&5� ��&5� ��&5� ��&5g�	"�	$�X�&4a��&5� ��&5� ��&5� ��&5g� ��&3� ��&3� ��&3� ��&3b�X�&Oa��&P� ��&P� ��&P� ��&P�� ��&5� ��&5� ��&5� ��&5g�Y�Z�[� ��&����� ��&�� ��&�� ��&�� ��&��b� ��&�� ��&�� ��&�� ��&�� ��&��>���Y�Z�&��[�&�� ��&����� ��&�� ��&�� ��&�� ��&��o� ��&�� ��&�� ��&�� ��&�� ��&��b�&��&��M��&��N� ��&��S���&��S���&�e_3�$����&��T� ��&�� ��&���&�\� ��&�� ��&�� ��&�[�U�V!�W"� ��&�`�#� ��&�� ��&���&�b� ��&�� ��&�� ��&�� ��&�a�	�	
�X� ��&�\��&�� ��&�� ��&�� ��&�a� ��&�� ��&�� ��&�� ��&�`�Y�Z�&��[$� ��'b��%� ��'!� ��'!� ��'!� ��'!�� ��'� ��'� ��'� ��'� ��'g�	��	�eqdrecWS���'�'a�S�'@���$����'!�'!b�$�� �&�'!��� ��'G�'!��g`\[�'P�WS���'G�'Gg�S�'Y� ��'G�'��']��']�>� ��'G� ��'G� ��'G�`�'[�S�'Y�V�']�W(� ��'s�)� ��'u� ��'u��'u�o� ��'s� ��'s� ��'s� ��'s�b�#�
�\�'[�S�'Y�'\��']� ��']� ��']� ��']�>� ��'G� ��'G� ��'G� ��'G�[�'[�S�'Y�Z�']�[�'s�'t���'u� ��'u� ��'u� ��'u� ��'u�o� ��'s� ��'s� ��'s� ��'s� ��'s�b�#�
��%A� ��'�&�gb� ��'�&�gba�'X�'@a�S�'@�' ��'!��'!��'!�� ��'� ��'� ��'g[a�%A�'@a�'��S�'@�V�'!�W�'G�'\��']� ��']� ��']�'a� ��'G� ��'G� ��'G�'i�#�
�a�'��'��S�'@�' ��'!� ��'!�'(� ��'� ��'�'6a�'��'��S�'@�Z�'!�[�'G�'\���']� ��']� ��']�'�� ��'G� ��'G� ��'G�'��#�
�a�'�`\�b�>��gb`[�b�>�`�\g[ba�PInfo���A
TK→+*NOTAring_hom→+* →+* ��decl��has_coe_to_funu_1u_2α�β� �rα� �rβ� �has_coe_to_fun����}� ������� ���� ���� �has_coe_to_funmk}}� �x� �� ��"�[�PInfo���G	prt��VMR��VMC���G	���q��������decl��equations_eqn_1���������� ���� ���� ��}�(�������[�(������� ���� ���� ��~�(��(��PInfo���G	ATTR� ����EqnL��SEqnL��ATTR�!����class������declmonoid_homhas_coeu_1u_2α�β� �rα� �rβ� �has_coe������ ��#�[�� ������� ���� ���� �has_coemk��� ��(�ring_homto_monoid_hom��[�PInfo���J	prt��VMR��VMC���J	���������{decl��equations_eqn_1���������� ���� ���� ����(�������[�(������� ���� ���� ����(��(��PInfo���J	ATTR� ����EqnL��SEqnL��ATTR�!����class������decladd_monoid_homhas_coeu_1u_2α�β� �rα� �rβ� ��(��#�[� �[� �[� �� ������� ���� ���� ��(��(�ring_homto_add_monoid_hom����[�PInfo���M	prt��VMR��VMC���M	����������decl��equations_eqn_1���������� ���� ���� ��(��(�������[�(������� ���� ���� ��(��(��(��PInfo���M	ATTR� ����EqnL��SEqnL��ATTR�!����classhas_coe����declcoe_monoid_homu_1u_2α�β� �rα� �rβ� �f� �a\� �coe_fn������#�`\� �� ���has_coe_to_fun��`\� �� �coe���!�)coe_to_lift���!�)����!�)�(�`\[�)�!�(�`\[������ ���� ���� ���� ���\rfl�\�)%�PInfo���PATTR� ����ATTRsquash_cast����unitstardeclcoe_add_monoid_homu_1u_2α�β� �rα� �rβ� �f� �a\� ��)�#�`\�#1�#;add_monoid_homhas_coe_to_fun����`\�#1�#;�)�)C�)�)C�)�)C�(�`\[�).������ ���� ���� ���� ���\�)7�)W�PInfo���RATTR� ����ATTR�������)?declring_homof_proof_1����β��rα��rβ��f��_inst_1�	����~to_fun%`\�	O�	Wmonoid_homof%`\�	O�	W�(�	Q�	Y��������������������	���map_one'%`\�	O�	W�)r�PInfo���\decl��_proof_2�����������������������	��V`�Wa�	��)gba�	��	��)lba�	��	�[�"ba`\[�"�����	��
T�a�a�	��)��)���������������������	���map_mul'%`\�	O�	W�)r�PInfo���\decl��_proof_3�����������������������	�����to_fun%`\�
��
�add_monoid_homof%`\�
��
��
�����
������
���������������������	�add_monoid_hommap_zero'%`\�
��
��)��PInfo���\decl��_proof_4�����������������������	��Z`�[a�	��)�ba��b�`�
�a�
�a\�)�ba�)��)�[�
�ba`\[�)�����)��
*��
�a�)��)��)���������������������	���map_add'%`\�
��
��)��PInfo��\decl�������������������������	���%`\[��������������������	��\%`\[�����`\[�����`\[�����`\[����`\[�PInfo���\VMR��VMC���\�����������doc��Interpret `f : α → β` with `is_semiring_hom f` as a ring homomorphism.decl��equations_eqn_1�����������������������	��%�*%�����`\[�*Q��������������������	����*%�*`�PInfo��\ATTR� ���EqnL�SEqnL��decl��coe_of����������������f��_inst_1�	��*X��F%%�*%��%`\[�*`coe_fn���*%�*x�*`������������������	�rfl��*z�*�PInfo��aATTR� ���ATTR����decl��coe_inj����������������f�*![g�*!\[h�*X�*y�*~�*~�*X�*!a`\[���������������*��
�*���*��z%a`\[��*���*X�*r�*!ba`\�*tba`\�*|�*��*��*��*X�*!gba`[f_to_fun�$
f_map_one'�	��	��	�f_map_mul'�Vg�W��	[�	�������g�	�������b�
0�
2f_map_zero'������������b����g�
�g�
�gaf_map_add'�Z��[�>�
�`�=���b���b���b���b����
��>�
��>�
��>�
��>��	�	
��*X�*r�*!�>��g�*t�>��g�*,�>��g\[�*|�+�+�+'�++a�*��b�>���
�*!�b�>����*X�*r�*!�o�b�>��*t�o�b�>��*,�o�b�>�a`\[�*|�+;�+@�+J�+N�*X�*!���o�b�>�*,���o�b�>ba`\[bg_to_fun���b�bg_map_one'�s�o�o�o�>���b���b���b�g_map_mul'�V���W������[�$����$����$��$����	�������������o�
0�
2g_map_zero'��������������������o���������
����
����bg_map_add'�Z�$��[�$����$�`'�&���&���&���&���&�$����$��
��$��
��$��
��$��
��$����	�	
��*X�*r�*!�$��$������*t�$��$������*,�$��$�������gba�*|�+��+��+��+��+�\[eqdcases_on��*r�*!�&�$��$����*t�&�$��$����*,�&�$��$����>��gb�*|�+��+��+�t_1�+���*X�*r�*!�&�&�$��$��*t�&�&�$��$��*,�&�&�$��$��b�>��g�*|�,�,�,H_1�*X�*r�*!�&"�&�&�$��*t�&"�&�&�$��*,�&"�&�&�$�ba`\[�*|�,�,�,)H_2heq�*X�*r�*!�&2�&"�&�&�*t�&2�&"�&�&�*,�&2�&"�&�&���o�b�>��*|�,5�,:�,D�,H�,?gba`\[�,J�*X�*!�&3�&2�&"�&�*,�&3�&2�&"�&�����o�b�>�,_�gba`�+��+�`\[���*X�&`�>�v���&�&�b��,}����&�&"�&"�&"�&���&���&���&�$���V�&2�W�&3���&3[�&5���&5���&5�&5�&2�	�&3��&3��&3���&3�&"�
0�
2����&2���&3��&3���&3���&3�&"���&2���&2�
��&2�
��&2�&��Z�&5�[�&P���&P`'�&����&����&����&����&��&5���&P�
��&P�
��&P�
��&P�
��&P�&3�	�	
��*X�*r�*!�&P�&5�&3�&2�*t�&P�&5�&3�&2�*,�&P�&5�&3�&2�$��$������o�*|�,��,��,��,��,�\[��,1�*X�*r�*!�&��&P�&5�&3�*t�&��&P�&5�&3�*,�&��&P�&5�&3�&�$��$������*|�,��-�-�-�-	`\[�-�-�*i�-�-�*X�*!�&��&��&P�&5�*,�&��&��&P�&5�&�&�$��$����-+a`\[����&�b�&�&�&�$����&���&���&�$���V�&"�W�&2�,����&3���&3���&3�&3�&"�	�&2��&2��&2���&2�&��������&"�����&2��&2���&2���&2�&���&"���&"�
��&"�
��&"�&��Z�&3�[�&5���&5�$�'�&P���&P���&P���&P���&P�&3���&5�
��&5�
��&5�
��&5�
��&5�&2�$��$���*X�*r�*!�&5�&3�&2�&"�*t�&5�&3�&2�&"�*,�&5�&3�&2�&"�$������o�b�*|�-��-��-��-��-�[��,1�,��,��,�\[�,��,��*i�,��,��*i�,��-aeqsymm��,}a�b`\[�*i�+��,u�,vheqrefl�*X�+��+��,v�PInfo��edecl��ext����������������f�*�g�*�hx`���*|�*��*ta`\[�.	�*���������������%�*��&�*��'�.��coe_inj%a`\[funext%axaa�.
�.
�PInfo�$�hATTRext���$prodmkboolprodlistext_param_type�.1�.2name�.2�.1�.6�.6boolff�..�.4�.<listnil�.3�..�.7�.;�.C�.6listcons�.:�..�.6�.6namemk_string
Strthunknameanonymous�.N
Strfunext�.Q�.K�.M�.N
Strulift�.Q�.N
Strext�.[�.K�.M�.N
Strarray�.Q�.^�.d�.K�.M�.N
Strmonoid_hom�.Q�.^�.k�.K�.M�.N
Strplift�.Q�.^�.r�.K�.M�.N
Strprod�.Q�.^�.y�.K�.M�.N
Strunits�.Q�.^�.��.K�.Mnamemk_numeralunsignedof_nat'�!��.Q�.N
Strpropext�.Q�.K�.M�.��.�has_zerozero�!�nathas_zero�.Q�.V�.C�.:ATTR�,���$�.>�4tt�.E�.G�.J�.6�.N
Strring_hom�.Q�.H�.�decl��ext_iff����������������f�*�g�*����*Y�.��������������H�*��I�*��W�.��.h�.�xaeqsubst%�*�_x�*��	[�*|�*��*tgba`\�.�[rfl�a�*�[h�.��ext%a`\[�PInfo�G�kdecl��map_zero����������������f�*��	@�*|�*��*t\[�	C�	K��������������S�*���map_zero'%\[�PInfo�R�odoc�RRing homomorphisms map zero to zero.ATTR����Rdecl��map_one����������������f�*��	@�.��U�V��\�]��[��������������V�*���map_one'%\[�PInfo�U�rdoc�URing homomorphisms map one to one.ATTR����Udecl��map_add����������������f�*�a\b`���.
����a\�D�E�	`[�.
�.��������������Y�*��Z\�[`��map_add'%a`\[�PInfo�X�udoc�XRing homomorphisms preserve addition.ATTR����Xdecl��map_mul����������������f�*�a\b`���.
�����	��	`�	`�	��/+�.��������������^�*��_\�``��map_mul'%a`\[�PInfo�]�xdoc�]Ring homomorphisms preserve multiplication.ATTR����]decl��is_semiring_hom����������������f�*��	��.���������������c�*��
�\[�.���map_zero%\[��map_one%\[��map_add%\[��map_mul%\[�PInfo�b�z	prt�bVMR�bVMC�b�c�������decl�bequations_eqn_1�����������������c�*��o�/h�b���\[�/���������������c�*��x�/h�/��PInfo�i�z	ATTR� ���iEqnL�iSEqnL�bATTR�!���bclassis_semiring_hom�b��decl��is_ring_homu_1u_2α�γ� �_inst_1�w_inst_2ring�mg� ��'[��is_ring_hom�l�\[�)�"��'\�/�[�(�\[�/��/��n��o� ��p�/��q�/��s�/�is_ring_homof_semiring��\[�/��b��\[�/��/��PInfo�k��	prt�kVMR�kVMC�k�s�q�p�o�ndecl�kequations_eqn_1�l�m�n��o� ��p�/��q�/��s�/��o�/��k�l�m\[�/��n��o� ��p�/��q�/��s�/��x�/��/��PInfo�x��	ATTR� ���xEqnL�xSEqnL�kATTR�!���kclass�t�k��decl��id_proof_1u_1α�_inst_1��id�{����/��|��}����/��PInfo�z��decl�y_proof_2�{�|��}��V�W���/�[�[� �[� �[��0
�|��}��V�W���0
�PInfo���decl�y_proof_3�{�|��}��/��/��� �� �� ��0!�|��}��0�0!�PInfo����decl�y_proof_4�{�|��}��Z�[���0��[� �[� �[�(��(��03�|��}��Z�[���03�PInfo����decl�y�{�|��}������|��}��\���/��z�{��{���{���{�PInfo�y��VMR�yVMC�y��a�}�|doc�yThe identity ring homomorphism from a semiring to itself.decl�yequations_eqn_1�{�|��}���0C�y�{�0[�|��}����0C�0a�PInfo����ATTR� ����EqnL��SEqnL�ydecl��id_apply����x������ring_homid��������0{�PInfo����ATTR� ����ATTR�����decl��comp_proof_1���w�����γ��������rγsemiring�hnp��%�\[hmn�*�[��`���ba`��%�%��0�a`[��%�a`[�*|�*�\[�*�\[�	��	���\��`��`��`��������0����0����0����0����0����0�G�0�KMP�0�KU�0��0��0��0�K�`�ae_1�0�b�g��e_2�0�����>O�0��>`�0�\����>�J`\�0�[�0��0���`�0��0��	��	��	�[�0��0��0��0��0��0����ba`�0��0��0����a`�0��0��0��/zba\[�U%�a`[�0��0���`�0���0�K��`�0���PInfo����decl��_proof_2�������������0����0����0����0����0����0�xbyg�0��0��gb�0��0�gb`\�0�gb`\[�*|�*!�ga`�*t�ga`�	s�������a��b��b��b�0�b\�1M�1M��������0����0����0����0����0����0���b��gG�1gKMP�1gKU�1g�0��1Y��b��b\�1@�1L�1@�1L�1�K�b�g���0������>���0��b�0��oO�0��o`�1�\�0��o��`\�1�[�1V�1��0�b�1V�1@�	}�	~�	`�1�1��1��1��1@�1L�1U�1��0��gb�1@�1L�1U�1gb�1L�	s�	t�	ua�1��1@�/��ga`�]%�gb`\[�1�1��1f�1����b�g��e_2�0���>��be_3�1���������1X��a`�1�\�������`\�1�[�1}�1c�1��1��1e�1��1���1�K�1#b�1���PInfo����decl��_proof_3�������������0����0����0����0����0����0��0��0��
��b�)��\has_zerozero�`���`���`�W�`��������0����0����0����0����0����0�G�2.KMP�2.KU�2.�0��2#��`�1z`�2BK�0��2 �2B�0��2 �0��
��
��
V[�2B�2I�0��0��2�2M�1�2�1�0��
��
��
L\�2L�0��/sba\[�R%�a`[�2-�2B�1�2B��2DK�1$�2B��PInfo����decl��_proof_4�������������0����0����0����0����0����0�xbyg�0��1M��������*��*�ahas_addadd�b�]�b���b�2&b�2(b\�1c�1e��������0����0����0����0����0����0���b��gG�2�KMP�2�KU�2��0��2���b��b\�1��1��2�K�1��2��2��1��2��1@�	�	�	`�1�1��2��2��1@�1L�2��2��1��2��1��1L�����a�2��1@�/��ga`�X%�gb`\[�1�1��2��2����b�g��e_2�0���>��be_3�1��1��2���a`�2�\�1��2�[�2��1c�1��2�1e�1��2��2�K�2
�2���PInfo����decl���������������0����0����0����0����0����0����b`\��������0����0����0����0����0����0��\�b`\�0��������ba`\[�������ba`\[�������ba`\[�������ba`\[�PInfo����VMR��	VMC��	��	x���������������doc��Composition of ring homomorphisms is a ring homomorphism.decl��equations_eqn_1�������������0����0����0����0����0����0������3������ba`\[�3T��������0����0����0����0����0����0����3�3g�PInfo����ATTR� ����EqnL��SEqnL��decl��comp_assoc�����u_1��������0����0����0����0�δ�rδ�f�0�g�0�ba\[h�����b[\������\b[��comp%���\ba[��comp%���g\a`[��comp���g\b`[�3_��gba`��������0����0����0����0����������0����3����3�rfl���3��3��PInfo����doc��Composition of semiring homomorphisms is associative.ATTR� ����decl��coe_comp�������������0����0����0����0�hnp�0�hmn�0��3]����3���b`\�3g�����3�3��3g�0���������0����0����0����0����0����0�rfl��3��3��PInfo����ATTR� ����ATTR�����decl��comp_apply�������������0����0����0����0�hnp�0�hmn�0�xb�0�a�3��3ga`[�3�ga`[�3_gba`\[�0��3��0�ba\[�*|�*�`\�.�`\��������0����0����0����0����0����0���brfl�a�4�PInfo����ATTR� ����ATTR�����decl��map_negu_1u_2α�β� �_inst_1�/�_inst_2�/�f�/�x\� ��)�!�([�/�\�))�4*�4-���`��`��`��`[���\��\��\��\�43������ ����/����/����/���\eq_neg_of_add_eq_zero�\�4L�4A�4OG� �� �\� �\� �\�M�\�4L�4A�4O�#6�#7�4b� ��43�������4*�4@�4jMP�4k�4t��\�4]��\��\�4-�4A�4O_a\P�!E�#X�#Y�#Z�4``�4G`�4I`[�)�$�'a\�/�`[�(�a`�4��4��44a�46a�48a�4:a\�4��!P�!Q�4��!E�4����4k�4r�!�\�4r�4���map_add��`\�4*�4-�4@G�4t� ��43�%�#-�M�`�4=�4jMP�4t�4������ �`� �`�4��4@_a`P�!E�4��#N��a��a�4��4��4��!E�4��4����4t�4�neg_add_self�`�4=G�4�� ��#6��\��\�4-�4jMP�4��4��4z�43�%�&��4*_a\P�!E�4��!F�!G�4�a�4��4��4����4��4���map_zero��`\�4*�4-eqrefl�\�4��PInfo����doc��Ring homomorphisms preserve additive inverse.ATTR�����decl��map_subu_1u_2α�β� �_inst_1�/�_inst_2�/�f�/�x\y`�!E�4��<��a�=�a�4��<��`�=�`�4��4��4������� ����/����/����/���\��`G�5>KMP�5>KU�5>�!E�4��4�K�5K�!E�#X�4{`�4}`�4��4��4C`�4E`�4��4��5[�5M�`�ae_1� ��g��e_2�!����>O�$(`�$(\����>�J`\�$([�54�5[��`�54�5U�4��4��5[�5��4��#N�#O�#P�5	�5��5����a`�53�5��4��R�a�4��4�a`�4��4��5����`�a�be_2�!Y����e_3�$(����b�b� ��ba`�5�\����b�p`\�5�[�5S�4��4��5`�4��5��5Z����a`\[�5=�5[�R�`�4��4��4���!E�#X�#Y�]�`�_�`�4��4��5Z�5��5M�`�`�5��5Z�4��4���5MK��`�4���PInfo����doc��Ring homomorphisms preserve subtraction.ATTR�����decl��injective_iffu_1u_2α�β� �_inst_1�/�_inst_2�/�f�/���functioninjective����\[�/�a\��� ��4O�4����!F�a�a�4������� ����/����/����/�add_monoid_hominjective_iff��\[�48\�4:\�4G[�4I[�(�\[�/��/��PInfo����doc��A ring homomorphism is injective iff its kernel is trivial.decl��mk'_proof_1�u_1���γ�_inst_1�xf����[�-��������66\������\��6C�U�V����6C���������x���6<��map_one�\��6C�PInfo����decl��_proof_2������������x���6<a\b`��6>�66a\����\[�6Fa\���6j������ �\� �\�6j�6r�6r���������x���6<��map_mul�\��6C�PInfo����decl��_proof_3������������x���6<map_adda\b`��6r�����/`��\��\��\[�6}�6���6>�66`[�h���6F`[�h������
��v�[� �[�4�[�48[�4:[���������x���6<���6�iffmp���0)�0*�0+�6��6��6��6��6�add_self_iff_eq_zero�[�6��6�G�6����6�� �!`\�6��6��6�MP�6��6���[�0)��[��[�6��6�_a[P��6�� �\� �\�4�\�6!�6"[�6r�	��2��a���6��6���6����6��6��!�[�6��6��6��6�G�6��6��6�MP�6��7��`� �
��
��6��6��6�_a`P��6r�6��6��6��6���6�6����6��6����6��6����6��PInfo����decl��������������x���6<���6��3�`[\�/����������x���6<���6��\�`[\�7?�6������`\[�����`\[�����`\[�PInfo����VMR��VMC�����������������doc��Makes a ring homomorphism from a monoid homomorphism of rings which preserves addition.decl��equations_eqn_1������������x���6<���6��3��7@�����`\[�7c���������x���6<���6����7@�7q�PInfo����ATTR� ����EqnL��SEqnL��PInfononzero_comm_semiring��indlu_1α�Cn������e_1add����[add_assocab[c\���has_addmk��`[�7��7��7�zero[zero_adda\����4�add_semigroupmk�	`[�%has_zeromk�	`add_zeroa`���#N�#O�7�a\[�!F�7�aadd_commaabb�\��g� �g�7�ga`�7�mul��b��g�mul_assocagb�c��A��>has_mulmk�	�>[�7��7��7�one�one_mula��A�7�� ��>semigroupmk�	�>[��>has_onemk�	�>mul_onea�>��b�e�%�7��b\[�$R�7��bleft_distriba�bb�oc������$b�7���b�����7����o�7��7��7�right_distriba�ob��c����$���$��7��$�g���$��7��$����8�8�8zero_mul�����7��7�����7����>�8%mul_zero�����8
�8��$��7��$��b�8/mul_comma�$�b�$���&��&� ��&�7��&���8;zero_ne_onene�	�$���$��7��$��o��$��7��$�b�$���mk��&�$������o�b�>��gba`\[��7��
����������5������������[��6��7�\[�8�8��8�
��[��6��6��7�\[���7�\��\����4��7�\[�%�7���`�a�7�#h�#i�7�ba`�8����a��bg��b�g���:�"�7��[�8��8��8��g����:�"�"�7��[���7���$�%��A�7��7��7�\[�7��7��&�'�>�(�b�)�o�������7���b�%'�7����o�8��8��8��*�+�b�,�o�-���7��$b�7�g�7��7����8��8��8��.���o�8��8��$|�7����>�9�/�����7��8��8"�8#�b�9
�0�1���2�$���$���$�� ��$��7��$����9�3�8D�$��8,�8-�o��$��7��$�b�7��$������7���8t�����[\��[�\�`���#N�7�a[�9B�9C�9B�
\��`���#N�#O�7�[�!F�7���a�7�#h�#i�8�\[� ��7�b��b�g���!Z�![�7��a`�9j���g��������>�7��e�7��b[�9v�9w�9v�����>�7��e�%�7�[�$R�7��$�%�b��o��o� ��o�7��o\[��o�7��o�&�'�o�(���)���8
�8�8b�8�8�o�9��9��9��*�+���,���-�$��9�9�7��$�g�$��7��$����9��9��9��.�����8
�9��8,�8-�>�9��/���$��9�9��8F�8G�b�9��0�1�$��2�&��&��&� ��&�7��&���9��3�8D�&��&�7��&�o��&�7��&b�$��$������o�b�>��gba`\[�nspace��prt��recdecl��sizeof�����α_inst�l�
x�7��!�����8�:��rec��x�:�!���7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O�!��!��!��!��!��!��!��!��!��!��!��!��!��!��!��!��!��i�
���&���&�&"�j�
�:�$��"	��&��&��&"��&2���&2�7��&2�&�:+�:,�:+�"�:7���:�&�$����"	��&�9����&� ��&�7��&�$��$���&�7��&���"�:R�o�"	��&�9��:I�:M�"�:]�b�"	��&��&��&"���&"� ��&"�7��&"�&�$��:k�"�:s�>�:#��"	��&��&��&"�:'��&2�7��&2�o�:��:��:��"�:���:?g�"	��&�9��9��9��9��>��&�7��&��"�:�b�"	�%�&�9��:��:��"�:�a�"	�'�&�(�&�)�&"�:'�:��:2�:+�:��:��"�:�`�"	�+�&�,�&�-�&"�:'�:��:-�:+�:��:��"�:�\�"	���&�9��9��7��&�>�:M�:M�"�:�[�"	���&�9��:��:M�:M�"�:��"	�1�&�2�&�:d��&"� ��&"�7��&"�b�>�:��"�:��"	�9��9��9����9��9�g�"�;�PInfo�7��ATTR�����7prt�7decl��has_sizeof_inst������8�:�:�:����8�:�n�
�:�7��PInfo�<��ATTR�!���<class�l�<��prt�<decl�5sizeof_spec������8�:��7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O�"l�;#�&�$��8b�!��!��:@�:�����8�:��7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O�"��;+�PInfo�=��ATTR� ���=EqnL�=prt�=gind���5decl��add�����c�7��7�����?�7�
Proj���5�>���7���rec�
���?�:�9?��7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O�$��PInfo�>��ATTR�����>proj�>�5decl��add_assoc������?�7����[��6��8}�>�\[�;x�;y�;x����?�7�
Proj���5�A���;��@��?�:��[�\����7��;t`[�;��;��;���7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O���PInfo�A��ATTR�����Aproj�A�5decl��zero������?�7�����?�7�
Proj���5�B���;[�?�:��7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O���PInfo�B��ATTR�����Bproj�B�5decl��zero_add������?�7���6=��� ��7��;t�A���7��B�����?�7�
Proj���5�C���;��;��?�:����0)�0*�7�[�;t[�;�[�6��7�[�;�[��7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O�o�PInfo�C��ATTR�����Cproj�C�5decl��add_zero������?�7���6=�;��;�����?�7�
Proj���5�D���<�;��?�:����;��;���7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O�b�PInfo�D��ATTR�����Dproj�D�5decl��add_comm������?�7������0)�0*�;��;��;��<9����?�7�
Proj���5�E���<A�;��?�:��[��6��6��8��;u�;�\�<J��7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O�>�PInfo�E��ATTR�����Eproj�E�5decl��mul���;Y����?�7�
Proj���5�F���7��;]��7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O��PInfo�F��ATTR�����Fproj�F�5decl��mul_assoc������?�7����[���7�\�F�\[�<��<��<�����?�7�
Proj���5�G���<��;��?�:��[�\���7�`�<�`[�<��<��<���7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O��PInfo�G��ATTR�����Gproj�G�5decl��one���;�����?�7�
Proj���5�H	���;���7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8Og�PInfo�H��ATTR�����Hproj�H�5decl��one_mul������?�7���6=�� ��7��<��G��6Q�7��H�����?�7�
Proj���5�I
���<��;��?�:����0�0�7�[�<�[�<�[�[�7�[�<�[��7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8Ob�PInfo�I��ATTR�����Iproj�I�5	decl��mul_one������?�7��%�6=�<��<�����?�7�
Proj���5�J���=�;��?�:�%���<��<���7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8Oa�PInfo�J��ATTR�����Jproj�J�5
decl��left_distrib������?�7��'�(�)[��<��;�;x�<��<�����?�7�
Proj���5�K���=E�;��?�:�'�([�)\��<��;��;��<��<���7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O`�PInfo�K��ATTR�����Kproj�K�5decl��right_distrib������?�7��+�,�-[��<��;z�;x�=@�<�����?�7�
Proj���5�L
���=q�;��?�:�+�,[�-\��<��;��;��=K�<���7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O\�PInfo�L��ATTR�����Lproj�L�5decl��zero_mul������?�7����6=�<��7��<��;��;�����?�7�
Proj���5�M���=��;��?�:�����0�7�[�<��;��;���7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O[�PInfo�M��ATTR�����Mproj�M�5
decl��mul_zero������?�7����6=�=��;��;�����?�7�
Proj���5�N���=��;��?�:�����=��;��;���7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O�PInfo�N��ATTR�����Nproj�N�5decl��mul_comm������?�7��1�2���0�0�<��<��<��=�����?�7�
Proj���5�O���=��;��?�:�1�2[���6x�7�\�<��<�\�=���7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O�PInfo�O��ATTR�����Oproj�O�5decl��zero_ne_one������?�7��8D�0�7��;��/��7��<�����?�7�
Proj���5�P���>'�;��?�:�8D�;��;��;��6Q�<��<���7���7��
[��7���7���7���7���7�����7��$�7��&�8	�*�8!�.�8*�/�83�0�8C�3�8O�PInfo�P��ATTR�����Pproj�P�5decl��rec_on���������7���:���9?��9N�
\��9Y��9e��9r��9s��9�����9��$�9��&�9��*�9��.�9��/�9��0�9��3�9��&�8P�&�$������o�b�>��gba`\[�#�����7���:��>n��rec����[�PInfo�Q��ATTR�����Qauxrec�Qprt�Qauxrec��rec_ondecl��cases_on�����>r�>{�PInfo�T��ATTR�����Tauxrec�Tdecl��to_comm_semiring�����s�7�comm_semiring�	����V�7��~mk�	�;t�;��>��zero_add����add_zero���add_comm��<��<��>$��one_mul���mul_one���left_distrib���right_distrib���zero_mul���mul_zero���mul_comm��PInfo�U��VMR�U_lambda_1VMR�U_lambda_2VMR�UVMC�c��������_fresh!�,f
VMC�d�������g
VMC�U
���V���c
�d
ATTR�!d�Uclass�W�Uddecl��to_zero_ne_one_class�����s�7�zero_ne_one_class�	����i�7�zero_ne_one_classmk�	�>�>$��zero_ne_one��PInfo�h��VMR�hVMC�h���i��

ATTR�!d�hclass�j�hddoc��Predicate for commutative semirings in which zero does not equal one.decl��no_confusion_type�������P��v1�:v2�8u������o���p�:�q�8u�T����[�p�7�[�����[��\`��\�`�a�7�#h�7�b[�>��>��>��
`��a�7�#h�#i�8�[� ��9_��b�\�7��7��7�\[�!��7�g��g���:� �� ��7��a`�>���������>�����>��b�9��9��7��o[�?�?�?��>���b�9��9��9��9�[�9��9��$�%�o�8��8�� ����7���\[����7����&�'���(���)�$��9�9�9�b�$��9��o�?6�?4�?4�*�+���,�$��-�$��84�85�7��&g���&�7��&���?I�?E�?E�.���$��9�?3�8F�8G�>�?Z�/���$��84�?E�9��9��b�?b�0�1�&�2�&�:d�:��:��:����?j�3�8D�&�:J�:K�o�&�:�b�>��&"�p�7��&"���$�����&"���&2�&3���&2��&3��&5��&P���&P�7��&P[�?��?��?��
�&3���&5�?��?�� ��&P�7��&P[�&}�7��&P���&P��&����&�� ��&��7��&�\[��&��7��&����&���&���&��&��&��7��&�a`�?�����&����&��&����&���&���&���&���&��7��&�[�?��?��?���&����&��?��?�� ��&��7��&�[��&��7��&��$�%�&���&���&�� ��&��7��&�\[��&��7��&��&�'�&��(�&��)�&���&���&��7��&�b���&��7��&��o�?��?��?��*�+�&��,�&��-�&���&��&��7��&�g���&��7��&����@�@�@�.���&��?��?��'�7��&��>�@!�/���&��@�@��&��7��&��b�@+�0�1�&��2�'��'!��'!� ��'!�7��'!���@7�3�8D�'��'�7��'�o��'�7��'b��add_eq����'!���'G�']�&��$�zero_eq��'G�&���mul_eq����']���'s�'u�&��bone_eq��'s�&��>�'s�'!�PInfo�n��ATTR�����nprt�ndecl��no_confusion��������o���p�:�q�8uh12��>��n����\[����o���p�:�q�8u�w�@�����7�\a�@�h1a��7�`[�@�a`\h11��@��T��`�p�@��@�[���`��ab��a�b�g���!Z�7��[�@��@��@��
b��g���!Z�![�9f[�$�7������:� �� ��>�\[���7�������>�7��$)�$*�7��ba`�@�����>�p���b��o����7��$b�7�[�@��@��@���o�����7��$b�$c�7���[����7����$�%���8
�8� ��$��7��$�\[�9&�9'�&�'�$��(�$��)�&�9��9��:�b�:C�7��&�o�A�A�A�*�+�$��,�&�-�&�:d�:��7��&"g�:e�7��&"���A&�A#�A#�.���&�9��A�:J�:K�>�A7�/���&�:d�A#��&"�7��&"�b�AA�0�1�&"�2�&2��&3��&3� ��&3�7��&3���AM�3�8D�&2��&2�7��&2�o��&2�7��&2b���r����&3���&5�&P�$��$��s��&5�����t����&P���&��&��b�b�u�?��>�>�&������&5���&P�&��$����&5���Av�>�Ay��PInfo�v��ATTR�����vno_conf�vprt�vdecl�5inj�������8|��8��
��8���8���8���8���8��g��8��$�8��&�8��*�9�.�9
�/�9�0�9!�3�9*����$����&�&���&��&��&"�:'�:(�:)[�A��A��A��
�&���&"�:'�:(� ��&2�7��&2[�AW�AX���&2�AF���&3� ��&3�7��&3\[��&3�7��&3���&3��&5�?��?��?��?�a`�A���Au���&P��&���&��?���&��7��&�[�A��A��A���&����&��?��A�� ��&��7��&�[��&��7��&��$�%�&���&���&�� ��&��7��&�\[��&��7��&��&�'�&��(�&��)�&��?��?��7��&�b���&��7��&��o�B
�B	�B	�*�+�&��,�&��-�&���&���&��7��&�g���&��7��&����B"�B�B�.���&��?��B��&��7��&��>�B5�/���&��B�B��&��7��&��b�B?�0�1�&��2�&��?��?�� ��&��7��&����BI�3�8D�&���&��7��&��o��&��7��&�b����7��&��8P�&��&��&��&��&��&��&��&��&��&��&P�&5�&3�&2�&"�&�&�$��B_�$������o�b�>��gba`\[������&����'�'!�&��$����@�&������B��&��>�@�&�������8|��8��
��8���8���8���8���8��g��8��$�8��&�8��*�9�.�9
�/�9�0�9!�3�9*��A���A��
�&��A���A���A���Au��A���&���A��$�B�&�B�*�B1�.�B:�/�BC�0�BQ�3�B\���B���no_confusion���&��B��8P�&��&��&��&��&��&��&��&��&��&��&��&P�&5�&3�&2�&"�&�&�B��$��$������o�b�>��gba`\[�r�B��s��'�&��$��t�@M�&��o�u�@P�&��b���@U�'G�&2����']�'�&���@U�&����B��&��o[���B��B����B��B��PInfo�{��decl�5inj_arrowl�������8|��8��
��8���8���8���8���8��g��8��$�8��&�8��*�9�.�9
�/�9�0�9!�3�9*��A���A��
�&��A���A���A���Au��A���&���A��$�B�&�B�*�B1�.�B:�/�BC�0�BQ�3�B\���B�P����������'���'!�'G�&��&���@0�&��$�������'G���']�'s�&������B�\�����8|��8��
��8���8���8���8���8��g��8��$�8��&�8��*�9�.�9
�/�9�0�9!�3�9*��A���A��
�&��A���A���A���Au��A���&���A��$�B�&�B�*�B1�.�B:�/�BC�0�BQ�3�B\���B�������C:andelim_left�@M�'�&���C1���B��@0�&��>�5inj���'!�'�&��&��&��&��&��&��&��&��&��&��&��&P�&5�&3�&2�&"�&�&�$��$������o�b�>��gba`\[�Ca�C1�Ciandelim_right�Cc�Cj�C��Ca�B��Ch�C��C1�Ci�C��C��B��Ch�C��PInfo�}��ATTR��d��class��PInfononzero_comm_ring��indlu_1α�Cn������e_1��7���7��
[��7���7�neg�@�add_left_negab�\�7��7�� �gadd_monoidmk��ga`\[�44ghas_negmk�g�!��!��C���g���:� �� ��>�gb�C���?��?��>��?"�$�?1�&�'���(���)�$��9�?4�$��9����C��?;�?=�*�+���,�$��-�$��84�?E�?F�?G�$��D�?P�?S�0�1�$��2�$��84�85�86�87gb�D�3�8J�8K�8L`�$���mk��&�$������o�b�>��gba`\[���C��
������8z�������8|��8��
��8���8�����`a����a�7�#h�#i�#j�C�ba`\[�44b�C�b� �� ��DK��b�g���!Z�![�9fgb�D^��9s��9�����9��$�9��&�'�o�(���)���8
�9��8�8���Dh�9��9��*�+���,���-�$��9�9��$��9��$��Dt�9��9��0�1���2�$��9�9�9�9gb�D��3�9%�9&�9'`�C��$�������C����D?��9?��9N�
\��9Y��9e���8�����g���!Z�![�!\�C��a`\[�44��C���$�$�D�������A�!��!��7��>gb�D����������>��b��o�8��8��8�[�D��D��D���b���o�8��8��?#�?$[�?*�?+�$�%���7��$b�$c�@�\[�@��@��&�'���(�$��)�$��84�85�?Cb�?F�?G���D��D��D��*�+�$��,�$��-�&�9��9��:�g�:C�A�$��D��D��D��0�1�$��2�&�9��9��9��9�gb�E�3�9��9��9�`�9��nspace��prt��recdecl��sizeof�����α_inst�:x�C��!�������:��rec��x�E0�!���7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D�!��!��!��!��!��!��!��!��!��!��!��:c�:�A��:!�A��>�"	���&�9��:C�:D� ��&�C��&�$��$������o�44�&�C��&�b�:J� ��&�ED�"�ET��:v��:#g�"	��&��&��&"�:'�:}�:~�>�Eb�Ec�Eb�"�Enb�:?a�"	��&�9��9��9��9��g�?x�"�E�`�"	�%�&�9��E{�?x�"�E�\�"	�'�&�(�&�)�&"�:'�Ec�:2�:+�Ed�Ec�"�E�[�"	�+�&�,�&�-�&"�:'�Eb�:-�:+�E��Ei�"�E��"	�?r�"�?r�"	�;�9��9�a�"�E��PInfo����ATTR������prt��decl��has_sizeof_inst��������:�:�E0������:�;!�E0����PInfo����ATTR�!����class�l����prt��decl��sizeof_spec��������:��7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D�"l�E��&�$��D-�;.�Eu������:��7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D�"��E��PInfo����ATTR� ����EqnL��prt��gind����decl��add�����c�C��7�������C�
Proj���������7���rec������E0�9?��7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D�$��PInfo����ATTR������proj����decl��add_assoc��������C����[��6��8}���\[�F)�F*�F)������C�
Proj���������F5������E0��[�\����7��F%`[�F=�F>�F=��7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D���PInfo����ATTR������proj����decl��zero��������C�������C�
Proj���������F���E0��7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D���PInfo����ATTR������proj����decl��zero_add��������C���6=�;��;��;��F%����;��;����������C�
Proj���������F��F9���E0����0)�0*�;��F%[�F[�6��;��F�[��7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D�o�PInfo����ATTR������proj����decl��add_zero��������C���6=�F��F�������C�
Proj���������F��F9���E0����F��F���7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D�b�PInfo����ATTR������proj����decl��neg��������C��8{������C�
Proj���������8{�F���E0�7���7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D�>�PInfo����ATTR������proj����decl��add_left_neg��������C����6=�;��;�� ��C��F}�F��F��������44�C�����;�� ��G������C�
Proj���������G�F9���E0�����0)�0*�0+�C�[�F��F��F��F�[�G[�44[�C�[�G
[�6��6��G#��7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D��PInfo����ATTR������proj����decl��add_comm��������C������0)�0*�;��F��F��GR������C�
Proj���������GZ�F9���E0��[��6��6��8��F&�F\�Gc��7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D��PInfo����ATTR������proj����decl��mul���F
������C�
Proj������	���7��F��7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�Dg�PInfo����ATTR������proj����decl��mul_assoc��������C����[���<����\[�G��G��G�������C�
Proj������
���G��F9���E0��[�\���<��G�`[�G��G��G���7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�Db�PInfo����ATTR������proj����	decl��one���Fc������C�
Proj���������Fe��7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�Da�PInfo����ATTR������proj����
decl��one_mul��������C���6=�<��<��<��G�����6Q�<����������C�
Proj���������G��F9���E0����0�0�<��G�[�G�[�<��<��G�[��7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D`�PInfo����ATTR������proj����decl��mul_one��������C��%�6=�G��G�������C�
Proj������
���H-�F9���E0�%���H�H��7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D\�PInfo����ATTR������proj����decl��left_distrib��������C��'�(�)[��G��F0�F)�G��G�������C�
Proj���������HU�F9���E0�'�([�)\��G��FD�F=�G��G���7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D[�PInfo����ATTR������proj����
decl��right_distrib��������C��+�,�-[��G��F+�F)�HP�G�������C�
Proj���������H��F9���E0�+�,[�-\��G��F?�F=�H[�G���7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D�PInfo����ATTR������proj����decl��mul_comm��������C��1�2���0�0�<��H�H�H�������C�
Proj���������H��F9���E0�1�2[���6x�=��G��G�\�H���7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D�PInfo����ATTR������proj����decl��zero_ne_one��������C��>�0�>�F��/��>"�G�������C�
Proj���������H��F9���E0�>*�;��;��F��6Q�<��G���7���7��
[��7���7����@����C���C���?��?��>��?"�$�?1�&�C��*�D�0�D�3�D�PInfo����ATTR������proj����decl��rec_on����������C����E0����9?��9N�
\��9Y��9e���8����D���D���D���D���b��D��$�D��&�D��*�E�0�E�3�E�&�D�&�$������o�b�>��gba`\[�#������C����E0���I+��rec����[�PInfo����ATTR������auxrec��prt��auxrec��rec_ondecl��cases_on�����I/�I8�PInfo����ATTR������auxrec��decl��to_comm_ring�����s�C�comm_ring�������C���mk��F%�F�H��F��G�G
��add_left_neg����add_comm��G��G��H���one_mul���mul_one���left_distrib���right_distrib���mul_comm��PInfo����VMR��_lambda_1VMR��_lambda_2VMR��_lambda_3VMR��VMC����������_fresh!�?�
VMC��������
VMC����������
VMC����������
����
ATTR�!d��class����ddecl��to_zero_ne_one_class�����s�C��>�������C��>��H��H���zero_ne_one��PInfo����VMR��VMC��������

ATTR�!d��classzero_ne_one_class��ddoc��Predicate for commutative rings in which zero does not equal one.decl��no_confusion_type�������P��v1�E0v2�D@������������E0���D@������[���C�[����>���>��
`��>���>����7�������:� �� �� ��C��a`\[�44��C���@�� ���I������>�7��$)�$*�@�gb�I���@���@���o��A�$�A�&�'�$��(�$��)�&�9��A�:C�A���I��A�A�*�+�$��,�&�-�&�:d�A#�:e�A$�$��I��A-�A0�0�1�&�2�&�:d�:��:��:�gb�I��3�?v�&�:�`�I��&"���C��&"���$���?���?��
�&3��?���?����Ai�����&��?��&��&��&��C��&�a`\[�44�&��C��&���&�� ��&��I����&���&���&����&�� ��&��7��&�gb�I�����&����&��&����&���&���&��B�B�B[�J�J�J��&����&��B�B� ��&��7��&�[�&��7��&��$�%�&���&���&�� ��&��7��&�\[�BX�BY�&�'�&��(�&��)�&��B���'�7��'b���'�7��'���J3�J/�J/�*�+�&��,�&��-�'�@0�@1�7��'!g�'"�7��'!�$��JE�JB�JB�0�1�&��2�'�@0�@1�@2�@3gb�JX�3�@E�@F�@G`��add_eq�@Ozero_eq�@Rneg_eq��C2�&��omul_eq����'s���'u*�&��>one_eq��'u�&���'u�'!�PInfo����ATTR������prt��decl��no_confusion��������������E0���D@h12��I�������\[����������E0���D@���J��@��C�\a�J�h1a��C�`[�J�a`\h11��J����#�$`���J��J�[��@���@��
b��@���@����?�����>�7��$)�$*�$+�C��ba`\[�44�b�C��b��b� ��b�J����b��o�8��%'�%(�7���gb�J�����o�����������$��9�9�9�[�J��J��J�������$��9�9�9�9[�8K�8L�$�%�$��84�85�86�87\[�9��9��&�'�&�(�&�)�&"�:'�:}�:~b�:(�:)���K�K�K�*�+�&�,�&"�-�&2�AF�AG�7��&3g�A��7��&3�$��K"�K�K�0�1�&"�2�&2�AF�AG�AH�AIgb�K5�3�A[�A\�A]`�����Ae���Ah����At�o�o������&����&��&��>�>����&����&��A{���Aa�b�Av��Ayb�PInfo����ATTR������no_conf��prt��decl��inj�������8|��8��
��8���8����DE���DZ��Df��9s��9�����9��$�9��&�Dr�*�D�0�D��3�D���A���A��
�&��A���A������&3�&5�����&5�?��?��?�� ��&P�C��&Pa`\[�44�&P�C��&P�&}�&~�K|���&P��&��KI���&�� ��&��7��&�gb�K���KE���&���&���&��I���&��7��&�[�K��K��K���&����&��I��K�� ��&��7��&�[��&��7��&��$�%�&��?��?��?��?�\[�?��?��&�'�&��(�&��)�&��J�J�7��&�b���&��7��&����K��K��K��*�+�&��,�&��-�&��?��?��?�g�?��?��$��K��K��K��0�1�&��2�&��?��?��BD�BEgb�K��3�BW�BX�BY`����C��&��D�&��&��&��&��&��&��&��&��&��&��&P�&5�&3�&2�&"�&�&�$��K��$������o�b�>��gba`\[�B��B�������&��'�&��b���B��&���@�&Pb�����8|��8��
��8���8����DE���DZ��Df��9s��9�����9��$�9��&�Dr�*�D�0�D��3�D���A���A��
�&��A���A����Ku���K���K���KE��K���&���K��$�K��&�K��*�K��0�K��3�K����L!��no_confusion��&��L/�D�&��&��&��&��&��&��&��&��&��&��&��&P�&5�&3�&2�&"�&�&�LW�$��$������o�b�>��gba`\[���B����B�����C+�&������C4�&��b���B��&��>���Jj�']�&3���@X�'!�&"����@S�&��$����Jj�&����@X�&��b\���L��L�[���L��L����L��L��PInfo����decl��inj_arrowl�������8|��8��
��8���8����DE���DZ��Df��9s��9�����9��$�9��&�Dr�*�D�0�D��3�D���A���A��
�&��A���A����Ku���K���K���KE��K���&���K��$�K��&�K��*�K��0�K��3�K����L!P�������C/���C1����@K�&������@U�&��o���L�`�����8|��8��
��8���8����DE���DZ��Df��9s��9�����9��$�9��&�Dr�*�D�0�D��3�D���A���A��
�&��A���A����Ku���K���K���KE��K���&���K��$�K��&�K��*�K��0�K��3�K����L!�������L��Cd�Ce���L���@M�&��>�@0�&����inj���'!�'�&��&��&��&��&��&��&��&��&��&��&��&P�&5�&3�&2�&"�&�&�$��$������o�b�>��gba`\[�C��M�C��M�M-�Ca�L�M�C��M�M2�Ca�M�M�C��L�M�M8�C��M�M�M?�PInfo����ATTR��d��class��declnonzero_comm_ringto_nonzero_comm_semiring_proof_1u_1α�I�C����[��6��8}�~add��\
this�>|\���&\���&\[Annotshow�Mz�M{�Mz������C�comm_semiringadd_assoc�&
���>}�Mp�MrAnnot���PInfo����	decl��_proof_2��������C���6=�;��;��;��Ml
���>|�Mp�MrAnnot���M��M��;��;��~zero�&�M�������C���zero_add�&�M��PInfo����	decl��_proof_3��������C���6=�M��M�������C���add_zero�&�M��PInfo����	decl��_proof_4��������C������0)�0*�;��Ml[
���>|[�Mp[�Mr[Annot���M�[�M��M�������C���add_comm�&�M��PInfo����	decl��_proof_5��������C����[���<��~mul�&\�Mw�M��M��M�������C���mul_assoc�&�M��PInfo����	decl��_proof_6��������C���6=�<��<��<��M��M��M��M��6Q�<��~one�&�M�������C���one_mul�&�M��PInfo����	decl��_proof_7��������C��%�6=�N�N������C���mul_one�&�M��PInfo����	decl��_proof_8��������C��'�(�)[��M��M��Mz�M��M�������C���left_distrib�&�M��PInfo����	decl��_proof_9��������C��+�,�-[��M��M|�Mz�N!�M�������C���right_distrib�&�M��PInfo����	decl��_proof_10��������C����6=�<��=��M��M��M�������C���zero_mul�&�M��PInfo����	decl��_proof_11��������C����6=�N?�M��M�������C���mul_zero�&�M��PInfo����	decl��_proof_12��������C��1�2���0�0�<��M�[�M��M�[�M��N_������C���mul_comm�&�M��PInfo����	decl��_proof_13��������C��>�0�>�M��M��/��>"�N�M�������C�G�Nx�>�0�kto_has_zero�&���&�/��kto_has_one�&�N�a�e_1��b\�`e_2�6�=bO�8Db`�N�\�Hb�bO`\�N�[�Nr�N��0�Nr�Nw�N��0�Nwzero_ne_one�&�N��PInfo���	decl����������C��:������C��8P�Ml�M������Np�������������M��M������Nu��������������������������������PInfo����	prt��VMR��_lambda_1VMR��_lambda_2VMR��VMC���	������_fresh���
VMC�	��	�����
VMC��
��	�����
�	
doc��A nonzero commutative ring is a nonzero commutative semiring.decl��equations_eqn_1��������C���:�����N�������C����:�N��PInfo���	ATTR� ���EqnL�SEqnL��ATTR�!d��classnonzero_comm_semiring��ddeclintegral_domainto_nonzero_comm_ringu_1α�idintegral_domain��E0����O�D�add�5�add_assoc�5�zero�5�zero_add�5�add_zero�5�neg�5�add_left_neg�5�add_comm�5�mul�5�mul_assoc�5�one�5�one_mul�5�mul_one�5�left_distrib�5�right_distrib�5�mul_comm�5�zero_ne_one�5�PInfo���	prt�VMR�_lambda_1VMR�_lambda_2VMR�_lambda_3VMR�VMC�'��	������_fresh&��
VMC�(��	���,
VMC�)��	�����,
VMC���	���'
�(�)
doc�An integral domain is a nonzero commutative ring.decl�equations_eqn_1�����O��E0���OI����O���E0�OO�PInfo�.��	ATTR� ���.EqnL�.SEqnL�ATTR�!d�classnonzero_comm_ring�ddeclunitscoe_ne_zero��_inst_1nonzero_comm_semiringu����s�U������ �t�O[���Of���Of���Oe���h��2�OY�4�O`h�6�Oe�Oy�!�"�#�o��[�,���O[[�7�O��inv[�O��*�+�O�falseU�O��"�2�Os[�Ou[�O��O��S�O��O�0[�O��O��O��O��2�3�%�O���T[�\�`e_2���b�ge_3������	a`�O�\���?`\�O�[�O��O��O��O��O��W�O��1[�O��O��O��O��W�O���O��*�[�O��O�αs�kiff_false_intro����Os��O�zero_ne_one[�O�unitsval_inv[�O��PInfo�1��doc�1An element of the unit group of a nonzero commutative semiring represented as an element
   of the semiring is nonzero.declnonzero_comm_ringof_ne_proof_1��_inst_1�����[]���\��add\
����\[Annot���P
�P�P
��C��comm_ringadd_assoc
����Annot���PInfo�B��decl�A_proof_2���C���(�����P
����Annot���P�P+�����zero�P+��C���Ezero_add�P!�PInfo�G��decl�A_proof_3���C����P2�P8��C���Eadd_zero�P!�PInfo�J��decl�A_proof_4���C����(�P%�����P,�P/�P6�P@�P+�PL�P+������neg�P+���P\��C���Eadd_left_neg�P!�PInfo�L��decl�A_proof_5���C�����"�Y����[�P[
����[Annot���P[�P{�P���C���Eadd_comm�P!�PInfo�O��decl�A_proof_6���C�����[]���\��mul\�P
�P��P��P���C���Emul_assoc�P!�PInfo�Q��decl�A_proof_7���C���	���1�P��P+�P��P+�>��one�P+��C���Eone_mul�P!�PInfo�T��decl�A_proof_8���C���%�P��P���C���Emul_one�P!�PInfo�W��decl�A_proof_9���C���'�(�)[]�P��P�P
�P��P���C���Eleft_distrib�P!�PInfo�Y��decl�A_proof_10���C���+�,�-[]�P��P�P
�P��P���C���Eright_distrib�P!�PInfo�[��decl�A_proof_11���C���1�2�"�#�o�1[�P�[�P{�P�[�P{�P���C���Emul_comm�P!�PInfo�]��decl�A_proof_12���C��xyh��h01]����\���U�>\�U�V�����O���C���`�a�b�Q�c�QG������e�f���$�	M�	N�Q[MP�Q�Q(�7[_a`P��\[��[���Q�Q&�`�Q&[�o`�Q[G�Q(�Q'�Q%MP�Q(�QE�7_a`P�����������������QK\[�QS���Q(�QD�Q9�QD�Q=G�QE��Q"����`��[�QhMP�QE�Ql�7�	M�>`�Q$_a`P�QS�QQ[���QN\�Qx[���QE�Qg�Q9�Qg�QsG�Ql��QkMP�Ql�Q��7����[_a`P���QN�	���a��\�Q�[�Q1�Q����Ql���2��[G�Q��	MP�Q��	�7�Q�_a`P�����Q��Q����Q����Q���PInfo�_��decl�A���C���`�a�b�Qnonzero_comm_ring\��C���`�a�b�Q��\�P�B�\[���G�\[�J�\[�Pa\�P
�L�\[�O�\[�P��Q�\[�Q�T�\[�W�\[�Y�\[�[�\[�]�\[�_�\[�PInfo�A��VMR�A_lambda_1VMR�A_lambda_2VMR�A_lambda_3VMR�AVMC�j��������_fresh%��
VMC�k�����o
VMC�l�������o
VMC�A���b�a�`�C��j
�k�l
doc�AMakes a nonzero commutative ring from a commutative ring containing at least two distinct
   elements.decl�Aequations_eqn_1���C���`�a�b�Q�Q��A�\[�R
��C���`�a�b�Q��Q��R�PInfo�q��ATTR� ���qEqnL�qSEqnL�Adeclnonzero_comm_semiringof_ne_proof_1��_inst_1�l���[]��P��\
���k\[Annot���R-�R.�R-��u�lcomm_semiringadd_assoc
���kAnnot���PInfo�t��decl�s_proof_2���u�l�(�P%�P&�R%
���kAnnot���R<�RI��P3���RI��u�l�vzero_add�RA�PInfo�x��decl�s_proof_3���u�l��RP�RU��u�l�vadd_zero�RA�PInfo�z��decl�s_proof_4���u�l���"�Y���Pv�R%[
���k[Annot���R<[�Rr�Ry��u�l�vadd_comm�RA�PInfo�|��decl�s_proof_5���u�l���[]���P���\�R*�R��R��R���u�l�vmul_assoc�RA�PInfo�~��decl�s_proof_6���u�l�	���P��R��RI�R��RI�P����RI��u�l�vone_mul�RA�PInfo����decl�s_proof_7���u�l�%�R��R���u�l�vmul_one�RA�PInfo����decl�s_proof_8���u�l�'�(�)[]�R��R4�R-�R��R���u�l�vleft_distrib�RA�PInfo����decl�s_proof_9���u�l�+�,�-[]�R��R/�R-�R��R���u�l�vright_distrib�RA�PInfo����decl�s_proof_10���u�l��	��R��RU�RU��u�l�vzero_mul�RA�PInfo����decl�s_proof_11���u�l���R��RU�RU��u�l�vmul_zero�RA�PInfo����decl�s_proof_12���u�l�1�2�"�#�o�P��R�[�Rr�R�[�Rr�S��u�l�vmul_comm�RA�PInfo����decl�s_proof_13���u�lxyh�Qh01]���Q���U�Q�U�V����O���u�l�������Q���S �Q����e�f�g�s`\�	M�	N�S)[M�Q*�S2�Q7�S0�Q9�S0[�Q<�S)[G�S2�S1�S/MP�S2�SA�QJ_a`P�����������sa`�����SH\[�SP���S2�S@�Q9�S@�S9G�SA��S,���Qe�������S([�SgMP�SA�Sk�7�	M�Qq�S._a`P�SP�SN[���SK\�Sv[���SA�Sf�Q9�Sf�SqG�Sk��Sd�SjMP�Sk�S��7�����Sb�Sd[_a`P���SK�	��Q��	��	��	��SG\�S�[�Q1�S����Sk�Sd�2�Sb[G�S��S��SdMP�S��S��7�S�_a`P���S��S��S����S��Sd�S��-�Sd�PInfo����decl�s���u�l�������Q�OX\��u�l�������Q�5\�R+�t�\[���x�\[�z�\[�|�\[�R��~�\[�S���\[���\[���\[���\[���\[���\[���\[���\[�PInfo�s��VMR�s_lambda_1VMR�s_lambda_2VMR�sVMC����������_fresh�?
VMC����������
VMC�s
���������u���
��
doc�sMakes a nonzero commutative semiring from a commutative semiring containing at least two
   distinct elements.decl�sequations_eqn_1���u�l�������Q�S��s�\[�T��u�l�������Q��S��T�PInfo����ATTR� ����EqnL��SEqnL�sdeclhas_div_of_division_ring��_inst_1division_ringhas_div����T+division_ring_has_div�PInfo����VMR��VMC�������division_ring_has_divdoc��this is needed for compatibility between Lean 3.4.2 and Lean 3.5.0cdecl��equations_eqn_1�����T+�T-����T3����T+��T-�T9�PInfo����ATTR� ����EqnL��SEqnL��PInfodomain��indl�αCn�����e_1��7����[�\�� ��`[�TG�TH�TG�
[��\�� �
���`[���Qe��`��������a\[�	��Q����@�����bj�	\��g��g�PRga`\[��g��g��g�g�Ts��g�����	�������gb�T���?�����>��b���V��o[�T��T��T���>���b���V���o�1�o[�+h�>�o�$�%�o���������1��\[���>���&�'���(���)�$��$��$���$�b'�$����$����T��T��T��*�+���,�$��-�$��&�&��&g�+����&�$��T��T��T�eq_zero_or_eq_zero_of_mul_eq_zeroa�$�b�$����T��T����&���&�����&���&���&���T��T��3���$����$����$��o�$��>�$�`�$���mk�S�&�$������o�b�>��gba`\[���TB�
������������8|����[]��P[�U8�U9�U8�
��[]���\��\[���Q��\�� �
��TT\[���Qe���DE����ac�)�����PRba`\[����b�
��2�Ub��b�g�>��2����gb�Uu��9s�������>��
���b[�U��U��U������>��
����b�1�b[�b�>�b�$�%�b���V�T��T�\[�+h�T��&�'�o�(���)���$��+x��$�b'�$����$����U��U��U��*�+���,���-�$��T��T��T�g�T��T��$��U��U��U����������$����T��U��U�U�����T��T��T����T��U��3���$����$����$��o�$��>�$�`�TB�$������TD���U0��9?��[�\�`������a[�U��U��U��
\��`�������T`[�	��Q���ac�)����b\[�
���b���8�����g�>��2��2��PR�a`\[�������*��V(�������
����>���>gb�V<��D����>��b��o�T������[�VG�VH�VG��b���o�T����T��T�[�T��T��$�%�����������1��\[���>���&�'���(�$��)�$��T��T��T�b�+��T����Vt�Vr�Vr�*�+�$��,�$��-�&�T��&��&g'�&���&�$��V��V��V������$����&���T��V��T��T������&"���&"���&"���V��V��3���&�T��T��o�&�>�&`�9��nspace��prt��recdecl��sizeof���α_inst�lx�TB�!������V���rec�x�V��!���7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U�!��!��!��!��!��!��!��!��!��!��!��!��!��!��!��!��!��i�T�:�j�T�:�$��"	��&��&��&"�&2'�&2���&2�&�V��V��V��"�V����V��&�$����"	��&�T��V����&���&�$��$��T��"�V��o�"	��&�T��V��T��"�W
�b�V��A��V��A��>�"	���&�T��V��V����&�PR�&�$��$������o���&���&�b�T���&�W�"�W-��"	��&��&�V�'�&"���&"���&"�&�$��W:�"�WB��V�g�"	��&��&��&"�V��&2��&2�>�WO�WP�WO�"�W[b�V�a�"	��&�T��V����&�1�&�g�-A�>�&b�"�Wr`�"	�%�&�T��Wj�Wm�"�W}\�"	�'�&�(�&�)�&"�V��WP�V��V��WQ�WP�"�W�[�"	�+�&�,�&�-�&"�V��WO�V��V��W��WV�"�W��"	���&���&���V��&"��&"��V��V��$����V��-l���&2�$��V��W��"�W��"	�V��T��V��V�a�"�W��PInfo����ATTR������prt��decl��has_sizeof_inst������V��V��V������V��n�T�V����U�PInfo����ATTR�!����class�l����prt��decl��sizeof_spec������V���7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U�"l�W��&�$��U�!��!��V��Wb�����V���7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U�"��W��PInfo����ATTR� ����EqnL��prt��gind����decl��add���c�TC�7������TC
Proj��������7���rec�T����V��9?��7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U�$��PInfo����ATTR������proj����decl��add_assoc������TC���[]��P���V\[�X5�X6�X5�����TC
Proj��������XA���V���V���[�\�� �TE�X1`[�XI�XJ�XI��7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U���PInfo����ATTR������proj����decl��zero������TC�����TC
Proj��������X���V���7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U���PInfo����ATTR������proj����decl��zero_add������TC�(�P%�P&�X1���V��P3���V�����TC
Proj��������X��XE���V���"�Y���Pv�X1[�X�[�2��[�X�[��7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U�o�PInfo����ATTR������proj����decl��add_zero������TC��X��X������TC
Proj��������X��XE���V���"�X��X���7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U�b�PInfo����ATTR������proj����decl��neg������TC�8{�����TC
Proj��������8{�X���V��7���7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U�>�PInfo����ATTR������proj����decl��add_left_neg������TC��(�P%�PQ�PS�X��X��X����V���V���P`���V��Pj�Y�����TC
Proj��������Y�XE���V����"�Y�����PR[�X��X��X��Y[�Y[�J��[�Y[�2�[�Y+��7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U��PInfo����ATTR������proj����decl��add_comm������TC���"�Y���Pv�X��X��YZ�����TC
Proj��������Yb�XE���V���[]��UE�UF�X2�X�\�Yk��7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U��PInfo����ATTR������proj����decl��mul��X�����TC
Proj������	��7��X��7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�Ug�PInfo����ATTR������proj����decl��mul_assoc������TC���[]���P����V\[�Y��Y��Y������TC
Proj������
��Y��XE���V���[�\����`�Y�`[�Y��Y��Y���7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�Ub�PInfo����ATTR������proj����	decl��one��Xo�����TC
Proj��������Xq��7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�Ua�PInfo����ATTR������proj����
decl��one_mul������TC�	���P��Y����V�P����V�����TC
Proj��������Z�XE���V���"�#�o�P��Y�[�Y�[�*�>[�Y�[��7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U`�PInfo����ATTR������proj����decl��mul_one������TC�%�Y��Z�����TC
Proj������
��Z7�XE���V��%�"�Z�Z��7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U\�PInfo����ATTR������proj����decl��left_distrib������TC�'�(�)[]�Y��X<�X5�Y��Y������TC
Proj��������Z_�XE���V��'�([�)\��Y��XP�XI�Y��Y���7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U[�PInfo����ATTR������proj����
decl��right_distrib������TC�+�,�-[]�Y��X7�X5�ZZ�Y������TC
Proj��������Z��XE���V��+�,[�-\��Y��XK�XI�Ze�Y���7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U�PInfo����ATTR������proj����decl��eq_zero_or_eq_zero_of_mul_eq_zero������TC�������"�#�[�Z	�2�X��X��������Q�X�\[^�Z������TC
Proj��������Z��XE���V�����[��]���P��Y����Q�Z��������Qe�X�`[��Z���7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U�PInfo����ATTR������proj����decl��zero_ne_one������TC�������X���>�Y������TC
Proj��������Z��XE���V��Oa��P3�X��P��Y���7���TS�
[��T_��Tk���@����T���T���?��T���>��T��$�T��&�T��*�T����U�3�U�PInfo����ATTR������proj����decl��rec_on��������TD���V�����9?��V
�
\��V��V"���8����V6��VD��D���VS��b��V^�$�Vo�&�V��*�V����V��3�V��&�U�&�$������o�b�>��gba`\[�#�����TD���V����[E��rec���[�PInfo����ATTR������auxrec��prt��auxrec��rec_ondecl��cases_on����[I�[R�PInfo����ATTR������auxrec��decl��to_ring���s�TC�
�����TC�mk�X1�X��Z��Y�Y�Y��add_left_neg���add_comm�Y�Y��Y��Z���one_mul�Y��mul_one�Y��left_distrib�Y��right_distrib�Y�PInfo����VMR��_lambda_1VMR��_lambda_2VMR��_lambda_3VMR��VMC����������_fresh%�2
VMC��������
VMC����������
VMC����������
����
ATTR�!d��classring��ddecl��to_no_zero_divisors���s�TCno_zero_divisors�����TCno_zero_divisorsmk�[p�Z���eq_zero_or_eq_zero_of_mul_eq_zero�Y�PInfo����VMR��_lambda_1VMR��VMC����������_fresh%�2j
VMC����������
ATTR�!d��class����ddecl��to_zero_ne_one_class���s�TC�O������TC�l�Z��Z���zero_ne_one�Y�PInfo����VMR��VMC��������

ATTR�!d��classzero_ne_one_class��ddoc��A domain is a ring with no zero divisors, i.e. satisfying
 the condition `a * b = 0 ↔ a = 0 ∨ b = 0`. Alternatively, a domain
 is an integral domain without assuming commutativity of multiplication.decl��no_confusion_type�����P��v1�V�v2�U1�����������V����U1�����[���TB[����>���\�`�ac�)��b[�[��[��[��
`��ac�)���V[�
��V��bj�	\�Tl��g\[�T��g���7���������	��T�����PR�a`\[������������[������>��=�*����bgb�[���@����b��o����V_�V`���[�[��[��[���o�����V_�V`�Va�Vb[�Vh�Vi�$�%���U��+x�+y�1�$�\[�U��U��&�'�$��(�$��)�&�T��V��V�b�V��V����\#�\!�\!�*�+�$��,�&�-�&�V��W��W�g�W4���&"�$��\4�\1�\1�����&���&���V��\>�V��V������W��-l�W����W��\I�3���&�T��T��o�-A�Wk`�[��&"���TB�&"���$���?����&2��&3��&5�&P�-����&P[�\`�\a�\`�
�&3���&5�\]�-��-����&P[���&P���&P���&P�&��,��,����&�\[���&����&����Ai�����&��&�'�&����&����&��PR�&�a`\[���&����&����&���&��\����&���&��&�'�&����&����&�gb�\���I����&���&���&��&��&���&�[�\��\��\���&����&��\��\����&��1�&�[�&��>�&��$�%�&��&��&����&��1�&�\[�&��>�&��&�'�&��(�&��)�&��'�'��'b'�'���'���\��\��\��*�+�&��,�&��-�'�'!�'!��'!g'�'!���'!�$��]�]�]�����&����'���\��]���'!���'!�����'G���'G���'G���]�]�3���'���'���'�o�'�>�'`��add_eq�@L�&��$�zero_eq�]�&���neg_eq�C2�&��omul_eq�Ji�&��>one_eq�'u�&���'u�'!�PInfo����ATTR������prt��decl��no_confusion������������V����U1h12�[������\[���������V����U1���]q��]�V�TB\a�]}h1a�TB`[�]ra`\h11�]}���]�^`���]��]�[��@���a�b�g�>����[�]��]��]��
b��g�>��2��Uq[�����������	��T��T�\[�[�������?�����>��=�*��*��PR�ba`\[���b���b���b��b�]����b��o�T��4��������gb�]���J����������$��T��T��T�[�]��]��]�������$��T��T����$��1�$�[�U�U�$�%�$��T��T����&�1�&\[�V��V��&�'�&�(�&�)�&"�V��WL�WMb�V��V����^
�^�^�*�+�&�,�&"�-�&2�&3�-P��&3g'�&3���&3�$��^!�^�^�����&"���&2���^�^+�,����&3�����&5���&5���&5���^6�^;�3���&2�-l�W��o�&2�>�&2`�����Ab�$��$����^6�������At�o�o���KE�>�>���&����&���Au�$���&5����Aa�b�^`��^cb�PInfo����ATTR������no_conf��prt��decl��inj�����8|��UD�
��UQ��U\���DE���Up��U}��9s��U�����U��$�U��&�U��*�U����U��3�U���A����&��&��&"�V��V��V�[�^��^��^��
�&���&"�V��V����&2���&2[�-l�W����&2�^�^���&3���&3\[�,��^2���Ku�����&5�\]�-��-��-��PR�&Pa`\[���&P���&P�\r��&P�^����&P��&��^X'�&����&����&�gb�^���KE���&���&���&��\��&���&�[�^��^��^���&����&��\��^����&��1�&�[�&��>�&��$�%�&��&��&����&��1�&�\[�&��>�&��&�'�&��(�&��)�&��\��\���&�b'�&����&����_�_
�_
�*�+�&��,�&��-�&��&��&���&�g'�&����&��$��_#�_�_�����&����&����_�_-���&����&������&����&����&����_9�_>�3���&����&����&��o�\��\�`���TB�&��U�&��&��&��&��&��&��&��&��&��&��&P�&5�&3�&2�&"�&�&�$��_R�$������o�b�>��gba`\[���B��&��$����_9�&������L"�&��b���_w�&���_9�&Pb����8|��UD�
��UQ��U\���DE���Up��U}��9s��U�����U��$�U��&�U��*�U����U��3�U���A���^��
�&��^���^����Ku���^���^���KE��^���&���^��$�_�&�_�*�_2���_F�3�_O���_v��no_confusion�S�&��_��U�&��&��&��&��&��&��&��&��&��&��&��&P�&5�&3�&2�&"�&�&�_��$��$������o�b�>��gba`\[���_y���\��&��$����C+�&������C3�&��b���']�&��>���];�']�&3���'s�'!�&"���@S�&��$����];�&����_��&��b\���_��_�[���_��_����_��_��PInfo����decl��inj_arrowl�����8|��UD�
��UQ��U\���DE���Up��U}��9s��U�����U��$�U��&�U��*�U����U��3�U���A���^��
�&��^���^����Ku���^���^���KE��^���&���^��$�_�&�_�*�_2���_F�3�_O���_vP�������C,�&��&���\��&��$����@K�&������@T�&��o���_�`����8|��UD�
��UQ��U\���DE���Up��U}��9s��U�����U��$�U��&�U��*�U����U��3�U���A���^��
�&��^���^����Ku���^���^���KE��^���&���^��$�_�&�_�*�_2���_F�3�_O���_v�������`>�Ca�]3�'�&���`3���_����]3�&��>�\��&����inj��'!�'�&��&��&��&��&��&��&��&��&��&��&��&P�&5�&3�&2�&"�&�&�$��$������o�b�>��gba`\[�Ca�`3�`p�C��`f�`q�`��Ca�_��`o�C��`3�`p�`��Ca�`k�`n�C��_��`o�`��C��`k�`n�`��PInfo����ATTR��d��class��declmul_eq_zero��_inst_1�TCab���"�#��to_has_mul[��[�2��to_has_zero[�`����"�`��9�`����TC���W�`��`�eq_zero_or_eq_zero_of_mul_eq_zero[�`�o�`�orelim�����`�\�`�\[^�a]���`�\�`��ah�aG����`�`�`�`\[���`�`�a��a�a�aMP�a�a�Q-_a`P�����`�a�`�a`\[�	��`�a�a%���a'[�a-���a�a�2������`\h�a�a��a�a�aM�a �aI�QJ_a`�a/���a(�a-�a7�a�U�aA[�PInfo���doc�Simplification theorems for the definition of a domain.ATTR����declzero_eq_mul����TCab���"�`��`��`����TC��G�af�`�MP�af�`��O�ad_aOP��]�a�a	���a�a���aw���af�`���ad�`�eq_comm[�`��`�G�`����`��`�MP�`��a��aq�`�_aOP���a�aw�a{���`��`���`��`�mul_eq_zero[iffrefl�`��PInfo���ATTR����declmul_self_eq_zerou_1α�_inst_2domain�x���6=�<���b���b�;���b�a��6=�a�����a��G�a�KMP�a�KU�a����a��a�K��a��a�U�a����a��a��a���a��a���b��a��a�or_self�a��a��a����a���a�K�N�a���PInfo���declzero_eq_mul_selfu_1α�_inst_2�a�x���6=�a��a��a��!��"�a��#G�a�KMP�a�KU�a��a�K��a��a�U�a��a��a���a��a��� �a��a��a��a��a���PInfo���declmul_ne_zero'����TCabh₁�Q
�`�h₂���a��`�a�a���TC�%�&�'�b#�(�b$h�a�`��Q.�a-��[�a-�O��`�a�a%\[�PInfo�$�
doc�$The product of two nonzero elements of a domain is nonzero.decldomainmul_right_inj����TCabc[ha���a����a[�a[�����TC�,�-�.[�/�bCG�bK������������a?�bE�bH�����bT��MP�bK�b_�aq�bI_aOP�����a'[\�a'\�b0�az�bl���bK�b]�!O�b]�bI��b]�bIsub_eq_zero`�bT�bE�bHG�b_��������aA�bV[�b\��MP�b_�b��7�bV�b�[�b�[_a`P�������������a=a`�bf�bi�	��2���b��bl���Q1�b��bl���b_�b��Q9�b��b�mul_sub_right_distrib`�a?[G�b�������b��a���a��MP�b��b��aq��a�b�[�a_aOP���������	����b��b�[\�b��bl�bo���b��b���b��b��a�`\�b�[G�b����� �
��
��bZ���bT�a��MP�b��b���b��b�U�b����b��O��b���O��Oe_1����O��Oe_2������`��\���[�b��b���b��b����bT�a�a�-�a�b��O���b��O��O��b���c�b�or_false�b����������b~�PInfo�+�
doc�+Right multiplication by a nonzero element in a domain is injective.decldomainmul_left_inj����TCabc[ha�bC���a�a�����TC�:�;�<[�=�bCG�cI����bV�a�cF�b\��MP�cI�cV�aq�cG_aOP���a*�a(�bl�bo���cI�cT�bw�cT�cG��cT�cG�b~�a�cFG�cV����b�[�b��b\��MP�cV�cx�7�bV�cs�cs_a`P�����b��a)�c\�b��bl�b����cV�ct�Q9�ct�c�mul_sub_left_distrib`�a?[G�cx�����b��b���MP�cx�c��aq��a�b��a_aOP�����b�\�b��b��bl�bo���cx�c���c��c��b�[�b�G�c��b�MP�c��b���c��b�U�c����O��b��b��c�b��O��c*�b��b��c"��c��b�false_or�b������c6�c;�PInfo�9�	
doc�9Left multiplication by a nonzero element in a domain is injective.decleq_zero_of_mul_eq_self_right'����TCabh₁���*�O���[h₂�a
�b����TC�D�E�F�c��G�c��resolve_right�b���b��	M�O�`�c�`\�a�6���a�c��a�c��c��c��c�G�d��c~�cs�c��aMP�d�d�7�cs�c�_a`P���a(�b����O�a�c�a`�a-�Q1�a-���d�d	�c��c�G�d��c~[�aMP�d�d*�7���e�f���a?[�	M�	N�d/_a`P���b��c�[�c��d�a-���d9�a-���d[�`�d/[G�d*��c}[MP�d*�dP�aq�d)�b\_aOP���d9\�a-���d*�dP��dU�dP�b~�c}[G�dP��MP�dP���7�a_a`P���d8\�Q1\���dP[�O��mpr�b%�c��b\�b%�c�sub_ne_zero`�bT�c��PInfo�C�
doc�CAn element of a domain fixed by right multiplication by an element other than one must
   be zero.decleq_zero_of_mul_eq_self_left'����TCabh₁�c�h₂]�a�b����TC�P�Q�R�c��S�d��resolve_left�c��b��6���a�c�[�a���c��b��b��c�[G�d���b��b��c�[�aMP�d��d��7�b��c�[_a`P���a'�d\�a-�d���d��d��b��c�[G�d���b�[�aMP�d��d��7�d2�d5[_a`P���b��b�[\�b��d\�a-���d��a-���d�[�Q<�d/[G�d���b�[MP�d��d��aq�d��b\_aOP���d�\�a-���d��d���d��d��b~�b�[G�d���MP�d����7�bE_a`P���d�\�dr���d�[�O�d��PInfo�O�
doc�OAn element of a domain fixed by left multiplication by an element other than one must
   be zero.declmul_ne_zero_comm'����TCabh���`��`����d��a���TC�Z�[�\�e)mul_ne_zero'\[ne_zero_of_mul_ne_zero_left\���a=\[ne_zero_of_mul_ne_zero_right\�e:�PInfo�Y�
doc�YFor elements a, b of a domain, if a*b is nonzero, so is b*a.declintegral_domainto_domain��sintegral_domain�V���b�eM�U�cadd�cadd_assoc�czero�czero_add�cadd_zero�cneg�cadd_left_neg�cadd_comm�cmul�cmul_assoc�cone�cone_mul�cmul_one�cleft_distrib�cright_distrib�ceq_zero_or_eq_zero_of_mul_eq_zero�czero_ne_one�PInfo�a�'prt�aVMR�a_lambda_1VMR�a_lambda_2VMR�a_lambda_3VMR�aVMC�u�'������_fresh�4
VMC�v�'���z
VMC�w�'�����z
VMC�a�'�b��u
�v�w
doc�aAn integral domain is a domain.decl�aequations_eqn_1���b�eM�V��a��e���b�eM��V��e��PInfo�|�'ATTR� ���|EqnL�|SEqnL�aATTR�!d�aclassdomain�addecleq_of_mul_eq_mul_right_of_ne_zero���b�eMabc[ha�����`��`��e�\[h����a�a�e�`\[�e�[�bl��b�eM�����[���e����e�
�������������b��e�a`���a#�a$�e�[\�e�\�	��a+�e�

��c�"�`�b�`�b�e�ba�Z�[�\�]�a=b�e�\[`�
��`�b�e�

��j�^�_�`�a�a=g�e�gb`\�T�`�g�`�g�e�
����������a=��e��ga`AnnotcheckpointAnnothave�c��e�ja�e��`�g�e��e�a[Annot��Annot��G�e�c�e��"�
K�
L�f�e�\`�f[`�e�MP�e��f!�\�f�e�`_abPj�j�`�g�e��e�a�e�j�e����e��f�b�b�e�\[`G�f!c�e��e�MP�f!�fC�\�e��e�\`�e�[`_abPj�e��j�k�l�m�e�`a�fR\a�e��f2���f!�e����e�Annot��Annot��G�e�KMP�e�KU�e����	��2���e��e�K�2�e��ft���e��������fr�e��?���e��e��ft�f{�e��e��e��f���e��e��e��e��e��G�e���e��e��e��qa�e��e��e��e��G�e���fu�ftK�a�ft��PInfo�~�*
doc�~Right multiplcation by a nonzero element of an integral domain is injective.decleq_of_mul_eq_mul_left_of_ne_zero���b�eMabc[ha�e�h��e�[�f��bl��b�eM������[���e����f�
�����e��e�\[�f��e�

��c�e�`�e��e�
�f�d��f�e��fa�e�[Annot��Annot��G�f�c�e��f`\�f�[�e�MP�f��f��\�f��e�_abPj�f+a�e��e��f2���f��f��c�b�e�`\[G�f��fCMP�f��fC�\�e��f�\�f�[_abPj�e��fRa`�g\�e��f2���f��e��feAnnot��Annot��G�f�KMP�f�KU�f��fvK�2�f��ft���f��f~�f��f��f��ft�g"�e��f��f��g%�f��f��f��f��f��G�f��f��f��f��f��f��e��e��f��f���PInfo���1
doc��Left multiplication by a nonzero element of an integral domain is injective.declmul_dvd_mul_iff_left���b�eMabc[ha�e������O[`��`�`\�f��f��gT��b�eM������[���e�exists_congr`c`���f������	��SF�O[a�gLa�gNa`�f���`���gm[d`G���gp�gv���gc���������e�\�g[�gvMP�gz�g���a�g�g�[_aaP��c�f��"�
K�
L�sb�O[b�gLb�gNba�f��	�g�\���g��g����gz�g�mul_assoca�g}\[G�g����gs�g��gvMP�g��g��aq�gc�f��g�_aOP���g��"�������e�`�g�\�g��az�g����g��g���g��g�domainmul_left_inja�e�\�g��a��g��PInfo���9
doc��Given two elements b, c of an integral domain and a nonzero element a, a*b divides a*c iff
   b divides c.declmul_dvd_mul_iff_right���b�eMabc[hc���e����gT�f��e��gT[��b�eM������[���g��gb��`���e��gm�f���`�b0�gm\d`G���h�h���g������pa�ra��a�gg�h\�hMP�h	�h�g��h�h_aaP��c�fH[�g��f�c\�g�`���h$�h,���h	�hmul_right_comma�h\G�h���b0�h�hMP�h�hD�aq�g��e��h_aOP���h$�"���pb�rb�h
b�g��hT`[�h,�az�h,���h�hB��hK�hBdomainmul_right_inja�e�[�h�a��hB�PInfo���>
doc��Given two elements a, b of an integral domain and a nonzero element c, a*c divides b*c iff
   a divides b.declunitsinv_eq_self_iff���b�eMu�����a=�e��������a=�e���h���h����h��h���h��h����h����h��h���b�eM���hG�h����h��h�MP�h��h���h��h�U�h��h��h����h����h��q�h��s�h��h��h��h��h��aq�h��h�groupto_has_inv�h��h�_aOP�	�
�a=[�e�[��h��[�h����h��h���h��h�inv_eq_iff_mul_eq_one�h��h�MP�h��h�U�h��h��h��h��h��h����h��h�_a�h�P�h��h����h����h��q�h����h��h��h��h��h����h��h���h��h��h���h��h��h�MP�h��h�U�h����h����h����h����h��h��i�h��h��aq�h�_aOP�h��h��h��[�h��h����h��i��h��iunitsext_iff�h��h��h�MP�i�h�U�i	�����h��i�iA�i�h����i�h���h�_aP�"���h�[���h�[���h�[�/�h��h��iX�i'�9�i[���i�iCunitscoe_mul�h�MP�iE�h�U�iE�iD�i@�i�h��i�h��h��iH�i�iJ�h��h�_aP�"�#�o�O��h��iX�i~�i[�i����iE�is�ig�h��h�MP�it�h�U�it���iA�ip�i�����������integral_domainto_comm_ring�ip�h��aq	�`���to_no_zero_divisors�iA�iA�i��ip�ip_aOP�i��i}�iX�i%�iX�h����it�i���i��i�mul_self_eq_mul_self_iff�iA�ipMP�i��h�U�i��h��i��h��aq�i�_aOP���"�i~�i��i��J�K�L�M���i�[�i����i����i��h��bw�h��i���h��i��i4�h�MP�i��h�U�i��h��i��i�h��h��iH���������h��ip_aP���h��i%�i��j�i����i��i���i��i�unitscoe_neg�h��h�MP�i��h�U�i��h��h��aq�i�_aOP�j�i��iX���h���h��i%�j���i��h��bw�h��i���h��i��i��h�MP�h��h����h��h��h��j6�a��h��PInfo���Cdoc��In the unit group of an integral domain, a unit is its own inverse iff the unit is one or
   one's additive inverse.declunitscoe_dvd��_inst_1�lau�� �u�����	�,��[���jW[���jW[�/�jV����l�����jU��[��[�����i�������S\���jl\���jl\��\�S�#�$���ja��jW�h��jVG�`��j�jb�j�KMP�j�KU�j��`�K�S�W�j��	mul_inv_cancel_left[�jV��j�K�[��PInfo���Rdoc��Elements of the unit group of a commutative semiring represented as elements of the semiring
   divide any element of the semiring.ATTR�����decl��dvd_coe_mul�����l��b���jW�����jk�jw�j�����l�������jW�W�j��j�_x�j�_a��\[�S������S)`���j�`���j�`��`�S)��dcases_ona��ac�"�
K�
L�g�a\�������j�b���j�b���j�b��b�j�[�j�`���ma�oa`\�����S�[�����SHa���j�a���j�a��a�SH�mb�oba`\wah�j�id_rhs��g��g�>a�	s�	t�	u�s�gb��g�k�j�k�l�sgb�����
��kg���k$g���k$g��g�k#��k$�g�k#\Gk�k!a�k6k�j��g��g�k#�k@a�k5MP�k:�kE��g�kA�k@�k5_agP�k�k�k������k����kQ����kQ�����kP��kQ���kP`�k���k:�kD�g�kD�kM�g�g�k>a�k5G�kEk�k@�k!`�k/\�k5MP�kE�k��kJ�k8_agP�k�	s�1N�1O�kP�k�b�kb�k�k��kb���kE�k}�kn�k}�k�G�k�k`MP�k��k��kJ�k@�k@`�k|�k5_agP�k�k��ka�k\`�kb�kg���k�`unitsmul_inv_cancel_rightg�k#`\�g`_x�j�_a�j��j���a�h)�j����j�[�k�j���a���k��k
_xg�m��o�gb�k�k�`�Mg�k��k�`�kn`�k�dvd_mul_of_dvd_leftgba�k�dvd_mul_rightgba�k|�PInfo���Vdoc��In a commutative semiring, an element a divides an element b iff a divides all
   associates of b.ATTR�����decl��dvd_coe�����l�����jU�����jb�l�*�+�jV����l�����jU
�����l�j�l�jb�l	�!���j��jk�S�jx�j��S���j��jx�l��l�lchas_dvd\�`�ae_2e�g��e_3�����m�>a`�l$\���l$[�����l�jx�o\�S�jx�l�l���l��dvd_coe_mul[�lAnnotsuffices�PInfo���\doc��An element of a commutative semiring divides a unit iff the element divides one.ATTR�����decl��coe_mul_dvd�����l�������jW�����jk�j��j�����l�������jW�W�lX�j�_x�lX_a�j��S�[�j��j���a�h)�j��j��j����j��j�\�k[�k	��a���li�k�k�k"�k|�k�_xg�>�k�kO�k��k!�k8�k|`�k��l}�kn�k8�ls�l}0g�l��l��l}�k��l��kn�l}�l��l��k@�kA�k|�kA�k@�k|�k8�j�k<�pgcomm_monoidto_comm_semigroupg�~to_comm_monoidgb�k|is_associativeassocg�k@semigroup_to_is_associativeg�k>a�k|�gg�l��k|�l��k8is_commutativecommg�l�comm_semigroup_to_is_commutativeg�l��k|h�j�
���ld�j��S.�!�ln�j��SM�lo���l!aab��ge_2��������>e_3�����m�oa`�l�\���l�[�j��lm�lm�G�lm�l�[�a�SH[mul_dvd_mul`\[�j��S.��coe_dvd`\�S.Annot���PInfo���adoc��In a commutative semiring, an element a divides an element b iff all associates of a divide b.ATTR�����decl��ne_zero��_inst_1�TCu�����h|�Oa�������h����m���m���m��`��`�����TC���m��m�m#�cases_on[�
�h����	�m-�]�������e9\���m1\���m1\�js�m0�a�O�u_val[u_inv\u_val_inv��d2�d5u_inv_val�����������b������mG�c�������e�ab���mSb���mSb�j��mR��b�mR[�
��e��e�a�g�������e�bg���mng���mng�k+�mm��g�mm\[t_1g��>�������e�g����m�����m���kX�m�����m�`\[H_1���[��`���`���H_2�,1������>���>�a=�>��>���m��>���m��>���>�m����>�m�ba`\���>�`��>�`��>�[�m��O��T�e��e�b��j�X�gb\����X��g��������	�*��*�����a=��`���m�����	����>���>�m�a�>�>�m��������b���b�a=�b�>�b���m��b���m��b���b�m����b�m�b�]��`��b�`��b�>���,1�������o���o�a=�o�b�o���n�o���n�o���o�n���o�n[g���o�`��o�`��o�b�n(�n'��o�n'�O����>�	s�1N�1O�m��m�\�
��m������m�`�X����m����m��m��X��>�a�m����,1��n�n�X��b�>b�n�n\�n[��b�n[�k
�O��!���V�`��o�n,�n.g�+h�O��o�c��o�b�O�U�nq���n.�np�O���o���e_1�V_��$���$�e_2�U�f�&O�T�`�T�\q�&��&O`\�T�[�nj�n.�1�o�o�"�o�ng�np�np�n4�np����n)�Os�o�nn�np�O��O��o�nn[`[�k��m��-�j�m�m��PInfo���ldoc��Every unit in a domain is nonzero.ATTR�����EndFile