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�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