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��@�initlogicbasicalgebraordered_ringdataoptionbasicalgebraorder_functions�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}traversedeclnatadd_defanatbeqnataddhas_addaddnathas_add��rfl�PInfo�ATTR_refl_lemma���ATTRsimp���decl�mul_defabnatmulhas_mulmulnathas_mul���PInfo�ATTR����ATTR����ATTR���natadd_sub_cancelATTR���natadd_sub_cancel_leftATTR���natsub_selfdecl�succ_pos'nhas_ltlt�has_lthas_zerozeronathas_zero�succ��succ_pos�PInfo�!ATTR����decl�succ_inj'nmiff01���intro:=�succ_injcongr_arg�1�PInfo�#decl�succ_le_succ_iffmn7has_lele�has_le81U��AWZ�le_of_succ_le_succ�succ_le_succ�PInfo�&decl�zero_maxmmaxdecidable_linear_ordered_semiringto_decidable_linear_ordernatdecidable_linear_ordered_semiring.�max_eq_righto.�zero_le�PInfo�)decl�max_succ_succmnp810p��diteZ�decidable_le�h1Zeqmprp080p��8id��eqrec�_a�p0�0p���1eqrefl��x���98������_a������8x�8d��8�notZ��������max_eq_lefto�le_of_ltpartial_orderto_preorderordered_comm_monoidto_partial_orderordered_cancel_comm_monoidto_ordered_comm_monoidordered_semiringto_ordered_cancel_comm_monoid�ordered_semiring�eqmp�U�(preorderto_has_lt�linear_orderto_partial_order�linear_order����Spreorderto_has_le��_a���U������propext��not_le����������3�_a����������8e��,���PInfo�,decl�not_succ_lt_selfn�*1�not_lt_of_ge�1natle_succ�PInfo�5decl�lt_succ_iffmn7*1Z���succ_le_succ_iff�PInfo�8decl�succ_le_iffmn7V�]��A�h�j�lt_of_succ_le�succ_le_of_lt�PInfo�;decl�lt_iff_add_one_lemn7�jU
has_oneonenathas_one������z�j�������
�h_a��7*�U��~������j� �h�j�succ_le_iffiffrefl�j�PInfo�>decl�lt_add_one_iffab7�]�~Z��natlt_succ_iff�PInfo�Bdecl�lt_one_add_iffab7�]�~Z��	���7ZZ������a��
�e_1�b���e_2��congr��77�H��������7���Zeqtrans�����Zchas_lta�e_2=��e_3=���(�������I���������)�����add_comm�add_comm_semigroup�~� �^Z��ZZ�Z��Z�PInfo�Fdecl�of_le_succnmHY1or��8���� orimp(���8�$��$�le_of_lt_succ���$lt_or_eq_of_le��8�PInfo�Idecl�le_rec_on_main_meta_auxuCa�$nm�&Z�&k�&������&�������%�C�'�(�&Z�&�G�&�Hnatcases_on�(�&U����&U���*zeroid_rhs_x�S.eqrec_on���^.�eq_zero_of_le_zero���(�&�Q1�\�S	
Annotinnaccessible
Annot�2�{�o
�}Annot�2orby_casesU����8����decidable_eq��8�x�of_le_succ��h�|���
�ORecFn�#�S����h�~��b�S�.	�����PInfo�#OVMR�#_lambda_1VMR�#_lambda_2VMR�#VMC�9Q0�7_fresh����;_fresh����;_fresh����;_fresh����;_fresh����#VMC�:QZ�8�AVMC�#O�&�&�&�(�'�%�:�9natsuccnatdecidable_eqnatdecidable_leorby_casesdecl�"�$�O�%�C�'�(�&Z�&�G�&�H�*brec_on�(�&�R�&�)�&������&���S�����(_F�*below�(�&�{�&�)�&��
��&��������&�|�&���&���(�&U���&�)�&
��&���T���(�&U���&�)�&��&�������+�(�&U�T���(�&U���&�)�&��&�����������&���Z�T���(�&U���&�)�&������&��������Z�\�.��.�b���.�f����(�&��1�T��8�\���r��v�z����������������#������7�%���pprodfst�(�&U���&�)�&��&�9���;���Z�*recnpunitnih�Jpprod�]�(�&U���&�)�&��&�S�;�U��M�F�W�P�G�g�M�����8�'���b���.����~���������PInfo�"OVMR�"VMC�"O�&�&�&�(�'�%�:�9�L�N�P�Rdecl�"equations_eqn_1�$�%�C�'HU.next�)�&����x��eq��.�"�$���.��b��.��.�f���%�C�'�`���a���b�����id_delta�����PInfo�_OATTR����_EqnL�_decl�"equations_eqn_2�$�%�C�'mHY��next�Gx�H�����{�������{��z�Y����������������������7���������������8���{�d���~�%�C�'�g�h���i�G�j�H�����������PInfo�fOATTR����fEqnL�fdecl�le_rec_on�$�O�%�C�'���PInfo�kOVMR�kVMC�kO�'�%�"doc�k Recursion starting at a non-zero number: given a map `C k → C (k+1)` for each `k`,
there is a map from `C n` to each `C m`, `n ≤ m`.decl�kequations_eqn_1�$�%�C�'�`���a���b�����k�$���.����%�C�'�"equations_eqn_1�PInfo�mOATTR����mEqnL�mdecl�kequations_eqn_2�$�%�C�'�g�h���i�G�j�H��������{����7���������������%�C�'�"equations_eqn_2�PInfo�qOATTR����qEqnL�qdecl�k_sunfold�$�O�%�C�'�(�&Z�&�G�&�H�m�(�&�n�y���7�|������S�������	�PInfo�tOATTRelab_strategy���kdecl�le_rec_on_self�$C�Cnh��next��x��������������w�C�x�y�S�z���{���+�x�y�S�{����_x�����e������yU�Z�Z�{���Z����^�Z��^�Z�Z��y������a�x�}�e�Ze_1�����Z��|���Z��|�Ze_2���|���Z��|���Z������������congr_arg���������������m�^�Z������Z���x�x�yU11�{��8����e��h������diteU������S��hp���I�����������������������{hq��������falserec����orelimU0��������false�������������}���}���e_1���������0�����0��e_2����0�S���|��0������(���+������(��(������+������e���������z���3�������D�����7�����8�2���b�_x���{�������7U���������������������������8�����
�q�e�����Requations_eqn_1���3���O���T�V�8�X���S��������3�O�����3����3�������d���������not_succ_le_self������������decidable_lt�������_a���������d��������d�l����d��������������������������~��U�������������������dif_neg���������������������������_a��������������	���������dif_pos�3�O�������������PInfo�vSdecl�le_rec_on_succ�$C�Cnmh1Zh2��next�)�&�����x�������^���z��������2������C������Z���+���.���/��>�1�=�=���>�Hα�B�}�}e_2��������e_3����������������U����������������U��0�6�=�C�����6�z�Q������������������o��������7�r����h������8�t���b���e���=���o�6_a�o���e�����������0�6���z�^���������o���=�p�����r�x�o���r������r���~�����S�����������~��������������U�S���S�����S�����=����_a�o�����z�{������������������7��������S�����8�~�������o�������r�u�x�{�o������������=�p���=�=����_a�o����������������������������S��������b�����S�~�������������U���S��� ������S�������=��r�x��o��������=�=���=�=�=�H���=�PInfo��Vdecl�le_rec_on_succ'�$C�Cnh����next��x�������{�W�{�����C�����^����������h�`�f�Xle_refl���g���h�x���_�d_a�_���_x���������������������h�v�le_rec_on_succ�����r���x�`�g�g���x�����T�u_a�T����������q�������������x�le_rec_on_self����r���_�g�PInfo��Zdecl�le_rec_on_trans�$C�Cnmkhnm�hmk�next�)�&��S�x�������e������le_trans����������_x�����������������C���������������������less_than_or_equaldrec�������������f�������S����������S�����S��������e�����������refl���������� �����%�'�������$_a�,������������S������������[�����5��;�S������:��%���������������khmk����ih������������������������step���������������j���r����������_���a��d�������|���}���������a���k���_a����������������������S�g���������������������������S����������}������������k�������_���s����{�|�������������_a������I�������S����������I�����������������������q���s���j���{_a������I��������������������q����j���{���^������PInfo��^decl�le_rec_on_succ_left�$C�Cnmh1Zh2��nextk�-x�/���^���z��������<���C������Z�������	%���/��	0�	/�9��������Y������	0�	B��r�_a�r���h���������������	Q����	0�	>subsingletonelim�rsubsingleton_prop�r��	>��	B�	/����e�����	k����	<���	B�	v���	&�	A_a�	&��	Q��������Y�����	Q��	B�	u�le_rec_on_trans�^������	<���	v�	/�	o�	-���	v�	����	j���	p���	<_a�	���	Q�����������	��	Q�	���	v�	-�le_rec_on_succ'�	j���	<���	&�	.�PInfo��edecl�le_rec_on_injective�$C�CnmhnmZnextn�FHnextnfunctioninjective�������	��/�I�����������C������Z���	����	����������R�	��S���T����������	��/�	������x�/y��H���	��	����5��	�������������S�S��S���
�����S���S�

��_a�
����������������������
��
�����S�

����
�
��

�
�
�
�_a�
��
�
!��
"�
�
"��
5��
/�mhnm�[��ih�	���	�������
��g�S���x��y��H�����������������������
f�����������S��
n�������S���
o���������g�������S�
w�
u�
q�����������
~�S_a�
��������������������������������g����������
���
��
������������
~�S��
t�
���
��
��
��
��_a�
���
��
���
��
��
���
��
v�
�����PInfo��mdecl�le_rec_on_surjective�$C�CnmhnmZnext�	�Hnextnfunctionsurjective���	��	��
��/�I�	����C������Z���	����
��	������R�
��	��T�	���
��/�	�x�/Existsintro��a���	��
������n�]���������
�����
���^���2����_a���
�	������^��������mhnm�
Qih�
���
����
S�
Zx�
S��dcases_on�������������ea_0Exists���;�=�������@�
t�
���Hw��rfl�:�������
u��
s�=�������O����� ����%��� �g���S�����4�������c�������
��������a_1�=�c�m�P���O�]���S��x�crfl�l�����S�U�S������z�=������������0������������g�������������
������������'��������'�g�����S�����������S�����R�[�q�����R�q��&���S���������������&�����Y��_a����������������������&���S���Y�����Q�������PInfo��udecl�pred_eq_of_eq_succmnH<1�pred����
���true����
���<�
�}�}e_1=��e_2=���t�����������8a�e_1=J���8�pred_succ�� ��
eq_self_iff_truetrivial�PInfo�
}decl�pred_eq_succ_iffnm7�1<��bit0�~���c�7�8�
�PA��Z1�Z�Qa�beqdcases_on�`t_1��aH_1��H_2heq�a����a��d���P8�&9�Z�no_confusion� �l�a��a�`��`�d�z�P��Z�heqrefl�a8��e�h�Zt_1��dH_1��H_2�l�d���P��d��a��Z�&0�~�Z�Z�}�'�l�d���P�d�Z��Z�a�0����Z��Z���d�Z�A�181�Z����h�%t_1���H_1�H_2�l�������������P��&�2���������*�l�%����%��%�2����0���*�l�0������������0���I���������h8t_1��2H_1��H_2�l��s���������&��8�}�-�l�2���3�I����0�E����&0�F��0���Z�����s�-�l9������� �0�
A���-�l00���Z�s�
U�
T��
T��00���Z�������9���PInfo�ATTR����decl�pred_subnmhas_subsub�has_sub�I��
|�/�0��
��
|�
��~�
����
��
���I_a��
|���
|��
|�
���
��
�eqsymm�
��I�sub_one��
��
����
����
��
���
�_a��
|�
��~�
���
���
��
�natsub_sub�~��
��
�1�
����
��
����_a��
����
��
��
���
�1�one_add��
��PInfo�.�decl�pred_eq_sub_onen�W�
��~�>�V�PInfo�=�ATTR����=decl�one_le_of_ltnmh�jU�~�@�A�B�jlt_of_le_of_lt�.�{��PInfo�?�decl�le_pred_of_ltnmh*Y�
��E�F�G�natsub_le_sub_right8��~�PInfo�D�decl�le_of_pred_ltmn�&*�I��K�L_a�c�M�&*�V�Y��-a�+�.S������n_1�a*��r�v�*��w���.�PInfo�J�decl�pred_one_addn����R��>�
add_semigroupto_has_addadd_comm_semigroupto_add_semigroup��~���>�L��G�~_a���
��W��>�I���L�����L�c���_a���G�~�X��L1�add_one��c����c�{���_a������c�3��PInfo�Q�doc�QThis ensures that `simp` succeeds on `pred (n + 1) = n`.ATTR����Qdecl�pos_iff_ne_zeron7/ne.�\A����ne_of_gt�.natpos_of_ne_zero�PInfo�[�decl�one_lt_iff_ne_zero_and_ne_onen7*�~and�����~�b�c�b���7��.����..���~of_as_true��iffdecidable�������~.anddecidable�����]decidableab��..���~�D�b�c�b7��1����1.���~�7���~�����~.���~�������������~���������~.���~�D�b�7���*�M�o�q�v�����.��~�����������������.��~�D�PInfo�a�decl�eq_of_lt_succ_of_not_ltabh1��h2������m�n�o���p�
h3�
�����(���decidable_linear_orderto_linear_ordero����&eq_or_lt_of_not_lto���h�&h�0absurd�.�����t���V����AnnotcheckpointAnnothave�2���PInfo�l�decl�le_sub_addnmY�
��{�|�����Vle_total�this�Z���
��.���h�l��
�_a���
|���������h.�sub_eq_zero_of_le���l����l��
�Badd_monoidto_add_semigroup�add_monoid,��to_has_zero��_a���j����lzero_add���~�]�i����n����g_a�w���}�natsub_add_cancel��q��PInfo�z�prt�zdecl�sub_add_eq_maxnm�U�����eq_maxo�Unatle_sub_add�le_add_left�
�kh₁S��,�h₂������
|��������
�����������_a����
|���������������
�������add_le_add_right������������PInfo���decl�sub_add_minnm�Tmino�����^��dh�Z��f����f�����$�(��!_a��t�����t���$�min_eq_lefto���(������(�H�q_a��t��������(.����H�#����H�^����_a��j������H������h�]�%�g���*�{�;min_eq_righto���{�^���{�^��_a��u��i��{����t�PInfo���decl�add_sub_cancel'nmh��
�
��������������G�
����������i�
�_a����s��i�������
�����^�����^��_a��G�s���i�������t�PInfo���prt��decl�sub_eq_of_eq_addm�\kh����
������\����������
|�z����������_a��
�����
�������������^�����^���_a��
|�������i����natadd_sub_cancel_left���t�PInfo���prt��decl�sub_cancelabch₁�h₂�w�r�����&�����������������&����������&�*���_a��@�����&�(�
��(�����������*�)�r�������*�E��_a����������N��*�D�
��D��������E�D�D���E�c��&_a��N�����������k��E�B��D�PInfo���decl�sub_sub_sub_cancel_rightabch₂���
|�r�
��s��������������r���s���������_a��
|����s�����������
���
�����r�
|
��s���������_a�����������������
�����natadd_sub_assoc�����s�s���������_a����
|����������������s�PInfo���decl�add_sub_cancel_rightnmk�
|����������������
|�����������_a��
|�z��������������������������������_a��z�
|�����z�����natadd_sub_cancel����PInfo�ľdecl�sub_add_eq_add_subabchY��t�
|�z����������:��@�<�
|�i�����@�I��G�_a�����
|�����R�
����@�F����I�<
�s���I�g��
|
��_a��R�
|�G�����R��I�f������g�i�s�f���g�����_a��R���������g����s����PInfo���prt��decl�sub_minnm�
���
�����natsub_eq_of_eq_add��
��<��
�<�G�
����������G��
�_a��#�!�
��#��������
������������_a��#���!������sub_add_min��PInfo���decl�sub_sub_assocabch₁�:h₂�:���s�Q���������:���:iffmpr�����Q�snatsub_eq_iff_eq_add���s�Q���s���natsub_le��������G�G���s��������G���s_a��t������t����add_right_comm�����s����
�B�add_semigroup���(�s�����-��(�)�s�_a��t�G�G���������,add_assoc�&���s���-���)����-�M��u_a��t�(���L�t�S��-��Z���M�������M�e���_a��t�S�����M���:�����PInfo���decl�lt_of_sub_pos���\h/�
������\����lt_of_not_ge���~�Y�
�~��.
lt_irrefl�.�/�/.��_a�/�&�����.�Annot�xAnnot�y����PInfo���prt��decl�lt_of_sub_lt_sub_right���\���&*�
��
�*�����\��lt_imp_lt_of_le_imp_le����
��
�h������PInfo���prt��decl�lt_of_sub_lt_sub_left���\���&*�
��
��]����\�����
��
�natsub_le_sub_left��PInfo���prt��decl�sub_lt_self���\h₁/h₂��*�s����\��������trans_rel_left�s0���*�
��s����trans_rel_right�s�
|�����U�#�s�
|��0���
��������r�����������_a����
|0�������
��������succ_pred_eq_of_pos���������������_a�����������������Annotcalc
������������4�7���_a��	�
|�����?��4���succ_sub_succ������Annot�
�����Annot�
�lt_succ_self��Annot�
�Annot��PInfo���prt��decl�le_sub_right_of_add_le���\��hU����
����\����f��gU�>�
����g�o�J_a��Y�s���s��g�m�
��m��.���=��PInfo��prt�decl�le_sub_left_of_add_le���\��hU�x�g���\���
��natle_sub_right_of_add_le���U�l�U�O���F_a�U������������O����PInfo�	�prt�	decl�lt_sub_right_of_add_lt���\��h*�d���
����\������p��
������U��U0�=����������_a�U������������succ_add��t�=��PInfo��prt�decl�lt_sub_left_of_add_lt���\��h*�x�����\�����natlt_sub_right_of_add_lt���*�l�*�O���_a�*���������O���PInfo��prt�decl�add_lt_of_lt_sub_right���\��h���
�*�=����\����	natlt_of_sub_lt_sub_right�=��*�m�
����������m_a�*�T��s��s������PInfo��prt�decl�add_lt_of_lt_sub_left���\��h�	�����\����	������������natadd_lt_of_lt_sub_right���PInfo��prt�decl�le_add_of_sub_le_right���\���&U�
����=���\��le_imp_le_of_lt_imp_lt���
���d����PInfo� �prt� decl�le_add_of_sub_le_left���\���&�F��l���\���S�xnatlt_sub_left_of_add_lt��PInfo�"�prt�"decl�lt_add_of_sub_lt_right���\���&*�
�����=���\�����d��
�����PInfo�%�prt�%decl�lt_add_of_sub_lt_left���\���&�k���l���\�����x��
�natle_sub_left_of_add_le��PInfo�&�prt�&decl�sub_le_left_of_le_add���\���&Y�xU�
�����\���P�x�
��natadd_lt_of_lt_sub_left��PInfo�)�prt�)decl�sub_le_right_of_le_add���\���&Y�d�����\�����d�
���;��PInfo�,�prt�,decl�sub_lt_left_iff_lt_add���\��HZ7*�
����]�����\���.ZA����natlt_add_of_sub_lt_left��h₁��
�~���z��

�~U0���
�p�&��Annot�xAnnot�y�����
|��������U�����
|�����U
������������������_a�0�&�
|������������succ_sub�������Annot�
������Annot�
������t���������_a��
|�����������������������Annot�Annot�xAnnot�y�t����PInfo�-�prt�-decl�le_sub_left_iff_add_le���\��H�7���U�����\���6�-��7������7�	����
��le_iff_le_iff_lt_iff_lt�������natsub_lt_left_iff_lt_add���PInfo�5�prt�5decl�le_sub_right_iff_add_le���\��HZ7����1���\���;Z��Y7U���1���Y�b�
�W_a��7�Y��U��7�k��Y�`� �W�`natle_sub_left_iff_add_le����b7U�N��1���b����p�_a�7U����k7����k��b����������PInfo�:�prt�:decl�lt_sub_left_iff_add_lt���\��7�]�
��*�����\��A��������b��PInfo�@�prt�@decl�lt_sub_right_iff_add_lt���\��7���
������\�����7*�����������
��_a��7����*���n�������� ����natlt_sub_left_iff_add_lt����7*�p����������i�_a�7*����7����������������PInfo�A�prt�Adecl�sub_le_left_iff_le_add���\��7������\����7��
��7�	�
��	��G�
������PInfo�F�decl�sub_le_right_iff_le_add���\��7U�
��	���\����)7����	���)�1�
�'_a��7U�������n�:��)�/� �'�/natsub_le_left_iff_le_add���17��i�	���1�R��H_a�7����:7���:��1�O����P�PInfo�G�decl�sub_lt_right_iff_lt_add���\��H��7*����������\���M����t7�����s���t�|�
�q_a��7*���*�����n����t�z� �q�z�N���|7�����s���|����_a�7������7������|���������PInfo�L� prt�Ldecl�sub_le_sub_left_iff���\��H��7U�s���:���\���Q��A���:h��
�~U�
|�������
natle_of_add_le_add_right������natle_add_of_sub_le_left���z����Annot�xAnnot�y���U�������������_a�U�
|������U���������natadd_sub_cancel'��������PInfo�P�#prt�Pdecl�sub_lt_sub_right_iff���\��H��7�p�
������\���[��lt_iff_lt_of_le_iff_le���
�����natsub_le_sub_right_iff���PInfo�Z�)prt�Zdecl�sub_lt_sub_left_iff���\��H�:7���������\���`�:����s�natsub_le_sub_left_iff���PInfo�_�,prt�_decl�sub_le_iff���\����'���\���trans��	�'�G�symm�'�	natsub_le_right_iff_le_add��PInfo�c�/prt�cdecl�sub_le_selfnm�E�i�jnatsub_le_left_of_le_add���PInfo�h�2prt�hdecl�sub_lt_iff���\��h₁�:h₂�7*��������\���n�:�o��0�P�����O���7����natsub_lt_right_iff_lt_add�����PInfo�m�5prt�mdecl�pred_le_iffnm7U�I� �s�t�:�~�PInfo�r�8decl�lt_pred_iffnm7�]�V*8�v�wnatlt_sub_right_iff_add_lt�~�PInfo�u�;decl�mul_ne_zeronmn0��.m0������.�{�|�}���~�����.������.� .��eq_zero_of_mul_eq_zero�����PInfo�z�>prt�zdecl�mul_eq_zeroab7 .�!<.�.����A�������a���.�
�����
�������
�
�
���������a������� ����or_imp_distrib������a����e_1��b����e_2���������������������
��������
�
imp_congr_ctx_eq�������
���_h������..�
� ��.�#��.,mul_zero_classto_has_zerosemiringto_mul_zero_class�semiringchas_mula��e_2=��e_3=����������I��������.�zero_mul��..�.� ���
�>.� ���
forall_true_iff�����
���������
�
���������
���_h����������.�����t.mul_zero���..�)�/� �>�
�6��� ���
and_self�
�D�PInfo���Aprt��ATTR�����decl�zero_eq_mulab7�� ��������t�����t���
�r_a��7�����!�#.���n����t��� �r��eq_comm. ���7�����������
��_a��7������������ ����natmul_eq_zero�����PInfo���Dprt��ATTR�����decl�eq_zero_of_double_leahU�P���������f�Y�
�Y.���_a���
���-���.natsub_self�U
distribto_has_add��to_distrib�����
U
_a��U����������� ����natadd_le_to_le_sub�q�U�������to_has_mul���N���|monoidto_has_one��to_monoid��_a�U�����������two_mul���PInfo���Gdecl�eq_zero_of_mul_leabhbU�PhU�����������!���$�eq_zero_of_double_le����������natmul_le_mul_right�P���PInfo���Kdecl�le_mul_of_pos_leftmnh����"����������<Usemigroupto_has_mulmonoidto_semigroup�monoid�|��E��"���<�Nαchas_le���e_3�������e_4�����S�R�S�����_���H�S��S������_�T��L�#��L�L��_a� �t�L�
��L�one_mul�E���L�L��L�"�"��"mul_le_mul_of_nonneg_right��J��t.��S��ordered_cancel_comm_monoidto_partial_order�,�����to_semiring�������D�PInfo���Ndecl�le_mul_of_pos_rightmnh����������������U�H��J���������y���{���������
����mul_one�E����������������mul_le_mul_of_nonneg_left��J������PInfo���Tdecl�two_mul_ne_two_mul_add_onenm�������~����mt����has_modmodnathas_mod���P�����PJ����
_x���PAnnotinfix_fn���������Q���P������G���~_a�����
�P�����~�P������
����~��������~�P����4��������P_a������Q���P�����2�add_mul_mod_self_left�~�P��4����2���4�T���_a����2���2��4.�mul_mod_right�P���T���2�D�PInfo���Zdecl�strong_rec'_main_meta_aux�$p�CHn�&m�&��x�n����C���y���\�z�	�mhm�
�}RecFn������PInfo���_VMR��_lambda_1VMR��VMC���`�����;_fresh�D��;_fresh�D���VMC���_��������declstrong_rec'_main_pack_wf_rec_mk_dec_tactic_aux_1n�����has_well_foundedrhas_well_founded_of_has_sizeofnathas_sizeof������������sizeof_measure����*sizeof������*natsizeof���������������equations_eqn_1�������PInfo���_decl��_pack�$���C���y_x�	�����C���y�	well_foundedfix����has_well_foundedwf��_x�-_F_y�&����������x�������w����PInfo��_VMR�_lambda_1VMR�_lambda_2VMR�_lambda_3VMR�VMC��_a�VMC��`�����;_fresh�Z�VMC��_���;_fresh�Z��VMC�	�_�	������well_foundedfixdecl�equations_eqn_1�$���C���y��������$��	��������������C���y��well_foundedfix_eq���������PInfo��_EqnL�decl���$�}���C���y����	�PInfo���_VMR��VMC���_��������decl��equations_eqn_1�$���C���y�����z���$��	�������������C���y�����PInfo�"�_decl�strong_rec'�$�}���C���y�
�PInfo�#�_prt�#VMR�#VMC�#�_������doc�#Recursion principle based on `<`.decl�#equations_eqn_1�$���C���y����#�$��	������� ������C���y��equations_eqn_1�PInfo�%�_EqnL�%ATTR�u���#ATTR���natdiv_selfdecl�div_le_of_le_mul'mnkh�Uhas_divdiv��has_div���+�,�-�.�6����gt).�>�eq_zero_or_posk0���U�:����U�N.����Q�U��_a�U�:�����U�Z����Q.��UU.����U�m��S_a�U�Z.��������U.natdiv_zero��{�k0�H�mpS�����linear_ordered_semiringto_ordered_semiring�to_linear_ordered_semiringn����������O������O�decidablemul_le_mul_leftn�O�������O���-�������������U
������Annot�
�mod_add_div���Annot�
Annot��PInfo�*�dprt�*decl�div_le_self'mnU�:�B�C�����F.���Kn0���U�:��U��.���������_a�U�;��U�;����.����l����������_a�U�;.������.�~��
�n0��natdiv_le_of_le_mul'������~��"U
��Annot�
�0�~�Annot��PInfo�A�mprt�Adecl�le_div_iff_mul_le'xykk0��7���U����K�L�M�N��natstrong_rec'_x�K7�����U�4�yIH���&��K7������U�4���xordcases_on�.��������_x�!�C�F7Y�;��U���decidablelt_or_leo���h�C��P7���O���P�[��J_a�7��N��U������7�-�f��P.�div_eq_of_lt����c�T7��U�4�����7�u.U�Z����
�����
����7�
�
�
�����
�����l.�
���T��e_2=�&�&e_3=��S��������������T�Z.�nat_zero_eq_zero..�)� ���
niff_true_intro�l|.���
�����m�
����.�#����������Z.��������#������� �m�
���� ���
iff_self�
�Dx�7��.U1������U�y�������������_a�7V.U8�S��������������succ_mul��iff_of_false�����not_succ_le_zeronot_le_of_lt�����lt_of_lt_of_le������������yh�F�Y7Y�:�B���~�O��]�4�o�1�div_eq_sub_div������c�T7���:�i���~�{�7�u�1���
���M�
���M���
���K�
���K�l���/�
���1�Y��/�~� �Z�
���Y���
�����Dx�7���D��7U���DU���������t�}�1_a�7V�:���S�S�~�7����U�4�S����t���
���1�v��}7���B�|���}���
�w_a��7����U��S���n����}��� �w��natadd_le_add_iff_le_right�~�B���������������_a�7Y�������������
���7�z�i���������
��_a����U�S�S���n�������� ������i�sub_lt_of_pos_le��������������������
��_a��7U������������� �������y�����������PInfo�J�tdecl�div_mul_le_self'mnU���v�w���.��n0���U����
���6�
���6���
���4.�#�4��.�����.�#����.chas_div����e_2=��e_3=��8�����L����
�L��9���t.�.�R.���t� ���
����Dn0���������6�le_div_iff_mul_le'����q���PInfo�u��decl�div_lt_iff_lt_mul'xykk0��7*�<������������������<��������PInfo���decl�div_le_div_rightnmhZk����������Z��������k0���U�N�<�
�����
������,��add_comm_monoidto_add_monoid�to_add_comm_monoidcanonically_ordered_monoidto_ordered_comm_monoidcanonically_ordered_comm_semiringto_canonically_ordered_monoid�canonically_ordered_comm_semiring�
����������.�#���S.�^�����y.��<.�#�<��.�^����.�~�� S�����.����le_zero_iff_eq��.�/�Dhk������U���������������natdiv_mul_le_self'����PInfo����prt��decl�lt_of_div_lt_divmnkh*��������������� by_contradiction������h₁����<*�O����V�O��natdiv_le_div_right�������	�������not_lt������PInfo����decl�eq_mul_of_div_eq_rightabcH1has_dvddvdcomm_semiring_has_dvd�comm_semiring�H2��������������� J��� L�� M�����N���� M� V��_a��t����t� [�� M� T�
�� T��� V�e��� V�e�� U_a��t� [�Z����� V��natmul_div_cancel'����y�PInfo����prt��decl�div_eq_iff_eq_mul_rightabcH��H'� H��7� T�� M������������� �A� �� Mnateq_mul_of_div_eq_right����natdiv_eq_of_eq_mul_right�����PInfo����prt��decl�div_eq_iff_eq_mul_leftabcH��H'� �� ����-������������� ��� �� ����Bcomm_semigroupto_semigroup�comm_semigroup����� �� ��� ���_a�7� s��t����� ���� �� �mul_comm� ���natdiv_eq_iff_eq_mul_right�����PInfo����prt��decl�eq_mul_of_div_eq_leftabcH1� JH2� L� ���������� J��� L�� �� ���� �� �� �_a�� ���� �� �� ��� ���� ���� �� ��/_a��t� ������ ��� ���� �����PInfo����prt��decl�mul_div_cancel_left'abHd� I������������!��!� ��!����!�!"�� ��!_a�����������!�! � ��!��!"����!"���!�_a�� ��!)���!.��!"natdiv_mul_cancel���PInfo����prt��decl�div_mod_uniquenkmdh/�7��� ����������$����������������!XA�!^�!e_x�!^_a��� ���������anddcases_on�:������������������!y�!~���������S*����left�!yright���S�����_x�������*�S����eqsubst�!��:���S���!�_x�����!��:��������������S����intro�!��S�!���*�!��S�����S�mod_lt���S��_x�!e_a���z� [��������!u����������������!��!����:�S�����!����!����!��_x���:��������S���!��!����!���������:�!��S�����!��S�����!v�S�����"���"�"��"_a����:��!����������"���S����" ��"�"�add_mul_div_left�����S����"�"�!{�S�����"�"7��"_a����!��������" �"B��S��"�"4�K���S����"7�
���"7�
���"7���
���"�
���"��
� �"���#�"�j����chas_add��e_2=��e_3=�
�����"h����
�"h��"
.�q���S��*���S�
���"�trueintro��������������� ��
�>���"6�
���"6�~���
� �"4���mod_eq_of_lt���S�"��������� �"��
�>���j�D�PInfo����prt��decl�two_mul_odd_div_twonhn��~�����P�
������"���"��"��"����"��"����S�}�}e_2������e_3��������Y���Y���H���]�����Y��"��"���"��
��"��#�
��
|���P�"��~�"���_a�
��
���
��"��
��"����P��#�"��#�#�
|���"��~�"���"�_a�
|����P�����P�~�
|���#�~��#�~��#�"��#�#�"��"���#_a�
|���#�~��#�"���~�"���"��"��"��PInfo����decl�div_dvd_of_dvdabh� H� H����������#R��c� ����comm_semiringto_semiring� F���
��4��!L��PInfo����decl�div_posabhba��hb��/��������������h� K.�������������![�*
����![� U���![� �����y�#�![�#�#�#~.�![�"z�![�![��![� U.�#� U��.�������� T.�R�add_zero���![�
��#�����Annot�
�!����Annot�
�Annot��PInfo���prt�decl�mul_right_injabcha�!X7�-��#���
��!XA�#��#�nateq_of_mul_eq_mul_right��e�#��!�_x� [���:��� ��PInfo�
��prt�
decl�mul_left_injabcha�!X7���$�#������!XA�#��#�nateq_of_mul_eq_mul_left��e�#��!�_x�!����!���� \�PInfo���prt�decl�div_div_selfab�&�#R�&�!X�;������&�#R�&�!X�c��&� H��&�����7����&� ��Z�&/�Z�c��&�#Q�Z�:�Z�$���&� H�Z�Z��$�$..��$#�:,���#]�$(..���$#�$,��Z_a�$.�!��!�..��$#�$'eq_zero_of_zero_dvd� F�Z��$*��&� H1�Z��:.�$K88�<���$O������notdecidable����..�D��&�$1�&/8�c��&�#Q��:���$i���&�$���:��$s..��$w�$,���$w�$,�����$i�$i..�$5��$w�$'�$>��$D��&�$I���:�r���v�$��w�w���$��$i��w�$��$�natmul_right_inj�$��$��wnatdiv_pos����le_of_dvd���4��4��:���$���$����$����$����$��$���$��$�_a��:���$����:������$���$���$����!L���$��div_dvd_of_dvd�����$��$������$��$�����$�_a����$��$���$���� }�������PInfo���prt�decl�div_lt_of_lt_mulmnkh�� *���,�-�.�/�%lt_of_mul_lt_mul_left������
�����������%�����%�U
���%�%"Annot�
����Annot�
Annot��
��PInfo�+��prt�+decl�lt_mul_of_div_ltabch� w�������2�3�4�5�%9�6��������functioncompge������!��O�not_le_of_gt���O����OU����natle_div_iff_mul_le�����PInfo�1��decl�div_eq_zero_iffabhb��7��.���>�?�@��A�%g��h�%g���*�%$������%q�J_a����������%$�
��%$��%-��%q*�%#�G����%q�%����_a�*�#�*�#~�����%q.��%�*�%#������%��%�������_a�*�#~�#��*�#~���%����S��%�*�%"����%��%�����%"��_a�*�#~�������%��%"�#��%"�!���h����#v�%�G���#v�%��
�#v_a��� �.��#v�%��
���%��#v� �%��#vnatmul_left_inj���.��%�
�Badd_left_cancel_semigroupto_add_semigroupordered_cancel_comm_monoidto_add_left_cancel_semigroup��%"�%�&�G���%��&�
�%�_a��� U�#���%��&�%��&�%�� �&�%�add_left_cancel_iff�%��%"�%�G��&� �&���&�&$��%$_a��&�![� U�&*�#���&-��&��%-��&$� �&��G���&$�&=��%"_a����&-���&�#���&$��"�����&=� �&;�����&=�&V�%�_a����&���#����&[��&=���S��&V� ����&V�&k������_a����&[������&V��#�����PInfo�=��prt�=decl�eq_zero_of_le_divabhb�!h������U�V�W�!�X�&��eq_zero_of_mul_le���U�-�U� �����&��&�� �_a�U� ����w��&�� �� �������%V�������.�P����+.�P�$X�P�D�PInfo�T��decl�mul_div_le_mul_div_assocabcU�����:���\�]�^�����.�&�hc0���U�����:���
���&��
���&����
�&��������&�.�#�&��#����#���.�f�#��&�.�#�&��&�..�^�����!.�~�����/�D�_������&�U�&����%Y�&�������'
U�B�semigroup��'�������'
�'��'�'��_a�U� [���� \��� \��'
�'mul_assoc�'����mul_le_mul_left�'��natdiv_mul_le_self��PInfo�[��decl�div_mul_div_le_divabcU�:������g�h�i�����.�'Oha0��U�:�<�����
���']�
���']�l���
���'[.�#�'[�$K..�^�'Y.�#�'Y�������<.���$K.��.��zero_div���t�#��.�'~.�������� �������
α�S_inst_1canonically_ordered_monoida��R����������+�����������'�zero_le������D�j�����'[�:�:�-���U
� '�'Y�'��U�'Y�'�U� ��<�'����'��'��� ��<�_a�U�O��:� �����'���'��'�� ��<��mul_div_le_mul_div_assoc���Annot�
��'����'��#������'��'���'�_a��:�'����������'��'�natdiv_div_eq_div_mul�-���'��:� ��#������'��(� �_a��'��������!��(����'�� �� ���(�(� ������(�(2�� ��_a��:� ��(���(:����(�(/� ����(2�%f�����(2�(N��&��$_a��(:� �����(��(2��natmul_div_mul������'�Annot��PInfo�f��decl�eq_zero_of_le_halfah���!��P���|�}�(v�eq_zero_of_le_div�P�q�P�PInfo�{��decl�mod_mul_right_div_selfabc�:�# ���������������.�(�hb����:�%!��������
���(��
���(����
� �(�.�#�(���.�^�(���#�(��%!.�chas_mod��e_2=��e_3=��������(�����
�(����������.�%�mod_zero��.���(�.�#�(���..�(���.�#����.���.����zero_mod�/�D������(��(�hc����:�������� T��
���(��
���(�� �� T�
� �(�� T�^�(����#�(���.���(������y��.�#���#����#��.�#��(��������(�� T�#�(��(�.� T�(�� T� T�� T�.�(�� T� �(��
�>� T�D���(��(��(����:�(����N������(��)E�"��(��(���(��(��)D�)"�)D�)D�/_a��� s����!������(��)@�
��)@��������)D�)D��)D��)E�(����:�)<�'�'��)>�����)E�)u��'�'��)>_a��:�!p� \�����:�)~� \�Z� \����)����:�)������)E�)o�'5��)>��)u�(����(��)n����)u�)���:�)<���)n�_a��)����:�)��'���'�)�����)�����)u�)��"+�(��)n��(d��)��(����(�����)��)�����)����)>�_a��)����)��)���)���)��)��K�(���)>��)��(��(����)��)���)�_a��)����)���)���)��(��"��(��natdiv_lt_of_lt_mul�(����#���mul_pos����)�����)K�PInfo���decl�mod_mul_left_div_selfabc�:�#�5�(���������*�:�#�(7�(����*�*(�� �_a��:�%!�"��(��:�%!��(���*�*#� ���*(�(��(����*(�*H��(�_a��:�%!� ���(���(���*(�(��mod_mul_right_div_self���(��PInfo����decl�triangle_succn�:�y�
|���~�P�:�4�
��P����*t�*n�:�*o���P���*t�*{��*s_a��:���
|��~�P�:�
��P�*���*t�*z�
��*z�*s�"+�*o�P�zero_lt_succ�~��*{�*n�:�*w�*-�P�P���*{�*��� ��P_a��*��:�*����P�*��:�*��P��*{�*�� ��P��*��*n�:��to_has_mul�distrib
���*��
��P�P���*��*���*��*��
��*��P_a��*��:�*��(7�P�P�*��(u��*��*��
��*��*�mul_add�*��
��P��*��:�y�P�*����*��*���*j_a��*��:�*��*��
��P�P�:���P�+��*��.�~��*��:�*-���P�*����*��+�� ���_a��:���P�+�(u�+��*��+� ����c���+��:� ��Z�Z�~�P����:� �11�~�P�PInfo����decl�dvd_onen7�#Q�~��~��A�+Q�+S�eq_one_of_dvd_onee�+S�!�_x�+Q�~�
��~dvd_refl� F�~�PInfo����prt��ATTR�����decl�dvd_add_leftkmnh� �7�$���$����������+k�7�+n�+lnatdvd_add_iff_left���PInfo����prt��decl�dvd_add_rightkmnh� ��+m�$���������+��7�+��+lnatdvd_add_iff_right���PInfo����prt��decl�dvd_add_self_leftmn7� I�!����natdvd_add_right�+e�PInfo���prt��doc��A natural number m divides the sum m + n if and only if m divides b.ATTR�����decl�dvd_add_self_rightmn7� I�.�!����natdvd_add_left�+��PInfo���prt��doc��A natural number m divides the sum n + m if and only if m divides b.ATTR�����decl�mul_dvd_mul_iff_leftabcha�!X7� H���$�+����������!Xexists_congr��!��#_� \��#�#_�d�7�+��+�7�+��)��'�+����+��+���'�)��_a�7�!��#_�#�� �#_��7�+��+���+��+��'4�����+�7�#�+��+����+��+��
�+�� [�+�_a��7�+��'���)��+��n�+���+��+�� �+��+��%�����+����+��PInfo���prt��decl�mul_dvd_mul_iff_rightabchc��7� H�$���+n�����������+�����#_�!��� �+�d�7�, �,$7��� �� ���,$���,(�,/�� ��(U_a�7� \�#_�!����#_��7�,7�,>��,(�,,mul_right_comm� ������,/7� �,*�,$���,/�,V�
���,*�_a��7�,7� �� �����,>�n�,>��,/�,T� �,]�,T�$����,*���,T�PInfo���prt��decl�succ_divab�:���ite�#Q��decidable_dvd��~.����_xpsigma����,����,��:psigmafst�,��~psigmasnd�,��:�,��,��,�� H�,��,��,��,��,��~.���,�psigmahas_well_founded�,���a�����,��,�_x�,�psigmacases_on�,����,�_F_y�,��&�,��:�,��~�,��:�,��,��,�� H�,��,��,��,��,��~.�,�fstsnd�c�������,��&�,���mk�,���,��:�,��,��~�,��,��:�,��,��,�� H�,��,��,��,��,��~.�c�������,��&�,��,��Z�,��:�,��-�~�,��-�:�-�-�,�� H�-�-
�,��-�-
�~.������,��&�,��-.�,��:�+<.�$ �,�� H.�+<�,�.�+<�~.���-$��-3�
���-3�
���-3���
� �-&.�~�+<�-2.�#�-2�j..�"z�$ .�~�Z�-1.�#�-1�,��decidable_of_decidable_of_iff�-*��--�0� H�$'�+<���d.���-V���d���~���-Y�-V�+<�$'�-`zero_dvd_iff� F�+<add_eq_zero_iff���Z�~and_congr�-\�-_�-W����-Wα�Sszero_ne_one_classiff_false_intro�{��to_has_one+��to_has_zeroone_ne_zero�zero_ne_one_classand_false�-W�~..if_simp_congr�-*��--�~.�~.�-���~�)if_false�-��~.�#�.�/�D���c�������,��&�,��-8�,��:�,��-��~�,��-��:�-��-��,�� H�-��-��,��-��-��~.������,��&�,��,�.�~�,��:�j�~�~�-����-��-���������,��&�,��-��s���,��-��Z�$K�Z�,�� H�Z�-��,��Z�-��~.���-�
hb2�F�Z�~
��-����$K���,�� H���-��,����-��~.�
���.�
���.���
� �..�#�.�:�~��.�^�-��~���~�����
m�q�~���..�#�.�-E.�"z�.	.�'~���..�#�.�-O�-P�.��.�0�.�~���~������-|�.D�����~�~..�-��.��.�~.�~.�.O�-��)�-��.P�~.�-��/�DAnnot�xAnnot�y���.���Z�D���c�������,��&�,��,���,��:�,��.�~�,��.�:�.��.��,�� H�.��.��,��.��.��~.������,��&�,��,�8.�,��:8�~.�:8.�,��-)�.��-,�.��~.���.���.��
���.��
���.����
� �.�.�~�.��.�.�#�.��-E.�"z�.�.�~8�.�.�#�.��-O�-P�.���.��0�-T�.���9.���.���9���-_�.��.��.��$'�.��-i�.��-n8�~�-s�.��-_�.�����.��-��-��.��~..�-��.���.��~.�~.�.��-��)�-��.��~.�-��/�D��������,��&�,��,��"�w�,��:���~��:����,�� H��/�,���/�~.���/��/)�,���/����/���/-�//�$X����/�:�
|�/���~.�/(���/)�/D��/_a��:�{�~���:�{���,�� H���/K�,����/K�~.��/[��/)�/Bnatdiv_def�/���/D�/C�,��/.�����/2�/l�/4�/6���:�
|�����~.�/'���/D�/�"��/B�/B��/B�/(�/~�#�/(�/~�/~��/_a�/[���/Z��/(�/|�/e�����/~�/~��/~�<�������/hb_eq_a�/���,���/�����/K���/��/��$X������/K�:�
|�/K�����~.�,��/����{�/��/��/��/��{�:�
|�{�����~.�/Z�
���/��
���/��-^�~�
� �/��~�#�/��,��
�-P�/��
�/��0�/����
�-s�/��/��
�
���2���0�!
�B���������~�/��{�~��{�
add_le_add_iff_right���{�~�
�/�A�7������/��
���/�U�{�{�
����{�{�{��{� �!�{�{�
α�S_inst_1preordera���'��'��o���{�i�~.�~�-��/��
�/��/�.�~.�08�#�/��-��~�"z�/�.�#�/��$K��.�^�/�.�#�/��
|����.chas_sub����e_2=��e_3=��
z�����0Z����
�0Z��
{�/K���#�G�{�~�N�Q�~���0q�Q�{�0s��{�~add_left_comm��~��~�#��������#���0s���0��0v�0s�0��/K�0v�"z��{�~�~�-��0z�0��0����������0��'~���~�~�-��.'�)if_true�09�~.�/��~�#�/��-��~�"z�/�.�#�/��-O�-P�/���/��0�/������/��/��
��/��0�/��/���~����0��~�
�0�A�7������0�����0��-_��0��!�~,���/��-_�0��0��0��0����� �!�0���0�add_le_iff_nonpos_right���~� ���~���-_���~� �|�-�-�,�-��-���-��-��
���:�r�{��..�-��/���/��/�.�1.�1�#�/��1�~�Q�1�"z�/��1�^�/��1�#�/��/����1�0l�{�{�0�����0��succ_sub_succ_eq_sub��{�����0��~�~�-���1�~�)�-��1�1.�/Z�~�#�/Z�/��-P�/S�
�/V�
�/SA�7� H�{���~���/S�
���/S� H�����
chas_dvd�}�}e_2=��e_3=��� C�����1l������1l�� G�����0��/K���0�� �1g�
���S_inst_1�a��� B�� D��+c�� F���~.�~�-��/S�
�/V�~.�~.�1��-��)�0��1��~.�.'� �/��
�>�~�D����/���/����{�/�hb_le_a1�/���,���/�{�0�1\���1��1��$X�{��{�1\�:�
|�1\�{�{�~.�,��1��0���1��1��1��1����:�
|���{�{�~.�,��1]�,��{�1\�~.�1��1����1��1���1��1�� �1\�1�._a��,���/��U�����~���2	�2�$X������2
�:�
|�2
�����~.�,��2
�2���2�2#�2�2���:�
|�������~.�,�� H���2
�,����2
�~.��2>��1��1�if_pos�1��2�!��1��1�4����0��/����~�%I���0����~�1�.��1��1��1��1����1��2e��1��1�� ���1�._a��2�2>�2q���2=��1��1��2H�1��2k�2K�1��2M���0��/����~�%I���2U���~�L��lt_of_le_of_ne�����1�.��2e�:�1���{�~�2d���2e�2���1�_a��2q�21�2=�!����~�2���2e�2�natadd_sub_add_right���~���2��:���~�{�~�2d���2��2���2�_a��:�2,�����~�2��2���2��2�natsub_add_comm���~��2���2��:���{�,��1Z�2��1��2��~.�~�2d���2��2���2�_a��:���~���~�2����2���2��2�
�~�O��
�����,��
|����ab�~�j�����,��,��s�,��r��v�"psigmalexleft�,���a���s�3�"����s�3�*���s���3�*���s���3���3���3+�3-��3(�s���s�3*�3���3����Annot�xAnnot�y�lt_succ_of_le����natsub_le_self����{��2��2��2��~�1����2��3^��1�_a��:�����,��25�2��28�2��~.�~�2��3q�2��2=��2����2����~���3^�,��1Z���-P�2��3��2��0�2��1]�3��7�2��1]7�1Z�2��{�1]���3��3��
�2�_a��7�3g�26�n�26��3��3�� �2��3��+v�{�2��{�+e�{��3�7�1Z�1��~�{�1]���3��3����_a�7�25�2����267�25�����26��3��1��
��1����3��3�7�1Z�Q�1��{�1]���3��3���G�1��~_a�7�25�2-�~���267�25�����26��3��3���1��~��3�7�1Z�(�~�(�1��{�1]���3��3���(�3��1��{_a�7�25�Q�2-���267�25�26��3��3��D�~�1��{��3�7�1Z�3����1]���3��4!�����_a�7�25�3��(�2-���267�25�3��26��3��������d����2���4!�
���4!�
���4!7�1Z���~�3��
���4�4K�1~�{�{�0�4�4J�
���1]�3��4T�1\���#�G���~�G���0r���4`�Q���4b����~�0���~�#���� �4L�4K�
���4K�D�
�1]��7�26���1]�3��4q�~.�3��-P�1]�3��1��4��~.���3^�4����3^�2��4��2��4��4��4����4����4��4�� �2��4��#�2��4��~�Q�4��"z�2��4��"z�2��2���2��2��4��-��2��3��2��~.�~.�4��-��)�~�~�-���4��~�3]�4��#�3]���2��4��3��(�2��4��"z�3[�4���2��~�1��4��-��1]�3��1��~.�~.�4��-��)�4�2��4�� �&�~�4��4��4��4�add_left_inj�%��~�4��4�� �&�2��4��5�4��4��4��2��4��4�c��2�e_1��hdecidable��4�5α�St�7e_4�"�e��9��e_5�"������,�����������,��������2��5�����������5�S�����2��2�e_1���4�5�6�S�7�7e_4�"��9��9��e_5�"�eqdrec����2��;������,��������S���,��5���5 ��������5/�����7���<�S���5:�55�5>���������5I��9���=�5K��5:�5R�S����5�5���5 �S���������������������������������congr_fun���9���S�5'�5,�5��7���9�S���5&�5+�@�S�6�S�7�9��5%�5*��5���6�S�5��5�5�5$�S��4�5��5��5subsingletonelim�5�decidablesubsingleton���5$�S�����3��3���3��4��4��~�~�-�..�)���/��1��
��1��
���1����
� �1�.�#�1��-O�-P�1���1��0�1��0���-s�1��1��
��/���0�2Q�2S��2W�-|�0�1���2�..�-��1���1��1�.�6.�5��#�1��2��Q�2��"z�1��2��^�1��2��#�1��
|���{�2��0l�1\���4p�{�{�0�1;����{�{�0�~�~�-���2��~�)�-��6�6.�1�.�#�1��-E.�"z�1�.�#�1��-O�-P�1���1��0�1��0���5��1��
��5��0�2��2���2��-|�0��%P��lt_trans�������Y��������1�4�..�-��1���1��1�.�4�.�6d�#�1��3[�Q�2��"z�1��2��^�1����1;����{�{�0�~�~�-��4��)�-��6e�4�.�1�.�#�1��-O�4���1��-|�3�h�3�`�����$���0��4���~..�4���1��~.�~.�6��-��)�-��6��~.�-��/�D�,��PInfo���decl�succ_div_of_dvdabhba�,��/���~�H�I�J�,���6��6��,�� I���,����~.�6����6��6���6�_a��/O����~��6���6��6��succ_div���6��6��6����6��7��6�_a��6��,�� ��{�,���{�~.�6��6��6���6��~�2H�6��6��~.��6��PInfo�G�3decl�succ_div_of_not_dvdabhba��,��6����O�P�Q�7/��70�6������70�75�6�_a��6����(��70�6��6���75�6�.�����75�7H�7
_a��7���7����75.if_neg�6��6��~.��7H�(N���7H�(N�������_a��6�.���(��7H���#����'��PInfo�N�7decl�mod_modan���"��7|�W�X���7���n0������#�7��
���7��
���7��^�
� �7���#�7��#.��(��7���#�7��7���(����t.�(��.�7��7���7�� �^�
�>��Dnpos���"��7��!���PInfo�V�;ATTR����Vdecl�mod_mod_of_dvdnmkh�!���%!��%"�\�]�^�_�!��7��7����7��<����7��7��"��7��7���7��%"�7��#�%"�7��7��J_a�!\�)���%"�7��
��7���%,��7��7���7���+��_�+�����������trfl�+���+��^���!{�����8�4�!v������!p�+������8�+��Z�+����8���8�)��'�8�����8�8$��'�+��8_a����!{�,<������8-�8,�!v�8,���80���81����8�8 �+��8��8$�8�8���8$�8J����8� [�8��_a��80���81�+��)m�83���80��8$�8�K�8���8��8��
���+��PInfo�[�@ATTR����[decl�add_pos_leftmh��n/�d�f�g���hgt_of_gt_of_ge��d.���d�j�F
natadd_lt_add_right.�Annot�
natzero_addAnnot�
|Annot��PInfo�e�Fdecl�add_pos_rightmnh��/���o�p�q����8�/�����8��8����_a�/������8������add_pos_left��PInfo�n�Ldecl�add_pos_iff_pos_or_posmn7/�!�����u�vA�8��8�h�8��c�u�w/�x�8�/���w/�+;orinr�$�!X�/�+;��!X�..�)�8���#�8�����"z�Z.�����t�pm�w/�+C�orinl�$g�8��$�h�8��A�!X���}�!�!X���8�mpos�!X�8���npos���add_pos_right���PInfo�t�Odecl�add_eq_one_iffab7�~�!�����+S��<�~�������c��7�.�~�!�����9���+S���c��7�+;�~�!�-X�+S���d�~���7�-E�~�!�������~���95�����9;���92�9:���-E�~ordecidable�96�99�����95��..�9H�~���95���9K�9I�D���c��7�+;1�~�!�-X���~�9*��.�7�-��~�!�94�/��98�-^.���9n���9g�9m���-��~�9C�9i�9l�9F�/��9I���~�~�9N�9k�9K�9z.�D���7�+;�Q�~�!�-X�Q�~�9*�9�.��9�7�(�(�Z�P�~�9����9��9���9��(�P_a�7�+;�Z�~�!�-X�Z�~�9*�9�.7�+S�9���9��9��
��9��9��D�Z�P��9�7��!�-Y�9*����9��9����9����0�9��~0.�9�.�� �9��9�natsucc_inj'�9�.� 0�9�.�n�-|�9_natsucc_ne_zero�9��9��9�������e_1��������e_2�����!���!������!��9��-Y���-W�-W��-W�9����0���9��2�.�� �:�:
�9���.� �9_��9��9��9����9)�9)��9)�9��� �:
.��9�����9��
���9��
���9��9���
�������9�����9��!����:�-Y�� �-Y��-��9��� �9���-��9)� �:@�or_self�� �:5�
����D���c��7�8��~�!���9_�#�~���9\��c��70�Z�~�!���:w.�+S���:}�~���7��.�~�!���9k�95���/������:����:��:����:��~�9C�:��:����9k�95�9��9K���/����9{�9I�D���c��7�:x1�~�!�:�9\�:��9_�7���~�~�!�:��/��:��9k���:����:��:����:��~�9C�:��:��:��/��9��9{�:��9k�9{�9��D���7�:x�Q�~�!�:�9��:��9���:�7�(�(�:w�P�~�:����:��:���:��9����7�:x�Z�~�!�:�9��:��9��9��:���:��:��
��:��:��D�:w�P��:��9��!�:��:�����:��;���:����0�:��~�9��;.�� �;�;�9��;.� 0�:�.��9��:��:��;�:�:��;���:~�:~��:~�9���:�:��;���:��:���:��9���:)��;�
���;�
���;�:5�
�:;�;����;�:@��:�;�� �;��-��:~�;�� �;��-��:��:U�:\�D���c��708�~�!���;s.�+S���;y�~����7�Q�Z�~�!���9��9)���9��-W��;�7�G�H�Z�P�~�;����;��;���G�H�P�Z_a�7�Z�Z�~�!���9��9)���9��-W�9��;���;��;���P�Z���;����;��;����;��~�9C�;��;����9��9)���Q.���Z�~���9��-W�;��~�;�.�D���c��70�1�~�!���;�.�9\���;��~�9_�7�;��:w�~�!�;��:��;��:~��;�7�G�i�:w�P�~�;����;��;���G�i�P�:w���7���:w�~�!���.C.�:����.D�:~�9��<��;��;���P�:w���;����;��;����;��~�9C�;��;����9��:����Z.���:w�~���9��:~�<-�~�<0.�D���7�<01�~�!�<�<A�~�<�<F.��<M7�G�p�<A�P�~�<L���<M�<V��G�p�P�<A���7���;s�~�!����.�;~�����~�;z�9��<k��<M�<R���P�<A���<V���<T�<L���<R�~�9C�<H�<K���<
�<G����.���<A�~���.D�<J�<��~�<�.�D�PInfo���]decl�mul_eq_one_iffab7���~�9�+S�����c��7�5�~�9�9�c��7���~�9*�+S�7�B�~�98�95���<����<��<����B�~�9N�95�9K�9K�D���c��7��1�~�9*�9\�7���~�~�98�/����<����<��<����<��~�9N�/��9K�9{�D���7���Q�~�98�9���<��
���<��
���<��:5�
���<�����<��95�� �<�.�#�Q�~�~�-�� �1�1����Ss�-{�-|�-}�-��-�zero_ne_one�-��<�����<�����9�����95��=�9��9���9�� �=�false_and�9��:\�D���c��7����~�:p�:m�c��7�:w�~�:��+S�7�.�~�:��95���=R���=O�=Q���=M�~�:��95�9{�9K�D���7�r�Z�v�+�~���=c�~�+�~A�=g�=nh�=g����-c�~��~�
���=w�
���=w���
���=s�
���=s�/��
� �+<�~�#�+<�-��~�8��cright����.���-W��+<��~���=��-W���=����=����-\�=��=��=��Z.�=��=��=��~�~�=�� �=��=��#�*��+<�*��~�=��+<�(�(�=��Z�~�=��*��=��=��~�=��*��+<�~�"z�=��=��#�*��*��Z�~�*��*��Z�*��~�=�add_mul�*��Z�~�"z�=��=���=��=����=��+<���+<�
��=��=��9��~�D�=��Z�~�~�~�-�� 0�=��9��=��9��=�.� 
�B�����=��Z���=��-n�=��Z���=��=�� �>�=������=���<���-n�=��-\�-W�:�~�~�-��.'�~�~�-��1��=v�
���=v�/��
� ��~�#��-��~�"z.�=��=����cleft�=��-W�>(�~�~�-��.'�~�~�-��1��j�D����=t�2��~�=����=s���=v�=����~���>`�>f� �>`�>fand_imp�=s�>^�=����~a_1�=sa_2�=vclassicalby_contradiction�>da_3��>dab���=v���=v����{���~falserec�false_of_true_eq_false���
���{�~��%��>��
eq_true_intro�>��#�>��{�~�>���{�{�
��>��>��#�>��>��>���>��>���~�>��>��>��>��>��>�J�{�~���>��
��>��>��>��>��>���>��>��>��>��>z�~�>��>��>z���>�is_commutativecomm� �comm_semigroup_to_is_commutative� ����{J���~�>z��>��{�~�>���>��{���{eq_false_intro�>��Z�����c��7�;s�~�;�+S��7�Q.�~�;��95��?�
���?�
���?�:5�
���?����?�95�� �?.�R�Q�~�~�-��=�?����?�;������9��9��=%�95��=� �?"��-��9��:\�D���7�r8�v�+�~���?:�~�=mA�?>�?C���?>�����~�~�=v�
���?M�
���?M���
���?K�
���?K�/��
� �?I�~�#�?I�-��~�"z�.�=����.���2.��?I��~���?g�?i���?n���?c���2���?q�?s�?u�.�?z�?s�?~�~�~�?�� �?l�?��#�*��?I�=��?}�?I�(�(�?u��~�?��*��?��?��~�?��*��?I�~�"z�?��?u�#�*��*���~�*��*���=��?u�=���~�"z�?��?c��?c�=��=��?��?I���?I�
��?��?��(��~�D�?u��~�~�~�-�� 0�?~�9��?��9��?~.� �>�?u����?z�-n�?u����?w�?g� �>�?c�����?d���>�-n�?c�?y�?i��?i�~�~�-��.'�~�~�-��1��=v�
�>;�>=�>@�>B�=��?e���>E�?g�?i�?��~�~�-��.'�~�~�-��1��j�D������.��~�>^�?n���@#���=v���~���~���@&�@.� �@&�@.�>m�@#�>^�.����~���@#���=v�>w�@,����@,�>������PInfo���edecl�mul_right_eq_self_iffabha��7����9��������
�~7�����~�9�7�����~�:m7����:m��H��J_a�7�,7� [�~� �~�,B�@n��@b�����%��~Annotsuffices�PInfo���odecl�mul_left_eq_self_iffabhb��7���:m����������@�7�(7��:m���@��@���*N_a�7����@n7�!.�@n��@��@�� ���@�7�:m�:m���@��@��
�"_a��7� ���@n�n�@n��@��:m� �@��:mnatmul_right_eq_self_iff����:m�PInfo���sdecl�lt_succ_iff_lt_or_eqni�_�!�j=�����0�^Z�@���le_iff_lt_or_eq��PInfo���vdecl�le_zero_iffi�x����A�����fh���!�_x�-.���PInfo���ydecl�le_add_one_iffij7���!Z<������A���@�h��_a�!�#�����A� ���������!�@��@��!����h_1�@���A�8�����h_1�@��A�8������6��nateq_or_lt_of_le��orrec�!�@��A��h�A����natle_add_right�~le_of_eq����PInfo���|decl�mul_self_injnm7�4=�����0�A8���!�A5�A7�!�A7�A5=le_antisymm_iff��A5�A7�7=��U�A5�A7U�A7�A5�0=���A�!�AR�AH�-s�A�AW�AN�AQ�mul_self_le_mul_self_iff�Ab�PInfo����decl�decidable_ball_lt_match_1nPkH�8�p�Y_a_a�i_a�]���������Ap���As�����i���At�h�t_1���~H_1��H_2�l�t�����t��
��������A���������"E���]�'���l�#���^�t�����"����!�� ���l�'���A����������Y���S������#���PInfo����	decl��equations_eqn_1�����Ap���Ash����c�������������Ap���As���A���A��d�A��A��PInfo����	ATTR�����EqnL��decl�decidable_ball_lt_proof_1��������Z�Hnh�A��5�wnh�A��x���A����A������A�forall_prop_decidable�A����A��A����Zh�A��A��D�PInfo����	decl��_proof_2�����Aph�n����kh������lt_succ_of_lt����������A������Ap���A����B����������������A���hn�Bkh�A��w�A��PInfo����	decl��_proof_3�����Aph�A�����Y�kh'����������Ap���A����B�����B���+��<���B�:���2���xe�B)�A��������PInfo����	decl��_proof_4�����Ap����As�B�����Ap���BB�B�Bhn�B��Y��PInfo����	decl��n�����������������A��5�������A������BQnatrec���BX���A����A��A�����IH�BX����������������A��A�decidablecases_on�����A�����������A��S_x�5�Bu�5�������B������A��x�A����B����Bu�is_false�Bz��������Budite���6Y�8�6Y�B{���B��B]�����������������B��B��B�������PInfo����	prt��VMR��_lambda_1VMR��_rec_1VMR��VMC���	�����;_fresh!�k]VMC���	���Y��			VMC����	�������decl��equations_eqn_1�����BQ�BW���B������BQ��BW�B��PInfo���	ATTR����EqnL�SEqnL��ATTRinstance����classdecidable����decl�decidable_forall_fin_match_1nP�&fin�akh���finmk�_a�B���z���B���B���B��cases_on���B����valis_lt�A�����B����A��PInfo���	decl�equations_eqn_1���B���B�kh���A���B���������B��A����B���B��� ���A��B��A��B��B��PInfo���	ATTR����EqnL�decl�decidable_forall_fin_proof_1���B�7�B�i�B��	����B�A�B��C��B�_x�B��B���a�Ckh����B��PInfo�"��	decl�!���B�Hdecidable_pred�B��5�#�B��z���B��(�Cdecidable_of_iff�C�����B��"��B�������B����C�PInfo�!��	prt�!VMR�!_lambda_1VMR�!VMC�+��	�����;_fresh!�o'VMC�!
��	�(���+����decl�!equations_eqn_1���B��(�C�C�!��C+���B��(�C��C�C3�PInfo�0��	ATTR����0EqnL�0SEqnL�!ATTR�
���!classdecidable�!��decl�decidable_ball_le_proof_1nPkH���7kh�Bf�w�B.�nh���A��4�5�C?A�CD�CGa�CDkh���w�3N��a�CGkh�A��w�B.���PInfo�3��	decl�2�4�5�C?Hnh���A��5�:�;���A��4�5�C?�B�C_�C�Ca�8�9�A��x�CV�3��B���8�9�A��Cg���CX�PInfo�2��	prt�2VMR�2_lambda_1VMR�2VMC�E��	�����;_fresh&�;�VMC�2��	�B�5�4�E�L����decl�2equations_eqn_1�4�5�C?�B�C_�Cb�2��Cu�4�5�C?�B�C_��Cb�C}�PInfo�J��	ATTR����JEqnL�JSEqnL�2ATTR�
���2classdecidable�2��decl�decidable_lo_hi_proof_1lohiP��7xH������x�&���&�]����N�O�P��A�C��C�al�C�xhl�Yhh�]��������
�������C�_a�����r�S����C��natadd_sub_of_le�����C����C��K���U�K�C���Q�not_congr�C��C��
������%O���al�C�xh������A&���������PInfo�M��	decl�L�N�O�P��H�C�5�S�&�C��&�C����N�O�P���_�C��C�C��Q�R�C���C��M���B����Q�R�C��C������C��C��PInfo�L��	prt�LVMR�L_lambda_1VMR�LVMC�`��	�����;_fresh�F��;_fresh�F�nataddVMC�L
��	�_�P���O�N�`natsub����decl�Lequations_eqn_1�N�O�P���_�C��C��L���C��N�O�P���_�C���C��D�PInfo�l��	ATTR����lEqnL�lSEqnL�LATTR�
���Lclassdecidable�L��decl�decidable_lo_hi_le_proof_1lohiP��7xhx�C��u�&�R�&�]�����xh�Dx�&�R�&Y���D�p�q�r��ball_congr�u���u�&���&�]�{���x�&���&���xhl��imp_congr�D.�w��w���iffrfl�w�PInfo�o��	decl�n�p�q�r��H�C��5�x�&�C��&Y�����p�q�r����C��C�DJ�u�&�C��&�]�����o���D���u�za�	��PInfo�n��	prt�nVMR�nVMC�n��	��r���q�p�h�L��decl�nequations_eqn_1�p�q�r����C��DK�n���D`�p�q�r����C���DK�Dj�PInfo����	ATTR�����EqnL��SEqnL�nATTR�
���nclassdecidable�n��decl�bit0_lenmhZU�O��O������Zadd_le_add����PInfo����prt��decl�bit1_lenmhZUbit1�}��D�������Zd�Dw�Dy�D��PInfo����prt��decl�bit_lebboolnm�&ZU�bit���D����D������&Zboolcases_on���D�U�D���D�����Dznatbit0_le���D�natbit1_le��PInfo����decl�bit_ne_zerob�D�nh�����D��.���D��������D����D����D�.�natbit0_ne_zeronatbit1_ne_zero�PInfo����decl�bit0_le_bitb�D�mn�&Z�Dx�D����D������&Z�D����D�U�O��D���D���!�Dw�D�
��Dw�D�natbit0_lt_bit1��PInfo����decl�bit_le_bit1b�D�mn�&Z�D��D����D������&Z�D����D��D��D����!�D���D���E�D��D��D��PInfo����decl�bit_lt_bit0b�D�nm�&�j*�D��Dy���D������&�j�D����D�*�D��Dw��*�Dw�Dynatbit0_lt��*�D��Dynatbit1_lt_bit0��PInfo����decl�bit_lt_bita�D�b�D�nmh�j*�D�����D����D����D��������j��E1�Dy�D��bit_lt_bit0����bit0_le_bit����PInfo����decl�ppred_main�&option�&�+�&�EN�-�EN�&�EU�PInfo����VMR��VMC�����&decl��equations_eqn_1�EN��.�EW��EN�d�EN�Ec�PInfo����ATTR�����EqnL��decl��equations_eqn_2n�Ea�Eb���E\���Ef�Eh�Ek�PInfo����ATTR�����EqnL��decl�ppred�EO�Eb�PInfo����VMR��VMC������doc��Partial predecessor operation. Returns `ppred n = some m`
 if `n = m + 1`, otherwise `none`.decl��equations_eqn_1�Ea��.�EW��equations_eqn_1�PInfo����ATTR�����EqnL��decl��equations_eqn_2���Ea�Er���E\��equations_eqn_2�PInfo����ATTR�����EqnL��decl��_sunfold�EO�E`�PInfo����ATTR�����decl�psub_main_meta_auxm�EO���&�ES�EU�E[�&�EU �EMmonadto_has_bind�EMoptionmonad
�E|RecFn����Er�PInfo����VMR��VMC�����&����		��decl���E|���&�*brec_on�EQ�&_F�*below�EQ�&���E��EP�&���E��EN���E��Z�EU�E[���&���E�1�EU�E��W�EQ�Z�X�Y�S�Z�[�\�S�]�E��EQ�E��E��E��E��E��E��E��Er�PInfo����VMR��VMC�����&����		��decl��equations_eqn_1���Ea��.�E\���Ef�Eh�E��PInfo����ATTR�����EqnL��decl��equations_eqn_2��n�Ea�E����E��E��Er�����Ef�Eh�E��PInfo����ATTR�����EqnL��decl�psub�E|���E��PInfo����VMR��VMC��������doc��Partial subtraction operation. Returns `psub m n = some k`
 if `m = n + k`, otherwise `none`.decl��equations_eqn_1���Ea��.�E\����equations_eqn_1�PInfo����ATTR�����EqnL��decl��equations_eqn_2�����Ea�E����E��E��Er����equations_eqn_2�PInfo����ATTR�����EqnL��decl��_sunfold�E|���&�E�&�EU�E��E���Er�PInfo����ATTR�����decl�pred_eq_ppredn�W��get_or_else�Er.���c���F��������PInfo����decl�sub_eq_psubmn�
��F�E�.�������*brec_on���
��F�E�.��_F�*below���r�F�E��.�����F�����F�E���.�c�����F���
|�S�F�E��S.�F3�F�F6.���F���3�F�E���.�Z��3.�FR�FR�����F<1���F>�F�F6�w.�#�F[�F�Er�F>.�F_�pred_eq_ppred�F>��Fe�F�F6�.�F�Er�FB.�Fn���Fo�Fu��F>_a��F�Er�
|���.�F�E�����.�F�F���Fo�FB�W���F{�F�F�.�E��E��[�\�S�E��]!���
|���F�E���.�E��E��E��F��F��F��E���Fu�Ft�F�E��F@�Er.���Fu�F���EN�Fl_a�EN��F�Er�F�F��..�F��F��F.��Fu�F����Soptioncases_on_x�EN�F�Er�F�.�F�E��Er.�F@��F�Er�F�EW..val��F�Er�F�E\..�PInfo����decl�ppred_eq_somemn7�Ea�F�E}9�����c��7�G
�E[��
�7�Et�E}�.�A�G�.�h�Gno_confusion�?i�Es�G���.��}�Et�G�.���7�Ex�G�2����G2A�Ea�E\�G�G1h�G6optionsomeinj_arrow����h_1<��/n���G5�E[�������Ea�E[���GH����
�������G1�*succinj_arrow��Ea�E}�E[�h_1� �/��������G\�E����q�Ef�GA��PInfo����ATTR�����decl�ppred_eq_nonen7�G
�EW����c��Gx�7�Eu����G~�
���G~�
���G~���
���Eu�
���Eu�Ea�EW�EW�
�}�EN�}�ENe_1�Ea��EN��ENe_2�G����EN��Ea���Ea���H�EN��EN������Ea��Es�EW���EW�EW�Ef�EW� �G��
�=�EN�EW���
�/���D��7�Ex�EW�:
��G�A�G5�EW�:
��G��G�=u.�E}�EW��:
�}�G\�EW�.�PInfo���ATTR����decl�psub_eq_somemnk7�Ea�E��E\�9�����
�F��
7�Ea�E����E\�9���_F�F��
7�Ea�F+�E\�9���
��
��F��
7�Ea�E����E\�9���c���F��
7�Ea�E����E\�9��7�Ea�F��G]�=�����F��
7�H�E\�9���Z�7�Ea�G�.�G��.����H+�
���H+�
���H+7����H4�
���H&�H4���H&�Ea�E[���G�H4�G��H$�H<�����G�G�Ef�Ginj_eq����H*�H4���H*�A��H4� �H(��#���������� �A��H4������ �H6�
���H4�D���H1�7�Ea�F���G]�z�����Hz�0�Ea�E��H�Er�G]Existsa���Ea�H��E\�G
�GH�Hyoptionbind_eq_some�H�Er��7�H��Hy�
���H��
���H�7
���
�{���
���H��H����H��H�����d���a�H��p�����e_1��H�����H��H��H�funext""x�x�H���H�����H��H����H��x���H�� �H��H��F���
7�Ea�E����E\�9�����Z�E��[�\�S�E��F���
7�Ea�E����E\�9���E��H��E��F��H��H��E�� �x�d�e���������H��H�� �H��H������ �H������&���H��H�exists_eq_right'"�H���Hy�H�� �Hw�H��0~��~�������� �H��H��
���H��D��PInfo�
��decl�psub_eq_nonemn7�Ea�E��EW�j��_x�ENs�G��F���EN��Ea�G��7�G��EW�!�����Ea�F!��EW�7�G��%v�%v���Ig�%v���Ig���%v�%v���G��
�G��%v�%v��%v� �In�%vtrue_iff�%v�%@�h�%F��7�k����_x�H��I���ledest����ke�I��G��EW�E}���EN�EW�F6���E}�
��EN�I��EW����Ea�I��E}
���S�psub_eq_some�S���#�i���G���S��������IY�E\�7�G��I]��������I��I����I���I]�I��I��9��I]�I����G���>��G�_h�G��I��G�EW�I]�I]��I]� �I��I�false_iff�I]� ��	�����I�� 3������I���Y���Y
�����I��I����_a��Q���R��I��I��
��I������Ea�F+���E}�I����I����������E��EN�E��PInfo���decl�ppred_eq_prednh���Ea�Er�E[�I�-�.�����J&0�I�I
�I��PInfo�,��decl�psub_eq_submnh���G��E[�
��0�1�2�����J7�{�I���
����PInfo�/��decl�psub_addmnk�Ea�E��E��G�x�E��4�5�6�rec�6�Ea�F!�d�E��Ic�JI��Ea�E�
�Z�JG�7�E��Z�
���J]�
���J]�G��G��
�G��JX�G�����e_1=�&�&e_2=���EN�F+�G��I�EO�����E�����t�JW�#�JW
.�>A��Z.���#��J\�G��I��J\�JG�E[�G�chas_bind�EMα�Sβ�Sa�EM�?�EM�e_4�EM��?�?���EM���?�?���EM��e_5�?���EM�����?�S�EM�S�J��E����S�����J����H�J��?�J��J������J���E��G��G��Ef�G��J[�E[�H���EN�J[��E\�7�I��JZ�E��E\�Jz���Z.���HCoptionbind_some�G�� �Jd�
�G��G��Dk_nk_ih�JT��Ea�G��z8�E��IX�7�E���
���J��
���J��Ea�J�x�E��E���Er�K�
�G��J��K�I��J��E��J��7�J��Er�J��F�E��7�E���Er�K
�E��G��=�Er�K�K
�G����K�Jz�����y�J����add_succ��F����=�J��K�K�Er�Er��EO�Er|�EM�E�optionis_lawful_monad�IX�K�Er�J��K�J��IX�IX�Ef�IX�J��K�J���E����K�7�F��� �K�
�G��K�D�PInfo�3��ATTR���natpow_zeroATTR���natpow_onedecl�one_pownhas_powpow�has_pow�~�~�O�F�O�Ko�O_F�F�Kq�O�S�Ku�c�O�S�Ku�Kl�~�S�Kt�Z��Kl.�K~�K~�O�S�Kt1��Kv�~�~
�~�K���K��Kx���K��Kx��H�Kv�J_a��Kl��~�~�+S��K��Kv���Kv��Kx�/����Kx�/���Kv_a��K��~�+S��Kx�~�F��Kq�E��E��[�\�S�E��F��Kq�E��E��E��F��K��K��E��-�Annotshow�PInfo�N��ATTR����Ndecl�pow_addamn�Kk��K��K��X�Y�Z�JO�Z�Kk��d�K���K���K��JW�K��K��Z�
���K��
���K��K��K��
� �K��K�chas_pow��e_2=��e_3=��Ki�����L����
�L��Kj���t�JW�J��K��K��#�K��K��~�K���K��K���K��K��~�#�K��K�.�~�L�Z.���K����K�� �K��
�>�K��Dn_nn_ih�K���Kk���J��LC��LC8�
���LJ�
���LJ�LG�LC���LT�
� �LD�LT�#�LC���LG�LQ���'�LF�'�LQ���L\�LC�=���L_�pow_succ���=��Lf�L]�����y�'4�LF�LQ���LI�LT��LF�LF��LF�LH�LS�Ll� �LV�
�>�LT�D�PInfo�W�decl�pow_twoa�Kk�P�A7�c
�~��A7��L��A7�A7���L��L���K_a���A5�<��A5��L�����A7Annot�V�PInfo�b�decl�pow_dvd_powamnhZ� H�K��K��f�g�h�iZ��L��L��K��������L��L���_a�� H�LF�LC��L��LC��L��L��
��L������L��L��K��K������L��L���L�_a��L��LC�z���L���L��L��pow_add����dvd_mul_right� F�K��L��PInfo�e�decl�pow_dvd_pow_of_dvdabh�!n� H�K��K��o�p�q�!�o�p�q�!�r�F�r� H�L��K��r_F�F�r� H�Kk���L��r�s�F�r� H�Kk�S�Kk���c�r�s�F�r� H�Kk���Kk��� H�M&�M)�s�F�r� H�M*�M�Z�� H�M).�M<�+e�M<�r�s�M-1�� H�#_�pow���E����#_�ME���E���mul_dvd_mul� F�MG�ML�����F��r� H�Kk���M'�E��E��[�\�S�E��F��r� H�Kk���Kk���E��E��E��F��M]�Mn�E��S��PInfo�n�
decl�mul_powabn�Kk���K��Kk�w�x�y�JO�y�Kk���K��K���M��Z�K��M��Z�
���M��
���M��/��
� �M��~�#�M��M�.�~�L�������Z.���L1���M��~�#�M��>��~��K��~�L3�M��~�#�M��M�.�~�L��Z.���L1���~�1��Dn_nn_ih�M���Kk� \8�LH�K�8�
���M��
���M�� [���LR�L��M��
� �M��M��#�M�� �� ��M���M��M��M�� \�M��M��M�� \�M��Lk� \��N�M�� \� \�� \mul_left_comm� ��M����������y�M��M��#�'�Lb�L���LR���L�� �� ��LQ�L��N"�Lb�'�L���N$�'4�LQ�L����LQ�LQ��LQ�N+�N#� ��L���N�LQ��L��M��M��#�M���� [�M�� �� ��M��NG� �� �� [�LQ�L��NI�NG�NN�N#�NQ��LH�NN�#�LH�LS� ��LQ�L�� ��LQ���M��N#�#�M��L��� ��L��Lk��N:�N�NN��L��#��NP�NH�+��LQ�L��N����M�� �M��
�>�M��D�PInfo�v�decl�pow_mulabn�L����Kk�L���~����JO��M��%��Kk�M����L����Z�N��Z�
���N��
���N��/��
� �N��~�#�N��L�.�~�L���N�.�#�N��G���K�Z.���S�L1�N��~�#�N��N�.�~�L�N��N���N��Z.���L1�N��1��Db_nb_ih�N���K�� [8�Kk�K���8�
���N��
���N��N��N��N��
� �N��N��#�N��N��K�� [�N��N��K����N��N��L�N��N��#�N��N����4a�N��O�*��*����O�~�O�O� [��O�N8�natsucc_eq_add_one�*����~�"z�O�N���N��O
��������N����L�����N���N��N���N��N��N��N��N��#�N��N��N�� ��N��N��O;�O<�N��~�O=�O;�N���OC�L�N��N��O28��O�L��N��~��N��N���N��OB�N��M�N�� ��N��N�� �N��
�>�N��D�PInfo�}�prt�}decl�pow_posphp��n/�K����������������F��/�K���_F�F��/�L������F��/�M!�c�����F��/�M*/�M1���F��/�M�Z�/�M.��O��
���O��
���O�/�~�
�8��O��~�L1�S� /�9��
�/�.�D�����O�1��E��������ML�����*�ML���F���/�M'�E��E��[�\�S�E��F���/�Mc�E��E��E��F��O��O��E��S�PInfo���decl�pow_eq_mul_pow_subpmnhZ�L��L���������Z��O��L��L����O��O���L�_a��LG�LC���L���L���O��L��
��L��L��L���O��L��L����O��P��L�_a��L��L��L��L���O��L���L��PInfo���decl�pow_lt_pow_succph��n*�K��K�����������
�~*�M��~�M���*�Nf�~�Ng*�L��Ng��P,�L����L��Ng�Ng��Ngnatmul_lt_mul_of_pos_left�~��K�natpow_pos��lt_of_succ_lt.�Annot���PInfo���decl�lt_pow_selfph��n��K����������������F����K���_F�F����L������F����M!�c�����F����M*�]�M1���F����M�Z�O��O��O��O�� (������,�����|�����
α�S_inst_1�;��'��������-��������P��-~����P�zero_lt_one���D�����Pc1��+��M)����M1�~�P�
�8��M1�F�����M'�E��E��[�\�S�E��F�����Mc�E��E��E��F��P��P��E��~Annot�
�pow_lt_pow_succ���SAnnot��PInfo���decl�pow_right_strict_monoxk�!strict_mono))�ME�����!_x_x�pow_lt_pow_of_lt_right���PInfo���%decl�pow_le_iff_le_rightxmnk� �7U�K��L�����������P�strict_monole_iff_le���K��pow_right_strict_mono���PInfo���(decl�pow_lt_iff_lt_rightxmnk�P�7*�K��L������������P�strict_monolt_iff_lt���K��Q
��PInfo���+decl�pow_right_injectivexk�!functioninjective�P������!strict_monoinjective���P��Q�PInfo���.decl�pow_left_strict_monomk�
��P�x�N������Q8_x_xh�j�pow_lt_pow_of_lt_left�����PInfo���1decl�pow_le_iff_le_leftmxyk�
��7U�K���N�����������QH�Q���L����pow_left_strict_mono���PInfo���4decl�pow_lt_iff_lt_leftmxyk�QH7*�QI�N������������QH�Q�QS�QW��PInfo���7decl�pow_left_injectivemk�Q8�Q)�Q9�����Q8�Q1�Q9�QU�PInfo���:decl�not_pos_pow_dvdpkhp��hk�Qx��L���������Qx���Qx��Qy�c�������� H�M�����������Z�� H�Kk�Z���Z��dcases_on0�~t_1���[�Q�H_1�dH_2�l�Q����Q����Z���d�Q��}���Q���Q��Q���Q���Z�Q�hp_bhp_a�Q����d8�}���Q��Q���g�Q����Z������Q��������� H�Kk8��8�c�������� H�Kk����������Q��� H�Kk��Z��Q�t_1���Q��Q��Z�Q�hk_bhk_a�Q��Q����Q��������� H�Q�8����
�~� H�Kk�����

�~� H�Kk���~

he�Kk� ���~

�~�!��Kk�'��

�~�"�~

�~��.

�~��
�<���������$V�����DAnnot�xAnnot�y����'���9����_a���������R.�SAnnot�xAnnot�y�f�S�2�S.Annot�xAnnot�y��"�Kk�����Q���R#_a��!��Kk0���S�!���R$�~Annot�xAnnot�y�lt_pow_self�'�S��Annot�xAnnot�y�+X�Q�Annot�xAnnot�y�dvd_of_mul_dvd_mul_right�Q��~�4��Annot�xAnnot�y��Q��Q�����Q��RU�1~�Q��Q���Q��Q���������PInfo���=decl�bodd_div2_eqnprod�D��bodd_div2prodmk�D��bodd�div2����R��R~�R���fst�D��R}��snd�D��R}���R��R��}�Rz�}�Rze_1�R{��Rz��Rze_2�R����Rz��R{���R{���H�Rz��Rz������R{��R}�R}��Rz�R}�R��R�fst�D����D�e_1�D�snd��e_2=���Rz�R����R����H�D����Rz�����R���R��R�natboddequations_eqn_1�R��R���div2equations_eqn_1prodcases_on�D�_x�Rz�R{�R��R��R��R}���D����R��R��PInfo���HATTR�����decl�bodd_bit0n�R��R��O�D��	�bodd_bit�D��PInfo�	�KATTR����	decl�bodd_bit1n�R��R��D��D��	�R��D��PInfo�	�LATTR����	decl�div2_bit0n�R��R��		�div2_bit�D��PInfo�	�NATTR����	decl�div2_bit1n�R��R��	�S	�D��PInfo�	�OATTR����	decl�iterate_zerou_1α�	op�&a�#��iterate#�.�	�S�	�S�	rfl#��S�PInfo�	
�VATTR����	
ATTR����	
decl�iterate_succ�	�	�S�	�Sna��S��S��8�S*�z�	�S�	�S�	�	��S"��S,�PInfo�	�XATTR����	ATTR����	decl�iterate_add�	�	�S�	�Smna��S���S������S=��S=�	�S�	�S�	�S�	�S�	�	�	��F�	�	�	���S�S�S�S�����SM�SM��	_F�F�	�	�	�S�S���S���S���S]�S]��	�	�S�	�	�	���	�F�	�	�	���S���S�������Sm�Sm��c�	�	�F�	�	�	���S���S�������S}�S}��Sk�Sm�C���Sm���Sq���	�F�	�	�	���S���S�������S��S���Z��S���S������.��S��S"���S��	�	�S�1��Sk�S�����S��Sq�S��F��	�	�	���S���S�������S��S���E��[�\�S�E��F��	�	�	���S���S�������S��S���E��E��F��S��S��E����S�����PInfo�	�Zdecl�iterate_succ'�	�	�S�	�Sna��S-��S.�	�S�	�S�	�	���T�S(�S*�
��T
���T�T�8_a��S;�S=���SA�S;�S=�T��T�
��
��
�8�
���T�S(�S*�~�T	�T
���T�T6�#��T_a���S;�S=����T�S;�T��T�T4�iterate_add#���~eqrefl#��T4�PInfo�	�^decl�iterate₀�$αop�SxH�$��	�n�T_���	$������	%�T^�	&�S�	'�	(�Tb�	)�JO�	)�T_���Td��������Tc�Tf�Z���Tc�����T|�T�}���}��e_1�T_����S���e_2�T_���$����T_�����T������$$�����������T���Tz��iterate_zero$�������$����T�n_nn_ih�Tv��T��Td����8�����T��������T��T��}���}�S�	*�T_���������	+�T_���T�����T_�����T�����T������������T���T����$���T��/���T����T����/�iterate_succ'$�������&���&�Se_1�T���$$��������T���������T������U�PInfo�	$�adecl�iterate₁�$vα�T^β�	2op�&�op'�Uop''�&��Hx���'����	���nx���U���	'��������Td�S���	3�T^�	4�U�	5�U�	6�U�	7�U�	8�U�	:�	;���JO�	:�U�S�U�S�������Td������U�U!�Z����U&�Z�U�������UG�UJ�}���}�Se_1�U��������e_2�U���'����U�����UX�����''���T������UX��UB���iterate_zero'�������UF���&�S�&��e_1�T���'��������UE�T��S���	#'����n_nn_ih�U>��UO�U����8�D���Td���S8��UO���S�U���U����U��U��}���}���	<�U���������	=�U���UU����U�����U�����U_�����������U���U��U��'���U������U��U��U����U��D�U��iterate_succ''�����D�&���&��e_1�U���''��������U��U����U��U��U��&���&���	?�T��Uw��������U��U��T����S��U����U��PInfo�	1�edecl�iterate₂�$α�T^op�Sop'�&�&��Hx�y��Tc��A���x��nx��y���T��T���B���V�V�	E�T^�	F�S�	G�V�	H�V�	K�	L���	M���JO�	K�T_�S�U%���D���V'��V'��T��T��Z�B���V2�V2�T��B�B���V9�V<�T��V3�B�T������B�V8�B�&���&�Se_1�T��&���&��e_2�T��*��������������T����&������������V5�VD�V7�VD�U�Bn_nn_ih�V/��T��U9�S8�5����Vp��Vp��T����S�Vo��S�Vz��V����Vx�V��}���}��e_1�T�������e_2�T_���T�����T_�����V�����T����U������V���Vr�V��T����Vr�S���V{�V~�V��V��S�Vz�Vq�V��T����S�Vq�&���&��e_1�V��T���������V��V����V{�V~�Vw�V��&���&���	N�V��&���&���	O�V��VI��������������T����&������������Vt�V|�V���Vv�V�V���T����V���PInfo�	D�jdecl�iterate_cancel�$α�T^op�Sop'�UHx��T_��Unx���Tp�Tr�Tq��	V�T^�	W�S�	X�U�	Y�V��	[�	\���JO�	[�T��T��T����T����Tr�Z�V��Zn_nn_ih�W��V%�V&8�U&8���V%�V&���W����W�W%��S�W_a�S��T��Vo��U:����T����W�W#�iterate_succ+�S���W��W%�V%�W!�����U'�����W%�WJ�W+�W_a�S��T��Vo��S�W/��T��WP�]���W%�WF�T��S�����WJ�V%�W!�WE����WJ�Wi�W+�WG_a�S��T��WP�S���U:����T��WP���WJ�WE���WE�PInfo�	U�ndecl�iterate_inj�$α�T^op�SHinjfunctioninjective,nx�y��H�Tp�Tr��W��T���	d�T^�	e�S�	f�W��	i�	j��	k���	l�W��JO�	i�	l�V%�V'��V+�T�����	l�T��V2��V5��V%�V&�Z��W���V%���}�S�}��e_1�T�������e_2�T��T�����V����V�����T������������V���W���U�����W���W��nih�W��	l�T��Vp���Vt�S�U�������W�����T��W�����W����T����W����W��}���}���	m�T��������	n�V��T�����T_�����W�����T������������W���W��W��U�������W��W��X����PInfo�	c�qdecl�shiftl'_ne_zero_leftb�D�mh��n���shiftl'��.�	r�D��	s�	t���	u�JO�	u���X&���.����X(�Z.�
���X9�
���X9���
�X?�'��X@�X?���.�'�a�	we_1=b�	ye_2=�����������I�	y���������X7��#�X7�X(.�b�D��	{�D�e_1�R�m�	}e_2=a�	e_3=��X&�����X&�S������
�Xc�Xf�����R��	}�
���S�X&�������D�����t�Z.����shiftl'equations_eqn_1��..�)nedef�.a��	��e_1���������� ���-|�� �X@�
not_false_iff�Dn_nn_ih�X4����X&����8.�
���X��
���X��X@�
�X���D����X�.�X@�X����X�.�X��X\�X��X��	�equations_eqn_2����..�)�X��X�.�X��X��� �X�����D��������-|�D�.�bit_ne_zero����X������X�.�
�
�X�A�7���X&�����.���X��
���X��X@�
�Y��X�.�X@�X��X�.�X��Y�� �Y��-|�Y�X��"��X��D�PInfo�	q�zdecl�shiftl'_tt_ne_zeromnh�����X&�D��.�	��	��	����c�	��	������Y-��.�	����Z.����Y-�..�<���YB.�	��	�������D��Y6.�D��Y6�PInfo�	��}decl�size_zero�size..�YZ�PInfo�	���ATTR����	�ATTR����	�decl�size_bitb�D�nh���D�.�YY�D�0�YY�	��D��	��	��Ya��Yf��binary_rec�,�._x�D�_x0�D�0�Yp���Yf�Yu��
�YY_a�
��YY�D�0�YY��D�0���Yf�Yp��sizeequations_eqn_1��Yueqmpr-��binary_rec_main_pack_proof_2-�,��D�0�Yp�R��D��Yt���Yu�Y��"��Yq�Y��#�Yq�B��X����D�.n0�X��Y��	�_proof_1-�,��D�.�	���X�	n'�R��D�
�Y��Y��E0�0�YpAnnot�x�Y���Yq_a�,��D��Yp�D���,��D��Yq�Y���binary_recequations_eqn_1-�,�.�Yo�D���Y��Y��#�Y��Y��Y�dif_neg-�X��Y����Y��
�0�Y��X@�
�C��X���X��X��"��Y��	��Y��Y��Y��D�0�Yp�Y���Y��Y���Y��Yt�Yt��Yt��Y��Y��Yt�Yt���Y��Z��Y�_a��Y�0�Yp��Y��Y��Z��Y��S	���Z�PInfo�	���ATTR����	�decl�size_bit0nh���YY�Dy�Ye�	��	����size_bit�D��D��PInfo�	���ATTR����	�decl�size_bit1n�YY�R�0�YY�	��Z,�D��D��PInfo�	���ATTR����	�decl�size_one�YY�~�~�size_bit1.�PInfo�	���ATTR����	�decl�size_shiftl'b�D�mnh���X&�.�YY�X(�Y~�	��D��	��	��	��ZF�JO�	��	��X4�YY�X��YY���	��X9��YY�X1�Z�YY��Z�
���Z`�
���Z`�Z]�Z]�
� �Z[�Z]�	�	e_1=�)�YY�ZZ��#�ZZ�X1.��X������X��������Z.���X�����Z_�Z]�#�Z_�Z^.�Z]�"z�Z]�Z]��Z]�Z.���#��Z]� �Zh�
�>�Z]�DnIH�ZW�	��X���YY�X���YY����YY�D����X��Z����Z��Z�� �Z��Z��Zq�Z��Z��X�������Z��Z���Z���Z�0�YY�X��Z����Z��Z���Z�_a��YY�D��S�Xf����YY�����Z���Z��Z��Z,���X�����Z�.��Z�.���Z����Z�.�Z��X\�Z��Z��Z�..�)�X��Z�.��Z��Z�0�Z�����Z��[��Z�_a�0�YY�Z��Z��[	��Z��[�K%�Z����X�.���X�.�[s0�[��[	0�Z��0�YZ�[ ���[!�[%��Z�_a�0�YY�Xc�S��0�YY�S���Z5�[3��[!.�D��	��D��	��	����X&�S��.�YY�X&�����YY�����	��[H.�	���D�..�[$0�YY���S�S�	��	����X&�D����.�YY�[a�S���[2�	��[g.�	���E..�<�[o�[n�[$0�YY�����[n�	��	����Y-���.�YY�Y-�S���[2�	��[�.�	���D�..�.�	��	��	����Y-�S.�YY�Y-���Yd���	��[�.this�$��Kk�P���~�[$0�Z^���	��	����Y-.��.�YY�[��S�YZ�S�	��[�.�	��-��[����~�[��	��	��	����[�.�YY�[��[��	��[�.�	��[���~�[$0�[���	��	����[�..�YY�[��[�.�	��[�.�	��[�.�~��[#���
���.�f��le_of_not_gt���.hn�E���.���[����[��P��P���F�P�~���P�D.����[��[��~�[��~� �\�[��#�\��[��[���-��~�.'�[��[���[����[��~�~�-����[��[��~�[��~� �\'�[��#�\'��[��[��\�[��[���[����[��~�~�-����[�D��.�+X���#Y��-^�#_�R(�[����
����~�\O�~��Y-�����~�~�\T�~��\Z_a��Y-���S�~�~�+S��\\�\T�shiftl'_tt_eq_mul_pow����J�\X.
_x��Annot����\z����Z�.��Z�..�[*_a���D����[,.��\�.��\�.����Z��.�\����\����Z�.�\��X\�\��Z��X��S���..�)�X��Z�.�	���[�["�[ �[ ��['�\���[_a�[5���[3�[;�[�z��[ �PInfo�	���ATTR����	�decl�size_shiftlmh��n�YY�shiftl��ZJ�	��	����	��size_shiftl'�D���shiftl'_ne_zero_left�D���PInfo�	���ATTR����	�decl�lt_size_selfn��[��Z4�	���\���\��~�Z4���\��]��\�_a��]�[��Yd�j��\��]�
��]�\��one_shiftl�Z4�binary_recn�]�	�e���[��]��/�\��YZ�$X�]�D�+_..�YFb�D�nIH�]��X��Y�*�D��\��Ybh�X��](�D��	��Y���E�\��Y|�E�\��Y���]7�]:��Y|_a�*�Y��\��YY�Y��]@�\���]7�Y�Z,����]:�E�O�\��Y~���]:�]V��\��ZJ�~_a��]@�\�0�Z]�]@��]:�]U�shiftl_succ�~�Y~�E<���]T�PInfo�	���decl�size_lemn7U�Yd�]�[��	��	�A�]�]�h�]���[��Y~�[��lt_size_self��pow_le_pow_of_le_right�P���[�.�&��D�Y~���]�U�Y~��]�]E�]����]��]���]�_a�����]�U�Z]�����]���]��]E�
��]E�]��]�]�	��	��]���	��/�]EU�YZnh�]�{b�D�mIH�]���	���E�]EU�]Anh�]���Y�.���Y�.�]�e�]��U�YY�X�����]�����]��]���]�_a�U�YY�Z����U�Z4���]�.�
��	���]��]�U0�ZS���]��]���]�_a�]����]��]��Z,�����c�	��	�*�]��]EU0�Z���	�*�]��\��Z�!elim�]�.U0�Z��Z�f�]��2�]�.n�	��^�\�1d�Z������[a�~���O�^*�Z���h'��^*���EB���^)��S�PInfo�	���decl�lt_sizemn7�]�Z4U�]��	��	���^U�^R���]����^U�^[�
��]�_a��7���YdU�[��^d��^U�^Z�%��^Z�^a� �^Z�^a� 3�]���^[7�^Y��^Q���^[�^~�
�^[_a���^d��
�[���^[�^~� �^[�^~iff_not_comm�^Q�^Y���Z4�A��]���^~�^|��Z4���^~�^��
��
�Z4_a��7�^���^c�^���^~�^�� �^��^�� 3�Z4��^��^|��]����^��^��
�]�_a���^���Yd��^���^��^�� �^��^��size_le���^Y�PInfo�	���decl�size_posn7/�Z4���	���^�7U�[������^��^��
�^�_a��7/�Yd���n����^��^�� �^��^��lt_size.���^��PInfo�	���decl�size_eq_zeron7�Z4.���
��7��_�'�_not_iff_not�_�����Z4.�&���^��_	���^��_���^����Z4.�_�^��_�pos_iff_ne_zero�Z4�X��Z4.���'�������'� �����_�X�.�size_pos�PInfo�
��decl�size_pown�YY�]����
le_antisymm��_:����U�_:��*�]��[����^��]����[����Y����_:U�]��]��^��]��q�]��PInfo�
��decl�size_le_sizemnhZ�]��Yd�

�
�
Z���__���]�^���Yd�
���]�]��PInfo�
	��decl�fact_main_meta_aux�
�&�EP�,��ET�~�&�_u��
�
RecFn�
�PInfo�
��VMR�
VMC�
���&�
�Lnatmuldecl�
�
�&�E��,��&_F�E��,��&�
�_��EP�&�
�_��
�_��Z�_v�&�
�_�1�_u���E��,��E��[�\�S�E��E��_��E��E��_��_��E��PInfo�
��VMR�
VMC�
���&�
�L�
decl�
equations_eqn_1�
.�~��Eg�_��PInfo�
��ATTR����
EqnL�
decl�
equations_eqn_2n�_�1���_��
��_��_��PInfo�
��ATTR����
EqnL�
decl�fact�
�_��PInfo�
��VMR�
VMC�
���
doc�
`fact n` is the factorial of `n`.decl�
equations_eqn_1�
.�~�
equations_eqn_1�PInfo�
��ATTR����
EqnL�
decl�
equations_eqn_2�
�_�1���_��
equations_eqn_2�PInfo�
��ATTR����
EqnL�
decl�
_sunfold�
�&�_w�&�_u�_�	�PInfo�
!��ATTR����
decl�fact_zero�_��_��PInfo�
"��ATTR����
"ATTR����
"decl�fact_one�_��~�~�_��PInfo�
#��ATTR����
#ATTR����
#decl�fact_succ�_�n�_��PInfo�
$��ATTR����
$ATTR����
$decl�fact_posn/�_��
'�F�
'�_��
'_F�F�_��
'�
(�_��c�
'�
(�_�/�_��
(�_��Z��Px�P����
'�
(�_�1��O��O�8�_����*8�_��$��F��_��E��[�\�S�E��F��_��E��E��_��_��E��PInfo�
&��decl�fact_ne_zeron���_�.�
*���_�.�fact_pos�PInfo�
)��decl�fact_dvd_factmnhZ� H�_���_��
-�
.�
/Z�JO�
.�
/��� H�_����_��
/��Z�� H�_���_��Z�`!�~���`$�`'���`$�`"�~�`'�1~�`!�`!��`!�`#�~�#�`#�_��~�&�&e_1=�)�_��Z.���
"� �`-�`'�.G�`!�[��
-�
/���Z�_��~�
/�l�Z��_��
���_��
���_��/��
� �_��~�`B�~�~�-��1��D��8m.��nIH�`�
/�Y8�� H�_����_���`t�?b�`���`v�`y�1~�`s�`s��`s�`u�`x�
$��A�t��+���_x�!�`��`�� H�_�����`!eq_or_lt_of_le����he�`����
-�
2�
/�w� H�_��`s�
/Y��`��`��
2�
/�d� H�_����`�
/������ H�_����`s�
���`��
���`�� H�`��`��
�1~�`��`��`����`��`���`�� �`��
�1��`��D���
�����hl�`�dvd_mul_of_dvd_right� F�`��`!��2�����PInfo�
,��decl�dvd_factmn�&���&��$�`�
9�
:�&���&��c�
9�&���&�DG� ��`s��&�$�&�u��Q��9�t_1�&�[�9�H_1�Q�H_2�l�$���`���$�_����Z�
<�d�9��}�
=�a��`��9���9��$�`��Z�9�a_ba_a�`��
<�Q��}�
=�a�`���g�9���a�Z������$�
9�&2�&V���� H��`sdvd_of_mul_right_dvd� F��`�`s�fact_dvd_fact����PInfo�
8��decl�fact_lemnhZU�`�_��
C�
D�
EZ�$��`�_��`�a<��PInfo�
B��decl�fact_mul_pow_le_factmnU�_��Q��_��
G�
H�F�
H�
GU�_��Kk1�_��.�
H_F�F�al�
G�
G�
H�
I�ap�c�
H�
I�apU�`�Q��_��C��
I�ao�Z�U�`!�Q�.�_��z.��a�U�`!�`!���a��a����a}�`!�#�a}�a{�~�`!��`!�`!�`2�a|�~�L1����`!�a��`!�`=�a��&}�q�`!�
H�
I�ao1�U�aq�Q���_������a��a��_��(�(���~���a��a���a��(�~_a�U�`s�Q����_������a��_���a��a��
��a��a��D���~��a��a�0�a��_��a����a��a���_��a�_a��a��_��(�(����~�a���a��a��`��a���a��a�� ��a��a����a��a��� ��a��a�_a��a�0�a��_��a��a���a��a�� ��a��a���a�U�aq�Q����a����a��b��Q�_a��a�� ��b�bU�a��b��a��b�Lk����bU�'�'�`�Q����a����b�b4��b/�'�Q���_a�U�a��Q��b���b��b�b2�
��b2�b;�'4�`�Q���mul_le_mul��b0���a��a��F��al�E��E��[�\�S�E��F��al�E��E��E��F��bX�bb�E���d���a��A&��{��{�a���PInfo�
F��decl�monotone_factmonotone���_�nm�fact_le�PInfo�
P��decl�fact_lt���\h0��7*�_��`�����\�
V��A�b���h�b���!d�� .����!d�b��
�	��_a���!���!d�b��%��b��b�� �b��b��%����b�hmn�b���`!�`�b�����
W��������
W���
V/��*�`s�`�
V�!Xkhk����b��_�8�b����_����b��b���b�_a�*�`�`u�b���b��b��`���b��b��_��_����b��b���b�_a��b��`x�b���b��b���_���b��+�0��b����b��c�
�+�_��/��b��_�_a���b����`�`��b��c� �c�clt_add_iff_pos_left��_��b��*�_��aS�h_bh_a�[�h_ih�b��
V/���6U�`��`!�_���	��c-�6U.����p������PInfo�
U�decl�one_lt_fact�\7���_����\��cR7*�_��_������cP�cV��~�_��-��_��_���_���������fact_lt�~�one_pos�PInfo�
c�decl�fact_eq_one�\7�_��~���~�\A�cq�csh�cq�Y�~��	�~���cx�c|�
�Y�~_a����~��cx�c|�%��c|�c�� �c|�c�� 3�~��c|����_����c|�c��
�Qx_a����cz����c|�c��%��c��Qx� �c��Qx�one_lt_fact��c��Q����c��Q���_�_a�����`�����c��~���~�
g�cs�Q�t_1�
g�[�H_1�-^H_2�l�Y�~��[����`s�~�~�&�:}��:w�\�
g�cs�
n�l�cx�[��`�~�
gU�:w�~�
n�l�c��[�:w�:w��:w��_��:w�hh�c��&�:}8�}�
n�c��c���g����c��:w�n_eq���$1�
o�
p�]�
n�l���~���[�S8�
V�a�~�
p�
P�Z�
n�l�{�~���\�:w�g���Z�Q��St_1�
p�[��H_1�Q�H_2�l�[���Z���d*��_����~�Z�
s�d�S�$1�\�
p�[�Z�
t�l�c��Z�c��c��c��
p�[�Z�Z�
t�l�dH�dH��Z��`#���h_bh_a�d)�
s�Q��}�
t�d-�d*��
|��d3�Z������d�Z���-����cx�PInfo�
f�decl�fact_inj���\h0�cP7�`N�`<����\�
x�cPA�d}�dh�d}�A�b��!�#��	��a_2�!�b��d�� ��lt_trichotomy���hnm�b��>�d����`�*�`!�`*�`�`��`!_a��d��`s��`s��d��`��d����d��
�!�_a��� *����d��d��%��d��!�� �d��!��ci����c9�~��cl����`!����
�d�_a�����`��d��d�� �d��d��c���h_1�d��A�d�� +�
��!�d�� +����hnm�d�hnm� +�>�d����`s��b��`�b��`s��`_a�*�`��`s�d���d��`s���I��d��
�I]_a���	������I��d��%��d��I]� �d��I]�d����d����cl����`s�����
�e_a�����`���e�e� �e�e�c�����d��e�d�_a��e����d��`s���
y�d��c��`!�`&�`!���eA�eC��_a��`&�`�cp�`��eA��`2�PInfo�
w�decl�choose_main_meta_aux�&�
�&�&�_s�_w�&�_u.a_1�e[�_v�&�_u
�eZRecFn�
��eb1�PInfo�
��&VMR�
�VMC�
��&�&�&	
�L�
��
��hdecl�
��eZ�&�&�E��&�
�&_F�E��en�&�&�&�
��eq�EP�&�
��er��
��eq�Z�_s��_v�e]a_1�
��eq1�_s��_v�&�_u�E��en�H��E��[�\�S�E��E��en�E��H��E��E��e��e��E��e�1��PInfo�
��&VMR�
�VMC�
��&�&�&	
�L�
��
��hdecl�
�equations_eqn_1�
��Z.�~��_��e��PInfo�
��&ATTR����
�EqnL�
�decl�
�equations_eqn_2k�e�.��.�
���_��e��PInfo�
��&ATTR����
�EqnL�
�decl�
�equations_eqn_3�[�e�1.�~�[��_��e��PInfo�
��&ATTR����
�EqnL�
�decl�
�equations_eqn_4nk�e�����e��e�1�
��
���_��e��PInfo�
��&ATTR����
�EqnL�
�decl�choose�eZ�e��PInfo�
��&VMR�
�VMC�
��&�
�doc�
� `choose n k` is the number of `k`-element subsets in an `n`-element set. Also known as binomial
coefficients.decl�
�equations_eqn_1�
��Z.�~�
�equations_eqn_1�PInfo�
��&ATTR����
�EqnL�
�decl�
�equations_eqn_2�
��e�.��.�
�equations_eqn_2�PInfo�
��&ATTR����
�EqnL�
�decl�
�equations_eqn_3�[�e�1.�~�
�equations_eqn_3�PInfo�
��&ATTR����
�EqnL�
�decl�
�equations_eqn_4�
��
��e�����e��e�1�
�equations_eqn_4�PInfo�
��&ATTR����
�EqnL�
�decl�
�_sunfold�eZ�&�&�e_�
��e`�&�_u�e��PInfo�
��&decl�choose_zero_rightn�e�.�~�
��c�
��e���e��
���e��PInfo�
��+ATTR����
�decl�choose_zero_succk�e�1.�
��f�PInfo�
��-ATTR����
�ATTR����
�decl�choose_succ_succnk�e�81�e��
��
��f�PInfo�
��/ATTR����
�decl�choose_eq_zero_of_ltnk�&�j�e��.�
��
��&�j�F�
��f��
�_F�F�f�
��&�]��
��
��&�j�
��f��c�
��&���
��f�f��.��&*�Z��
��f�Z�c�
��&�f)�e�.���&�f)�Z��e�.�<�f).�f5����f7�$V�f7���Z.�D�
��&�f)1��e�8.�choose_zero_succ�
��&�P��
��f8�c�
��&*��e���.���&*��Z��e��..�<�fX.�fg����fi�$V�fi���.�D�
��&�fX1��e����.
hnk��

hnk1�!���
��e����{.�e�����f��.���f��f���e���_a��e����.����f��f��choose_succ_succ�����f��j�f�.���f��f���f�_a��e��S���f���.���f�.��f�.�F��f�
^�E��[�\�S�E��F��f�E��
^�E��F��f��f��E������f��91.���f��f���f��{_a��j�f�.�8�.��f�.�f��{��-EAnnot�xAnnot�y�PE����Annot�xAnnot�y�lt_of_succ_lt_succ�����PInfo�
��1decl�choose_selfn�e��~�
��JO�
��g!��e��Z�~�
���g'�
���g'�/��
� �g%�~�#�g%�e�.�~�&�&e_1=�&�&e_2=��e����e�����
�e���Z.���Z.���
��~�~�-��1��Dn_nn_ih�g!��f
8�~�
���g[�
���g[�/��
� �gY�~�#�e���:��~�gg�e��e�8�:��
��"z�gj�~�gl.�choose_eq_zero_of_lt8�Ar�#��~�~�~�-��1��D�PInfo�
��9ATTR����
�decl�choose_succ_selfn�e�1.�
��gy1�_O�PInfo�
��<ATTR����
�decl�choose_one_rightn�e��~�
��JO�
��g���e��~�Z�
���g��
���g����
� �g�.�#�g��e��~.�gH�~�~�-��
�.�Z.���/�Dn_nn_ih�g���f
�~8�
���g��
���g��=u8�
� �g���#�e��-��
��j�g��e�.�e��9��
��gq.�"z�g��~�
��g��
88�� �=u��
�>��D�PInfo�
��?ATTR����
�decl�choose_two_rightn�e��P�*q�
��JO�
��g���e��P�:���
|�Z�~�P�
���h�
���h���
� �g�.�#�g��e��P.�gH�P�P��P�fL�~�h.�#�h�$K�P.�^�h.�#�h�B�����h.�#�h�
|.�~.�0l�Z.���~�~�-��zero_sub�~�l�P�P�h�'~�P�/�Dn_nn_ih�g���f
�P�:���
|8�~�P
�*��:���P���hQ�hX� �hJ�hS�#�e��:��e��~�e��Q��hS�gq�~�"z�ha�
��hc�*��hP�hW�^�hN�hU�88��hM�#�hL�9��
�.�1;.�sub_zero�P�P�h��*��*��hX� �*��hS��*��*��hW�^�*��hU��8�u�*��#�*��h~�h��hM�h~�0l�8�h��~�~�-��h��h��P�P�h�
��*��*��triangle_succ�PInfo�
��Cdoc�
�`choose n 2` is the `n`-th triangle number.decl�choose_posnk�&��/�f�
��
��&���F�
��h���
�_F�F�h��
��&���
��
��&���
��h���c�
��&���
��h�/�f!��&�` �
��h��Z�/�e�����h�/�g3���h��h��/_a�/�e���/�e���h�.�f�����h��$X�g3�D�
��&�1�
��h�8�c�
��&���/�f[���&�u��/�e��{.��i�
���i�
���i�O��
�8��i�~�g��{�O��D�
��&����/�f{��i/�g8�g88���i�i!��fZ8_a�/�e���������i�i �f���add_pos_of_pos_of_nonneg��i�i�F��h��
@�E��[�\�S�E��F��h��E��
@�E��F��i<�iF�E��a��{�i���PInfo�
��Fdecl�succ_mul_choose_eqnk���e��f1�
��
��F�
��ix�
�_F�F�iz�
��
��
��
��i}�c�
��
��i~���e���f
����
��i}�Z�c�
��=C�e��e��:w11���9��g3�e��9��9��9����i����i��i��D�
���i��e��i��:	�:	��i��
���i��
���i����
� �i�.�#�i��i�.����9��9���9��e�.�g��R�9��i�.�#�i����:	����i�.�#�e��-��3��~�-E.�i��e��e��:	�-E�gp.���"z�e�.�i��i�.�g����-��:	�:	��:	�#�:	�/�D�
��
��i}1�c�
��;��e���e��;�11��0��e�.�e��j	�9��9���j�
���j�
���j��
�j�g���j�j	�j	�g�� �j�j	�#�j�j
�~�j	��j	�j	��j	�j�~�g�����j	�j�j	�#�j�j
�9��j	��j�j	�hk�j	�9��9��i��j1�inj_eq��� 
�Badd_right_cancel_semigroupto_add_semigroup�Lto_add_right_cancel_semigroup��~�jS�add_right_inj�jN�~�@�D�
��0���e������e��jg�:	�:	��jq�jl�i�1�i��<A�:	���jq�jz��j�<A_a�0�{�i��e��j��j	�j	�j��4�j	��jq�jw�f��1��jz�jl�*��*��jt�:	�*��jv�:	���jz�j���*��*��jt�jv�:	_a��j��fd8�fd�;s�j	�j���jz�j��=��jt�jv�:	��j��jl�j��?b�f1���j��j���jv�<A_a��j��*��*��j��j	�*��j��j	�j��j���j��j��
��j��j��F��iz�H��E��[�\�S�E��F��iz�E��H��E��F��j��j��E�1��j��jl�*��jt���jt�j����j��j���j��:	_a��j��j��`��e��8�j��*��k��j��j��mul_succ�jt����j��jl�*��?b�f�jt�j����j��k��j�1_a��j��*��j���j��k�j��*����j��k��j��k�
��k�k#�j���k�jl�G�G�k�j��jt���k�kC��G�k?�jt�j�_a��j��*��`��k�j��k�j���k�kB��k�jt�j���kC�jl�G�?��*��k�j��jt���kC�kf��*��?��k�?��j�_a��j��G�G�kM�k�j��j��H�j���kC�kc�
��kc�kn�*���k�j���kf�jl�G�?��jt�jt���kf�k���k�j�_a��j��G�*���*��kL�k�j��j��G�k��j���kf�jt�
��jt�k��f����k��jl�i��jt���k��k���?b�jt�jt_a��j��G�k��j��j��j���k��k��
��k��k����jt��jk��PInfo�
��Ldecl�choose_mul_fact_mul_factnk�&���f�_��_��
��`�
��
��&���F�
��k���
�_F�F�k��
��&���
��
��&���
��k���c�
��&���
��k��f!�`s�_��
����`��&�` �
��k��Z��h��`�_��h+���_���l�
���l�
���l�/��
� �l
�~�#�l
�>��~��l	�~�#�l	�>��~��h��~�#�h��g3�~�gE..�)��.�h��
�.�`�~�#�`�_��~�`=��.�h��`B�M��l�~�#�l�_��~�`=�l.�#�l�h+..�0l..�)��.�h���.�`B�M��_��~�`B�1��D�
��&�h��
��k�8�c�
��&�h��f[�_��_����`����&�i��i�_��_��/�.�_��{��l}�
���l}�
���l}�`��`��
� �lz�`��#�lz��`��`���lv�~�#�lv�>��~��i�~�i�_��~�`B�M��ly�`��#�ly�l|�`��`=�lx�{�h��{�`�����`��l|�`��l�� �l��
�>�`��D�
��&�i�_x�!�+8��9���i(��`u�_��2,��_����:8���A�l��l��l��l�hk₁�l���l��g6��g6��`u�l��l����l��l���e���_a��f���c6�_��
|����_����4�c6�l��l���l��l��f������l��*��*��l��`u�*��l��`u�l��l����l��m��*��*��l��l��`u_a��f��c6�l��l��4�l��l���l��m
�=��l��l��`u��m�*��*��m�l��*��m	�l��l����m�m6��*��m
�l�_a��*��*��f��c6�*��f��c6�l��l���l���m�m4�=��m�m	�l���m6�*��m/�_�����m2�mX�l����m6�m^��
|��_a��*��*��m?�l��*��mB�l��l��*��mf�_��mi�_��l���m6�mW�I�����m^�*��?b�`s�m[�l����m^�m���l��`u�mX_a��*��mf�_��3��mi�m��l��k�m��l���m^�m���m��m��m��?b�m��`�mX���m��m���`s_a��f��c6�m��`��`��m��`���m��m��
��m��`s�F��k��
R�E��[�\�S�E��F��k��E��
R�E��F��m��m��E���`�����m��
���m��
���m��`�?b�m��mX�m��
� �m��m��#�m�� ��`� ��mX�?b�l��m��m��m��m��m��m��m��m��mX�m���m��m��#�m��m�� ��l���m��m��m��m���n��l��l���l��`u�n�#�`u�`x�m���`�� ���`�N�l��`���`�`��`�m��m�� ��l���mX�mX��mX� ��m��mX�N�mX�`�m��n�m��m��#�m�� ���l��n7�m��l��m��n0��l�����I�n;�m�� ��mX�l��m��m��#�m��?b�m��m��m��n7�m��nD�m��nQ�#�m��m��n;�nQ�nY�m��m��l��nZ�nY�n]�mX�n^��m��n]�n"�`�mX�mX�n)� ��n]�mX�n1�l��n�n;�m��nH�N��`�m�� �m��
�>�m��D��m��m��m2�mW�_�����l����m��n���mX_a��*��m��m��l��n��mi�l���m��n���mX�n��_��md�md�n����n��n���mW_a��m��m��_��3��cp�4�n���n��md�
��md�mW�m|��n��_�0�n��n��n����n��n��me_a��_��
|���n��n��n���n��n�������2�����n��n��n����n��n���n�_a��_�0�n��n��n���n���n��n��`��n���n���n��m��n��`s�l����n��o��l��`u�n�_a��n��mi�n��l��n��l���n��o��o�o�o*�n��o�n����o+�o/�m�_a��f��c6�n��n��`��o8�n���o+�o-�
��o-�`s�m���n���o/�
���o/�
���o/�m��?b�o�n��oT�
� �o�oT�#�o�'�`�'�?b�l��n��oT�o[�m��o]�n��o`��o�oc�#�o�m�� ��l���oc�oj�o�n�om��l��l���l��`u�n�n�N�l��`��n�ol�o]� ��l���n��n���n��'4�`�o]�n��n�o_�oS�'4��l��n��o.�oT�#�o.�m�� ��mW�?b�o�n��oT�o��n��m��o��o���mW�mW��mW�o-�o��#�o-�o\�o^�n��o��o��od�n��o��o��n��n���n��o��n��n�o��o��o��n��N�mW�`�o��n�o��oS�#�o��n7�o��n7�o��o��oS�o���o��nD�o��oR�o��l��n�� �oV�
�>�oT�D��o�*��$��`s�o�l����o�o���_a��n��o9�l��*��4�`��o9�l���o���
�����u���o��*��*��*���`s�=��`s�o�l����o��p��*��*���~�`s_a��*��>z�`��o9�l��k�o9�l���o��p�=���~�`s��p�p�
|�!��`s���`s�l����p�p;��o_a��*��*��*���`��=��`��o9�l��pF�l���p�p8natmul_sub_right_distrib����`s��p;�p:�`����p;�p\��`�_a��pF�
|�!��`����`��l��pg��p;�`��`���p\�
|�p�p5�p7�`����p\�pz��pu�p8_a��pg�`���`���p\�px�
��px�p���p5�p7�0����`s�m��p��pz�
|�(�p�(�p�p5�p7�`����pz�p���(�p��p�p5_a��
|�pE�pb�pd�`��
��pd�`���pz�p��D�p�p�p5��p��
|�p��*��*��~���`s�p7�`����p��p���*��p�*����`s_a��
|�(�pB�(�pD�pb�pd�`��
|�p��pd�`���p��p��
��p��p��=��~���`s��p��p��`����p��p���
|�p�p��p_a��
|�p��*��p����`��pd�`��p���p��p���p�p���p��*��G���~�`s�`����p��q��Q��_a��p��`��*��`��`���p��q�
����qhk₁�l��l��
��l��
���l��a���qC�
� �l��qC�#�l�� ��~�qC�qC�qJ�qC�~�qL��l��qC�#�l���qC�qC��l��~�#�l��:��~�q[�g6���g6��:��q[�i(���qa�gE�����������gp�����"z�q^�~�l/���q`.�
����g��`u�qC�n
�`�� ��`s��n
�l��`��`=����`�� ���`s���qC�l��~�#�l��_��~�`=�l�.�#�l��2,��.�0l�����qi��������`B� ��qC�~�q��l��qC�#�`��`��q��`��q�� �qE�
�>�qC�D���PInfo�
��Tdecl�choose_eq_fact_div_factnkhk���f�:�`�a\�k����
���
��q��O��_��k��fnatdiv_eq_of_eq_mul_left�`�q��f�*�_��k��aS�`�
���c��k��q��c��'�'�f�_��k����q��r��q��'�_��k�_a��`&�k��m��_��s�`&��q��r�
��r�r	�'4�f�_��k��
��k��`�choose_mul_fact_mul_fact��PInfo�
�hdecl�fact_mul_fact_dvd_factnkhk��� H�q��`�������r0�r/�k����r0�r5��`_a�� H�r�`!�r;��r0�k��r(��r5�r/�r	���r5�rI��r_a��r;�r�`�r
�r>��r5�r	�rdvd_mul_left� F�q��f�PInfo��odecl�choose_symmnkhk���f�
��f�������ri�rh�q����ri�rn��f_a��k�s�r�ru��ri�q��choose_eq_fact_div_fact���rn�q��k��_��
��
��q����rn�r���rg_a��ru�:�`!�r��r���rn�r��r��
������r��q��r��_��q����r��r���r�_a��r��r
�_��r�s�r��r��r��_��r���r�natsub_sub_self���r��q�� ��_��k��q����r��r��� ��k��_�_a��r��r��`�r��r��r���r��r�� ��k��_���r��PInfo��rATTR����decl�choose_succ_right_eqnk�e������e��
��%�&��r��
|���e��r����r����r��r���r�_a��f���k��
���s	��r��r��
��r��r����r��r��r���r��r��r��s�*��*��e��r������s�s!��*��*��e����*��r���_a��$��f�k���s�s.��s�s �
��s �s+right_distrib�*��e��r�����s!�s�*��f�����s!�sJ��e�_a��s.�*��*��f�s��s.�*����s!�f�
��f�e��f���sJ�iv�sI���sJ�sh��is_a��s.�*��i�8���sp��sJ�iv�succ_mul_choose_eq��iv��r��
|� ��e���r��r����r��s��� ���e�_a��
|�s-�s/�s	�
��s/�s	��r��s�� ���e���s��r��*����r����s��s���
|�r���r�_a��
|� ��f���s/�s	�s��s��s��
��s��s�natmul_sub_left_distrib�e������s��r��r����s��s���s�_a��k��/v�s	�k��s	��s��
��2��~��r��PInfo�$�udecl�choose_succ_self_rightn�e������3�F�3�s��3_F�F�s��3�4�s��c�3�4�s��e���4�s��Z��i�.�t�t�3�4�s�1��e���~��t��t�s��e�8�t���t�t��j8_a��e��/���/��/��t�t�f����t�t�t�t���t�t2��s�_a��ji��ji��/���t:�/��t��F��s��E��E��[�\�S�E��F��s��E��E��E��F��tH�tR�E���t2�t�t���t2�t_��gf_a��/�t:�/�/�/��t2�~�l/���t�PInfo�2�|ATTR����2decl�choose_mul_succ_eqnk�s��e��*��9�:�JO�:�k���ji�/u��e��Z��e��Z�*��Z�
���t��
���t���
�t��g��� �t���#�t������t��~�#�t��g��~�gE��Z.���g���������t���#�t��t����t��~�#�t��j�~�gE���t��Z.���j.�t���#�t��*�.��h���t��Z.���h���t��j^�@�Dkih�t������ ��k�{�i8�/�8hk�t���g8����fz��1�������u	���u
�u��g8��_a��g6����i(��2,��4���u��u
.�gy������u�u
�u.���u�u0�����_a������u�u8�u��u.��������u0���u/���u0�uK�������_a��u8�u.��uS��u0���#����uK�uJ�����uK�ub����u��_a��uJ�uS�uJ��uK���R�u����=��t��u�u�g8��u�u��u�u���fZ�_a�u�u�4�u�u%�u��i2���u��u�*��*��u�u�*��u�u���u��u���*��*��u�u�u_a��u�g6��u�u�u��u��u��=��u�u�u��u��u�*��u����u������u��u�����_a��u�*��*��u��u�*��u�u�u�*��u��u���u����I�����u��u�*��u���u����u��u���u��_a��u�*��u����u����u�k�u���u��u��
��u��u��choose_succ_right_eq�����u��u�u��u��u����u��v���_a��u�*��g6�{�{�u��u�v�u���u��u��
��u����u���v�u�u��
|�u���u����v�v&��u�u�_a��u�v�u��mc��u�v��v�v$�s��u����
��v%�u���v!�u��';�����ule_add_right�������~�����������push_negnot_lt_eq������PInfo�8��decl�find_greatest_main_meta_auxP��_inst_1�C��
�O���P�C��&�_t�e\�&�_u�,���������
�vmRecFn�N���PInfo�N��VMR�NVMC�N���&�P�O���h	
�N�hdecl�M�vm�O���P�C��&�_��&_F�_��&�Q�_��_��Q�_��e\�&�Q�_��_u�,��������E��,��E��_��E��E��E��v��v��E��PInfo�M��VMR�MVMC�M���&�P�O���h	
�N�hdecl�Mequations_eqn_1�O���P�C��M..�O���P�C���_��v��PInfo�S��ATTR����SEqnL�Sdecl�Mequations_eqn_2�O���P�C�n�v�����,��vq�����v��O���P�C��V��_��v��PInfo�U��ATTR����UEqnL�Udecl�find_greatest�vm�O���P�C��v��PInfo�W��prt�WVMR�WVMC�W���P�O���Mdoc�W `find_greatest P b` is the largest `i ≤ bound` such that `P i` holds, or `0` if no such `i`
existsdecl�Wequations_eqn_1�O���P�C��W..�O���P�C��Mequations_eqn_1�PInfo�Y��ATTR����YEqnL�Ydecl�Wequations_eqn_2�O���P�C��V�v�����v��v��O���P�C��Mequations_eqn_2�PInfo�]��ATTR����]EqnL�]decl�W_sunfold�vm�O���P�C��&�vn�&�_u�vt�v����PInfo�`��decl�find_greatest_zeroP��_inst_1�C��v��D^..�b���c�C��v��PInfo�a��ATTR����aATTR����adecl�find_greatest_eq�b���c�C�b�&�z�v������b���c�C��e�&�z�c�e�&�D�v��������&��Z��v������D.�w	�w	�e�&��1��v�����w�
���w�
���w��
�w�g��� �w��#�w�/��-P�E�
�����E��v���w"�,��E�v����v��w,�]���v��-��E�
����v���v��w'�t���v��0��w(��v����t��j^�@�D�PInfo�d��ATTR����ddecl�find_greatest_of_not�b���c�C�bh��vq�v���v��b���c�C��g�h�wa��wd�
���wd�
���wd�v��v��
� �wb�v��#�wb�-O�-P������-|�wu��v��v��wt�,��wu�v����v��w��w7��v��-��wu��wx��v���v��w{�t���v��-��w|��v��v��v��w�� �wo�
�>�v��D�PInfo�f��ATTR����fdecl�find_greatest_spec_and_le�b���c�C�bm�&���&�������v����w��b���c�C��b���c�C��j�k�&���&���F�j�k�&���&�������v����������w���j_F�F�j�k�&���&�������v����������w��k�&���&�w��j�k�&���&���l�F�j�k�&���&�������v���������w���c�j�&�C��l�F�j�k�&���&�������v����������w������w���{�w����&��Z�l�F�j�k�&���&�������v����������x	�Z�����.�Q.
�~�t.

�~����.�{.�!�_x�������.�!������{�����q��Annot�VAnnot�xAnnot�y�_@��.{���j�&�Y1�l�w�8������w����{�x@����������xDh�xF������v�������{���xN�
���xR�
���xR���
���xO�
���xO���{�
�&�&e_1=I���9�xN�{�d���xL�{���x^�
���x^�"�� �x^�
�xr�xQ�
���xQ���{�
���S�S��S�xN�{�xu� �x��
���x���j�D�n��xF�xT�xW�xZ�x\�x]���xM��
�xi�x��f���xL�����x^�
�0�x��X@�
�C��x^��-|�x^�X��"�� �x��
���x�andelim_left�x����x��F��j�k�&���&�9���;�v��;���;���x��F�E��[�\�S�E��F��j�k�&���&�S���U�v��U���U���x��E��F�E��F��x��x��E��S�[��S�h�0�Sthis�'����!�_x�:�����S�_@��������xQ�
�x�x��
�x��x��x�� �x��
���x�andelim_right�x��x��x��j�D�������PInfo�i��decl�find_greatest_spec�b���c�C�b�&�H�m��������v��b���c�C��x�&�yE�7��y�����D�&�H��yM���w�a_wa_h�yL�!u����{��������v��������a_h_left�a_h_right�����S�v�m�����]���>E�yg��yf�find_greatest_spec_and_le�yb�yd����PInfo�w��decl�find_greatest_le�b���c�C�bU�v����z�b���c�C��b���c�C����F��U�v���_F�F��U�w�����F��U�y[�c�����F��U�v�������U�y����F��U�v��S�yd�Z��!�y�.�y��q�y������y�1�U�y���
�~�y��
���������U�w�����h�y��U�w��{�{�����y��y����y��0�%I����y��{�xk���w��{�����{�
���y��"��{�{�0� �0��0��y��2U��~�r����y��y��
��y��
�y�U�w��{�
�y��w��x����w������y��
�0�y��X@�
�C��y���-|�y��X��"��{�{�0� �y��
���y��DAnnot�xAnnot�y���y���F���U�w��E��E��[�\�S�E��F���U�v��������E��E��E��F��z(�z9�E��Y�PInfo����decl�le_find_greatest�b���c�C�bmhmb��hm���w��b���c�C��������������=����v�����v����za�yl�z^�v����PInfo����decl�find_greatest_is_greatestP��_inst_2�C�b�&�yEk�&��*�yP������������C����&�yE���&�zv����7�m����]�&�H��z���a_wa_h�z�!uY���w������z��w��a_h_left�z�a_h_right����!u*�w������{���&���z��z����a_left�z�a_right�����������
����v�k�����������le_find_greatest�z��z��������PInfo����decl�find_greatest_eq_zeroP��_inst_2�C�b�&nH������v�.�������C��������C����&�z��F���&��������d�v�.��_F�F���&��������T�y[.�&�������z����&��������w����F���&����������w�.�c���&������������F���&����������v�������.�v����z��.��&�����`M�z����F���&��������w��z�.�Z��z*���z�..�find_greatest_zero���z+���&������8�z����z�8��z���.��{%�z����z��.���{%�{-��{*��_a��z��{.����{%�{+�x����z�����q���F����&����������v������%.�H��E��[�\�S�E��F����&��������w��v�������.�E��H��E��F��{T�{i�E�khk���x�������Y����PInfo����decl�find_greatest_of_ne_zeroP��_inst_2�C�bm�&�v��&���D�������C��������C������&�{��&���F�����&�y��&���z����_F�F�����&�y��&��������&�y���&�������&�{�&�����F�����&�{]�&������c���&�{[�����F�����&�xM�&������x'���&�v��������Z����F�����&�w��&������Z�h�v��������Zt_1�&�w��ZH_1�A}H_2�l�x�Z�����{���������&�t�Z�$1���&���&�{����l�w��Z��{��{���{��9��&�Y>�&�xM�Z�Z���l�{��Z�{��{���{�����w�.�<�|.�|��|����`��Z�������{������&�{[1�����{�8�h�w��t_1�&�xM�H_1�'H_2�l�w�������|:��9�����&�~�rec�xF_x�5�xFhnc�x��x�hc�xF�{�w�����|I�x^���5�x^���x��x�����x^���xL�{���&���&�|:���l�v��9���:���|f�|e��|e�@�&���|_.�&�x���|I�������5�|w����|w�w������|w���x�����l�|:�|I�������5�|�����|��|d�����|����w����|:�|9��|9��9
�|d��Annot�2decidableby_cases�9���|�����hb�|���;�x���;����|��|���x������T�_a��S�v��S�|����~�T��|���xk�;�x��hb��|��F������&�x��&����S�Z�E��[�\�S�E��F������&�v��|����|��&����E��|��E��F��|��|��E����|��
��|��x��S�x��;�x��S��S�
��S�|_����"����|3���������PInfo����decl�dvd_div_of_mul_dvdabch� H��� ��-���������}8������.�}9ha����$�����
���}D�
���}D�$.�
�1~�����}C.�#�}C��.�a��.�� �$�$'�
���S��1�����1��'��������#Z�dvd_zero�� F��D�����
ha�b�

h1�H�d���!���
_a�H����t�!����7����~�!��S���H��}�� H�S�!v��wh_1�}���H�d�!�����
hac� H���S

h2�}��}��

�~�H����:�������#Y�}��Annot�VAnnot�xAnnot�y� ������}�����'������'�}��}�� �����A��}��}��'4�����Annot�xAnnot�y�a8�����S��Annot�xAnnot�y�Annot�xAnnot�y�����PInfo����decl�mul_dvd_of_dvd_divabchab�#Rh�$��� H�(����������#R���}�
h1�H�d� ��#�

h2�H�e� `
_a�H����!x�!��7����!��!����H��}�� H�!����S��h_1�}��_a�H����H3�!�� H�!���������~�7������}����H��~� H�}�������h_1�~��H�d���}���
h3��������

�~�H������~"���#Y�~,��of_eq_true�~�~���>��~3�#���}���~2�
��~2�~7�#�~2�!��~�~7�#�'�'�������~A�'�����~>is_associativeassoc�'semigroup_to_is_associative�'�������#�}�� ������}��,_���~>J�~W�~Z�}��>�����left_comm�>��~Q�������#�~>�}������~7�~t�~s�~p�}��!����~s�~i������J�~w�~r�}��
��~r�~w�~b��~s�#�~s�~r���~7�~��~>�~��~��~>�~��~q�,_���'�~G���~��~q�}����~��~j����J� ������~��~q�>������
��~��~F�+����~Q���������,����~��~w���~>�
��~��~��~��5��,��~��~���~w�~r�~����#�~��~2�~>�#�'�+������+��~F���~D�~Q�������#�!��~V���~X�~D�~��~x�~X�~��!��~����~xJ�~��~��!��~a���~}J�~Z�~W�}��>������
��~D�~H�~T���,����~2�~2�~>�~��~�~��~�~�
��~�~��~���~n�
��~��~>�#�~��~>�~>�#�~��~��~��~��#�~q�!����!��~q���~��~i�������~��~t�~>�~������~7�
����~�Annot�VAnnot�xAnnot�ynateq_mul_of_div_eq_left�����~#����Annot�xAnnot�y�Annot�xAnnot�y�PInfo����decl�div_mul_divabcdhab� �hcd� J� s���:�!��!������������ ���� J
exi1�H�x�~�#�

exi2�H�y� `
��~.��.�!�� s�:�!��!�hb�t��!��!w�:�"�!��
�����
�������
� ��.�#�����!w����!�.�#�!��!�..�^�����A��S.�~���!w�!w��!w�#�!w��.�#����..�^�"�"��"�!�.�#�!�������S.��������~�"�/�D����t
�~/�S
�w�!��!��:�}��S�"hd�t��}����!��:�}������
�����
�������
� ��.�#����.�����������!�.���R����.�#����..�^���������.�#���}�.��������H\�S.�R���~���/�D����
�~��
�7����~�}����H����:�������:�~"���}�����xhx���7��������H���/�:������#�:�������yhy����:�����:�����:������8�:��7�����C�:��L����8����J��V���_a��:������3�:������G�!�����3�:�4����G���J��L����V��O�:�~"���:��R��y��8����V������_a��:��F������3�:�������G����!����:�����G���V��y��������{��������������N_a�����:�~q����:��������G�4�����������natmul_div_cancel_left����������$��������������{_a�� [������� _���������������
�����$�q���~��8�$�*���������~1��~�$��8�>�����
������~�#�������8��~�#�'�'��8�'�8��8����~Q���8�~i���8�#�����~��~������7��y��~��������y����������������7���'�'����������8���~i���8J��������#�����
����'�'�����������J����y���
���y���>�����4��y�#����y��L��~��G��H����I��G�~"���'�'������G�~"����7��P��G���~"��W��YJ����\���~i����������WJ��� �����O�~"�#��n���(7����OJ��m��s���>��������
���U��R�8���~Q����J����L��H�
���L����z��#��T��L��R�8��L�'��0���y�����L�#�~"��L��7����y��������7�~"�#��������~"��7�#����J�������~"��*��~i�����#�J�~"�(8�����7�#����~"�(/���J�(8�(/�~"�>�������
������0�'��y�~Q�����y�
���~��~�#��~�����~�#�������������#��7��� �����7������������7������J��������7�#������(7�����J����������?������c���J��������c������Annot�xAnnot�y���SAnnot�xAnnot�y��*Annot�xAnnot�yAnnot�xAnnot�y�PInfo����decl�pow_dvd_of_le_of_pow_dvdpmnkhmn�hdiv� H�L�� H�M������������������C
�~��E�M�
dvd_trans� F�M ���M ���Annot�xAnnot�y�pow_dvd_pow������PInfo����decl�dvd_of_pow_dvdpkmhk�
�hpk�L�� H���������
����h���j� H�LC�~�����j��s�/_a�� H����#Q����j��q�
���q���O[���pow_dvd_of_le_of_pow_dvd���~���PInfo���decl�eq_of_dvd_of_div_eq_oneabw�!h�!�~�!���	�!�
�����!� �!)����!�����_a�,�&v��!����
������#h������ ������������!)_a����;�������4�������~�����&k������&k��K�_a�������&v�����������PInfo��decl�eq_zero_of_dvd_of_div_eq_zeroabw�!h���.�����!���������.��������_a��������������������.�����������_a����.���.����.�����uJ.���������uP�_a�����.���������#��uw�PInfo��decl�div_le_div_leftabch₁��h₂��U� T�O�������������/U� T����%Y� T�������7��6����';��� T�'?����PInfo��decl�div_eq_selfab7�����+S��A��S��Ua_1��S�c������!���9����Z���!���9)�
����g�
����g�!�
�@n�
�:���
�����&k�
� ����.�������;�Z���|� ��~.�#��~��.���Z.��������� �&k�
�>��9)�@n� �Z��#�Z.�������~�~�-�� ��o�
true_or�@n�D���;1��c���Z1���!�t9�~��N�:w���8��x�:���:w���Z�<A���8��t�;~�eq_zero_of_le_half����{�!v�P�
������
� ����
����������U�!v�Z������������������������div_le_div_left���Z�P�� �Z�
������
���!�P�/��P�!�0��
� ������le_add_iff_nonneg_left��P� �'��
�'��D��/�P�&��D�Da_1��U�A��9�$���9� K�rfl��[���!����$K�.�
����7�
����7���
� ��5.�'~�..�)�/�D��`jrfl�9��~��N����;�~��
����Z�
����Z�&k�
� ��X��div_one���������D��GO�~�PInfo��decl�exists_eq_add_of_lemn�&Z�H�k�#�%�)�*�&Z�F�)����)_F�F����*�&�-�)�*�&Z�,�����c�)�&���,����H��+�~�%��&�u��,����Z�c�*�&�u�H��+�#�9#���&�v��H��+���8��#Y���.����-E�
������
��������
� ..�)�-E.�-��/�D�*�&�u1��H��+�"�8��#Y������=u�j��
������
�������
����g���><��t���������j^�@�D�)�&����,���8�c�*�&�c�H��+�#����&���Z�Q��t_1�&�[��H_1�Q�H_2�lU��Z��[���H��+�d�'�Z�.�d��}�/�l���Z���������H��+�d��Z��a_ba_a����.�Q��}�/��������g������Z������c�Z�*�&�c1�_a�H��+�#�I��H��+�3�r���v�F�����
@�E��[�\�S�E��F�����E��
@�E��F���=��G�E���6��2��3�7��+� ���2�H���W�H��+�$��r�S�v��h_1��V��H��+�r���v�r���v�#Y��m��$���
����t�
����t���S�
��z����~��{� ����~�#���G�S�Q��~����Q�����������~����"z������~�~�-������~�0�S�"z�S�S�x������g���s��~�#�G��i�����j���0~�S�~� �jQ�S������{�jZ��S�S� ��{�
�>�S�D��R���PInfo�(� decl�exists_eq_add_of_ltmn�&�j�H�k�#�%�~�5�6�&�j�c�5�&���H��7���d�~��&�f)�c�6�&�f,�H��7�#�9#�~��&�f4��H��7���8��~falseelim�����6�&�fG��H��7������#Y����=u�k�~�
����$�
����$��
��*�g�������#��"z�k���~�~�-��j^�@�D�5�&�P��c�6�&�fb�H��7�#���~��&�y�Z�Q��;�t_1�&�[��H_1�Q�H_2�l*��Z��[�
��H��7�d� �~�Z�;�d�;��}�<�l�fX�Z��U������H��7�d����~�Z��a_ba_a��V�;�Q��}�<��Z��[��g�
���e�Z������fc�6�&�fb1�_a�H��+�#�1[�H��7��4��f�~�exists_eq_add_of_le�{`�{�?����7��+� �2�?�H�����H��7��Z��8�~��h_1�����H��7��g��^�~�#Y�����$����~�
������
������"��
������Z����"�����������I��Q��������Q�������������~����������#���i���I��j������������������~�~�~�-������~�0����"z�����"�����Z�#�Q�j�i�0r�Z�0�~�#��Z�������#��������������������������"z�������#�G���������������~�~�-���������� �jQ���Z��.�"��jZ�Z�����"��D����PInfo�4�%decl�with_botadd_eq_zero_iffnwith_botm��Q7��Q	��Q�A��Qwith_botadd_semigroup�&+��Q����Q�Gadd_monoid������R��c��R��c�D��Q�F��Q�F��D��Q7��R��Y��c����j��g�F��F��Q7��R��Y�EW��c����R�EW��c��j�7��R��Y�EV�o�EW��c����R�����c��������������������Q�j��Q�k��Qoptiondecidable_eq�������c�Dh����<�����>E��������������������c�D�F�7��R����E\��c�����R�E\��c���������������������c�D�L�����������R�E}��c����D�F��F��Q7��R��Y�E}��c�������j�7��R��Y�E\�����c����������������F�n��Q���R��o�EW��c�E\�����R��z�EW��c��������c�D�M�����R����EW��c��������c�Dh�������=�����������F�7��R��Ycoe.��Qcoe_to_lift..��Qwith_bothas_coe_t����.����R������R����
�~��(���(7��R���a�����'����(��1���Q��_a��Q�7��R��Y�����������R��8����#7��i����A���(��-�
���Q��-��with_botcoe_add�&���17��,.��'����1��]�
��/_a��7��R���(�����A�n��A���1��[� ��/��[with_botcoe_eq_coe��,.���]��\�9��&����]��~�
��#_a��7��d.��A�������#���]��� ��#����u.���~��\�9������~����
��&_a����������#���������~��� ��&����u.����7��<�0���0�������������
����0�_a�����������n����������� ������add_eq_zero_iff'��]�|�����Annot�V�PInfo�C�*nspace�Bdecl�with_botadd_eq_one_iffn��Qm��Q7��\�{��Q�Ghas_one�}�!��h��i�������f�����j�_��Q�`��Q�F��_��Q7��q����!��t����������g�F��`��Q7��|����!���������������j�7��R����������!�����������������������������������9C�������������������c��)������������,��*�D�`�7��R����EZ�o����!�����R��:�������?��c����F����=��E�����;����9C��A��D��'��@��*�����:�����/��C��,��R��c�D�_�F��`��Q7�������!����������������j�7��R��Y��:�������!����C������@������q��x�����q�����o����Dh��x������R��9��c��������������h����<����=���R��9���c��������������Dh�������=��������������`�c�`7��R��Y�G�E\����!����R�G��c������������������7��R����E[.����!�����R��������g�����c����7b��c.�~��������������������
��R��������~_a��7��R����������!�������������n����������������� ��������u����~��������!��<����������������
��"����_a��7�e�(�.�~�������������!���������������� ��	���������������!����95���������,�
��R�����_a�����!���#����������!��5������95� ��2�95��u.�~���,�����*�����������,��Q�
��1��_a�����!��5�95������Y�����,��N� ��V��N��G�����Q�
����Q�
����Q7�9�9�
������9� ����J��~�~�-���P�9����P�:?�9�9�:��)�����)�9������������95��=� �����-�����O�9����O�9�
�9������9��~��N�
�/� ����9and_true�9� ����9false_or�9� ��t�
���9�D�`�7��R����E[������!�����R��������������c����7��
���~������������
��R��������_a��7��R��Y�G]�E[�����!����R�G]��c��R�������������������c�n����������� ��������u����~��������!��5��������������
��>��_a��7�e�a���~������!���������������4� ����4��u����������!��5�>^���������,�
��R�������_a�����!��� �����������!��6�������>^� ��3�>^��u���~���,�����*���:m�������,��R�
��>���_a�����!��6�=v�������Z���������,�:m� ��W�:m��"�~���R�����*��O�2�������R��r�
��2��_a������Z���@n�������Z��y���R��o� ��w��o��H�����r�
����r�
����r7���������
��������������H�.���#��������0�d�~���� �������#��c����c1����"y�'���t��1�#���9�0��.1�K%.�[�[e_1=�)0����#��K%��~�~�-�� ����9�����9��d.� �>�������-n���q�������q�!��������:��)�������4�����>^�����>^�9\��� ��1����~�~�-�� ���9����9�.��p�����p��O�����:m�:m��:m��o�����o�9_������.�)�:� ��	��-��:m� ������or_false���� ����
������D�PInfo�^�3decl�le_inductionP��mh0�	�h1n�&�-�&������n�&�����t���u�v�	��w��Dnatless_than_or_equalrec���PInfo�s�@doc�sInduction principle starting at a non-zero number. For maps to a `Sort*` see `le_rec_on`.ATTR�u���sdecl�decreasing_inductionu_1P�&�Shn�&�v��wmnmnZhP���I���T����V������Z�����le_rec_on�~_x_a��
u��kih��^hsk���S�h�I	�PInfo�}�GVMR�}_lambda_1VMR�}_lambda_2VMR�}VMC���I�������;_fresh�	j�VMC���I)��VMC�}�G����������������"doc�} Decreasing induction: if `P (k+1)` implies `P k`, then `P n` implies `P m` for all `m ≤ n`.
Also works for functions to `Sort*`.decl�}equations_eqn_1�~���T����V������Z�����S�I�}�~��������m���T����V������Z�����TU�I��{�PInfo���GATTR�����EqnL��SEqnL�}ATTR�u���}decl�decreasing_induction_selfu_1P��Th��Vnnn�ShP�x�S�����u���������T����V�����S���x����������]�������e������������,�ya����������������T;�������_a�����S�����a����i��k����Aq��������le_rec_on_self�������������TU����PInfo���KATTR�����decl�decreasing_induction_succu_1P��Th��VmnmnZmsn�+hP��A�S�	&��u�^�����{��u�	j������������T����V������Z���+����A����������]�����]�
����{����������v�������e��]�����	i�/���������������������	&���������������������������T;����{��_a����S���]�������q�����������"�����z����
u��]���������S�����������3�������)����e��!�Aq��A��������{��%�����,��.�8�le_rec_on_succ����������������TU�	&���PInfo���Odecl�decreasing_induction_succ'u_1P��Th��Vmmsm�^hP�wu��������������T����V�����^���wu���n�����������������m�����m��m����{��~�T;�������x_a���������a�{���i��k�H���������{�������I�le_rec_on_succ'�����������������m�PInfo���TATTR�����decl�decreasing_induction_transu_1P��Th��Vmnkmn�nk�hP�ya��!��u�e������	9������u�������������������T����V���������������ya�	������R���w��S������u��������������u�q�����S������S����S����S�/��u���S�������u�[�S����������������������������T;�[�����_a�����S��2��u�����S���6��u����S������	�����5���������decreasing_induction_self���[�S����TU�/���knk�
Qih����������S������u��������d����h����u������������:�����4��,��;��d��������B����C��M�T;��+��/�{��5_a��+��S������u�������������S�
d��u_x�&�������S��f�����
d��X��n���C��K�decreasing_induction_succ4���������H��5���M��,��=��>����J��B����M�����R��/���H��J_a��+���X��g�������S�������n��r���M�����J���������=��u_x��d��������J���������T;������>�{��4_a������X��i��j��������n�����i���������y����������4�TU��+�����PInfo���Xdecl�decreasing_induction_succ_leftu_1P��Th��Vmnsmn��mn�hP�D��������/�����������T����V��������������D������������������{u������������	G��_a�����!������������������!�����������	^���	`����������������{u����������������2�T;�	&��_a�	&���!���	=�����!�������0�decreasing_induction_trans���^��������{u����2����/��/�������2��V�T;�	j��������{u��/_a��[���!�����	<�����������@���2��T�decreasing_induction_succ'5�	j�����{u��/��^��T�PInfo���_EndFile