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�Z@J2initalgebraringlogicbasic�߲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}traversedecldivision_ring_has_div'uα�_inst_1division_ringhas_div��has_divmkalgebradiv�PInfo�	prt�VMR�VMC�	��algebradivdoc�Core version `division_ring_has_div` erratically requires two instances of `division_ring`decl�equations_eqn_1���eq����eqrefl�PInfo�	ATTR_refl_lemma���EqnL�SEqnL�ATTRinstance���class����decldivision_ringto_domain_proof_1��sabhhas_mulmul has_mulmk division_ringmul has_zerozero has_zeromk �zero or.90929 :A�����7classicalby_contradictionFhnnotFdivision_ringmul_ne_zero9 mtQ .Qzero_ne_one_classto_has_zeroQdivision_ringto_zero_ne_one_classQ98aWY0Q2Q9orinlajVd`8Xisorinrus�PInfo�	decl����domain��domainmk�add�add_assoc2�zero_add�add_zero�neg�add_left_neg�add_comm&�mul_assoc�one�one_mul�mul_one�left_distrib�right_distrib���zero_ne_one�PInfo�	prt�VMR�_lambda_1VMR�_lambda_2VMR�_lambda_3VMR�VMC�	a�_fresh�c�
VMC�	��
VMC�	���
VMC�	���
��
decl�equations_eqn_1������������PInfo�	ATTR����EqnL�SEqnL�ATTR�d�class��ddeclinv_one��_inst_1has_invinv�to_has_invhas_oneonezero_ne_one_classto_has_one�to_zero_ne_one_class����eqmpr��has_divdivdivision_ring_has_div��\��ideq��eqrecu�_a��������������inv_eq_one_div����������2����_a������\��� �%��one_div_one��PInfo�ATTRsimp���declinv_inv'��_inst_1discrete_fieldx���fieldto_division_ringdiscrete_fieldto_field�b���Z�dite�.no_zero_divisorsto_has_zero�to_no_zero_divisors��`discrete_fieldhas_decidable_eq�s�fh�t�!� � �[ �] ��!����/�l �n � ����������� _a �:�9�9�[9�]9 ��:�����%�������!��/��integral_domainto_no_zero_divisors discrete_fieldto_integral_domain ������������_a �:����<�l9�n9�9����:�����%����inv_zero ���!������������_a �:��<����9��9  ��:���%������ ���N�tdivision_ringinv_inv ���PInfo�ATTR����declinv_involutive'��_inst_1�Zfunctioninvolutive���[�]���Zinv_inv'�PInfo�declunitsmk0��_inst_1ahane�k�m�o�units ringto_monoid �to_ring ����	�
��&unitsmk �/�}�~mul_inv_cancel inv_mul_cancel �PInfo�)VMR�VMC�)��
�	�
doc�Embed an element of a division ring into the unit group.
 By combining this function with the operations on units,
 or the `/ₚ` operation, it is possible to write a division
 as a partial function with three arguments.decl�equations_eqn_1���	�
��&�0�� �H��	�
��&�0�R�PInfo�)ATTR����EqnL�SEqnL�decl�inv_eq_inv���	u�'�)�+��coe�'�)�+�coe_to_lift�kcoe_base�kunitshas_coe�j��k�has_inv�j��y��	��diffmp�"semigroupto_has_mulmonoidto_semigroup�j�����������mul_left_inj�j����������#to_has_one�j�����������_a�!#�� �� �/�e�0 �n�0 �q�0 �t �/����0�{ �/���:��!���%����unitsmul_inv�j������A����������mul_zero_classto_has_mulsemiringto_mul_zero_classringto_semiring�to_ring����_a�!� �� �/�����%���A�=��unitsne_zero����PInfo�,ATTR����decl�mk0_val���	aha�&!���R��	�5�6�&rfl ��PInfo�4/ATTR����4ATTR����4decl�mk0_inv���	�5ha�&!�:��;��	�5�9�&���PInfo�81ATTR����8ATTR����8decl�mk0_coe���	u�dh�!���%�M�P����	�;�d�<�+unitsext �/�-����-�PInfo�:3ATTR����:decl�mk0_inj���	abha�  /�����-hb� 9<������ iff�'Q�)Q�+Q�Q9�NQ9 �XX��	�@�A�B�E�C�L�Dintro�^�`h�^�inj_arrow�)�l�+�l��lQ9��l��lQ9�=�lQ9�C�lQ9 �y �} �� �l9 h_1��h_2�������lQ��9h�`�4�l�s�N�lQ9�� �PInfo�?6ATTR����?decldiv_eq_mul_inv��sab!�  #�to_has_mul �B�:��L�M�N����PInfo�K@ATTR����KATTR���div_oneATTR���zero_divATTR���div_selfdecldivp_eq_div���Lau�k!divp �/������L�T�U�kcongr_arg  �����:����unitsinv_eq_inv �PInfo�SDdecldivp_mk0���Labhb�@�D:��9�)9�+9�H�N9 �99 ��L�[�\�]��divp_eq_div9 ���PInfo�ZGATTR����Zdeclinv_div���L�M�Nha�Ehb�LW�Q�Q9�QQ9 � ��L�M�N�`�E�a�LeqtransQ�"Q��Q��Q��Q��Q9 ��3��5� � mul_inv_eqQ9�5 inv_ne_zeroQ9�W�<� W�3�;� ���M�R�Q�9_aQ���"�l���l���l���l���lQ�y���z��l�lQ 9���b�z�l�%�M�Q9Q�P�PInfo�_Kdeclinv_div_left���L�M�Nha�Ehb�LW��;��*��Q�nQ�R ��L�M�N�h�E�i�L�bsymmQ��O �3�;�5�A �PInfo�gNdeclneg_inv���L�Mh�&!has_negneg add_groupto_has_neg add_comm_groupto_add_group �to_add_comm_group �.�;�:����L�M�l�&���!����� ��� \ �����������;_a �:��9��9��9��9������ ����:�����%�����) �������������������_a �:�����9  �9�9\9 ���
�%����������������������� �������#�����!_a ��
�
����%���"div_neg_eq_neg_div �������PInfo�kQdecldivision_ringinv_comm_of_comm���L�M�Nh�EH:"9��9�I�HW���;���;��L�M�N�z�E�{�NeqmpW�*��Q��Q�T�;���_�Q�Q^�;�b�R�W�_�c��Q�T_aQ����Y���l���l�s�z �Y���l�n�l�q�y��l��l\�lQ �z�|���z�%�kone_mulQ�T�Z�b���_�` �;�k�W�� _aQ��|���y�z9 �z�|���y �z�%���f�CQ9 �Z�b���O�� �;���W�`�_ _aQ��|�����z��9 �z���%����������mul_assocQ�]�; �ZW�`�_�f�����W���q_aQ����z�y �������z���%��mul_oneQ�T�ZW�`�����;�����W�4�;_aQ����z���y9�z�����z�����%��f�=Q9 �ZW�`�_���;����W�_�� �;_aQ����z�y�� 9�z�����%�&��� �;�ZW���O���;���&�W�_�`���;_aQ��������.�z�������%�D�$�����;��QQ����xQ�����z�������PInfo�yTdecldiv_ne_zero���L�M�Nha�Ehb�L� Q�Y�lQ����L�M�N���E���LT�5�H�PInfo��\decldiv_ne_zero_iff���L�M�Nhb���M�F��K�F�K��L�M�N�����h����V;�K:��Kh���W��{W��{�{�������W _aQ����j9 .�l�l�l����j ���%���{���W`�{�������W��Q99`_aQ����j�� ���Q���%��`zero_divQ9��`ha��div_ne_zeroQ9 �PInfo��_decldiv_eq_zero_iff���L�M�Nhb���M������L�M�N�������MN��N����not_iff_not����classicalprop_decidable�����div_ne_zero_iff9 �PInfo��bdecladd_div���Labc :�has_addadd9distribto_has_add9�to_distrib9�������L������ ��9�����9 ����5div_add_div_same9 �PInfo��fdecldiv_right_inj���L�M�Nc hc�F�K�MW���`��L�M�N�� ���O��U�MW��Q�T �X�R�`���U�f�W�P_aQ��M�����k���M�Q�n���%�U�b���b�Pdivp_mk0Q9 ��f�M�c�^�a�`���f���W�R_aQ��M�����l�s9���n���M�����%�f�������R������M�`�`�������
���_a���M���� �����M���%���`propext���`divp_right_injQ�T�a iffrefl�`�PInfo��ideclsub_div���Labc :�has_subsub9add_group_has_sub9�����%�(��L������ �0���������2�7�:���div_sub_div_same9 �PInfo��ldecldivision_ringinv_inj���L�M�Nha�Ehb�L�MW�;�5�`��L�M�N���E���L�h��`h�������y�z �������l9_a�l���Q9��9�%������l�9��lQ9����c����8� _a�l�������9�?�%��c�,�c �0 ��8���c�c���8�S��z_a�l��?���������Y�%�8���l�c�^ xQ�y�PInfo��odecldivision_ringinv_eq_iff���L�M�Nha�Ehb�L�M�W�5 ��L�M�N���E���L���MW��;�5�~��������{_a���M���z ����9�����%���eqsymm
����{�����{division_ringinv_injQ9�;�F ����M�}���~����������_a���M��������%��������eq_commQ���5����M�~�~�������W��_aQ��M������M�����%�� �z ���~�PInfo��rdecldiv_neg���L�Nahb�E:�'�����'��L�N�����E���:������������������	�9�9��_a9�W���Q��Q��Q��Q�S �	� W�	�%���	�0�	�	division_ringneg_div_neg_eq9 ��iffmpr�F��<add_monoidto_has_zero9add_groupto_add_monoid9�����	2neg_ne_zero9����	:�	�����	�	E�	
����_a9�W���	
�	�	�	�/�	O�	�	W�	Q�	�%�	neg_neg9����	E:���9�����	E�	k�	
�	C_a9�W�	Q �	�	�%�	E�	ineg_div9 9�	i�PInfo��vdecldiv_eq_iff_mul_eq���L�M�N�� hb�L�M��W�� ��L�M�N�� ���L�h�	��	�h�	������ 9������ 9���	��	��_a�l���"�������n������l 9Q���	�9Q�%�	����,����	���9���	��	���b�g��lQQ9  _a�l����	�������lQ99Q�$Q�%�	�9div_mul_cancel�lQ9 �h9h�	�������j�	� ���	��	�� _a�l����	� ���	�9 �%�	��	��,�	�9��	������	��
��	��b  _a�l����	��	�9 �$ �%�	�mul_div_cancel�lQ �h�PInfo��ydeclfieldto_integral_domain_proof_1��Ffieldaba!#%�mul ���/1�zero �
D8;<=�
K9���� D�
V����
@�eq_zero_or_eq_zero_of_mul_eq_zero���PInfo��	decl�������
@integral_domain����
@integral_domainmk��add��add_assoc��zero��zero_add��add_zero��neg��add_left_neg��add_comm��mul��mul_assoc��one��one_mul��mul_one��left_distrib��right_distrib��mul_comm�����zero_ne_one�PInfo��	prt��VMR��_lambda_1VMR��_lambda_2VMR��_lambda_3VMR��VMC��	���_fresh�wd
VMC��	��
VMC��	���
VMC���	����
��
decl��equations_eqn_1�����
@�
h����
�����
@�
h�
��PInfo�
�	ATTR����
EqnL�
SEqnL��ATTR�d��class����ddecldiv_eq_inv_mul��_inst_1�
@ab!�����
C#�����
D�}�~�
C���
@��mul_comm comm_ringto_comm_semigroup nonzero_comm_ringto_comm_ring integral_domainto_nonzero_comm_ring �
� �
��PInfo��declinv_add_inv����
@abha�A/���
�hb�G<�����
SW�Q�Q�Q�P�Q�[Q9���
� �
����
��
� �*�����
� ���
@����
���
���W�
�����
��
��c�d]�
� �
�������W�
�_aQ�����l��l��l�o�p�[�lQ�v�w�)9�0 �g�h�)�.9 �Y�}�~�*9 ���.�3�@�%���)Q�
� ��W�������W�W�
�_aQ����.�g�	��)�)�������)9�3�@���e�@�%��T�N��WW��
��
��
��.�
� �*�+�,�-�x ����W���W�{��T_aQ����e�c �@�Q�@�%�W��one_div_add_one_divQ9 �����PInfo��declinv_sub_inv����
@abha�
�hb�
�W��Q��Q�	�	�
��
��
���� �
���
@�#�$�%�
��&�
����W����
����������$_aQ������l���l���l���l�+�1�3�7�� 9�?�����3���%����O���W���T���������\_aQ������d�3���������%���T�s���W������	�	�x����������������W���T_aQ����������Q���%���div_sub_divQ9� ���W�����������5�W�*�[�\�O�
��c�o�:_aQ����_���������]�)�Y�Z�[�\�C�b �K9�b�O �����_�G�P�S���%����:��5W��0 �������5�n�W�= �?_aQ����_�G �P�S�����_�v�S���%�5 ���: ���l�PInfo�"�declmul_div_right_comm����
@abc :�����
R�E�F�
��������
@�.�/�0 �0�E��9��9��9�1�
R����
R�
R����div_mul_eq_mul_div9 �PInfo�-�declmul_comm_div����
@abc :�����������
@�3�4�5 ����������������	
����_a9�W�� �	����%�����0����mul_div_assoc9�
R������������
�	
����_a9���������%����mul_div_right_comm9 �	����PInfo�2�decldiv_mul_comm����
@abc ���������
@�;�<�= ��
,:���
+���
,�
4�	
����_a9������ �	�
>�%�
,������
4:���E��9comm_semigroupto_semigroup9�
�9�
�9�
�9�
�9 �
+���
4�
b�	
�
\_a9�W�
�
>W��
>�%�
4�
^�
�9�
Y��
b:�
+�
+���
b�
��	
����_a9�W��*�[�
PQ�
�Q�
�Q�
�Q�
�Q9 �
>�
A�%�
b�
+�
�	��
+�PInfo�:�declmul_div_comm����
@abc :�����������
@�D�E�F ��
�:���
����
��
��	
����_a9�W�	�����	�
��%�
����0���
�����
�:���
\�
����
��
��	
�
g_a9�W����
�W�
m�
��%�
��
��
y��
�:�����
����
���	
���_a9�W��
� �
��
��%�
�����	���PInfo�C�declfielddiv_right_comm����
@�ca hb���
�hc�wY�y����7�79 �7�. 9���
@��L�M �N�)�O�-��6���_�S�5���6�B��_�?9 _a�l����	��	��[���l�N Q9�N�O9Q�$�V�%�6�@fielddiv_div_eq_div_mul�lQ9 ��B�A�?�K 9���B�o��_�? 9_a�l����	�����L�L �	������������������LQ9�V���%�B�n�c 9��o���?�Y�u�
P�l�
��l�
��l�
��l�
��lQ 9�n���o�����9 _a�l����|��9Q���|���%�o���
��l��9 �h���PInfo�K�declfielddiv_div_div_cancel_right����
@��La hb�)hc�-���4�79 �/���
@��L�W �X�)�Y�-������_�K�3 9�/��������_�3�_9 _a�l����U�NQ9�P�$�P�%����fielddiv_div_eq_mul_div�lQ�39 ������G�/�����	��K�t _a�l����{���T9Q�P���{Q�P�%���	��) �h�G�PInfo�V�decldiv_mul_div_cancel����
@��La hc�
�W�
=�
� �� ���
@��L�_ �`�
���7W����� �6���7�D�W�?� _aQ����=�3�7 9�/�Q�/�%�7�B���B�K��Q�
��� ��DW� �6���D�j�W���g_aQ����_9�/�%�D�	�Q�
����h�PInfo�^�decldiv_eq_div_iff����
@���L d9hb�-hd� �l�����;�M�����O���	��	��	��	��LQ�� 9���
@���L �d9�e�-�f���Dtrans����������9���������Dsymm����domainmul_right_inj����������mul_ne_zero'����9��M�����M���	����������)���+��������9�����������������9_a����M"�������n������[������������lQ��Q ����9 �������l ��9Q�M�����%��������������������9����M����Q���������'�����{Q99_a����M�������������)���+�����9��Q ���M���9 ���%��Q�	����LQ9��'�M�$������9�����'�^���X��_a����M���9�l ���M�g��%�'�[��[�c���9��^�M�$�	����
P���
����
����
����
����l����9�����^��������9_a����M�g�9�9��Q ��n�%�^��mul_right_comm������9����M�$�� 9�������������|_a����M�g���1�
P���
����
����
����
��������� Q��M�g��Q��%�� �P �����PInfo�c�decldiv_eq_iff����
@���L hb�
��MW��X����
@���L �s�
��Z�M�����c�d�Q�
�W�	�����a��t�e_1�b��v�e_2�congr

���MQ�M9congr_arg

��v��Q9�M ���aQ�z�le_1��a���|	e_2
�x
��2Q�59�y
�2�|�2�Q9�5 ����������PQ�
��	���K� ����������div_eq_div_iffQ9 �one_ne_zeroQ��PInfo�r�decleq_div_iff����
@���L hb�
��MW��W�� ���
@���L ���
��Z�MW����y��{�'���w�K��U�����N���z�K�����_� ���e� �m�PInfo���declfielddiv_div_cancel����
@��ha�
�hb�
�W�������
@�����
����
����W�	�
����������W��_aQ������� �Q �%����div_eq_mul_invQ�
� �����W�	�3�������W��_aQ����>�0�� ���> �%���3inv_divQ�
� ���d�������W���J_aQ����>�O ���%��mul_div_cancel'Q9 ���PInfo���decladd_div'����
@abc hc�N�
�W�
��
���
��
� ���
@������ �����W�{�
���|�����,�K��'���'��+cQ�|�l�|��e_2���|�,�|�-e_3�5�x�=��=�lQ�A9���=�|�=
Q9�A ���)add_commQadd_comm_monoidto_add_comm_semigroupQsemiringto_add_comm_monoidQ�-�
�� ���ZW�{�I�� ��{����� �yW�&�s��|�w�K�t��chas_addQ�|�l�|��e_2�9�|�,�|�-e_3�;�?��=�lQ��9�M�� �z�p�T�s�s���s�~���X��{���)�{�x �
�add_semigroupto_has_addQadd_comm_semigroupto_add_semigroupQ�d �w���w�w���w�z �d �e�w �}�ddiv_add_divQ9� �m�PInfo���decldiv_add'����
@abc hc�W�
��
�������
@������ �������,�����,�K���'�e�
����+���+���PInfo���ATTR���inv_zeroATTR���div_zerodecldiv_right_comm��_inst_1�Zabc :�������������Z������ �jD���v9 ���
b0��W���
��]Q9� �� WY�y��Q��Q99�0���(�2�K�#�0�)�#��0Y[]��X��!�0�)�!� Y�y���Q��0�A  �� �Hdiv_zeroQ9 �k����'�0�)�'�&�H�0�A�%�%���%�H�V�%���0��N��j�v�H�vQ9�H�(c0�z����g�h�(�]�lQ��9 ���� ���������l���lQQ���������z�l�z��e_1�9�|�,�|�-e_2�;�1�=��=Q��9�<�=�|�=�Q9�� �����(�l���������~�p�������l�|���|��e_2�,�|�-�|�2e_3���<�I�I��I�lQ��9���I�|�IQ9�� �������h�����T�lQ�������������� ��Z�l����������������������99�	�����9  �h ���l�� �h����N�zfielddiv_right_comm�l�� 9�PInfo���decldiv_div_div_cancel_right�����Zcab hc����W�� � �.����Z������ ���-���6b0�z������� 9��9�>�����F�����C�����C�@�������?�?�h�?�B�����B����9������99�	��9���?�E�����E�>������  �
���� ����fielddiv_div_div_cancel_right�l��9 �PInfo���decldiv_div_cancel�����Zabha�A��:������Z�����������b0��W� �!�2�����2�K���0�)��� �0�0�O�!�0�X�W�H�u���yfielddiv_div_cancelQ� �PInfo���declinv_eq_zero�����Za�M��c�s�t����Z��classicalby_cases�t��this�t��M!����!��true������eqtrans
����M�������'���������������z �z9e_1�v�|�l�|��e_2�9�1�,���Q��9�<�,�|�,�Q9�� �����( ������chas_inv �|9�|Qe_2���������� ������������������eq_self_iff_true ����������!�������������������*�����"��������iff_self��trivial���"�s�������Mfalse�J�����J����/Z �����Jα_inst_1ah�"�kZ�?iff_false_intro!�;/�P���D  ���	*�A�S�����mA��M��<Z9������m�����mN�J���}N���S�~nedef �Sa����e_1���N���J�����J�[�����~��not_false_ifftrueintro���J�����L���?�J�E�PInfo���ATTR�����declneg_inv'�����Za��b���������h�p���c����Z���{��h�t�!�����������,������!������������������_a �:������������������:���������%�������!��/�	, �	. ���������������_a �:�������������
�%����neg_zero ����������������_a �:��<�	-�	/���
�����%���������������3�_a �:�������8�%�������������������L����_a ��������neg_inv �������PInfo���declis_ring_hommap_ne_zero�u_1��_inst_1_inst_2division_ringfa  _inst_3is_ring_hom9 ����� � xQ�M�Qhas_zerozeroQ�Q�Q�sQ �������~�p9����f���g���i���j���x��Q�h����V�Q��eqQ�{��h��eqsubst��_x������9�}����������s��Q.���l���	��	�Q�����map_zero���l�����q�l�s�l9 x0��h���l �}�l��l���l��one_ne_zero�������eqtrans����������9���������l�������l��
���������9������\���l����������������������������l��_a��������������������s���lQ"�,���,�n�,��,�� ��,��,�� �Q�%�����=���l�������monoidto_has_one������q���������E���9�������3�4��_a����Q��,��,\�,����%���D��map_one�����M�A9 eqrefl����Annotcalc
���������has_mulmul��mul_zero_classto_has_mul����to_mul_zero_class��ringto_semiring���A99�������u���K9������M��_a�����)�}��������������%�u����map_mul�����M�A9 ����������������������K��_a�����w���y���{���}���q���Q Q�'����������%������������to_has_zero�������������K������_a���������������%����zero_mul�������n��Annot��PInfo���decl��map_eq_zero�������f���g���i���j���x��Q�M��������f���g���i���j���x��Q���MN��N��������classicaldec�������map_ne_zero�lQ9 �PInfo��decl��map_inv'�������f���g���i���j���x��Qh���� ����Q��l��l9������f���g���i���j���x��Q�!�������w�l�O�l�����5�L�=�>domainmul_left_inj�l�����5�=�	*�y�l����� �����"���lQ9 ��P�N���l���l��l9���P�t�J�l�G�y�l�{�l�}�l�0�l9���=_a�l����x�H�����������7���9��Q�����%�P�smul_inv_cancel�l9���i��t�� �	��}�~����4�s���t���y�G�z�{�|�����5_a�l��������o��Q�����%�t�����l���������l���� �4����� ������\��Q�s���������	��}�~���Q�4_a��������������%�����=��Q������m�<�l�>�l���s������y ����������_a�l����������%����c���l���� �m�l��PInfo� �decl��map_div'�������f���g���i���j���x��Qy�lh�]����9�����lhas_divdiv�����Q��9����f���g���i���j���x��Q�*�l�+�2��9�
���x�z�|�~�}��Q��9�L�A����Q9 �Lcongr_arg�����W���@�V��map_inv'�����lQ9 �PInfo�)�decl��injective�������f���g���i���j���xfunctioninjectiveQ9����f���g���i���j���x�	*��aQ�����~add_monoidto_has_zeroQadd_groupto_add_monoidQ�rQ�sQ�qQ���*���	,���	.������������is_add_group_hominjective_iffQ9�	�	�P�Q ��9��9�q9�s9is_ring_homis_add_group_homQ9����aQha��L��ha0N���Z��9����J�������D�J�z���z��e_1���,�|�-�|�2e_2���=�x
�I����IQ��9�y
�I�|�I�Q9�� �����������������������������A������������chas_mul��a���C�,e_2���-�|�2�|�=e_3���x�����w���lQ�	9�b���|��Q9�	 �����������n�������D�i�������to_has_zero�������Jα�fs��[���}�1����zero_ne_one����congr_arg�������9�6�PInfo�0�decl��map_inv�u_1�β�f_inst_1�Y_inst_2discrete_field�Lf�j_inst_3�m���������r�t� � xQ���v�w�(��9�7Q�9Q�nQ�pQ �{��M�f�N�f�O�h�Q�j�R�w�SQ���Q�����~�p�y��rfl���������	��	��K�]��Q�S����9�������]���l�����n���p��Q����� ���������8�:�n�l�p�l9 ����������l��l99���������z�l�z��e_1��|�,�|�-e_2���2���=���Q��9���=��Q9�� �������l�{�|���������l�� ������������QQ����������e_1���R�-�,�l��������Q�������� �������������������l�|���|��e_2���b�-�-�7�- �������inv_zero�l9�"�������i�lQ�y���PInfo�K�decl��map_div��L��M�f�N�f�O�h�Q�j�R�w�SQy�l�� �	��	����9�l�;�l���� ��M�f�N�f�O�h�Q�j�R�w�SQ�[�l�� �	��}�~��������G�z�{�|�~���� �i�Y���c�m �i�b�l�l�s���X�r��map_inv���lQ9 �PInfo�Z��declsimp_attrfield_simpsuser_attributesimp_lemmasunituser_attributemk����namemk_string
Strfield_simpsnameanonymous
Strsimplifier attributeoptionnonedeclnameprionatpersistentbooltactic����decl����user_attribute_cache_cfgmk��nslist��has_bindbind��monadto_has_bind��interaction_monadmonadtactic_state����tacticto_simp_lemmassimp_lemmasmks����listmfoldl��������s��attr_name��������attributeget_instancesns����listnil��s��return������listcons����
Strreducibility����a��punitreflecthas_purepureleanparserapplicativeto_has_pure��alternativeto_applicative��leanparseralternative��unitstar�VMR�^_lambda_1VMR�^_lambda_2VMR�^_lambda_3VMR�^_lambda_4VMR�^VMC��αVMC��s����������attributeget_instances	
tacticto_simp_lemmas_mainVMC��#�����t��simp_lemmasmk��	��interaction_monadmonad��listmfoldl_main	VMC��sleanparser_stateVMC�^�nameanonymousscharof_natp��m��i��s��_��d��l��e��i��f��stringemptystringstr��������������������namemk_stringe��t��u��b��i��r��t��t��a�� ��r��e��i��f��i��l��p��m��i��s������������������������������������������������y��t��i��l��i��b��i��c��u��d��e��r������������������������������punitreflect��ATTRuser_attribute���^USR_ATTR�^docsimp_attrfield_simpsThe simpset `field_simps` is used by the tactic `field_simp` to
reduce an expression in a field to an expression of the form `n / d` where `n` and `d` are
division-free.declmul_div_assoc'u_1α�f_inst_1�habc ��9�w9�H9��9�� �99�;9 �����f��������� �����������������z9�zQe_1���|���|��e_2�����-��Q�9���-�|�-�Q9� ���m9���mul_div_assoc��9 ���'����9��E�PInfo���declneg_div'u_1α�f_inst_1�ab�� �n�� �p �� �� �r�t�9 �; �q�m���f���������y�����y�����y�a�s�s�����u�c�e�f�g�} �s���z �z9e_1���|�l�|��e_2�����,���Q��9���,��Q9�� �t�t�m �t�x��neg_div ���u�t��neg_inj' �k�s�s�������T �s�E�PInfo���ATTRfield_simps��div_add_div_same�ATTR����inv_eq_one_div�ATTR����div_mul_eq_mul_div�ATTR����div_add'�ATTR����add_div'�ATTR����div_div_eq_div_mul�ATTR����mul_div_assoc'�ATTR����div_eq_div_iff�ATTR����div_eq_iff�ATTR����eq_div_iff�ATTR����mul_ne_zero'�ATTR����div_div_eq_mul_div�ATTR����neg_div'�ATTR����two_ne_zero�EndFile