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�"&�[initlogicbasicdatabooldataoptiondefstacticbasic���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}traversedecloptionsome_ne_noneu_1α�xneoption�some�none��heq optionno_confusionfalse�PInfo�decl�get_mem��ohcoe_sortboolcoe_sort_bool�is_somehas_memmemoptionhas_memoptionget��"�+�cases_on�.�'(,B0B3B�'(eqdcases_on$?>t_1$�eq$(BBH_1ZboolttH_2heq'(d>Zg,o0o3ooBv`aaboolffboolno_confusion�c']^]�refl$],�0�3���`��`heqrefl'W��'?>id_rhsDB�rflD��PInfo� ATTRsimp���decl�get_of_mem��aoh'Q�,>>0>BH>��������Dt_1D��>H_1dd�H_2ctd�>q�3�d�o�>���eqrec��B���'e���c,��0�o��� 3�>��'(���,d�0d���c�od��(�(�q�(��� �oAnnotinnaccessible�6���6>�D��G>�PInfo�decl�not_mem_none��anot,0��h�Z�PInfo�ATTR����decl�some_get��x"h+.6��"�+=�.�A��J�SXt_1$�_H_1bH_2n��'xv`���������`���������H�������PInfo�ATTR����decl�get_some��xh') 4���������PInfo�ATTR_refl_lemma���ATTR����decl�mem_unique��o"abha�hbG>�>��"��������optionsomeinj�>�trans��>B�eqsymm�B���PInfo�decl�injective_someu_1αfunctioninjective� "�_x_xiffmp�d���some_inj �PInfo�decl�injective_map�u_2�β�f�Hffunctioninjective���optionoptionmap>����������a₁�a₂Daeq��B���B>��<d�������d��od��� >��������d�Bf�<o�q�����o���od�������v�.�� � � ��� �o��"��2� �������o�'t_1�=�������� ���FH_1�����F���F��P>H_2c�����P���P�F�[�^�[B>�a �k�k��A�����=optionsome�o�none��no_confusion��c�L�I�F�L�K� �D�K�P�P�U�~��������=�z��}�B�z�d����'� <�����}�A�x�A�F��>>����2�!�>��t_1�=��E�I��H_1�O�S��H_2c�Z�^�b��`>���m�pd�n�B��}���o���c���K�����������TB�������>���B����B������A�x�����eqmpr�����idY����F>_a�F����T���T����o>optionsomeinj���������PInfo�"doc�`option.map f` is injective if `f` is injective.decl�ext��o₁"o₂�a���B���"����G<>����B�A��P>�>��>�AG\�\<B��D����A�$f�c�f��B�A�P��o���������B����e�c���$f�mpr����{���{�>��B�A�P��S<������d�At�'>�����>����A�c��d����f���f�����$����f���������d�����'�������q������t>������>�q���PInfo�&ATTRext���prodmk$prodlistext_param_type����name���������������listnil������������listcons��������namemk_string Strthunknameanonymous�� Strfunext�������� Strulift���� Strext� ������ Strarray���������� Strplift���������� Strprod���� ����namemk_numeralunsignedof_nat'has_oneonenatnathas_one���� Strpropext�������%�&has_zerozero�(nathas_zero�������ATTR������`���������� Stroption�����?decl�eq_none_iff_forall_not_mem��o"�Aa�T2��"�intro�V�[e�Vah�C�\t_1D�$�sH_1��>H_2ctBveqmp�gd�h�qd_aq���o�p��kv�>�v��j����\�D>�*D��B�����\�&�\��'c����j�����B�*���$>�������>�t�������G������h�[�ext���D�BV��T�I�� �����forall_congr_eq�������eqtrans����A����a��0�e_1�b��2�e_2��congr���A��ABcongr_arg��2���B�A>�C��propext�C���mem_def>��������iff_false_intro�Z�>������iff_false���PInfo�+decl�none_bindu_1αβf� �;monadto_has_bind�monad�<�=�>�'��2�PInfo�:/ATTR����:ATTR����:decl�some_bindu_1αβaf�.�d�.>����D�E�F�G�=�.�B�PInfo�B1ATTR����BATTR����Bdecl�none_bind'������f������O�bind�������I�Prfl�O�V�PInfo�H3ATTR����HATTR����Hdecl�some_bind'������af��������R>�@�������M�N�c�]���h�PInfo�L5ATTR����LATTR����Ldecl�bind_some��x"�.�bind_pure�,optionis_lawful_monad�PInfo�O7ATTR����Odecl�bind_eq_someu_1αβxf�=b�A�H�.B>�Exists�UBaBand�����V�W�X�Y�=�Z�b�XD�A��.�B�����\������>����A�H��\����\B���s����true� ����������A�����������HV�a��_De_1�Va��aqe_2��4�%��&��&B�5�%�a�%��B�&>��V�:B>�����eq_false_intro��_h��B\����������\BpaB��e�f��e_1��fd��5�fo����o���funextBxB�xB���jB�\B��������a��k�e_1��b��m�e_2���������B����>������_h��df�{����������)false_and�����α� ��aexists_falseB������iff_selftrivial�XB��A���������\�����{������� ��{�����{�A���������s���_D�_��`���aq�a��b�&����������B�����a����B��>�q���B�B�����z�����z���\���d��a����e��e� �g����f�������y�����i���j��x�j����\��;�v���someinj_eqd������������v����vd�B�d��exists_eq_left'����������g���m�PInfo�T:ATTR����Tdecl�bind_eq_some'������xf�cb�A����>�RB>�~>��aB�������~B�����{�|�c�}�b�{D�A���R�B����~�������~���A��\����~B������ ��5�����5�������0���0���>������e_1�����e_2�}�4�D��E��EB�5�D��D��B�E>�.�A�HB>���������C_h�C��B��B��4���4���3��"�jB�2�%�~B���2�(��F���������N��a�i�m�{B��A���������~��w�%��� ����������A��������������������=���E�J�N��O��OB�S�N��N��B�O>�����L�B�����������������~����%�v��%���������j����j����~����%�%��%�����v����vd����~d>�������������g��m�PInfo�z=ATTR����zdecl�bind_eq_none'������of�c�A�d�f��baB��S�T�����>���������c��(�A� xB����T��"�$����B�1� ��(�7����3���� �T�>��>�x� >�����B���T�B������F�eq_none_iff_forall_not_mem��-� �E� �2� ���E��B�Tx����I�%��B�����I�T�K���b�T��ha����e_1������T�D����D�����D��mem_def>������bind_eq_some'B>���T����B�f�hnot_existsB��B���B��B�T���B�1��B�����1not_and����'�6�]���&���5������B�%��B�1��Bimp_congr_eq�S�T�B���B�����T����S����>�{����������B��iffrefl�3�PInfo��@ATTR�����decl�bind_eq_noneu_1αβof�=�A�d�?baB��S�T���"���������=�bind_eq_none'��>�PInfo��DATTR�����decl�bind_commu_1u_2u_3αβ��γ��f��optiona�b��� >optionbind���>x�optionbind���B��� B>yB� dBxd����������� ��� ������������ � B� ��d� d���� ���� o���o��B����� )� f��d� ,��� ���� 3v� 7eqrefl� � ����� �������B� P� (� A��d� ,�������� ?����� � �� 3����o� od� 5� ,��d� �d�2���d� Z� ����d� ,��d������ P� e� g��o� i�~o� 5�PInfo��Hdecl�bind_assoc��u_3����γ� x.f�>�g�>� � � �� y�� ��������� ��.��� ���� ������� )� �Rd�� *��d� ,��� Q� ������ Z� � ����PInfo��Ldecl�map_noneu_1αβf��functormap��!applicativeto_functor!!�?to_applicative!!�,���������8� ��PInfo��OATTR�����ATTR�����decl�map_someu_1αβaf��d� �>�@����������� ��I� ��PInfo��QATTR�����ATTR�����decl�map_none'������f���Q���X���������^� ��PInfo��SATTR�����ATTR�����decl�map_some'������af� ��d���@�~����������� ��o� �PInfo��UATTR�����ATTR�����decl�map_eq_someu_1αβxf� �b�A�H� ���"� �� � �� �,B>���aB�������������� ����b��D�A�� �B��������������A�H� \�����B��� ��� �� @����� @������� ;��� ;����� 9V����B>������ ?��� ?��� >��"�jB� =�%��B��� =�(� �F� � �� ��� f�N� �a�i�m��B��A�� +���������w� 1��� �� ������ ��A� � ����� �� ��� ������� ��� � ���"�B������B��� �� ��� ��������� 1�v�� 1��� �� ����j�� ��j�� ������� 1� 1�� 1�����v����vd����>� ���� ���� ����g� �m�PInfo��WATTR�����decl�map_eq_some'������xf� �b�A���B>���aB����B����������� ����b��D�A�������������������A�� �\�����B��� ���� �� ����� �����������C�b��A��B>���m�x���������"�jB��%��B����(� ��F� �� ��� ����/�N� ��a�i�m��B��A��� ����������w� ���� ��O�����O�A� �� ������J� ����J������� ����H�]���B�����someinj_eqB���N� ����N�������� ��v�� ����M�x���j��L�j��w������ �� ��� ������v����vd��d��>�|���{���W���g� ��m�PInfo��ZATTR�����decl�map_id'��o"optionmapid��"��map_id�PInfo��]ATTR�����decl�seq_someu_1αβaf� ��dhas_seqseq��#��to_has_seq##� �>a>>�@� ���������� ��I���PInfo��_ATTR�����ATTR�����decl�some_orelse'��ax�d�orelse������I���PInfo��aATTR�����ATTR�����decl�some_orelse��ax�dhas_orelseorelsealternativeto_has_orelse�alternative������I���PInfo��cATTR�����ATTR�����decl�none_orelse'��x"�����"<���d��������.�����PInfo��eATTR�����decl�none_orelse��x"�����"�none_orelse'�PInfo��hATTR�����decl�orelse_none'��x"�����"�����d�����������PInfo��jATTR�����decl�orelse_none��x"���"�orelse_none'�PInfo��mATTR�����decl�is_some_none��Z(��rfl$�:�PInfo�oATTR����ATTR����decl�is_some_some��aZ��`���?���PInfo�qATTR����ATTR����decl�is_some_iff_exists��x"�A+��a�d����"����A�����H���A')�J��d����� ��c�����c�������]��has_coe_to_sortS$&�]'�_inst_1� $a$�$e_2Z��$�o>%>&�\��is_someequations_eqn_1boolcoe_sort_ff�b���b�J��e�f��e�f�e_1��f>��� ����a����i��j�`�j����`_h�`>V�@�����_�i�m���A'Q���S��H�@���� ����������A�������������q��'`������`�equations_eqn_2�coe_sort_tt���������S�����e���e����� �����������i��j���j>���>�������qa'iff_true_intro�Jexists_eq'�������g���m�PInfo�sdecl�is_none_none��Z�is_none�9`��?� 0�PInfo�vATTR����ATTR����decl�is_none_some��aZ� . ����?� 7�PInfo�xATTR����ATTR����decl�not_is_some��a"�AZ*�Z� 6`�� "��� �AZ��Z� .`��AZ�\�Z� 6`��� �� Y����� Y������� T����� TZ�����$�$e_1�y�$�$e_2�y��$�Z�ZB�z�$��BZ>�\��������� f��eq_self_iff_true$�� X����� Xa`��� ~� V`�``���� ���� �`� %�m� ��AZ���Z� K��`��� �� ������ �������� ���� ��� ~��`���� ����_h��`�� ���� �� e`� ~� ���``���� �_h� �� ��`�i�m�PInfo�zATTR����decl�eq_some_iff_get_eq��o"a�A�L�['Qh� �� 3>��'"�(=�'.�A�H�@� �A�)A�J��A�`� �S�)S� � �V��� ��������������`������h'Sh'��H\p�q�f���T� � ��*��exists_prop_of_falseS�+S����TS��ifftrans�A�T��not_congrS��pSA�p�A���S�qS�s��R�� ���not_false_ifftrueintro�i�m�'��A�H��@� ���)������� ��x�����x�A� �������q��� �w�����w�s�)���+���������M�A�p�A'[�������q��������`� �>���e�e�f���e�f���e_1Y�f'�������f'e�d��� ����v���h��i���j��u�j����)��_B�_�e_1���ao�a�e_2����F��F���B���F�a�F��B��>���B�B���s�+��+����>��exists_prop_of_true������������g���m�PInfo�&}decl�not_is_some_iff_eq_none��o"�A�T+�V��<"���<�A�T��d��A�T�]��� ��%�����%�������!�����!�F���{�]�u��� ������F���b�$�����$���#� %�m�<��A�T���d����� ��R�����R�������N���N�T���{��������� ������^not_true�Q���Q_h�Q���@V�i�m�PInfo�;�decl�ne_none_iff_is_some��o"�A+��@"���@�A.���A�]��� ����������������������^���T�$�^nedef�{�$���F�k�]�7�i�m�@��A��������� ������������������������F�����T�Q�F��.���{�Q�u�<�����e� %�m�PInfo�?�decl�bex_ne_none��p�"��A��x� ���H���Jx����D���_����_x��_a��.�E.� ��V�F���"Existsdcases_on��E�� �D\�F��J�I�������GBB��w�h��K���F���M� �����d�Gdd��h_w�h_h����Goo�9�Jintro&o� u>��q>v'(o>�ne_none_iff_is_someo>�d�'�4d>� ��7�9�n�6_aq�o�2�B���B� '(�B�/�Bo��7>�some_geto>�3_x��_a�S�G���>�G>>��U��>�q��D�ED� ����F�w��L>�M�p�����E�� ��f�F��d�#������P�����F������some_ne_none��PInfo�C�decl�ball_ne_none��p���AxH����x����X���_����h��x���>h��x.hx���j>�I����\'[�/B�"�D��e_1���5q�d���WB�����PInfo�W�decl�iget_mem��_inst_1inhabitedo���optioniget>��c���e���O�e��'[����B��U]t_1$�Z��H_1bH_2c'�+v>Z������o� � `����jc'����������$��d�ff`�����e>�'[�o�������v���PInfo�b�decl�iget_of_mem��_inst_1��ao.������B>��l���m�n.��5�t_1D��H_1��BH_2ct�B>�B���d��p��V����n���$B�qc�F��/��d��>���qc�\�C�D�C���C�o��od �'�Annot��|�o�|�G�V�G�PInfo�k�decl�guard_eq_some��p�0_inst_1decidable_predab>�A��guardB>aB���o�����"��s�0�t���v�w>dite�"����h�"��A����B�y���������B��� ����������A������������������������_��_�e_1�a�a��a�%e_2������������B�����a����B��>��������ite��decidable_of_decidable_of_iff����>� �����������������������guardequations_eqn_1�B��if_simp_congr(���������������������if_true(��������������������������������;����������������������,��and_true���������g���m�{�T�"���������������s�������������� ���������]�����������X���if_false(��Y��������!���P_h�P�A�����+���3�5�X����and_false���i�m�PInfo�r�ATTR����rdecl�guard_eq_some'p�_inst_1decidableuunit�AY���guard�����some�������������punitcases_on�����A����>��>��A����unitstar����h��A����>��� �����������������������Y�������������������_���_��e_1���a���a��e_2������������B�����a����B��>����������������>p�������>��� >has_purepure��applicativeto_has_pure����to_applicative��������_inst_2alternative��������e_2��_inst_3��eqdrec�>������B����d������������B>��>�>��>���guard_true����������,����inj_eq������������� �����>���� %�m���T���T��failure��������� ���l���A�k�l���k���i�������� >�i�>�{guard_false�����|�����K>�{���q�l��k� �l�a�koptionno_confusion���i���PInfo���ATTR�����decl�lift_or_get_choice��f��habor� ����o₁.o₂�����lift_or_getB>�������������.����b��D������B���b��D���������������\\\��orinl���������B�������������orinr�����v����B����������d��{�{������������������� �v�������������{����������y�� ����k��k�e_1���m��m�e_2���������B����>���������{����qe_1����%���e_2�����[��>��AB���>��>��B�A>��7�lift_or_getequations_eqn_4d��{�{�t�{���������8����^�����t���d�J�PInfo���EndFile