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".
License: APACHE
oleanfile3.4.2, commit cbd2b6686ddb���evinitdataintbasictacticlinarithtacticabel�K\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}traversePInfofloor_ring'indlu_2α�_inst_1linear_ordered_ringCn���e_1flooraintle_floorzxiffhas_leleinthas_le �preorderto_has_lepartial_orderto_preorderordered_comm_monoidto_partial_orderordered_cancel_comm_monoidto_ordered_comm_monoidordered_semiringto_ordered_cancel_comm_monoidordered_ringto_ordered_semiringlinear_ordered_ringto_ordered_ring coecoe_to_liftcoe_baseintcast_coeadd_groupto_has_negadd_comm_groupto_add_groupringto_add_comm_groupdomainto_ringlinear_ordered_ringto_domain no_zero_divisorsto_has_zero�to_no_zero_divisorsEzero_ne_one_classto_has_one�to_zero_ne_one_classEdistribto_has_add�to_distribF �mk �k ������������k " $ & k1 4 7 9 ; = ? A C kK M �R T �Y [ �s��� �q��k������ �"�$�&�1�4�7�9�;�=�?�A�C�K�M��R�T��Y�[�� �nspace�prt�recdecl�sizeof���xnat���rec�x��{��has_addadd�nathas_add�has_oneone�nathas_onesizeof�default_has_sizeof���� ke���PInfo�'ATTRreducibility���prt�decl�has_sizeof_inst���has_sizeof��has_sizeofmk��PInfo�'ATTRinstance���class����prt�decl�sizeof_spec����{��eq��*k ik ����{��eqrefl ��8�PInfo�'ATTR_refl_lemma���EqnL�prt�gind��decl�floor���c��� Proj�����rec� � ���h�PInfo�'ATTR����proj��decl�le_floor������k� k ���� Proj�����a� ��M�� �X e��h�PInfo�'ATTR����proj��decl�rec_on����� ��M�����ki ���� ��M����rec�� k �PInfo�'ATTR����auxrec�prt�auxrec�rec_ondecl�cases_on�������PInfo�'ATTR����auxrec�doc�A `floor_ring` is a linear ordered ring over `α` with a function `floor : α → ℤ` satisfying `∀ (z : ℤ) (x : α), z ≤ floor x ↔ (z : α) ≤ x)`.decl�no_confusion_type����Pv1�Mv2s�����M�s��� k� k�� ���������� ��"��$��&���1��4��7��9��;��=��?��A��C���K��M����R��T����Y��[��������� ������ ������ ��"��$��&����1��4��7��9��;��=��?��A��C����K��M����R��T����Y��[�����floor_eq����k�����PInfo�'ATTR����prt�decl�no_confusion�������M�sh12������ k �����M�s��.eqrec a�=h1a�+��k�/��� h11�+�= ������Ek�������������� �PInfo�'ATTR����no_conf�prt�decl�inj����{��������K�|k �~��� ���{��������p�no_confusion��si� k�� ��s�PInfo�'decl�inj_arrowl����{��������pP������k���{��������p�����inj������ k �PInfo�'ATTRclass���class�decl�floor_ring_proof_1_x_xid�������linear_ordered_comm_ringto_linear_ordered_ringdecidable_linear_ordered_comm_ringto_linear_ordered_comm_ring�decidable_linear_ordered_comm_ringcoecoe_to_lift�����������������������eqmpr� ����id�0� ����������inthas_neg�has_zero�has_one�has_add_a� ����� �*���?�� intcast_idiffrefl���PInfo�+ decl�floor_ring���������PInfo�+ prt�VMR�VMC�+ adecl�equations_eqn_1�0�F��L�?�F�N�PInfo� + ATTR���� EqnL� SEqnL�ATTR����class� ���declflooru_1α�_inst_1linear_ordered_ring_inst_2floor_ring��S��U��Xfloor_ringfloor �PInfo�0VMR�VMC�0����doc�`floor x` is the greatest integer `z` such that `z ≤ x`decl�equations_eqn_1���S��U��X��� �_��S��U��X��h�PInfo�0ATTR����EqnL�SEqnL�TK⌊�TK⌋NOTAfloor⌊⌊⌋⌋��declle_floor���S��U��Xzxk�e k � � � � � � � � k� � � � � � � � � k� � ��� � ��� � ����S��U��Xfloor_ringle_floor �PInfo�4declfloor_lt���S��U��Xx zhas_ltlt�has_lt�x�' �to_has_lt ������S��U��X�$ �%lt_iff_lt_of_le_iff_le �to_linear_order���+ k����le_floor k �PInfo�#7declfloor_le���S��U��Xx �|k�~k��k��k��k��k��k��k ��k��k��k��k��k��k��k��k��k ��k��k�"��k��k�"��k��k�#�ek ��S��U��X�. �mp�=�=�@��k �=le_refl���=�PInfo�-:declfloor_nonneg���S��U��Xx has_zerozero��=��4k�+��S��U��X�2 ��d��9�[�c���d�n���]_a���\�����_ ���z�6�d�lpropext�]�l�L�[�?�l�PInfo�1=decllt_succ_floor���S��U��Xx ��k��k��9�succ�=��S��U��X�8 �E���=����floor_ltk ��intlt_succ_self�=�PInfo�7@decllt_floor_add_one���S��U��Xx ��has_addaddk�5�>�k�0��S��U��X�> eqmp������add_semigroupto_has_addkadd_monoidto_add_semigroupk�to_add_monoidk�%�>��chas_ltka �Je_2���J���J��e_3����congr �������� congr_arg���J��� ��k���k����eqtransk��������'�Eto_has_zerok���0���=� ������9�� �=��_inst_1has_lift_tka�Te_2�0�N�� ����k�8����succequations_eqn_1�=intcast_addk�%�0�=�chas_addk�J �Je_2���J���J��e_3���M����������B �N ���J�� �Bk����>���>���intcast_onek���0�<_succ_floork �PInfo�=Cdeclsub_one_lt_floor���S��U��Xx ��has_subsubkadd_group_has_subk�%���>��S��U��X�c �mpr������� ordered_comm_groupto_ordered_cancel_comm_monoidkordered_ringto_ordered_comm_groupk��v�x�ordered_comm_groupto_add_comm_groupk�����>�������������>��sub_lt_iff_lt_addk���>��lt_floor_add_onek �PInfo�bFdeclfloor_coe���S��U��Xz��<�9��S��U��X�qeq_of_forall_le_iff����a��0�x���1�������1�������s��_a����e k������������������ ������������������ � �}���6�������������������1����� �s��_a���|�~������������ ���������6��������intcast_le k�?��PInfo�pIATTRsimp���pdeclfloor_zero���S��U��X��h�_ �� �� �� �[��S��U��Xfloor_coe �[�PInfo�yLATTR�x���ydeclfloor_one���S��U��X��h�� �� �� �G���S��U��X��a��h�� �� �� �� �� �� �� �� �G� �� �p�]�� �� �u�����a��� �^_a ���<�����=��6�a��eqsymm! ���^�b �u�]�q��������������h�f�g�h�r�I�]�� �� �n�_a���<�����6����T��?��PInfo�{NATTR�x���{declfloor_mono���S��U��Xa bkh���� ����S��U��X�� ��k���������"������ k��le_trans� �� floor_le k �PInfo��Qdeclfloor_add_int���S��U��Xx z��x�� ���������S��U��X�� �������a��0������ �#�0����"��� ������s���_a����e� ���������������k����������������������*�������)�������)�, ���#k �}�P�6��������� �������������u�w�����e��# �����x�s�k�� �������p �#_a���|��~��������������������G�I�P�S�6��v�~��v�����v��sub_le_iff_le_add�e� �#��x�w��������ordered_comm_groupto_ordered_cancel_comm_monoid�k��has_subsub�f���m�������x���s����D�F�G����_a���������������������u��w��4��������Hk�P���6�x������������������������w�"���� ������s����_a�������� �M���6����������� ���w�"�l�m������������������~��5�> ����E���>��inthas_sub_a������G�k����k�6��Bintcast_sub�����?�v�PInfo��TATTR�x����declfloor_sub_int���S��U��Xx z��x�u �w �����L����S��U��X�� ��eqtrans�{�x����has_negneg������comm_ringto_ring�comm_ring�~��|���|�x��has_negneg ����������� �� ������ �� ���������� �����_a �����3 �#�������������6����intcast_neg �������{floor_add_int k ���PInfo��Xdeclabs_sub_lt_one_of_floor_eq_flooru_1α�S_inst_3decidable_linear_ordered_comm_ring��_inst_4�W�"�"x ykh��v�� �� k ���������������� abs"�to_decidable_linear_ordered_comm_group" �l�m���������� ������� ���S���������� ��k�������������decidable_linear_ordered_cancel_comm_monoidto_ordered_cancel_comm_monoid"decidable_linear_ordered_comm_groupdecidable_linear_ordered_cancel_comm_monoid"� � �l�m��decidable_linear_ordered_comm_groupto_add_comm_group"� � and� )� 1� � )� / � abs_sub_lt_iff"� � andintro� 8� =lt_of_not_ge"����� 1� �notge"��linear_orderto_partial_order"� M� 1� �J� [lt_irrefl"��������������������_��:�;�(� c����������ordered_cancel_comm_monoidto_partial_order"�� f�$������add_comm_monoidto_add_monoid"���to_add_comm_monoid"�� f� ��$�%semiringto_distrib"��to_semiring"�� e�����4����� dk�$�%�&�'� l�/�0�1�2�3�4�5� �� n�?�@� l� ��!� c k���� ������ �� �� �� � � �� � � �� ������4� *�� �k � k��� �� x� o� ����� �� �� �� �� �� �� �_a��������������� s������������������������������������ {��� }��� �� �� ������ ���� ���� ��u���w��������������� � � �� �������������� ��%����������������� ������ ��������� ��������� � �e��� � ����� � �� �� � &� !� $k� � 1k� � )� �� �� �� *��� ��� k�_������ �� �� I�6� �� onorm_numsubst_into_sum"�� �� �� �tacticringhorner"�nonzero_comm_semiringto_comm_semiring"�nonzero_comm_ringto_nonzero_comm_semiring"�integral_domainto_nonzero_comm_ring"�linear_ordered_comm_ringto_integral_domain"�� b� �k�� g���� �� � �� m� nk�� h �� �� o� V� �� �� j� n� ��� m� h� ��� p� o� r� V� �� �� j� n� ��� m� h� ��� � o� �tacticringunfold_sub"�� �k� �� �� Vk� l� �� j� o� �� �tacticringhorner_atom"�� fknorm_numsubst_into_neg"�� �� �� �� �� �� V� �� �� �� o� �� �� �� ����� �tacticringhorner_add_const"�� f� �� ��� o� �� �� V� o� �� o� �� �� �� o� �norm_numbin_zero_add"����� �� �tacticringhorner_neg"�nonzero_comm_ringto_comm_ring"�� d� �� ��� �� m� mnorm_nummk_cong"�� l� �� �� �� �� �k�� o� �� �zero_add"�� �� �� �� �� �� �� �� l� �� �� �� �� �� �� �� �� o� �� �� �� �� ��� o� m� o� �norm_numneg_zero_helper"�� �� o� �� �� �� �� �� �� �� �� �� �tacticringhorner_add_horner_eq"�� f� m� ��� m� �� �� o� �� �� V� m� �� m� �� o� �� �norm_numneg_add_pos_helper2"�� �� �� �� o� V� �� o� �� o� �� �� �norm_numbin_add_zero"�� �� �tacticringconst_add_horner"�� f� m� m� ��� o� m�+� o� m� o� m� �� �norm_numneg_add_pos_helper1"�� �� �� o� �� �tacticringzero_horner"�� f� ��� �� �� � � �� V� �� l �� �� ��� � � w� o� �� � � � �� o� m� o� ��� �� ��� o� �� �� �� �� �� �� �� q�"� ��� m� �� �� o� q� q�E�K �� o� m�]�b� ��� q� �� �� �� y�8� l� �� �� u�u� y� �� �� �� j� ���� � ��� ��n� �� ���� ���� �� �� ���� �k�� �� m�u� �� �� m �� o� �� onorm_numneg_neg_helper"�� �� m� �� ���I� �� mk��u� x��� � �� o� ��C�!� �k�� q� m� x� o� o� o�8� m� �� m� o� �� �norm_numpos_add_neg_helper"�� �� �� m� o�D�" �� m� �� �� o� o� o�E�E�b �� o�bk�� oadd_neg_of_neg_of_nonpos"�� f� �� ��� �� �linarithlt_of_lt_of_eq"�� e� �� �sub_neg_of_lt"�� �k� ����� c k����� �� k� �� ���� �� �sub_eq_zero"�� �� �� ������/�0�1� ��/� �� y� z� �� ��C� ��� �� �intcast_inj"�� �� �linear_ordered_semiringto_char_zero"�linear_ordered_ringto_linear_ordered_semiring"�� c� �� ���������������� �� �� k� �� �� ��c� � sub_nonpos"�� �� � ���� c ���c� ��g�c� �� ��o� �� �� N� ;� �� Q� Y� ;� �J��� p��� x� �� �� �� � � �� �� �� l� �� �� �k� �� � k� �� �� �� �� �� ���������_a��� �� �� �� �� k� � 1� )����� � 2� � & � 9� @k � I� M�6��� o� V����� w� u� m� p� j� �� o� V����� w� �� �� u� o��� V����� w� �� �� �� o��� � ����� V � l���u� ����x� ���� �� �� ��m� ��� ����� ���� �� �� ��� �� m� m� �� �� � �� o� �� �� �� �� �� �� � ���� �� � �� � ���I� �� m� ��� o� �add_zero"�� �� ���� ��� �� ������ �� o� m� o� ��� � ���� ������ o� �� ��E�K� ��� o� m�]��� �� �k��� �� lk� ������ �� �k� ���� ���� o� m� o� ��� ������ ���� � ������&��� o�����E�Kk�� o� m�]�d���������8� l��� �� p� ���� �� ���� w��� s��k� x��� C�u��� x�x� R� ����� V�{��� m� �� ���k�� o� �� o����� �� �����k�� o� ��C�� ���� m��� o� o� o���"k�� m� �� �� o� o� o�E�E�� ����������� �����% ���* �������0�1neg_eq_zero"�� �� ��[���c���g�c� �k�o� �k�uk���c���g�}�������PInfo��[declfloor_eq_iff���S��U��Xr z���� 6���������� ����S��U��X� ���� �� 6����������s� �_a������ 6�$ ����� ��#� ���� 6��6�� ��� � ���� � ����� �� ��� ��������8��� �_a ��� 6�����?���6��4�� �4� ��b ��������8� �� ���������8�^���������4_a ���?���>���?��6�8�[�M�[�e�4 �������^� �� ���Z���^���s�����Z_a����?��>����?�6�^���������������� k �Z���� �� ���������s��_a����?���������6��������intlt_add_one_iff������ 6�����0�����������s� �_a����?���}���6������� ���le_antisymm_iff�������� 6�������������s��_a��� 6������������6����������andcomm�����?���PInfo�fdeclfloor_ring_uniqueu_1α�S_inst_3�Uinst1�Xinst2�V �c��<�;�#�S�$�U�%�X�&�funext�"kxk�<�vk���y�w� 6�����)�����,� ����*�4�s�*_a������� �6�*�4���*�4floor_eq_iff# k �)� G�.�3�� k�� k�PInfo�!kdeclfract���S��U��Xr k��S��U��X�- �{�> �PInfo�,tVMR�,VMC�,+t�-����_c_1�_c_2��_c_3��������cast_mainalgebrasubdoc�,The fractional part fract r of r is just r - ⌊r⌋decl�,equations_eqn_1���S��U��X�- ��k�,�k �h��S��U��X�- ���r�PInfo�6tATTR����6EqnL�6SEqnL�,declfloor_add_fract���S��U��Xr �m���r��S��U��X�8 ����m���h������ak�9 e_1���J��J��e_2������������� �����J��� ��k�~���Z�5�>�>�^�r�h�6k �����true������������m���������������k�&�>���h��sub_eq_add_neg"k�%�>add_add_neg_cancel'_right"k�$�>��������eq_self_iff_true"ktrivial�PInfo�7xATTR�x���7declfract_add_floor���S��U��Xr �m���r�>��S��U��X�B sub_add_cancelk�%�>�PInfo�AzATTR�x���Adeclfract_nonneg���S��U��Xr �b�r��S��U��X�E ��� � ���`������>��>sub_nonnegk���>��k �PInfo�D|declfract_lt_one���S��U��Xr ���r����S��U��X�H �E�������sub_ltk�����>sub_one_lt_floork �PInfo�Gdeclfract_zero���S��U��X�� �n �J�J��S��U��X��J�D�u �w �p�J���K�J���J�W�9 �9ke_1�� �J�J�e_2������������� �����J��� ��k�H�U�� �J�J�J�� �J��W�����W�����W�D�J�J���x�U�J�� �U�� �|�J�J�J������ �q�J�����S�J��chas_sub �Jk�J e_2���J��J��e_3���>�����u����� �I���J���� ��k�Q�J�J���T�J���T���[�J�R� �T�Te_2��!� �/k���K�[�y �cast_zero �q�I�]���� �p�J�J�[�< �Jk�J e_2���J��J��e_3����������� ����k�|�J�J�����Jneg_zero �p� �u�J�J�J���������� �J���PInfo�K�ATTR�x���Kdeclfract_coe���S��U��Xz�m�q���a��S��U��X�X��%�m�z���9���a���%�/���#�-�����a�a���a��/�m�+���a���/�A���_a��\�x�������x�\�G���x�6�/�Qk sub_selfk�%���PInfo�W�ATTR�x���Wdeclfract_floor���S��U��Xr �m�q�>�a��S��U��X�\ fract_coek �=�PInfo�[�ATTR�x���[declfloor_fract���S��U��Xr ��<�r�[��S��U��X�_ ��y� 6�k�r�)���j�����y���s�y_a����x�n k �[�6�y�����y���Gk �r�[� G���fract_nonnegk ����)���a����������k�j_ak����������[� ������ ��6���a��k�&�+�0�5����*�����*�����`���_ak������x� ����6����� �k����fract_lt_onek �PInfo�^�ATTR�x���^declfract_eq_iff���S��U��Xr sk�\��� 6�y� 6�0� �Existsz�������S��U��X�f �gk�intro���h���� 6�"�_��� 6�����i�������7k �G� 6��n k � 6��#����i����n� k�����3�J_a�� 6��� k�= � 6� q� r�� � ��B���i�_� �� �� �� � � � k�%� � � � �F� � �C� � �C� �� �D� 6�:� 6�>�@���i�_�I�Z�6��#���#� G�$�2�� k � G�'�1�� k Existsintro�0��sub_sub_cancel�� ��h�����#�s������������ �:�� �������s��_a���� ��G�M�6����������eq_sub_iff_add_eq�� �������� �~add_comm_semigroupto_add_semigroupadd_comm_monoidto_add_comm_semigroup�to_add_comm_monoid��� �������J����_a����$� y� z� ��7 ��k��k�6����add_comm��������������������s������ _a�����$� y������������� k�6�������������������� ��dcases_on���p������hge�h_right�^�� �� �� ���������� �� �� ��k� (�R���i���u���w�������������������� ���������������������:���������7���������7���������8�}� 6�/�\���X�e������>hlt�/h_right_right���i�����w������������������������������������������r���������o���������o���������p�mdcases_on�i�����u���w�������������������������������������������������������������������������������������e����������zhz������K���K���K���K���K���K���K���K���K���K�����K���K�����K���K�����K���K���e�K�������u�K�w�K������������������K��_a�K�������������������������������K����������������������e��K�����u��w�������/�6�������������D�s������������K���K�������K���K�K���V_a���/�) �6��D���Z�D�L�K�����P�K�R�K������D� 6�|�K�~�K���K���K���K���K���K���K���������K���K�������K�������K�����D���s�D_a����- �6�D�����D���G�K���������� 6�����������������������_a�K�� 6�|��~��������������������K�\����������������%�\���� � 6�����������6�������K����� G����le_of_not_gt�K���K�������� Qgt�K���x� T�K�������J�� ^����_����������� s������������ {�� }������� ������������0�1����5�������*������ �%_a���� ���4���4� s�4���4���4���4����4���4���4� {�4� }�4�>���4���4���4���4���4�<���u�4�w�4�T���Y�Z�O���4���4���4������_�4��4�I�B�o�6�+����2������{�����{���(��������J��J�4e_1���J�Je_2����������� �����J��� ��k�2������2�1�����[�<��J�4�J��e_2�����J���J��e_3���>��������� �I���J�� ��k�%� � ���� �%�����%���������������������������� �����$�����N����J�4�J��e_2���J���J��e_3�����u����� ����k�"���������5�������������������� ����������� ����� ������neg_add_rev����� �����neg_neg�����!��������������add_left_neg������������������������add_neg_of_nonpos_of_neg���� �%����������������� ��(����c�g��neg_nonpos������#�����5� J�K�������� Q� R�K�w�������J��� �����#�����#���5�����*�.�0������_a���B�L�\�����4���4���4�a�\�C���4���4�b�h�����o�s�6�������������������������������������������������������������������� ����������� ��������������������������������������!�����#�������������������������� �������������5��������������������add_left_comm�������� ����� ������ ����neg_add_cancel_left������������ ������������������ ����� ��� �$����add_right_neg�������I�������O������������u���� ���c���g�c�����m�������PInfo�e�declfract_eq_fract���S��U��Xr sk�������S��U��X�� ��k� ���h������L��������������3�>���>���������J�>��_a���G�L�M�# ��6�����b����������3���������������J��_a����/�0�1�9� ����B���M���������6�����E�����3������sub_eq_sub_iff_sub_eq_sub�� ���������"���9�9�e_1�a�J���J��e_2�����K����� ���K�J�K� ��k�#���� k ���������h����������,�+ zhz���_�n��� �%k� 6�|���~���*� F�O�(� 6�,�(�.���i���=�n����� �Y���)�@�s�)_a�����8�9�6�)�@���)�@fract_eq_iff��� �(� G�1�?�����k� G�4�>�����k���=��� "�k��_�I�(�Y�n��s�_�H� �� �� ������F�Yk�(�r���s������ _a����;�X� �b ���<�9���6�s�}eq_add_of_sub_eq���F �{k������z�%� � �M� G�w�R�y���m�����������n_a������<�����������������:�X �9�����6�����4���F�R�m����_�~�Hk�Y�m���������9���9�������J���J�K������4����4�� ���4�J�4� ��k����N�����J���J��e_2���J�K�J�e_3���>�����u���� �I���J���� �k�G�}�}�����}�(�������k��������������������������1�_�{�{�2�1�_�|���9�6�����9�������z���Lk�zk�9�9�A� �� ��������������(�C�Q�E�{���G�A�z�S�D���V�A�Y�B�E�B���[�A�H�S�_�a��S�����N�{k���_�����Fk���q�S�_�[�<���J���J��e_2���J�K�J�e_3����������| ��|k�y�S�S��S�`�Z�@�`�z���C�R�����z�B�^�C���%���Fk�^�������-���F���C�C��C�j���C����N�S�C�����C�C���U�F�@�U�Qk�Q���{�F�����S���j�S������k�{��kk�k���9���{�"���Fk�9���9��9���_� �� �add_right_cancel_semigroupto_add_semigroup����to_add_right_cancel_semigroup���'�{�����6add_right_inj�������{�{���_�����2�L���F�R�P���R������2���?���PInfo���declfract_fract���S��U��Xr �m�q�r�r��S��U��X�� ��2��z�\�x�������2�=�s�2_a���\�������6�2�=���2�=fract_eq_fractk �r���<���=��m�z�r�9�Z�m�z�h�_���`�e���]�c�N��k�J �Je_2���J���J��e_3���@����m �O�mk�y�r�h�����_�_���_��e�����e�����e���=�����m�>�>�����m���������c����c������k��k��k����������������������z������h������������k�������"k�%���_����k�%�0�=������neg_inj'k�%�>�>���m�����Lk�%�0�Pk�Rk �=�=��������=���PInfo���ATTR�x����declfract_add���S��U��Xr sk��z���3�3�"��#�����S��U��X�� ��k��� �L��y�x����\�x�x�����������\�x�x�x�����y�����x���y�����-�9 �9e_1���J���J��e_2�������� ����k��+�N�� �J�J�e_2�a�J���J��e_3���>�K�K����G �I�K�J�K� �Gk�w��&�^��"�� k ����%�e���*�e���� ���-�����-�����-� ������~�\�$�$��~�\���$���)���!�����A�+���� �+������������������ �� �� �������������)�����������)�����c���������)�����x�������^�&�����&�������������������������$�����������$�����c���������$�����x�������^�"�����"�c����c�c���� ����!add_assoc �����%�����$�������[�< �J�J�e_2�a�J���J��e_3���F����� �R��k�������t���������������������$��c��������% �������$�- ���$�����t���� ���$��� �������$������/�������������$�����G�I���K�4���$�<�$����t�J���T���" �����*�����)������������t���������������������)�~�c��������#������)�*�)�����t���4�)���<�����)��������������������)�������������4���)�<�)����t�������$���g���������c��������y���������ring�������������R� �T�Te_2��!�� �@k�������������������������������add_semigroup�����y���=�����������y���z��������$�t�$���������c���y�������z�y�����)�t�)���������\������ �� ���$���6���� �1���$�$���\������L �����P �R k���������������PInfo���declfract_mul_nat���S��U��Xr b���z���3has_mulmul�to_has_mul���#���������natcast_coe�������"�h �x���S��U��X�� ���natrec�����������c��e��<�,�j��l��n��p��=�B�,�+��k����������3�i�wnatzero�"�{����[��\�x�c �e �����j �l �n �p ��������������������������������\�x�x���A���x�����c�x�x�x�������x�����x�x�x���^���x�������x�wmul_zero_classto_has_zero ��to_mul_zero_class � � ��chas_mul �J�J�e_2�a�J���J��e_3���F�c�K��� �R��k�������t�����x�������Y�nathas_zero�x�R�� �T��T�e_2�1� ��� �j��k�����natnat_zero_eq_zero��cast_zero ������mul_zero �������x�������x�x��V k�-�-�e_2�a�I���� �7k ���x�������x����[���x�0�5�K k ���x�x����x�x�t�x���x� ��� ���x���x�� ���������������� �x��c�hc�������_�H�c���e���N�&�j���l���n���p���O�R�U �%�� ���Z�������������<�c���e���I�F��l���n���p���J�O�T��succk�8�����Yzhz����������t�c���e�����n��������j���l���n���p���������� ����������������t����� �������������������_a�����������c���e�����n���������j���l���n���p����������������������������������6���k�natsucc_eq_add_onek����������t�����������������r������������5���7 �@������D�������M�����������������O���*_a������������������_����������������6�����Zk�Z�natcast_add�����Ok���M�������t�������to_has_mul�������A���C�H�����M���R�������S�F���T�x�z_a�������������A�������������������������������������������������6�M�����x���zmul_add���S�F�x�z�������������������A���C���������R����_a������������A���������������������������������6�������x���z���x�z����������t����������������� ������� �R�z_a��������������������� &������������������ (� &���6�������Onatcast_one�����O�� �������t����� ����� � S�R��semigroupto_has_mul��monoidto_semigroup���to_monoid���8�F� B��to_has_one��� ^_a����������������������� (� &� j������������� p���6� �Fmul_one��� ^�F�� S������� N���������� S� ��R� a� f_a��������������� p��������� ��� (���6� S� ��������t�t�������� ���� �����a_0��� �������� ��� (����fract_add���������kyhy� ����������������K���n�K�������j�K�l�K�n�K�p�K�L���R�� �� ���� ���� ������Lk�� ���� ��� �� �����������������k�!��� ��!�����!� �_a���� ����L � ��6� ��!�_������k��!� ����������!$�!���!�!,�!��k_a���� ����V �V � ����!5�6�!�!)�����!)�!1 ��!,� ��!*��������!'���!(����!,�!R�!��_a���� ��������e�K��� �� �� �� �� ��������� ��![���!c�!5� ��!j�6�!,�!P�!B�!P�!W����� �tacticabeltermg�������!����!����� ��_�����!Qtacticabelunfold_sub����� �� ��!�� T����� �������� ��!��!��!��!��!��!�����!��!��!��!�tacticabelterm_atomg�������!��tacticabelconst_add_termg�����!����!��!�� �����!�� ������ ��!�� ��!��!��!�� �tacticabelterm_neg������ ��!��!��!��������������tacticabelterm_add_constg�������!��!��!��!����!��!��!�� ������!��!B�!Q�!��!��!%�!��!L�!��!��!)�!P�!��!��!)�!��!P�!��!(�!��!��!��!��!(�!��!��!��!%�!(�!��!��!%�!��!(�!��!��!��!��!��!%�!��!(�!��!��" �!��!(�!��!(�!��!��!��!��!��!��!��!��!(�!��!��!��!��!��!P�!���!��!��!L�!��!��!��!N��"+�!��!N�!���"*�"'�!��"+�!��!L�!(�"*�!��!L�"�")�" �"*�!��!L�"�!��")�!��!(�!��")�!��")�!���!��"5�!��!���!��!��!��!��!��!��"*�!���!��"*�!��"*�!��!���"*��!�����!���!��"c�!(�")��!��"m�!��!L�!��!��!��!��!��!��!����!��!��!|���!��!��!��[�!(�!��!�tacticabelterm_add_termg�����!��!(�!���!��[�!���� �!���!���[�!����������[�"���[��[������[���add_monoid��!��!%�!��!��!��!��!�tacticabelzero_termg�����!(�!��PInfo�Ȭdeclceil���S��U��Xx ��S��U��X� ���<�� �PInfo��VMR�VMC��� ��� intnegdoc�`ceil x` is the smallest integer `z` such that `x ≤ z`decl�equations_eqn_1���S��U��X� ���k �"���S��U��X� ���"��PInfo�$�ATTR����$EqnL�$SEqnL�TK⌈�TK⌉NOTAceil⌈⌈⌉⌉��declceil_le���S��U��Xzxk�"� k ������S��U��X�+�,k��# ���x���#���# �#��#_a��"� k �"���� �##�6�# �#�$ k ��#���������#�#���#�#>�s���#9�#_a���������� �##�}�##�6�#�#<���#E�#<neg_le���#��#>�����#:���#���#>�#h�s�#:�#_a�����#9 �#J�##�#Q�6�#>�#f���#n�#f��#:����#h���������#���#h�#�������_a ��"���#p�#I�##�"�#I�##�6�#h�#�����#��}��������� �� ���#��#���#��#��s�#��������� �#��#��#�_a���"�#H�> �#I�##�#Q�6�#��#����#��#�neg_le_neg_iff �#��#��?�#��PInfo�*�decllt_ceil���S��U��Xx z���#������S��U��X�5 �6���#���ceil_le k �PInfo�4�declceil_le_floor_add_one���S��U��Xx �"����S��U��X�9 ��$�����$�$ �s�$_a���#����6�$�$ ���$�$ �#�k ���$ �$����$ �$%��� �_ak������$���6�$ ��9��$%�$������$%�$:���_ak������4�����6�$%���fle_of_ltk��$9���PInfo�8�declle_ceil���S��U��Xx �$�9�"���S��U��X�? �E�$�"��$\�$�"��R�"��PInfo�>�declceil_coe���S��U��Xz��"�����S��U��X�A��$o����<�������$o�$y��$m_a���#�����6�$o�$w�#/k ����$y����<� �����$y�$������ _ak�����x��������y�6�$y�$���k�$��$�����$���������$��$���<�9��_a�����x�#�����6�$����X����$������$��$������_a�����#��$��6�$�neg_neg�����PInfo�@�ATTR�x���@declceil_mono���S��U��Xa bkh���# �#��S��U��X�H �Ik�J�����$��" ���#�#� k�# �� �$�le_ceil k�PInfo�G�declceil_add_int���S��U��Xx z��#����#���S��U��X�M �N��%����x�����%���%�%(��%_a���#� ��$����%1�6�%�%&�#2����%(����x�x�����%���%(�%E��������_a �������#H� �%1������%1�6�%(�%Aneg_add' ������%E����L�x���%���%E�%k��%B_a�������3�#H �#�%1�$��%1�6�%E�%hfloor_sub_int k ����%k����%f�%���%k�%�������%f_a�����L���%q�%1�%4�6�%k�%�neg_sub���%f��%�������%f�%���%��%���%�_a�����%��%1�%4�6�%��%�sub_eq_neg_add���%f���%��PInfo�L�ATTR�x���Ldeclceil_sub_int���S��U��Xx z��#�z�L�#���S��U��X�Y �Z���%��#���%���%��%��%��#�����%��%���_a ���#���#���%��#���6�%��������%�ceil_add_int k ���PInfo�X�declceil_lt_add_one���S��U��Xx ���$[������S��U��X�^ ��&���"��"��& ���&�&�s�&_a�������#���� ��6�&�&���&�&���&�<_ceilk �& �"���&�&�"�������&�&6����_ak����#��#�&�&<�#��6�&��$�����f��&6�&��"�����&6�&Q��"����9�_a��&<�#���4�&<�6�&6�&P�%�k �lt_add_one� ���"��PInfo�]�declceil_pos���S��U��Xa ���[�"����a��S��U��X�e � �&|�&h�&| this���%f�[ pos_of_neg_neg�e � K� L �#G���p ��4���E� Q�\���&�� Q��&�not_iff_not_of_iff�&��&�floor_nonneg k�&�not_le_of_gt���[�&�AnnotcheckpointAnnothaveneg_of_neg_pos���%fh�& �g�����x neg_pos_of_neg���%�lt_of_not_ge���%��Zadd_monoidto_has_zero����� Q�\�%�� Q��%q�&��&��&��&��%qnot_le_of_gt� � �%qAnnot�lAnnot�mneg_neg_of_pos �#��PInfo�d�declceil_zero���S��U��X��"� �J�[��S��U��X��&������&������&���[�[���9�9e_1��J�Je_2��M ��� �N �J� �k�&��[���&����[�Z�&����'���h���'�#/ �Jchas_neg�J�Je_2��' ��k��'!�[���'!�K�[���k� e_2���N� �"k���J� ���V���[�[�"����&�����[���PInfo�v�ATTR�x���vdeclceil_nonneg���S��U��X_inst_3decidable_rel �� �� �� �� �� �� �� �� qkhq���\�#��S��U��X�~�'w��k����dite���� � �'xh�'�le_of_lt���[�"�� ���&{�'��>�9 ceil_pos� ��� Q�'���\�'��\�'��9���'��'�� � _a���\�"����k�\�'��6�'��9le_antisymm�� T���� �9le_of_not_lt��'��9 ��'��\�[���'��'���'�_a��\�'��/�\�6�'��[ceil_zero� �R�[�PInfo�}�declnat_ceil���S��U��Xa ���S��U��X�� intto_nat�"� �PInfo���VMR��VMC����������to_nat_maindoc��`nat_ceil x` is the smallest nonnegative integer `n` with `x ≤ n`. It is the same as `⌈q⌉` when `q ≥ 0`, otherwise it is `0`.decl��equations_eqn_1���S��U��X�� �1���k �'���S��U��X�� �@�'��PInfo���ATTR�����EqnL��SEqnL��declnat_ceil_le���S��U��Xa n����has_le�'� k ������S��U��X�� �����(�(�'��#��(���(�(!���(_a���(�'� k �$��x�(�(.�6�(�(�� k ��(!�$���������inthas_coe�(���(!�(Q�s�(_a���(�'��$��(.�}�(.�6�(!�(O���(�(Ointto_nat_le�#���(Q�����(N�(���(Q�(q�s�(O_a���$��(M�(.�(]�6�(Q�(o���(O�(o�#��(N�?�(o�PInfo���decllt_nat_ceil���S��U��Xa n�_inst_3decidable���(�����has_lt�(*��x ��S��U��X�� ������(��E� Q�(�� Q�(��(�not_iff_not�(��(���decidable_lt�(*��(��( ������linear_orderto_partial_order�natlinear_order�(*�(����(��(��s� Q�(�preorderto_has_lt��(��(*_a��� Q�(� �'�� k� Q�>�� k�}�(��6�(��(����(��(�not_lt��(��(*��(��(����� U�&� �x���(��(��s� Q�����(��x _a���(��(� �(��)�6�(��(����(��(����&��x ��(��(.�(����(��)�s�(,_a���)�������'�k�(��}�)$�6�(��(.���(,�(.nat_ceil_le k �?�(.�PInfo���declle_nat_ceil���S��U��Xa �$�jk�lk�nk�pk�+�0�5�'���S��U��X�� �E�(�'��'��)P�)0k �'��P��(������������ordered_semiring�'��PInfo���declnat_ceil_mono���S��U��Xa₁ a₂kh���(+�()��S��U��X�� ��k�������)p�$��w�)o�)4�)o�% �)xle_nat_ceil k�PInfo���declnat_ceil_coe���S��U��Xn��1�'��)N��S��U��X��� �g�1�'��"��9�(N��)��1�'��(N���)��)���)�_a��1�'��#���(w�1�'��6�)��(Nceil_coek �(N�@�)�Annotshow�PInfo���ATTR�x����declnat_ceil_zero���S��U��X�1�'� �J���S��U��Xnat_ceil_coe ��PInfo���ATTR�x����declnat_ceil_add_nat���S��U��Xa a_nonneg�cn��1�()��w��(*��S��U��X�� ���c�����)���1�'��#����(N��(W�1�'��%0�(N�)����)��)���)�_a��1�'��'��.�G�(w��'��'�k�)��)��6�)��)��%� k �(N���n���)��(Na_1����*�1�'���)��(w�)�inteq_coe_of_zero_le�$����#� �$��\�$�chas_le�J�Je_2��J�Je_3��'��*% �'�*%k�*�[�'� k�$��$����$�ceil_mono k� w�ceil_a_eq�*��1�'���'� �(M ��'��*M �1�'���(w�*O��'��(w ���*V�*_��*M_a��1�'���"�������(Mk��'��*hk�1�'��Y�*j��)�k�6�*V�(w�@�*Z�PInfo���declnat_ceil_lt_add_one���S��U��Xa a_nonneg�c_inst_3�(������(�&��w�(*����S��U��X�� ���c���*��E�(��(*�()�*��*�lt_nat_ceil k�*��(*��*��*��)�����*��*����*�_a���(��(��(��.�@�*��6�*��*� �g�1�*��*����1�()��w��*��*��9��9�e_1��J��J�e_2��'���1�1 �' ��J�� �1k�*��*���V �������e_2���'<��� �'�����kk�*��*��[�<�J��J��e_2���J���J��e_3���>������*� �I��J��4 �*�k�� � �*��� E�5���*��*��@�*�nat_ceil_add_nat k �Annot��natlt_succ_self�(*�PInfo���decllt_of_nat_ceil_lt���S��U��Xx n�h�(��(��x��S��U��X�� ������+9lt_of_le_of_lt� �*��x�)� ��*��x�*����+I�+K����������linear_ordered_semiringto_ordered_semiringu_1�R �k�m�o�q����� ��+T� c��to_monoid)�+^��� ��+^�(*�+n�+K��cast_lt)�+S�(*�PInfo��� declle_of_nat_ceil_le���S��U��Xx n�h�(�(.��S��U��X�� ������(�%�*��x�+G��"�*��x�(,���+��(,�����+X�+o�+q�(,��cast_le�+S�(*�PInfo��� EndFile