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�:���initdatanatcastalgebragroupalgebrafieldtacticwlog�J�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}traversePInfochar_zeroindlu_1α�_inst_1add_monoid_inst_2has_oneC�e_1cast_injectivefunctioninjectivenatcoe coe_to_lift coe_base natcast_coeadd_monoidto_has_zeroadd_semigroupto_has_add�to_add_semigroupn��������mk���� *�����)� +++++++ +�nspace�prt�recgind��decl�cast_injective����c*(����m Proj����(�rec�(�(�PInfo�ATTRreducibility���proj��decl�rec_on�������M��c�����M��rec��+�PInfo�ATTR����auxrec�prt�auxrec�rec_ondecl�cases_on�����PInfo�ATTR����auxrec�decl�drec������hm��(��+�.��������.��*�+� ������+� �+_*�+�PInfo�ATTR����auxrec�prt�decl�drec_on��������M��c��+������M�����_���PInfo�ATTR����auxrec�prt�decl�dcases_on�����PInfo�ATTR����auxrec�prt�doc�Typeclass for monoids with characteristic zero. (This is usually stated on fields but it makes sense for any additive monoid with 1.)ATTRclass���class�declchar_zero_of_inj_zerou_1α_inst_1_inst_2add_left_cancelabc+aeq��has_addadd �����Hn ��+bhas_zerozero +X� � nathas_zero.��������m n h�������+� ���� hleorhas_lele nathas_le�"�drec�"�"���+�.�� �2�2�2�2�2 �2 �2�9�E+����+� � ��#�� �P�P�P�P�P�P �P�W�cExistsdcases_on k �has_addadd nathas_add+_xExists �r�J+natledestk e�qeqmpr�+����m+id�5����eqrec �_a �������eqrefl5����eqsymm ���������������������_a �����m�����������W�P���������� �����������������������������������+��������������� ����_a���������� ��������������������������������������������� ����������������������������_a��������������#����&���������natcast_add ������+��������������?����_a ���������&�����&������?�>�������?�V����_a���������&�\���?��add_zero ��������V�>�������V�n����_a�����\�"�_���V��eqrefl���������+�����������k� � natadd_monoid+��� ��_a �������������+� ��+�� ++��.��Iordcases_onnot��Z�Z�Z�Z�Z�Z�2�9�Z �Z�2�����this��������not_or_of_imp����classicalprop_decidable��� � ��O���������������P�W�� ���P���~� ��q���������P���"�������#���&������+���������������"��������� ���������������%�'������(�0�,���������"��������� ������E����������%��(�L�,��O����C�;�C��3������+��E���"� �����E�g�D� ����%���O��%�O���E���g�f������g�}�� �������&�O�����g��f�������}�f�"�����}������������K�����}�"����"������absurd��W�W�W�W�W�W�Z�2�W �W�Z���+�����������eqtrans 5������������rfl 5��iffto_eq����iffintro������W������������5����������������+��������������������������+����+�������le_total �linear_order�PInfo�decladd_groupchar_zero_of_inj_zerou_1α_inst_1add_group�_inst_2Hn ��add_groupto_add_monoid!�@��A�K�@���<���Pchar_zero_of_inj_zero�@add_left_canceladd_groupto_left_cancel_add_semigroup�PInfo��declordered_cancel_comm_monoidchar_zero_of_inj_zerou_1α_inst_1ordered_cancel_comm_monoid�_inst_2Hn ��=add_comm_monoidto_add_monoidordered_comm_monoidto_add_comm_monoidordered_cancel_comm_monoidto_ordered_comm_monoid!�q�L�r�K�q���h�����X�q�\ordered_cancel_comm_monoidto_add_left_cancel_semigroup�PInfo�"decllinear_ordered_semiringto_char_zerou_1α_inst_1linear_ordered_semiring� *�i�k�mordered_semiringto_ordered_cancel_comm_monoidlinear_ordered_semiringto_ordered_semiringmonoidto_has_onesemiringto_monoid�$to_semiring���!�"��ordered_cancel_comm_monoidchar_zero_of_inj_zero����n h�:;<=>�i�k�m������������BC�����nateq_zero_of_le_zero�mp�preorderto_has_lepartial_orderto_preorder�to_partial_order�n����mul_zero_classto_has_zero�*to_mul_zero_class����������distribto_has_add�*to_distrib������*�natcast_le�le_of_eq������PInfo�( prt�VMR�VMC��"�!decl�equations_eqn_1� �!�"��eq���� ��!�"�������PInfo�C( ATTR_refl_lemma���CEqnL�CSEqnL�ATTRinstanced�classchar_zero�ddeclnatcast_injectiveu_1α_inst_1_inst_2_inst_3m(�K�L�M�Nmchar_zerocast_injective�J�PInfo�I1decl�Hcast_inj�J�K�L�M�Nmm n ������K�L�M�Nm�R �S functioninjectiveeq_iff ���Hcast_injective�+�PInfo�Q4ATTRsimp���QATTRelim_cast���Qunitstardecl�Hcast_eq_zero�J�K�L�M�Nmn �3����K�L�M�Nm�] ��W�3�b��V�����W�a��+�_a+���3�5�����3�5����W�^�+�^��Hcast_zero+X^��a�3�V�V�����a����5�__a5���3�5����3����a�Vpropext�_�V�Hcast_inj+�iffrefl�V�PInfo�\7ATTR�X���\ATTR�Y���\�Sdecl�Hcast_ne_zero�J�K�L�M�Nmn �3ne+���g ��K�L�M�Nm�f not_congr��V�Hcast_eq_zero+�PInfo�e:ATTR�X���eATTR�Y���e�Sdecltwo_ne_zero'u_1α_inst_1_inst_2_inst_3m��bit0�k#has_oneone�L�l�m�n�om this��'�p �l�r nathas_one�� eqmp���+^b����+�����������f��_a+�������������i������i������natcast_one+����b������fbnatsucc��_a+��������i���i�����natcast_succ+X^��AnnotcheckpointAnnothave�mpr�������natcast_ne_zero��of_as_true�7�gdecidable a b �decidable_eq���trivial�PInfo�j?ATTRfield_simps���j�Sdecladd_self_eq_zerou_1α_inst_1domain��_inst_2���>add_comm_groupto_add_groupringto_add_comm_groupdomainto_ringzero_ne_one_classto_has_one��to_zero_ne_one_classa�3�=�����to_distrib�\�Lno_zero_divisorsto_has_zero��to_no_zero_divisors�=�{�����V���i������3����������a5��5e_1��b5��5e_2��congr 55�3��3+congr_arg 5��55�+�3�|����|�false������=���p������ringto_semiring�n�{������=has_mulmul�9to_has_mul�������{��a��+e_1�a���e_2��<�� �95��9���+�� �9���95�+���s����������������j��two_mul���{�{��{���=����to_has_mul�y���{��mul_eq_zero��a5��5e_1��b5��5e_2�������+����������=��!�?�X�Z�n���L�,���l�m�n�omiff_false_intro�=����two_ne_zero'�,������������false_or����M����PInfo��Fdeclbit0_eq_zero�������V���ia�3�=���{������V���i��add_self_eq_zero�PInfo��Ideclhalf_add_selfu_1α_inst_1division_ring��_inst_2���W�Y�[�]division_ringto_domain�d�f�ya�=has_divdivdivision_ring_has_div'�j���l�m�w�������c�e�������v����������=�����������������������������������������j��_a�����+��+����+�k+�\+�w+��+�����c+�e+�������������������mul_two������~������������division_ring_has_div��������division_ringto_ring��!�?�(�)�����_a�������+��+��+��+��������+�����+��+��������mul_div_cancel��<������PInfo��OATTR�X����decladd_halves'�������v����a�=�������=�����v��������A�������A�����?_a����������M�"���A�������?add_div����������������_a���"��half_add_self�5�PInfo��RATTR�X����declsub_half�������v����a�=has_subsubadd_group_has_sub���=�=�����v����������~�j��=�=������������_a5����|+�~+�X+�Z+���M�M������������sub_eq_iff_eq_add���=�=��������������K_a�����[\�>+���M�M������add_halves'�5�PInfo��Udeclhalf_sub�������v����a�=���=has_negneg�to_has_neg���=�����v����������=������������������_a������M��+��+���M�!��������������neg_sub���=����=����������� ����_a�������������������=sub_half����PInfo��XEndFile