Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
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".

31513 views
License: APACHE
oleanfile3.4.2, commit cbd2b6686ddb�b+�inittacticbasictactictransporttacticalgebra���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}traversenspaceto_additivedecl�aux_attr_mainuser_attributename_mapnameid_rhsuser_attributemknamemk_string
Strto_additive_auxnameanonymous
StrAuxiliary attribute for `to_additive`. DON'T USE IToptionnonedeclprionatpersistentbooltacticunitdecluser_attribute_cache_cfgmknslist�mfoldlinteraction_monadmonadtactic_statedictn'	n_anamecases_on�astringa_12iteeq63
Str_to_additivestringhas_decidable_eq3;0�unsigneda_12D0functormapapplicativeto_functormonadto_applicative)3rb_mapinsert0�get_param
Quote
RecFn�3mk_name_map0listnilanamereflect0leanparserident�PInfo�\	VMR�_rec_1VMR�_lambda_1VMR�_lambda_2VMR�_lambda_3VMR�VMC�L\	n_fresh
�W�namecases_onIecharof_natv�i�t�i�d�d�a�_�o�t�_�stringemptystringstr�����������stringhas_decidable_eq	DFGVMC�\	αVMC�\	s(�_fresh
�X=�_fresh
�X<�_fresh
�X;�user_attributeget_param	nativerb_mapinsertVMC�
a�����VMC��_\	nameanonymousx�u�a�_�e�v�i�t�i�d�d�a�_�o�t�����������������namemk_stringT�I� �E�S�U� �T�'�N�O�D� �.�`�e�v�i�t�i�d�d�a�_�o�t�`� �r�o�f� �e�t�u�b�i�r�t�t�a� �y�r�a�i�l�i�x�u�A�����������������������������������������������������mk_name_map���listmfoldl_main�_mainleanparseridentdecl�aux_attr��PInfo�\	VMR�VMC�\	�ATTRuser_attribute���USR_ATTR�decl�map_namespacesrctgt��	n;3	decldeclarationdeclarationthm0wcoereflectedexprboolttcoe_to_lift��coe_base��exprhas_coe�
Quotetask�to_has_pure�U�taskmonad��reflectedunitstar���������reflect�
Quote� �to_has_bind)Fadd_decl0_x�set
Quote�aux_attr_D��PInfo�j	VMR�_lambda_1VMR�VMC�j	s(�_fresh
�����_fresh
����_fresh
���tacticadd_decl	�user_attributesetVMC�Uj	��_�_c_1t�_c_2d�_c_3i�_c_4e�v�a�o�����������������reflecttaskpuredeclarationthm���PInfo�value_typeq
indlCn�'�(e_1tgtdocoption6_�'mk30�*�_0�'��/�,�-���)��+��,�-�_30�nspace�'prt�'recdecl�'sizeofx��'recx��,�-�has_addaddnathas_add�has_oneonenathas_onesizeof�has_sizeof_inst3�	�optionhas_sizeof6stringhas_sizeof0�PInfo�1q
ATTRreducibility���1prt�1decl�'has_sizeof_insthas_sizeof�has_sizeofmk��1�PInfo�Dq
ATTRinstance���Dclass�E�D��prt�Ddecl�/sizeof_spec�,�-�8����,�-�eqrefl�"�PInfo�Iq
ATTR_refl_lemma���IEqnL�Iprt�Igind�'�/decl�'tgtc��N�
0Proj�'�/�M��N��,�-�30�PInfo�Mq
ATTR�C���Mproj�M�/decl�'doc�N���N�
0Proj�'�/�O���N���,�-�00�PInfo�Oq
ATTR�C���Oproj�O�/decl�'rec_on�(�)��*��+�,�-�D���)��*��+�@�'rec�(_03�PInfo�Pq
ATTR�C���Pauxrec�Pprt�Pauxrec�'rec_ondecl�'cases_on�(�C�J�PInfo�Sq
ATTR�C���Sauxrec�Sdecl�'no_confusion_type�(P�v1�v2���U��V��W��S�(�V��3�,�-��P_�,�-�atgt_eq8D3doc_eq8�D3�PInfo�Tq
ATTR�C���Tprt�Tdecl�'no_confusion�(�U��V��W�h128�30�T�(D_3�U��V��W��\�ieqrec�_a�h1a�gD0�j3h11�g__�S�V��x00D�,�-��X�Y�S33�Z�V33�Y0�'_�'�3300�PInfo�[q
ATTR�C���[no_conf�[prt�[decl�/inj�,�-��,�-��X�g�D_�and�S�y_�X�,�-��,�-��X���'no_confusion����yD�_30�Y���Z�V�y_andintro�S�y�V�wD30�PInfo�bq
decl�/inj_arrowl�,�-��,�-��X��P��X�X�S�wD�X��_3�,�-��,�-��X���i��X��0andelim_left�����/inj���w�yD_andelim_right�������PInfo�gq
decl�/inj_eq�,�-��,�-�8�����U�V_0�,�-�tgt_1doc_1�propext����iffintro����h�����yD_30a��anddcases_on���X�v���g��w�y��0a_left��a_right���,�,e_1��0�-��-�e_2��0congr���	��_3congr_arg��w�y�D0���y3�wD0�PInfo�oq
ATTRderive���'listconspexpr
Quotehas_reflectv�9decl�'has_reflecthas_reflect�id�A_v��S�����00a_0a_1�reflectedsubst�a���0�J����3
Quote��3z3��0optionhas_reflect6�6stringreflect0
Quote60�PInfo��q
VMR��_rec_2VMR��_rec_1VMR��_rec_3VMR��VMC��fq
n��_fresh
�bwexprcases_on
 *4>HR\��"�exprapp��"�����"�����"�����"�����"�����"�exprsubst��"�����"�����"���VMC���q
����_fresh
�bt��_fresh
�bs��
 />M\kz�6stringreflect��has_reflect�"�����6�����"�����6�����"�����6�����"�����6�����"�����6�����"�����6�����"�����6�����"�����6�����"�����6�����"�����VMC��fq
�������
 *4>HR\��"�����"�����"�����"�����"�����"�����"�����"�����"�����"���VMC��
q
��������ATTR�H���'has_reflectclassreflected����ATTR����'�:
Quoteinhabited�>decl�'inhabitedinhabited�inhabitedmk��defaultnameinhabited�w�optioninhabited6�PInfo��q
VMR��VMC��q
�ATTR�H���'inhabitedclass������decl�tokens_dictnativerb_map66��nativerb_mapof_list66stringhas_lta6b6��has_decidable_lt30�8prod66prodmk66
Strmul
Stradd����
Strone
Strzero����
Strinv
Strneg����
Strprod
Strsumv���PInfo��s	VMR��VMC���s	l�u�m�����d�d�a�����e�n�o�����o�r�e�z������v�n�i�����g�e�n�����d�o�r�p������m�u�s�����stringhas_decidable_lt��3rb_mapof_list_maindecl�guess_name�X66��stringmap_tokenscharof_natbit1����������bit0��listmap66����������������s6optionget_or_else6��find66�tokens_dict00�PInfo��w	VMR��_lambda_1VMR��VMC��	z��6��nativerb_mapfindoptionget_or_else_mainVMC��w	��listmap_main'�stringmap_tokens��_���decl�target_namesrctgtdict���������7nenameget_prefix3��decidable����namehas_decidable_eq30������W3_a-����0��?fail6stringhas_to_formathas_appendappend6stringhas_append
Strto_additive: can't transport ��to_stringD�6a_1��	tgt_auto6�guess_name3�has_orelseorelsealternativeto_has_orelsetacticalternativeguard���6��w0��6��6��6?0�#0Ftrace6has_to_format_to_has_to_tactic_format6���
Str`to_additive ���
Str`: remove `name` argument_x��7������63�8�map_prefix���w_�Ja_1����
�#_res7�S0D��0D�����
Str to itself��0�PInfo��|	VMR��_lambda_1VMR��_lambda_2VMR��_rec_1VMR��VMC�|	a(�_fresh�B=6�_fresh�B7nameto_string�	
	

	interaction_monadfailedVMC��|	�(�
6�_fresh�B<�_fresh�B8�
�_fresh�B6t�n�e�m�u�g�r�a� �`�e�m�a�n�`� �e�v�o�m�e�r� �:�`���������������������������� �e�v�i�t�i�d�d�a�_�o�t�`���������������stringappend�stringhas_to_format�����interaction_monad_orelse	����namemap_prefix_main�namehas_decidable_eq	�����VMC��S|	�(��_fresh�A��_fresh�A��_fresh�A����t�_c_1o�_c_2a�_c_3d�_c_4i�	_c_5 �
_c_6n�_c_7r�_c_8�
p�s�
'�c�
:�e�v�		_���������������������������������������6�t�_c_9o�_c_10a�	_c_11d�
_c_12i�_c_13 �_c_14n�
_c_15r�_c_16�p�s�
	'�
	c�:�e�v�

	_�����������������������������������
VMC���|	�(�������nameget_prefix_main�$				
�	��$	 �t�_c_17o�_c_18a�_c_19d�	_c_20i�
_c_21e�_c_22 �_c_23n�
_c_24r�_c_25s�_c_26f�l�
������������p�
'�
c�:�v�

		_������������������������������������
decl�parserleanparser��w��v��v'leanparser_state��optional�v�Nparseralternative~tgt��~��9����9interactivetypestexpre���~��_a��optioncases_on�9�X���v�0����v��vU�v�|�6val�9��Q�vS�v��6�6�6�v6����������leanparserhas_coe'6��6Fto_expr0��Feval_expr6
Quote60doc�return�v�|����_0
�PInfo�K�	VMR�K_lambda_1VMR�K_lambda_2VMR�K_lambda_3VMR�K_lambda_4VMR�KVMC�c�	��{�		VMC�d�	s�{VMC�e�	��{interactivetypestexpr	
VMC�f�	�(�_fresh
����9tacticto_expr	
6tacticeval_exprVMC�KC�	��{�d�c�Qparser_orelse	=�d�e�r	6	$�f�]of_tactic'	#	%/���4;prvproceed_fields_aux_private�q��proceed_fields_auxdecl�wsrctgtpriof�X#6�x�y�z�{������0Dsrc_fields����3Dtgt_fields�����!�!listlength63��0natdecidable_eq�����6��
StrFailed to map fields of �#_xlistmmap')��names����!9prodfst660��snd660>�	��
Quote�nameappend�\�6�6�6string_to_name�	����#���opt_param����0coe_option�w�~zip66_3�PInfo�w�VMR�w_lambda_1VMR�w_lambda_2VMR�w_lambda_3VMR�w_lambda_4VMR�wVMC����(�_fresh�N����_fresh�N�����length_main��natdecidable_eq	�VMC����VMC����(�_fresh�N���

�	�VMC��������_fresh�N��_fresh�N��_fresh�N��
�nameappend�
��������VMC�w���(�{���z�y�x	�	�� �f�o� �s�d�l�e�i�f� �p�a�m� �o�t� �d�e�l�i�a�F���������������������������������	��
��zip�����listmmap'_main�	
�	decl�proceed_fieldsenvenvironmentsrctgtprio���N�������	aux���w_30has_bindand_then��[0n������6���$��structure_fields�w0w0nY$���^x�
Strto_�0�$c$
Quote$tacticancestor_attr0��$w0nlistmmap)6cs_a-����0���66�
StrBad constructor name�6a_1���X6���!�b�y�e�y������63�Ja_1��0��constructors_of�w0�PInfo���	VMR��_lambda_1VMR��_rec_1VMR��_lambda_2VMR��_lambda_3VMR��_lambda_4VMR��_lambda_5VMR��_lambda_6VMR��_lambda_7VMR��_lambda_8VMR��VMC���	�(�_fresh
��{�_fresh
��w�$	
�VMC���g�	�(��_fresh
����v�a�_c_1 �_c_2c�_c_3o�_c_4n�_c_5t�_c_6r�	_c_7e�m�	u�	s�d�B�������������������������e�m�a�n� �r�o�t�c�u�r�t�s�n�o�c� �d�a�B����������������������������	���a�_c_8 �_c_9c�_c_10o�_c_11n�	_c_12t�
_c_13r�_c_14e�m�	
u�
s�	d�B�������������������������	VMC��
��g(���_fresh
�ˆ�Nenvironmentstructure_fields�����VMC���	�g(VMC������_�o�t������VMC����(������$��	����VMC���	�VMC��������Nenvironmentconstructors_of�����listmmap_mainVMC��"�	�(�_fresh
�ˊ�����N��	��	��VMC��
�	���������N�w������decl�attr_main����
Strto_additive
StrTransport multiplicative to additive��srcpriopersistent���!coe_sortcoe_sort_bool0booldecidable_eq0���
Str`to_additive` can't be used as a local attribute_x��NFget_envenv�N���u�
Quote�
��RecFn���yval���get_cache�dict���target_name���value_typetgt30tgt��
Quote��\0��_x	dict��`�Y37��environmentcontains�w_�����proceed_fields�w	_�Y�tactictransport_with_prefix_dict0�	_�8
Strreducible�
Strsimp�
Strinstance�
Strrefl�
Strsymm�
Strtrans�
Strelab_as_eliminatorw_x_a���6��0�tacticskipval_16�Fadd_doc_string�w0�doc�w!_x$����alternativeto_applicative��w����0�parser�PInfo���VMR��_lambda_1VMR��_lambda_2VMR��_lambda_3VMR��_lambda_4VMR��VMC���(�_fresh
����_main	
�VMC��I��(�_fresh
��&���_fresh
��"�_fresh
����_fresh
���N�_fresh
���_fresh
��environmentcontains�	�A�e�l�b�i�c�u�d�e�r�������������p�m�i�s��������e�c�n�a�t�s�n�i������������l�f�e�r��������m�m�y�s��������s�n�a�r�t���������r�o�t�a�n�i�m�i�l�e�_�s�a�_�b�a�l�e����������������������	�.�;
	�1�4��9	tacticadd_doc_string	��VMC��\��(������e�t�u�b�i�r�t�t�a� �l�a�c�o�l� �a� �s�a� �d�e�s�u� �e�b� �t�'�n�a�c� �`�e�v�i�t�i�d�d�a�_�o�t�`�������������������������������������������������������	��V��	���O����	��H	�user_attributeget_cache	�
�A

��	��:
��	� �3
������8�?
�F
�M	
�TVMC���g(�$VMC�����e�v�i�t�i�d�d�a�_�o�t��������������e�v�i�t�i�d�d�a� �o�t� �e�v�i�t�a�c�i�l�p�i�t�l�u�m� �t�r�o�p�s�n�a�r�T�������������������������������������������Kdecl�attr�����PInfo�8�prt�8VMR�8VMC�8���ATTR����8USR_ATTR�8ATTRto_additive��has_mul���ATTRto_additive_aux���:
Strhas_addATTR�;���:mul���wATTR�9��has_one�tATTR�;���=
Strhas_zeroATTR�;���=one���|ATTR�9��has_inv�tATTR�;���?
Strhas_negATTR�;���?inv����ATTR�9��semigroup�
Stradd_semigroup��ATTR�;���A��ATTR�;���Amul�x��ATTR�;���Amul_assoc
Stradd_assoc��ATTR�;���Ato_has_mul
Strto_has_add��ATTR�9��comm_semigroup�
Stradd_comm_semigroup��ATTR�;���E��ATTR�;���Emul�x��ATTR�;���Emul_assoc����ATTR�;���Emul_comm
Stradd_comm��ATTR�;���Eto_semigroup
Strto_add_semigroup��ATTR�9��left_cancel_semigroup�
Stradd_left_cancel_semigroup��ATTR�;���J��ATTR�;���Jmul�x��ATTR�;���Jmul_assoc����ATTR�;���Jmul_left_cancel
Stradd_left_cancel��ATTR�;���Jto_semigroup����ATTR�9��right_cancel_semigroup�
Stradd_right_cancel_semigroup��ATTR�;���O��ATTR�;���Omul�x��ATTR�;���Omul_assoc����ATTR�;���Omul_right_cancel
Stradd_right_cancel��ATTR�;���Oto_semigroup����ATTR�9��monoid�
Stradd_monoid��ATTR�;���T��ATTR�;���Tmul�x��ATTR�;���Tmul_assoc����ATTR�;���Tone�}��ATTR�;���Tone_mul
Strzero_add��ATTR�;���Tmul_one
Stradd_zero��ATTR�;���Tto_semigroup����ATTR�;���Tto_has_one
Strto_has_zero��ATTR�9��comm_monoid�
Stradd_comm_monoid��ATTR�;���\��ATTR�;���\mul�x��ATTR�;���\mul_assoc����ATTR�;���\one�}��ATTR�;���\one_mul����ATTR�;���\mul_one����ATTR�;���\mul_comm����ATTR�;���\to_monoid
Strto_add_monoid��ATTR�;���\to_comm_semigroup
Strto_add_comm_semigroup��ATTR�9��group�
Stradd_group��ATTR�;���e��ATTR�;���emul�x��ATTR�;���emul_assoc����ATTR�;���eone�}��ATTR�;���eone_mul����ATTR�;���emul_one����ATTR�;���einv����ATTR�;���emul_left_inv
Stradd_left_neg��ATTR�;���eto_monoid����ATTR�;���eto_has_inv
Strto_has_neg��ATTR�9��comm_group�
Stradd_comm_group��ATTR�;���o��ATTR�;���omul�x��ATTR�;���omul_assoc����ATTR�;���oone�}��ATTR�;���oone_mul����ATTR�;���omul_one����ATTR�;���oinv����ATTR�;���omul_left_inv����ATTR�;���omul_comm����ATTR�;���oto_group
Strto_add_group��ATTR�;���oto_comm_monoid
Strto_add_comm_monoid��ATTR�9��mul_assoc�tATTR�;���z��ATTR�9��semigroup_to_is_associative�
Stradd_semigroup_to_is_eq_associative��ATTR�;���{��ATTR�9��mul_comm�tATTR�;���|��ATTR�9��comm_semigroup_to_is_commutative�
Stradd_comm_semigroup_to_is_eq_commutative��ATTR�;���}�ATTR�9��mul_left_comm�tATTR�;���~
Stradd_left_commATTR�9��mul_right_comm�tATTR�;���
Stradd_right_commATTR�9��mul_left_cancel�tATTR�;������ATTR�9��mul_right_cancel�tATTR�;������ATTR�9��mul_left_cancel_iff�tATTR�;����
Stradd_left_cancel_iffATTR�9��mul_right_cancel_iff�tATTR�;����
Stradd_right_cancel_iffATTR�9��one_mul�tATTR�;������ATTR�9��mul_one�tATTR�;������ATTR�9��mul_left_inv�tATTR�;������ATTR�9��inv_mul_self�tATTR�;����
Strneg_add_selfATTR�9��inv_mul_cancel_left�tATTR�;����
Strneg_add_cancel_leftATTR�9��inv_mul_cancel_right�tATTR�;����
Strneg_add_cancel_rightATTR�9��inv_eq_of_mul_eq_one�tATTR�;����
Strneg_eq_of_add_eq_zeroATTR�9��one_inv�
Strneg_zero��ATTR�;�����&ATTR�9��inv_inv�tATTR�;����
Strneg_negATTR�9��mul_right_inv�tATTR�;����
Stradd_right_negATTR�9��mul_inv_self�tATTR�;����
Stradd_neg_selfATTR�9��inv_inj�tATTR�;����
Strneg_injATTR�9��groupmul_left_cancel�tATTR�;��������ATTR�9��groupmul_right_cancel�tATTR�;��������ATTR�9��groupto_left_cancel_semigroup�
Strto_left_cancel_add_semigroup��ATTR�;�����8��ATTR�9��groupto_right_cancel_semigroup�
Strto_right_cancel_add_semigroup��ATTR�;�����>��ATTR�9��mul_inv_cancel_left�tATTR�;����
Stradd_neg_cancel_leftATTR�9��mul_inv_cancel_right�tATTR�;����
Stradd_neg_cancel_rightATTR�9��mul_inv_rev�
Strneg_add_rev��ATTR�;�����KATTR�9��eq_inv_of_eq_inv�tATTR�;����
Streq_neg_of_eq_negATTR�9��eq_inv_of_mul_eq_one�tATTR�;����
Streq_neg_of_add_eq_zeroATTR�9��eq_mul_inv_of_mul_eq�tATTR�;����
Streq_add_neg_of_add_eqATTR�9��eq_inv_mul_of_mul_eq�tATTR�;����
Streq_neg_add_of_add_eqATTR�9��inv_mul_eq_of_eq_mul�tATTR�;����
Strneg_add_eq_of_eq_addATTR�9��mul_inv_eq_of_eq_mul�tATTR�;����
Stradd_neg_eq_of_eq_addATTR�9��eq_mul_of_mul_inv_eq�tATTR�;����
Streq_add_of_add_neg_eqATTR�9��eq_mul_of_inv_mul_eq�tATTR�;����
Streq_add_of_neg_add_eqATTR�9��mul_eq_of_eq_inv_mul�tATTR�;����
Stradd_eq_of_eq_neg_addATTR�9��mul_eq_of_eq_mul_inv�tATTR�;����
Stradd_eq_of_eq_add_negATTR�9��mul_inv�
Strneg_add��ATTR�;�����nEndFile