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���6�initdataratorder�I�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}traversedeclratcast_mainu_1α�_inst_1division_ringarat���ratcases_on�a_numinta_denomnata_poshas_ltltnathas_lthas_zerozeronathas_zeroa_copnatcoprime�nat_absid_rhshas_divdiv!division_ring_has_div'!coe!coe_to_lift!coe_base!intcast_coe!add_groupto_has_neg!add_comm_groupto_add_group!ringto_add_comm_group!domainto_ring!division_ringto_domain!'no_zero_divisorsto_has_zero!�to_no_zero_divisors!?zero_ne_one_classto_has_one!�to_zero_ne_one_class!?distribto_has_add!�to_distrib!@
*!-!0!natcast_coe!JQX�PInfo�#VMR�VMC�4#����_c_1�_c_2��_c_3��_c_4��	_c_5	�cast_main	����cast_mainalgebradivdecl�equations_eqn_1���ndhceq'��'�mk'
#'%'|+'.'1'3'5'7'9';'='|E'G'�L'N'�S'U'�
_'a'c'e'���������eqrefl'id_delta'��PInfo�#ATTR_refl_lemma���EqnL�decl�cast���z�PInfo�#prt�VMR�VMC�#���doc�Construct the canonical injection from `ℚ` into an arbitrary
 division ring. If the field has positive characteristic `p`,
 we define `1 / p = 1 / 0 = 0` for consistency with our
 division by zero convention.decl�equations_eqn_1�������y��'|�����equations_eqn_1�PInfo�#ATTR����EqnL�decl�_sunfold�w�PInfo�#decl�cast_coe���has_coe��has_coemk��PInfo�&prt�VMR�VMC�&���decl�equations_eqn_1��������������PInfo�&ATTR����EqnL�SEqnL�ATTRinstance
�class��
decl�cast_of_int���nx*-0��of_int+.13579;=EG�LN�SU����
this�#%�,_ace��"�'has_oneonenathas_one�,eqmpr�G��5��"�,id��G�Peqrec�6�7�8�9add_monoidto_has_zero�to_add_monoid��"add_semigroupto_has_add�to_add_semigroup�_�C_a�Ux
#
%
+
.
1
3
5
7
9
;
=
E
G
�}L
N
�}S
U
�~_
a
c
e
�������C���o������T�G�Mnatcast_one�_�"�I�P��,�,�R�U�P���Z�1division_ring_has_div�,�L�division_ringto_zero_ne_one_class_a�U�o���K
�����o�����P�,div_one�,��,Annotshow�PInfo�(ATTRsimp���decl�cast_coe_int���n������rathas_neg�has_zero�has_one�has_add�,����I��-�R�U��-��_a�U�o�
�
�
�
�����o��������coe_int_eq_of_int�I�-���R�U�-���Z�	_a�U�o���������-�,�cast_of_int���PInfo�+ATTR����ATTRsquash_cast���unitstardecl�cast_coe_nat���n����������������?���
�cast_coe_int�H�J�Linthas_coe�PInfo�	.ATTR����	ATTR����	�Gdecl�cast_zero���x�������EG=��eqtrans�s�inthas_zero+.13579;�}�LN�}SU�������;��intcast_zero��������PInfo�0ATTR����ATTR�����Gdecl�cast_one����m�s�@���K�������s��@�has_one����������intcast_one�]�������PInfo�3ATTR����ATTR�����Gdecl�mul_cast_comm���an�ne
���denom�x
��x|has_mulmul|�to_has_mul|G|=|
�|�|�|�|
����������������'����x'�x!��!��!I|�!�!�!�!'��|n_numn_denomn_posn_cop���_�a�c�e�E�G�=�L�N��&S�U�;��&����x��(�x	���@���@G�@=�@��%�I+�@.�@1�@3�@5�@7�@9�@;�@�FE�@�GL�@N�@�FS�@U�@�S|has_invinv�@�to_has_inv�@�_�@a�@c�@e�@�Y�^�c
�I�|�%
����I���A�Bsemigroupto_has_mul�@monoidto_semigroup�@�to_monoid�@�S���%�h�{���R�U�����Y�@�����h�{_a�@�Ux
��������G��=���@���+��.��1��3��5��7��9��;����E����L��N����S��U����'�j���l���@_��a��c��e��������|���������������eqsymm�@����mul_assoc�@���%�h�{�I���A���Bmul_zero_classto_has_mul�@semiringto_mul_zero_class�@ringto_semiring�@�S�K�L�M�W�1to_has_zero�@���*to_has_one�@���c|�%�{���R�U��������%�_a�@�U������������������� ���������� ���������intmul_cast_comm�@�S�%|�I��A������{���R�U��?�����;�%�{_a�@�U��� ����������������������������L������'�����������=����%�{�I�?�>�����{�%�R�U�?�q�������%_a�@�U��� �Y�!�����|���?�p���h�{�%�I�q�A�;�I�{�%�p�R�U�q�����J�{_a�@�U�|� ��� ������y�����q��������
��A����division_ringinv_comm_of_comm�@��z�%�����g
�����%�5��Annot���@��Annot��PInfo�6decl�cast_mk_of_ne_zero���abb0����������ratmk#|%|
+|.|1|3|5|7|9|;|��E|��L|N|��S|U|������B�C�D��_xe�S��
���G�H���'|x����������%#�%��%+�.�1�3�5�7�9��2�(�-�4!�3'ndhc�H�����%���#�A%�A��+�A.�A1�A3�A5�A7�A9�A;�A=�A��E�AG�A�PL�AN�A�PS�AU�A�Q�@�g���A��A��A��A��~|
�Rx�A�k�y�I�{���A���A�X�h�j�A�l�A���j�F�g|_�Aa�Ac�Ae�A�Y�^�c
�{����A���A���A�to_ring�A���������R�U������T���C���A��������_a�T�Ux��������G��=���A+��.��1��3��5��7��9��;����E����L��N����S��U�������j���l���A���@#��%���A��'_��a��c��e��������|������propext����eq_div_iff_mul_eq�A���������R���A���x�A�Yd0�{���
Existsdcases_onc�S��has_mulmul�2�4comm_semiringto_semiring�comm_semiring�g'_xhas_dvddvdcomm_semiring_has_dvd��g|�@false
��1eqmp�.�g�������@�@�.�g��~'|
�@�
�8_a�U�.�g�����A�����.�g�������<�A�denom_dvd���@Annot�kke�&absurdx+�b.�b1�b3�b5�b7�b9�b;�b=�b
E�bG�b�nL�bN�b�nS�bU�b�o�A�x�b�w�2�6�����b���b�v����������b���b���b�o�Y�b�����b������_a�b�Ux+��.��1��3��5��7��9��;��=���bE��G����L��N����S��U�����������������x��������������zero_mul�b�����6����_�ba�bc�be�b�w�|��!��������_a�b�U����_��a��c��e���������%���������������I���c���"�g!���R�U�����A_a�������	��I��c���d�e�f�s����b���b�o����0���R�U��6���0��has_mul�_a�b�U�����"�g�%��������4intcast_mul�b�o���b�4���I���{����A���A���A�Q�h�q�������R�U���w�Y�A�q�r����_a�A�U���������������������A���������������u���A�o�h�����I�w�{�r��������Q����������A����A�3to_monoid�A���`�3to_distrib�A��
�����R�U�w���|������_a�A�U�������������������������������������w��natmul_cast_comm�A����
�I���{�q�r�������R�U�����|�r�q����_a�A�U��������������������������������������������|�������������B�����������I���{�q���G�H�I�U�����n�c|�������R�U���&�|����@��_a�A�U������������������������"�6�{�,����"�{�-�"�|�g��_a�A�U�����������������������O�/���O'�O�@���Q�X���B��intcast_coe_nat�A�T�Y�^�c
�6�A�g�<|��B�|��n_a�A�U�T���<'�@�T���p�"�P�A�Q|��6�{�g�<�@���o�p�|���_a�A�U�����<���/�w���w�����@���@��congr_arg�A���n�giffmp����@���|������n�mk_eq�@�|��mt�����{�j�
�Ia�������x����true�R�U����eqtrans�T����������imp_congr_ctx_eq������������_h��������������a�����me_1�ca����e_2xcongr�Tx��'��|�{�������T'|��
����������������_inst_1has_lift_t��a��e_2�����+��
���@����������������������������eq_self_iff_trueu_1���������forall_true_iff��trivial�%ne_of_gtpartial_orderto_preorderordered_comm_monoidto_partial_orderordered_cancel_comm_monoidto_ordered_comm_monoidordered_semiringto_ordered_cancel_comm_monoidordered_ringto_ordered_semiringlinear_ordered_ringto_ordered_ringlinear_ordered_comm_ringto_linear_ordered_ringdecidable_linear_ordered_comm_ringto_linear_ordered_comm_ringintdecidable_linear_ordered_comm_ring����iffmpr��has_lt����
�coe_nat_pos
�6���x���
�x_a�U��8�A�	o���	k���num_denom'|
�I�&�{�q��q�!�����R�U�&�	��|�q�	��!��_a�A�U�����X���������&�	�����!���I�	��{�	��K�A�[���A�����R�U�	��	��|���j��_a�A�U�����U���W�������	������	��	�mul_inv_cancel�A���j�%�I�	��{����R�U�	��	��|�	��	��_a�A�U���	��K���������A�������	��mul_one�A�n���A���rfl���PInfo�A=ATTRmove_cast���A�Gdecl�Areversed����B�C�D����������B�C�D����|����
|
�PInfo��=ATTRpush_cast���A�Gdecl�cast_add_of_ne_zero���mn������������|_|a|c|e|�������
%�x|��y�'�'�'�'|has_addadd��
��'��
@
�
@������������
)�
3���
7����������
C
�
H!X��
m_numm_denomm_posm_cop�������8���x�=����@�y�
%�x�@�Y���������������@�
C~!'|
�
H�����
~�
��
~|n_numn_denomn_posn_cop�?d₁0�
��!�
d₂0������
��x�m��m��m��m��m���
C~�@��%!�A�
H�mS�mU�m;�m=�m���
��
��
��A���
����
��I�
��
��
��
C���g��A�
��
��
��
��R�U�
��
��
�
�_a�U�c��b��b��b��b�m�
C~���@��%�
��
H�b���
��
��
��
��c�
��
C�
��
��
��
����
��
��	y�@��%!�I�
��
��
��
���/�
��
��
��R�U�
���
�A_a�U�c�
��
C�7�g�@�
��
��
���
��c�
��	��
����
��
��	y'|
�I��
��
����
A�has_add���/�u�
��<�
��/��R�U��2�
�
�_a�U�c�
��	��!�#��
��9�c�
��>����/�add_def�@�
�'�/�	[��
����N�intcoe_nat_ne_zero�e�S��6���b���@���]������@_a�U�����������h�������`rfl�b�b�	[�O�/���S|�W|e�Z|�6�]��'���d�f'_a�U�h��!���o�����{�I�2�
�#�m%�m��+�m.�m1�m3�m5�m7�m9�m�
�E�mG�m�
�L�mN�m�
��
��+���.��R�U�2���Y�m�0_a�m�U�c�
����'���#�<!��<��#�>�c�>���2���cast_mk_of_ne_zero�m���+�.�I���m���x�m�����R�U��������not�2�������
����m���m��_�ma�mc�me�m�����
���|��zero_ne_one_classto_has_zero�m���m�����������a�m���be_1��b������e_2�����T���'�|�������T'|�
������m����������m���m���m�
���m���m�
��
��.�����m�<�G�
��G�/��P�m�
��
��/chas_mul�m���b����e_2x����������e_3x����a���a!'�e|�{�a���a'|�e
���M��d�m�������
���O���|�����m�nedef�m��a�T���Te_1�U�{�T�T����2��
����J�9�:���m������2iff_false_intro��division_ringmul_ne_zero�m���������not_false_iff�	8�I�����
������@���
��
��R�U�������
�_a�m�U�c#�b%�b�m���������>���
��=���������@�
��I���������R�U�����������������
��������������4�������������������2������2���
���	8�I����������'���/�R�U���
(���
�_a�m�U���
�����������=���
2�����
&��'�/�I���
%�����R�U�
A�����
A�����
G���
������
G�����
L�4�
%���������������
K�2��
J���2���
`���	8�I�
(�
��
�����������j�m�l�m����
w����
#��
{�
��
r�
z�
�
x�R�U�
(�
����m���be_1���������e_2���]'�]|�&����T'|�]
���
��7���
����to_has_mul�m�
��
r��
{�
��
��
{�
��
����
��
��
��
{�
��
����
��
w��
��
����
���
�chas_div�m���b����e_2�\��������e_3�_�c#�a!'�
�|�r�
�
�����
��7���������[�m�]�m�����c�m�e�m�
��+�
��
��
��(�
��*�
��cast_add�m�����(�*chas_add�m���b����e_2�\��������e_3�_�c�
H�a!'�
�|�r�
�
�
��
��
��7�G�(�L�G�@�O�
��T�@�/�~��������O����
��
��7�G�*�L�G'�M�
��T'�
��~�&�
#���
#�M��������division_def�m���
���~�
��
����
��
��
{mul_inv_eq�m�����	[�
P�����
PA�Tiff�����
�b���b�miffrefl�
P�����
P�����a�
L���
[�
f��trueintro�	[�
�����
A�T�R�_�W�]�
�����
�����z�����
�
���lright_distrib�m�
��
��
��
{��
��
}���m���m�A����
{�
��
����
#��
{�
'�
�����
��7����������
z�
������������?����
&�
��7�
&�
$����
#�
x�
��
#�
#�0�
%����?�
#��6�
��
~���
��
x�
z�
��
��
����
���
}�
}���
}���
��7�����m�����
#���
z�������
z�
������
z�~�
#�
#�0���
�����
x�
z�
��
����
��I���
��
��
r������
x�
z���
��R�U���
������
x�
z_a�m�U�c�
����
.�������j�b�l�b�m����^������!���^���
����!��c�
���&�,��������m������
x�
z�I�
�
��
��
r���K�m���
�
z���
��R�U�
�N������
x_a�m�U�c�
�������b���b�*�Z�����&�,�c�
���Z��&�,���
�G�	��m����I�N�
��
����
��R�U�N�|�����E�B�
z_a�m�U�c�
���Z�K�b�y�U��&�,�3���N�
zone_mul�m�A�
z�I�|�
��
����
�L�
x���������=�?���m�;�
����m�;��
z�
��R�U�|�����L���
x_a�m�U�c�*�&�,�c�*���!��,���|���:�������m�;�
x��I�����R�U���������
��
��
������
��
��
����
����
���
��
����
����
��7�����
y��
z�������
z�
������
z�����
x�7�����
z�
y�G�
x�������
z�����
x��
z�~�
x�
x���
x��G�s����	��m�A�
x�
��
�����
��
��
�add_right_cancel_semigroupto_add_semigroup�madd_groupto_right_cancel_add_semigroup�m���
��
��)��add_right_inj�m�$�
��
��
�������	(�m�
��	8�PInfo��PATTR�������Gdecl��reversed���������
(��
8y�
N�
F��������
(��
8��'�
F�
N�\'|
�PInfo�PATTR�������Gdecl�cast_neg���n��has_negneg��������	���	�o��x�{
���n_numn_denomn_posn_cop�?��\�u�has_neg
�j!�l!'m�{!C�]��
����I������,/2D�[!�]!BQ�c!�e!��
�����R�U�����Y!����_a!�Ux�%���%���%G�%=�%!+�%.�%1�%3�%5�%7�%9�%;�%��E�%��L�%N�%��S�%U�%����|�j�%�l�%!_�%a�%c�%e�%������
�{�%������|����������������intcast_neg!BQ
�I�������!��!��!@��]���R�U��������]��_a!�U���������������[�%�]�%�����c�%�e�%�)|�����9�����neg_mul_eq_neg_mul!@]���!��Annot��PInfo�`ATTR����ATTR������Gdecl�reversed����	���y���	���y��Y�PInfo�`ATTR������Gdecl�cast_sub_of_ne_zero���mnm0�
(n0�
8y�
@has_subsubadd_group_has_sub�add_group
�'�'��
K�
M������
(��
8
�������w�
�I���o|
�t!�v!B�|�
e���R�U�������������������
b�����
e������!���%e_1����@����e_2�{�����T��'��|���������T'|��
������!������w
������
B����m|�v��m
�����	!a�"e_2������
w
�����sub_eq_add_neg�m|
�cast_add_of_ne_zero!'|�����
�!a�%�&�e_2�A�������Ae_3���`�m�m�
�!'�|�l�m���m�b'|�
X�����K�������!'
�����$!B���
e���
a��� !�"!B�����;���.!�6������������	(!���	8AnnotcheckpointAnnothave������!l���x!J���%�����w�x�%��n_numn_denomn_posn_cop��
q�y�9�
u�PInfo�dATTR������Gdecl�reversed�������
(��
8y�{�r������
(��
8�e�r�{�v'|
�PInfo�/dATTR������Gdecl�cast_mul_of_ne_zero���mn��
(��
8y�
@��has_mul
��'��'��
K�
M���1�2���1��
X��
\����
��
c�
em_numm_denomm_posm_cop���2��
p��
v���
~���
����
��
�|n_numn_denomn_posn_cop�?d₁0�
�d₂0�
��
��
����
��A���
��
��<�
��=�
��I���
��
����
��A���
��
��R�U�����
�_a�U�c�
����
��
����
��
��c�
����
����
��
������
��
��I���
��
����
����
��R�U�����_a�U�c�
�����
����
�
��c�
������
������
�� �I���
��
�����'�.���R�U����
��_a�U�c�
����9���=�A�������mul_def�@�
�'�/�~���I��
������	�����R�U��0���_a�m�U�c�
�����!����������.���	�.���I�0�/�����
��R�U�0�M��_a�m�U�c�����6����U���=���0���
�I�M�/�K�
&�R�U�M�f�
-_a�m�U�U���
1�=�U�k���M�
&�
m�I�f�
��
r�
�
{�
r���
z�
��R�U�f���
��.�|�7�.���
r�
#�
{�������
{�������
�������������
��,���'������?����~���������
��
{�����
#�
{�e���7�e���
��
������
z�
��~���
����
&�
������
z�
��6�
��
r���
��
z�����
����|�~��������{���
x�
z���������I�������R�U�������_a�m�U�c����+������+���/���������m����
��:�L�
������
����
�������PInfo�0iATTR�����0�Gdecl�0reversed����1�2��
(��
8y�������1�2��
(��
8�e�����"'|
�PInfo�FiATTR�����0�Gdecl�cast_inv_of_ne_zero���n����+�num�x���
(�����&�has_inv�j|�l|
�����H���H������<����
8y�
@�F�j'�l'|�
Mn_numn_denomn_posn_cop�?n0�T]�Xd0�Z���`���E�A�j��l��%��A�O�f�P�h�I�r���E�
��o��
��R�U�r�|�_a�U�A��@��@��@��@��E�
��o���
��A���E�o�����r�
�� �I�|�����/'�{�R�U�|���
�w_a�U�A���E�9�o���9�A�������|���inv_def'�/�I����"�3�/�6�{�R�U�����Y���_a��U�A�����#!���A������������%�/'�I��6�=���R�U������������������6�=������6�=�����2����2�������	8�I�����o�"�6���R�U������z_a��U�A#�@%�@��g�#�g!����o�������'�/�I����=���R�U�"�����"�����(����8|�=���(��+�=�.������@e_1�����A����e_2�
����b�T�]'�]|���b���b�T'|�]
���+�d��,�(�-�4|�=�=���=���+�=���-�2��-�2���-���	8�I������R�U��v���_a��U��o���������inv_div��%�6�����p�[���PInfo�GvATTR�����G�Gdecl�Greversed����H��A��
(���N�G���H��A��
(�
�G�N��|
�PInfo�ZvATTR�����G�Gdecl�cast_div_of_ne_zero���mnmd�
(nn�
)��;�
7nd�
\�����division_ring|
)���
e���\�]�^�
(�_���`�
\
��.�g���E
�;


���������E|�`��3�;'�=
�I����!'�"�!�'������ringto_semiring�M��!�C�'��'���R�U�����
�������!'_a�U�A�����%!����%��!���������division_def��!'�I����������'����E'���R�U���.�����!�*_a��U�A�����%��!���������,�cast_mul_of_ne_zero��%!�*|����8���*�=��
�I�.��)�o�����R�U�.�[���+_a��U�A�I����E!��A�a����.�X�cast_inv_of_ne_zero��%'
�I�[�Z�%�������������%���X�R�U�[���������%�%����_a��U�A�a�o�������[���=��%�����[�YAnnot�)Annot�*h��_a�.�g�K����T��;�%�"�g���E�%�l�.�g���b�;!�������x����wh_1���?�{�g�;�����6�����
����|������_a�A�U�����;�@�����O�����������A�����6���������E������|��_a�A�U���������E�@�������������

�6������g�������|�g�_a�A�U�����O�g���������	���i���6���g�"��	�|��<�_a�A�U�����"������ ����������gAnnot�)Annot�*�I���.�g�����g��
�����R�U���Q�����Q�Qchas_dvd����e_2�	����e_3�	���T�*!'�^|�����T'|�^
�-���O��������e_2�Z���a
�f���N�������E�����K�N�

_a�Z�������������symm��
�num_denom
�R�Z���N�����N�N�
��_a�Z���E���;|�g��|�������M�����K�R�Z�N�N���N���������R�U�Q�Q���Q�Z�K���PInfo�[�ATTR�����[�Gdecl�[reversed����\�]�^�
(�_���`�
\��������\�]�^�
(�_���`�
\��!������!'|
�PInfo�|�ATTR�����[�Gdecl�cast_inj���_inst_2char_zero����mn�R�����������~����������Ry�
@�
@�m_numm_denomm_posm_cop�����R�A���x����x|n_numn_denomn_posn_cop�?�R���������������A~�%!'|�'���+���intro�/�2h�/�I�~��%!'�x��=�A�x�R�U�=�A�
�;_a�U��
��A��A���=�?�	y��%!'�I�A�@���R�U�A�Y�	n_a�U��
��A�^���A���	}�6��<����m�A�Y���o_a�T�U��(�*���o�Y���T�Y�o��Y�o����A|���	[�O�A���S�%�W�%�	=�	?�	A�	C�	Enatordered_semiring�%!�	[�O�����S
�W
��
�6�
��G�l�G�n�o���
��
��l�
��n_a�T�U�c�0�(�0�*�����o����ointcast_inj�m�����A�l�n�6������|���A�����L�G|�G�A_a�m�U�������������b�m��'���
����������:�����T|�A�6������%������_a�m�U������������������:�������%�6�
�����������������L�G��G��_a�m�U�c�Z���@���/������������:����T����6�
����
������
_a�m�U�c������������(���b���~���b��|���c������3��:��6��
�6�
����1�3���Y_a�T�U�c���E���Y�3��Y�3eq_comm�m���1�6�
��������m�����1���Y���v_a�T�U�c�������b�m�m�E�����v�Y��v�Y��m�����1���	[�����������
����
��%���
���natcast_ne_zero�m�
����A�%���6�
��u���v����_a�T�U�c���������v����v�i�u���6�
����1�
w�����������1��_a�m�U�c�Z�E��������������u�:�u���?�1���6�
�����0������������0��_a�m�U�c����D�������������:��������0���6�
�������6�����������0_a�m�U�c��Z����|���J�������������0������
�6�
���������6������������6_a�m�U�c����������������������6�6�
���������6������s���_a�m�U�c�����������c��������<��?����6�
��8�����6�<���W�s���6_a�T�U�c�C��������Z�<��_�<���8���6�	[����
������
���6�
��7���X��Z�
��}�8�
�����������
��Y�
�����������6�T�6�~�
���������_a�m�U�c�B���
��
����������|���I��������R�U�����������������
��6���������6�����4��6�T�����������6�������2���
��q���Z
�2�����natcast_eq_zero�m�
����A
����2���������	8�6�
��
��?��������_a�m�U�c�
��
������������}����A�I���������R�U��������������
����������������4�����
����������������2���
������Z�%�2��!�$���%��$�2���$�����	8�6���
��x���	n_a�U���
��A���
����=���	}�6�
��
��;�<�=�F_a�U�c�
��
��@�A�@���N�?�T�����+��'�PInfo�}�ATTR����}ATTRelim_cast���}�Gdecl�cast_injective���_inst_2�functioninjective������a₁a₂�?����������cast_inj|
�PInfo���decl�cast_eq_zero���_inst_2�n�R�����u��������I���R���u���R�U�����Y
��_a
�U�R��
7���u�R�����������
�����cast_zero
�I���R�����R�U��������_a�T�U�R����u���R���������������
�u�]���PInfo���ATTR�����decl�cast_ne_zero���_inst_2�n�R������N�u�������not_congr�����cast_eq_zero
�PInfo���ATTR�����decl�eq_cast_of_ne_zero���fH1����MHaddxyy
�
C�
J

Hmulxy�|���||n��Y��'��%��%��%��%!�������������'��������Z�����`�!�n_numn_denomn_posn_cop�?h₂�������g���{�@�x���G���J
��N�I�N�{�@���M�R�U�N�U�	n_a�U�����A�����/�����]���N���	}�I�U�{�@����|�����M�R�U�U�s�
��_a�U�����
��]�b���U�p�mk_eq_div|���I�s�{���q�G���R�U�s�����r���G_a�T�U��������'���/�]���s���������q���G�I���{���@�o���R�U�����H_a�A�U�������\���������������B���Ginteq_cast�A�S�^n����I�{�@�����	��^���R�U���������{��������A���e_1�8��b���e_2�\�����T��'��|��������T'|��
�������A���@������e_1�����b�������cast_one�add_monoid����������	���������	(�A���	8�Ixy�
��A���'�
��A��A����R�U�(����x�����c����
��c�b�e�b�]�b�q�������������@x���A�Aforall_congr_eq���'�D���J���&���������&�
��"�"���R�
��
��"�$�X�T�
�� �X�7� �A�����X�����������b��a���m���@���%�X���X��
��'�"�$���T�0�$�"�"��T���9�"����A�Aforall_const�A�inhabited��������������	8���I�����@�m�R�U�����|��_a�A�U�������������������B������|�I���{�@���p�o���R�U�����|���q��_a�A�U�����������������B����!�p�o�I���{�����R�U�����
����m�o�o_a�U�������������a�������mdiv_mul_cancel���m�o�	[����������������������t�
��intcast_ne_zero�m��linear_ordered_semiringto_char_zeroratlinear_ordered_semiring�����	���Annot��PInfo���decl�eq_cast���_inst_2�f�
H1�o���Haddxy���
b��Hmulxy������!�#n���#�1��������B���D���J���P���eq_cast_of_ne_zero�%!|
�	[�Z���������*���0���_�*�S�����%�)��'�������pos�PInfo��decl�cast_add���_inst_2�mn������
H|����������������|
�	[�
)�
*�
+�
,�
-�[|�]|�����c|�e|���
%�
6���S�
%��|�����
%���
%�z�	[�
)�������p�����|�PInfo���ATTR�����ATTR�������Gdecl��reversed��������������������������
������|
�PInfo���ATTR�������Gdecl�cast_sub���_inst_2�mn�����o�t|�v|���������������cast_sub_of_ne_zero|
�����PInfo���ATTR�����ATTR�������Gdecl��reversed��������������������������
������|
�PInfo��ATTR�������Gdecl�cast_mul���_inst_2�mn���������������E|
�����PInfo��ATTR����ATTR������Gdecl�reversed����������
��������
��
�|
�PInfo��ATTR������Gdecl�cast_bit0���_inst_2�n�o�bit0��bit0
��������	�cast_add
�PInfo��(ATTR����ATTR�����GATTR������Gdecl�reversed������	�o�<�7�����	���7�<�K
�PInfo�
�(ATTR������Gdecl�cast_bit1���_inst_2�n�o�bit1����bit1
�����������I�i�o��
C�6���h�R�U�i�s�
�a_a�U�����`�d|�������������i�pbit1equations_eqn_1�����I�s�o�
H
���7����h�R�U�s�����q_a
�U�����
C�5���������s���E�6���I���o�����h�R�U��������_a
�U�������������������������cast_one
�I���o���<���h�R�U�������7_a
�U�����K|���������������<�cast_bit0
�
���PInfo��(ATTR����ATTR�����GATTR������Gdecl�reversed�������o�h�b��������b�h��
�PInfo��(ATTR������Gdecl�is_ring_hom_cast���_inst_2�is_ring_hom����������is_ring_hommk� �� ��ratcast_mul�B�PInfo��	prt�VMR�VMC����decl�equations_eqn_1������� ��� 1������ � :�PInfo�%�	ATTR����%EqnL�%SEqnL�ATTR����class����decl�cast_mk��_inst_1discrete_field_inst_2�����������|fieldto_division_ringdiscrete_fieldto_field����� Nab����������� H|� J|
������� Z������������������� Z����� e����� e����� f� v��'� G�)� V�.�/dite����decidable_eq��� {b0� ��Iy�
9�
:�
;�
<� H'� J'|����� ����������� ���� ���� ���� �� ����R�U� ������ �y�� ���integral_domainto_no_zero_divisors'discrete_fieldto_integral_domain'||����'��!e_1��������@e_2�6���A�T�{'�{|���A���A�T'|�{
� �� ���'� �� ��u� �����'����e_2�����@��
� ����u���������u��e_1�	��e_2�	�\����e�'|��
�����mk_zero��'� �� �� �� �� �� �� �� ����
�'�&!�&�%e_2�����@����e_3���`������!'�!!|�l�������m'|�!!
� �� �� ��� �� �� �� �� �� ���� ����	'����e_2�	���@�K
� �����'� �� �� �� �div_zero'|� ��� �� ����	('� ��	8�2��� ���'� ��	[������ ��['�]'� �� ��c'�e'�!u��!v�O��intcast_ne_zero'� �� �
�PInfo�&�ATTR�����&�Gdecl�&reversed���'� G�)� V�.�/��� z� a��'� G�)� V�.�/�
� a� z�!�|
�PInfo�C�ATTR�����&�Gdecl�cast_inv��_inst_1� G_inst_2� Vn�o����� H
� J
���j
�l
�!��!���E� G�F� V�G� ���<��� ��<���!�n0�!��I��� ^�E�I�J� Z� ^���R�U�!������!����
6� l�
6��� �|� �|

����|��'e_1����%���e_2������T��'��|���������T'|��
�!��!���|�!�� ^�u�!�����|����e_2������
� ]�!��u� ��!��E�u�t��4�6�discrete_field�"chas_inv����e_2�����C
�D�u
����I��������g�
%�u�R�U���"7�
_a�U���u�������"5���"5���I�"7������"4�u�R�U�"7�"P���_a�U����;�g�
Y�u����"X�u���"7���I�"P���R�U�"P�����"P��u�u������e_1������e_2���[�T�'�|�"#���T'|�
�"N�u�zero_mk�"4�u�u���u��"q�����u�	8Annot�inv_zero�"��|� Z�!��!��!��!��!��!��!��M�N|��'��!e_2� ��l���l
�!��!��!��!��!��"�!��"�u�"��"��U|
��!��!����	(|�!��	8�H���!��q|� Z�	[�
)������� j����� h� o�����"����
6�"��O�����!�|� h� o���	[�
)�
*�
+�
,�
-�"�� o�"��
%�"������"�� o�
%���PInfo�D�ATTR����DATTR�����D�Gdecl�Dreversed���E� G�F� V�G�o�!��!���E� G�F� V�G���!��!��#
�PInfo�W�ATTR�����D�Gdecl�cast_div��_inst_1� G_inst_2� Vmn��� ^��� d�!�� ^��Y� G�Z� V�[�\�I�#/��� ^�����#.�R�U�#/�#;�
�_a�Uy� ���� �� �� �y� ��#J���#/�#8��I�#;������� k�!�� ^�#7�#.�R�U�#;�#b�Y|� ^��#7_a|�Uy� ������#Jy�#J���#;�#`� )|� Z�#7�I�#b���#^�!��#-�#.�R�U�#b�#��#g� ^��_a|�Uy����� ��#G� ��#l�#Jy�#��#J���#b�#��cast_inv|
�I�#��#�����|��|��|��|� Z�!��#��R�U�#��#��#g����|� Z� Z�!��#-_a|�Uy�#��Z�[� ��#I�#J�#����#��#��=|� Z�!��#-�|�#��PInfo�X�ATTR����XATTR�����X�Gdecl�Xreversed���Y� G�Z� V�[�\���#.�#*��Y� G�Z� V�[�\�
�#*�#.�#�|
�PInfo�b�ATTR�����X�Gdecl�cast_pow��_inst_1� G_inst_2� Vqk��� ^has_powpowmonoidhas_pow�monoid�i|�k|��|� f�!���d� G�e� V�f�g�rec�gy� ��#��#�'�$'��'� ��#G�I��� ^�#�natzero�$�$ ����� o�$'�R�U�$%�$)�!��$"�$'�!��$"� ^���8�#��$'�"�$!�$4pow_zero�#���|� Z�$$�$'�p|�$�!��#��$'k_nk_ih�$�I��
���
� H!� J!'�#�
�nsucc�#�!�$!��!<>�$S�$W
�$Z���H�$b�$g�$h�$q�R�U�$j�$s���$\�$q���$\�$o�$W�$X�$q�$z�$W���)�+�#�
�${�$}���$V�$[�$�pow_succ�#�
� )!�$S|
�${���X!���%���e_2��������Ae_3����!'�$�|��$�
�$m�$g�$g�K�$g�$|�$p�$i�$q�t!�$d�$g�K�$q�PInfo�c�ATTR����cATTR�����c�Gdecl�creversed���d� G�e� V�f�g���$�#���d� G�e� V�f�g�
�#��$�$�|
�PInfo�w�ATTR�����c�Gdecl�cast_nonneg��_inst_1linear_ordered_fieldn�Rhas_lelepreorderto_has_le������������linear_ordered_fieldto_linear_ordered_ring�?���� H��to_field������%�}��has_le�u��y�$��{���{�R�$�
�$�
�$�
�$�
�$�
�$�
�$�
�$�
�$�
�������|�!��%
�����%/�%n_numn_denomn_posn_cop�?�R�$�!�$�!�$�!�$�!�$�!�$�!�$�!�$�!�$�!'�WFH>�$P�%!'���%V,/2468:<�%U�%WMO�%UTV�%\
�����%T`bdf�%W�%c�%f�%�
��%{�I�%{�%y�%��G�R�U�%{�%��
�_a�U�R�$��%�$��%�$��%�$��%�$��%�$��%�$��%�$��%�$��%!�_������� H�%�%�%!�����%������������������%��%������%������%�|�����%����������%��%��%�
�%�x�%��%���%{�%�	y
�I�%��%yratnonneg�%�R�U�%��%����%�_a�T�U�%��%���%����%��%��|�%��%���%��%��nonneg_iff_zero_le�%�I�%��%y�%��has_le��
�R�U�%��%����%�_a�T�U�%��%����%����%��%��%��%��mk_nonneg
�G�	[�	_�G�	d�I�%��R�%@�%A�%B�%C�%D�%Elinear_ordered_semiringto_ordered_semiring!linear_ordered_ringto_linear_ordered_semiring!�%I�W�!���to_semiring!�&�%k�%��R�U�%��&-���&*���&'�%k�%n`bdf�&(�!��!�&&T��!�&&_a�T�U�%��%�|���&G���%��&+��&E�&+mul_nonneg_iff_right_nonneg_of_pos!�&�&C�%kinv_pos!'�&B�	[�!�~to_has_lt!�& �&)�&B�&natcast_pos!�&�I�&-�R�%��%��R�U�&-�&t���%Q�WFHlinear_ordered_ringto_domain!�%I,/2468:<�&{�&}MO�&{TV�&�
_a�T�U�R�%��%��%��%��%��%��&�%�&�%�%��_��%���%�&$�%�&��%��&G�&J���&-�%���&��%�intcast_nonneg!�%I
�]�%�Annot��PInfo�x�ATTR����xdecl�cast_le��_inst_1�$�mn�R�%,�%8�%9�%����$������I�&��R�%�%�%�%�%ordered_comm_groupto_ordered_cancel_comm_monoid
ordered_ringto_ordered_comm_group
�%%���[
�]
�yordered_comm_groupto_add_comm_group
�&��t
�v
�&��%9�&��&��R�U�&��&����&��&��%9_a�T�U�R�$�|�$�|�$�|�$�|�$�|�$�|�$�|�$�|�$�|
��������� W�%|
�'�%���'���&��&��|�&��&���&��&�sub_nonneg
�&��%9�&��I�&��R�&��%8�o�&��R�U�&��'7���&��&��y�z�{�%0�%9�&�_a
�U�R�&��&��&��&��&��&�|�&�|�'�
6�������&�|�'F�����'O�'�'�'�R�'S�'���&��'4���'4�'B�cast_sub
�%/��
�&
�%$�I�'7�R�%�'3�&��R�U�'7�'y���%4�'4_a�T�U�R�'S�'���'�'���'7�'w��'~�'w�cast_nonneg
�'3�I�'y�R�%��	?�	A�	Cordered_comm_groupto_ordered_cancel_comm_monoid��ordered_comm_group�&��R�U�'y�'����'��t�������'��j�l�'�_a�T�U�R�%�'��'�'���'y�'���'��'����'��]�'��PInfo���ATTR�����ATTR�������Gdecl�cast_lt��_inst_1�$�mn�R�&\
�&^
�%*�&��%9��has_lt����$������I�'��R�'��'��%linear_orderto_partial_order
��to_linear_order
�%$�&��%9�'��R�U�'��'����'��6�R���%,�%9�&����%�'��'�preorderto_has_lt�'�����linear_ordera�T���Te_1��b�T���Te_2���[�T�T�R'�R|�����T�T'|�R
�(�'�����%�%�'��%9�&��'�not_le
�'��%9�&��(�(����%�'��(�(���(��(�(�cast_le
�PInfo���ATTR�����ATTR�������Gdecl�cast_nonpos��_inst_1�$�n�R�$��%�%�(�u����$����I�(`�R�(\�%
�u�(_�R�U�(`�(h�Z�%_a�U�R�&��%3�&��u�R�&��(p���(`�(e�_�(e�%���%�I�(h�R�(_�(_�R�U�(h�(����(f_a�T�U�R�&��%8�u�(p���(p���(h�(_��(f�(_�(P�u�]�(_�PInfo���ATTR�����decl�cast_pos��_inst_1�$�n�R�&\�&^�$��%�%�'��u����$����I�(��R�(��(e�%�(��R�U�(��(��(m_a�U�R�'��%3�&��(��R�'��&��(����(��(e�(��I�(��R�(��(��R�U�(��(����(�_a�T�U�R�'��(��&��(����(����(��(���(��(��cast_lt�u�]�(��PInfo���ATTR�����decl�cast_lt_zero��_inst_1�$�n�R�(��%�%�'��u����$����I�(��R�(��(e�(��R�U�(��)�(m_a�U�R�'��%3�'��u�R�'��)	���(��(e�(��I�)�R�(��(��R�U�)�)���)_a�T�U�R�'��(��)	���)	���)�(���)�(��(��u�]�(��PInfo���ATTR�����decl�cast_idn�����������������)Gn_numn_denomn_posn_cop�?�����
���G�
��)Q�I�)Q�)P�%�R�U�)Q�)U�%�_a�U��p�x�)Z���)Q�%�%��I�)U�)P�)O�R�U�)U�)h�
�%_a�U�)Z���)]���)U�)O��
�G�"��)OAnnot��PInfo���ATTR�����ATTR������Gdecl�cast_min��_inst_1discrete_linear_ordered_fieldab�o�����!��%-discrete_linear_ordered_fieldto_linear_ordered_field
min��decidable_linear_ordermin
decidable_linear_ordered_semiringto_decidable_linear_order
decidable_linear_ordered_comm_ringto_decidable_linear_ordered_semiring
��to_decidable_linear_ordered_comm_ring
�)��)�����)������ ��&���decidable_le�)�h�&��I����������� W�'�)�|
�)��)�|�)�|�)�|�)�|
�)��)����R�U�)������)������)����)��)��)��!��)��)��"
�)��)�� ��)�ite��decidable_of_decidable_of_iff�%�'��'��(
decidable_linear_orderto_linear_order�)���has_leledecidable�)�iff_true_intro�'�)��)��)��)��)�minequations_eqn_1�)�if_simp_congr�)����)��)��"��"�if_true�)��)��)��!��)�ite���)��&��&��&��'�|��|�)��)��)�����|�)��)��)�ifftrans�&��&��&��&��&��&��'�'�'�)��)��)��'���(P|�)��)�|�)��)��)��*&�*'�*2�*9|�)��)��*T��|�)��)��)���|�*2���*9�)��)��)��)��*O�#��)��#��)���|�*P�)��)���)��)����)��'j|�&|�*<��)����"��	8�����&��)��)��)������)����)��)��*��)��)��)��)��)��2�)��2�)����'�*�*��*
�*�2�)��*��*�*if_false�*��)��)��*&�*'�2�*3�2�*9�*H�2�*M�*�|�)��)��)��*\�*��*b�*f�2�*9�)��)��)��)��*��*n�*p��|�*��)��)���*��*��*���*����"��	8�PInfo���ATTR�����ATTR�������Gdecl��reversed�����)������o�)��)�����)��������)��)��*�
�PInfo���ATTR�������Gdecl�cast_max��_inst_1�)�ab�o�)�max�)�max
�)��)��)����)����)��+h�&��I���)��+
�+|�)��)��)����R�U�+"�����+"�*����+(�*��*��!��+�)��)��+� ��+�)��+1�*�+3maxequations_eqn_1�)��*�)��*�*�*�+!�)��!��+!�*R�)��)��)��+P�*Y�)��)��+R�	|�)��)��)��*h�)��)��)��)��*O�*p�*n�*v�)��)��*��*��	8��*��+$�+'�+(�)����+(�)��)��+-�)��+/�+1�*��+8�+|�+>�*��*��*�*�*��+!�)��+P�*��)��)��)��+W�+��+]�*��)��)��)��)��*��*p�*n�*��)��)��*��*��	8�PInfo��ATTR����ATTR������Gdecl�reversed����)����o�+�+
���)������+
�+�+�
�PInfo�
�ATTR������Gdecl�cast_abs��_inst_1�)�q�������%�%�)�abs��decidable_linear_ordered_comm_groupabs��to_decidable_linear_ordered_comm_group�)��+����)��
�I�+����R�U�+������+���+�)��)��+��+��|������+��+��+��|��decidable_linear_ordered_comm_groupto_add_comm_group�+��+�������
e_1����'��!e_2� �����T�'�|�������T'|�
�+��+����+��+��+��v���'���+��+��,�+��+	�to_decidable_linear_order�+��,#�,%��������e_2����!�

�+��+��,-absequations_eqn_1�+���,#_inst_1decidable_linear_ordera
�|e_2yb!��%e_3���`�@�@�+�@!'�,S|�l�@��@��'|�,S
�+��+��+����+��,$�+��$�+��+��+���+��+���+��+����	(�+��	8�PInfo���ATTR����ATTR������Gdecl�reversed����)��
��+��+����)��
�_�+��+��,��PInfo�!��ATTR������GEndFile