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�F���initalgebragroup_powertacticnorm_num�s�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}traversenspacetacticabelPInfo�cache
indlCn��e_1αexprboolttunivlevelα0is_groupboolinst�mk���������������
�nspace�prt�recgind��decl�αc�
Proj����rec������
�PInfo�
ATTRreducibility���proj��decl�univ��
Proj���1�������PInfo�
ATTR����proj��decl�α00�
Proj���3������PInfo�
ATTR����proj��decl�is_group��
Proj���1�������PInfo�
ATTR����proj��decl�inst0�
Proj���3������PInfo�
ATTR����proj��decl�rec_on������������m�rec��PInfo�
ATTR����auxrec�prt�auxrec�rec_ondecl�cases_on�qx�PInfo�
ATTR����auxrec�decl�no_confusion_type�Pv1v2�����������~�����aα_eqeq	
univ_eq��
α0_eq�is_group_eq��
inst_eq�
�PInfo�
ATTR����prt�decl�no_confusion����h12��������eqrecah1a��
h11������������

��

����

��eqrefl�
����PInfo�
ATTR����no_conf�prt�decl�inj������������	�gand�
���������g�������������no_confusion�	����g	
������������andintro��������������g
�$�*�7�$�-�6�$�1�5�PInfo�
decl�inj_arrowl������������P���5���3g��5���3g��5���������������aandelim_left��/���Z�����inj�/�3����g
�o�Z�vandelim_right�q�w���o��u���Z�v���o������u���������PInfo�
decl�inj_eq����������������������g������α_1univ_1α0_1is_group_1inst_1propext���iffintro���h��y����g
a��anddcases_on�����	�3����	g
a_left�a_right��!����������Z�v��w�	��/�3��	��g
a_right_left�Za_right_right��5��#����q��\����q��	�%���/�3�a_right_right_left�qa_right_right_right�6������q����q�	��%��	�/�3���a_right_right_right_left�a_right_right_right_right�-��e_1���e_2���e_3�4��e_4���e_5�4congr	��3�����
�9�>�B
�: �=�A���9!�<���3�congr_arg"��	�/�g����/�$�3�%����PInfo�
decl�mk_cacheetactic�id_rhs�� ��monadto_has_bind��interaction_monadmonadtactic_state�infer_type����mk_appnamemk_string
Stradd_comm_monoidnameanonymouslistconslistnilFtransparencysemireducible�mk_instancec��option�try_core������
Stradd_comm_group����������cg�����mk_meta_univu��unit������s�unifyexprsortlevelsucc��boolff_x�����get_univ_assignmentu��exprof_nathas_zerozeronatnathas_zeroα0_a��optioncases_on�
������return����	���gval����
�PInfo�	VMR�_lambda_1VMR�VMC�[	s��_freshI�nameanonymouspcharof_natu�o�r�g�_�m�m�o�c�_�d�d�a�stringemptystringstr�������������namemk_stringtacticmk_app	PUtacticmk_instanceVMC��	����tacticinfer_type	��d�i�o�n�o�m�_�m�m�o�c�_�d�d�a������������������!�#	Y^�%c	d��tactictry_core	j�tacticmk_meta_univ	m�	�'	q|
levelsuccexprsorttacticunify�
	��tacticget_univ_assignment	��
exprof_nat	��	�����
�
�	
��decl�cacheappcnnameinst�list�8�9�(�;���+exprmk_appcoe_fn	exprhas_coe_to_fun�5exprconst���cacheuniv���Dα�PInfo�7!	VMR�7VMC�7!	�;�9�(�8

exprconstexprapp�Jexprmk_app_maindecl�cachemk_appcn�(inst�(l�*���P�Q�(�R�(�S�*���K�����5�8�9�:�=�Am��cacheapp
�PInfo�O$	VMR�OVMC�O$	����S�*�R�(�Q�(�P

�H�J�%	�7decl�add_g��(�(��(namecases_on��(�(���(��a_astringa_a_1�(�m��has_appendappend�pstringhas_append
Strga_aunsigneda_a_1�(�m�Xmk_numeral�PInfo�W'	VMR�WVMC�W'	��(namecases_on�g���stringappend�!namemk_numeraldecl�cacheiappcn�(�+�m�n�(�/�[itecoe_sortcoe_sort_bool�cacheis_groupbooldecidable_eq���(�add_g�rinst�PInfo�l+	VMR�lVMC�l+	�n�(�m

�u_main		�W�7decl�termu_1α�z_inst_1add_comm_monoidn��xa
�{���|���~�����has_addadd
add_semigroupto_has_add
add_monoidto_add_semigroup
add_comm_monoidto_add_monoid
add_monoidsmul
���PInfo�y.VMR�yVMC�y
.����~���|�{��add_monoidsmul
decl�yequations_eqn_1�z�{���|���~������

�y�z
���{���|���~������

���PInfo��.ATTR_refl_lemma����EqnL��SEqnL�ydecl�termgu_1�_inst_1add_comm_group��nint��������������xa������add_groupto_add_monoid
add_comm_groupto_add_group
gsmul
��	�PInfo��/VMR��VMC��
/��������������gsmul
decl��equations_eqn_1������������������������
�����������������������PInfo��/ATTR������EqnL��SEqnL��decl�cachemk_termcnxa�����������cacheiapp��
Strterm��
Strabel��
Strtactic��������	�PInfo��1	VMR��VMC��Z1	��������t�_c_1��_c_2e�_c_3a�_c_4c�_c_5�i�������!l�b�������!m�r�����!�ldecl�cacheint_to_exprcn���K�������Pexprof_int��coereflected��coe_to_lift�)coe_base�)exprhas_coe��
Quote���&�(���,�;�/�;�3��
Quote���PInfo��3	VMR��VMC��3	������
�x	��	���4of_intPInfo�normal_expr6indlCn��e_1e��zeroe_2enprod��xa�Nihg��nterm
���N�������N�������V�����N�N���O���S���b�����O���S���b�����V�����N
��rec��g
�decl��rec_on�����O���N�����Q�������V�����N��g��\���O���N���������u�PInfo��6ATTR�����auxrec��prt��decl��cases_on�����O���N�����������V�����Ng�X�����O���N�����������m�����V�����N���'�PInfo��6ATTR�����auxrec��prt��decl��no_confusion_type��Pv1�Nv2�N�����N���N�������N�������e_eq�4�����V�����N������V�����N��
��������V�����N�e_eq��n_eq��V�x_eq��a_eq��N���3�PInfo��6ATTR�����prt��decl��no_confusion�������N���Nh12�����������N���N������Na�Nh1a����
h11�������N��������g������V�����N����������������/�
��V���N�PInfo��6ATTR�����no_conf��prt��decl��inj��������P�Q�������'��no_confusion�)�P�%���)�PInfo��6decl��inj_arrowl������'P���������'����9��inj
�PInfo��6decl��inj_eq�������'�4��e_1���'�4���'�4h�'�?��4����e_1�4�Y�N�P�PInfo��6decl��inj�����V�����N�����V�����N����X�g
����
������������V�����N�����V�����N��k�-�u�X��g�\���l�����
���l�����
�$�p�����3���g����$�����$�����PInfo��6decl��inj_arrowl�����V�����N�����V�����N��kP�������������
�����V�����N�����V�����N��k������o������m����inj����g
�o�������������o�l�������������l�����PInfo��6decl��inj_eq�����V�����N�����V�����N���k������g�����
�����V�����Ne_1n_1�Vx_1a_1�N���k�����k��h�k����g
a_2�����l�t���u���X���g�X
a_2_left�la_2_right�������g�������������X�3����ia_2_right_left��a_2_right_right������������������X��/�3��a_2_right_right_left��a_2_right_right_right���g����e_1�4���V���Ve_2������e_3�4���N���Ne_4���9�N�N�)��X��
�:�i�E�I
�9�V�j�)�H���Y�k�3��X�g�����/��3��PInfo��6decl��below�����O���N�����O���N��rec���N����punit�����V�����N����pprod��g���PInfo��6ATTR�����prt��decl��ibelow�����N�����������N�����N����true�����V�����N�����������PInfo��6ATTR�����prt��decl��brec_on�����O���NF���Nf��below��n���O���N���pprodfstn�������N���c����pprodmk�Q���Rpunitstar�������V�����N��������g���������������\����������PInfo�6ATTR����auxrec�prt�decl��binduction_on�������NF���Nf��ibelow��n�������N���on�������N��c�����$�����Rtrueintro������V�����N�������g�$��������������$�����&�PInfo�6ATTR����auxrec�prt�gind������prt��recnspace��decl�normal_expre��N��N����N��a_ea_n�Va_xa_a�N��PInfo�:	VMR�VMC�:	��N	decl�has_coehas_coe�N���Fhas_coemk�N�normal_expre�PInfo�>prt�VMR�VMC�>�ATTRinstance���class����decl�normal_exprterm'c�k�!n�Vxa�N���N�X�cachemk_term��fst���&�N�,�N�/�N�
�PInfo� @	VMR� VMC� @	�$�N�#�"�V�!�
��decl�normal_exprzero'c�N�*�O�P�cacheα0�PInfo�)C	VMR�)VMC�)C	�*
decl�normal_exprto_list_main��N�)�T����N�6��N�u����u���ta_ea_n�Va_xa_a�Nprodcases_on���1�V�ua_n_fsta_n_snd���z���tprodmk��
�vRecFn�/�PInfo�/E	VMR�/VMC�/E	��N	�/decl�normal_exprto_list�v�/�PInfo�;E	VMR�;VMC�;E	�/decl�normal_exprto_stringe�N�p�>�N���pstringintercalate
Str + listmap�t�p_x�t_a�t����D�t�pfst��snd���t�t�tto_string��inthas_to_string
Str • (��exprhas_to_string
Str)�;�PInfo�=K	VMR�=_lambda_1VMR�=VMC�L(M�C�t �_c_1)���exprto_string(�� "������intrepr_main�h�h�hVMC�=K	�>�N �_c_2�/�Llistmap_main+������intercalatedecl�normal_exprppe�N��format�Z�N�������)�����Ammap�����t��_x�t_a�t���^�t���E���F���������ppexprhas_to_tactic_formatpe������q��formathas_append����to_fmt��inthas_to_format�&�p���,�p���/�p��string_to_format��������l����formatjoinlistintersperse�������PInfo�YO	VMR�Y_lambda_1VMR�Y_lambda_2VMR�YVMC�nO	αVMC�o8Pa���]�t�atacticpp	1)���formatof_string(� �� "� �������u�gto_fmtformatcompose�x�x6VMC�Y+O	����Z�N�/�o��nlistmmap_main	% �+� ������u�Tintersperse_mainformatjoindecl�has_to_tactic_formathas_to_tactic_format�N���has_to_tactic_formatmk�N�normal_exprpp�PInfo��Tprt��VMR��VMC��T�YATTR�����class������decl�normal_exprrefl_conve�N���T�N���N�������mk_eq_refl�bp�����N�PInfo��V	VMR��VMC��V	������N�tacticmk_eq_refl	decl�const_add_termu_1α��_inst_1��kn��xa
a'h��g��g��g��g��g
���������������g���g
�G������������������
�����9eqmpr�L��id���L��eqtrans���L�:�C�B����?
�e��a����e_1���a����3e_2���/����������s
�!!������
�s�I�echas_add �a����e_2������3���/e_3�s�!!�����g��
�! �����%
���A����H�d��!��H�B�c�;�<add_comm_semigroupto_add_semigroup ���to_add_comm_semigroup �g�c�� �g
add_comm ����c�K�e���K�����c�e�����C�����G�����|����~���~��e_2�����3��/e_3��������%e_4���$������������
������v����
�#�������v����gg

���
����eqsymm#�������add_left_comm ����c�����d�����g��eq_self_iff_true#��etrivial�PInfo��Ydecl�const_add_termgu_1�_inst_1��kn��xa
a'h�-�.�/�0��g��g
�:�;�<�=������g���g
�	e������������������
�����	Y�U�	j���X���	j���]�	j�:���	x�:�	a�	`����	\
�	��	z���	g�	����	_���	f�	����	f�	`�	��;�<������to_add_comm_monoidu_1�g�	������g
���	��	��	i�	����	i�	��	��	��	��	��	��	a�	��	��	e�	��	��������������e_2������3���/e_3��������%e_4����������	��
���	��	�
�	���	���	�gg

���
�	 �	��	%�	��	��	��	/�	��	��	��	��	��	����:�;�<add_right_cancel_semigroupto_add_semigroup%�add_groupto_right_cancel_add_semigroup%��	\�	��
	�	zadd_right_inj%��
�	����	z���	?�	E�PInfo��\decl�term_add_constu_1�_inst_1��n��xak
a'h�-�5�:�B�E
�
,������������������
�����
*�U�
2���X���
2���]�
2�:�B�_�a
�
E�����
/�
E���
/���
A�
C�����
C�
L�B�
M�
N���
-�
M���
-�B�
C�
P�
C��
���
C�����
M�	0�
C�
1�
E���
1�
P���
C�
E�
x�
[�
A�
{�
x�
,�
~�
�	�	

��
�
~�	%�
~�
a�
~�	0�
C���	 �
z�
D�
d���
G���	?�
E�	E�PInfo��_decl�term_add_constgu_1�_inst_1��n��xak
a'h�-�	U�:�	`�	c
�
�������������������
�����
��U�
����X���
����]�
��:���
��:�	`�	}�	
�
��
����
��
����
��	��
��
��	��	��
��
��	`�
��
��	��
��
����
��	`�
��
��
��	�
�	��
��
j�	��
��	��
��
��
����
��
��	��
��
��
�
��
��
�
�
����	��	�

�
���	%��
���	��
��	��	 ��
��
����:�
�
��8�
��
�
����
����	?�	E�PInfo��bdecl�term_add_termu_1α��_inst_1��n₁��xa₁n₂��a₂n'��a'�h₁������nathas_addgh₂�j����������������������������������g�p�
�p���������������������������������Z���f�U�}���X���}���]�}���ng�n
�n����k���������������3e_1�o������e_2���%�p�$������
�z�$���$��
���x������x�������g�h�������g��
�������������������n����������������3���/e_2��������%e_3�������g��
�����
���m�s�����s��g����������g�������g�w�����w�n��
�������
����
�	.�����
����

���
�������������������!�"���$���������g����gg�g�#������
g���|�����|������
���E�n����
�H�E�n���V���L�M�E�p�Q��L�U�|����~���~��e_2������%e_3��������ve_4���	���a���a���e�
�b���a�f�i
�	��a���n���eg��Q��symm���Q�����L�	$��L���Q��L���S��add_monoidadd_smul����k���L�L��L���g
�5�G������
�������	>����	E�PInfo��edecl�term_add_termgu_1α��_inst_1��n₁��xa₁n₂��a₂n'��a'�h₁�	��S��inthas_addgh₂�j�[�\�]����������g�h�i�������������g���
����������������������������������������U�����X�������]����gg���

����g��
����������
��
�
�����
�����
�
�
�g�h�����	���g�
-
�
�
$�
/�
-�
�
�
�
&�
$���
3�
�
�
6�������
3�����
g�
.�
�	�����g���
*�
g���
:�������

�
/�
�
G�
�
L�

��
*�
3
�
�
>

��
5�
%���
5�
.�
-�
�
�
%�
m�
n�
3�
p�
L�
3�
�
b�
g�
�
>gg�4�
o�
�
]�
�
b
g�
���
�����
.�
-�

�
�
����
�

�
��
����
�����
��
��
����
���
��
��������������e_2�	�������%e_3��������ve_4�`�c���a���
��
�p�
��
�
�	��w���
�g��
������
������
����
��
G�
���
��
>�
��
add_gsmul��������
��
���
��
b�
g
�
��
��
�
L�

�����g�h�
��
���g�
��
�
��
��
gg���
����g�	E�PInfo��jdecl�zero_termu_1�_inst_1��xa�������������	�
�U�+���X���+���]�+�$������
e_1����g���e_2����p����j�j
�z������
�j�)���)��������has_zerozero���to_has_zero*�_�Z�b���_���j����������
��e_2�-������e_3�l�����gg��
�������3
���a�p�hadd_monoidzero_smul*�_��zero_add*�_�����7���	>�	E�PInfo�odecl�zero_termgu_1�_inst_1��xa�$��������has_zero���������U�����X�������]���7���V���Y���[�\�]�����d�f���������������	�����������zero_gsmul��������������	E�PInfo�rdecl�eval_add_mainc��N��N����N��N�6��N�a_1��������
Strzero_add�����a�Q����p�#�%�%a_ea_n�Va_xa_a�N������a�������!�#�%�\a_ea_n�Va_xa_a�N�
�������
Stradd_zero�����a�\����p�#�%�a_e_1a_n_1�Va_x_1a_a_1�N�����exprlex_lt���N�����
�RecFn��
��_p�_a���N�2���E�N�F��#�%� ����
���
Strterm_add_const����T�������a�������a����ne�3decidableabexprhas_decidable_eq��V�X�i_p�_a��`�E�N�F��#�%�bg�g��
Strconst_add_term����3���Tg�����a
�t���U���������
Stradd��
Strhas_add�������U�����norm_num_p��_a�����=����E�F��V�W��
_p�_a��`�E�N�F�	k������snd������	p₁�
�	��
Strterm_add_term����T�%������a����T�3���a���g���a�������	�����decidable_eq�����mk_eq_trans�
�a��
Strzero_term����%���a��p�#�%
�#�%�a�a������%�PInfo�u	VMR�_lambda_1VMR�VMC�F�u	�q���_freshJ�L)�_freshJ�L(���_freshJ�L&�N�_freshJ�L"�_freshJ�L	�_freshJ�K���zerointdecidable_eq	� ��c�i�t�c�a�t���������!l�e�b�a�������!m�r�e�t�_�o�r�e�z������������!�ltacticmk_eq_trans	��	VMC��Zu	�q����N��N�	�	G��d�d�a�_�o�r�e�z�����������!�#	8@E���d�d�a�_�o�r�e�z�����������!�#	~�	
�	
	����o�r�e�z�_�d�d�a�����������!�#	��	
�	
�X
exprlex_lt�x	���
exprhas_decidable_eq	���	���	���
	
�d�d�a�_�s�a�h����������!d�d�a������!�#	�0�5
tacticnorm_num�:
	�;��
�	�C��	

intadd�@��t�_c_1��_c_2e�_c_3r�_c_4m�_c_5_�_c_6a�_c_7d�_c_8c�_c_9
�	
���i�������!l�b�������!�������������!�l�B�F����
���	���
	� 	

���c�i�t�c�a�t���������!l�e�b�a�������!m�r�e�t�_�d�d�a�_�t�s�n�o�c�����������������!�l
��
�W	
�	���R� 
���c�i�t�c�a�t���������!l�e�b�a�������!t�s�n�o�c�_�d�d�a�_�m�r�e�t�����������������!�l
�W
decl�eval_add���
�PInfo�ou	VMR�oVMC�ou	��decl�term_negu_1α��_inst_1��n��xan'��a'h₁�	�has_negneg����has_neg
h₂�:�{�q���to_has_neg,��	\�=�H��J���������g
�X�r���s���t���u�v�w���x�y�G�}�P�U�a���X���a���]�a�=

���p�=�V
�u�r�p�=�������������T�u�V����Tg���w������e_1�����3���/e_2���p��������
�z������
���\������\�����u�z�{�������	����u�����V��
����chas_neg,�������e_2���3���/�/�H�/�U�[�����[����
��
���	���g
�������
neg_add_rev,��T
�������u�`�����`�����������Dg�u�����X���u���������������e_2�	����/���e_3�����%���$e_4������v�v���v���	�
��	�
�

�	����v���	�a���	g����
�������u�	$��u�����u�����������e_2�����/���e_3����%�%���%g�I
���%���%�$
�I������neg_gsmul,��Tg�u�u�5�u�����=�z�{�
��
��T�u���y�w�
��t���u�u���w�rneg_inj',��T

���r���	>�
�	E�PInfo�p�decl�eval_neg_mainc�����N�����cachemk_app��
Strneg_zero����
Stradd_group����p�#�%�)a_ea_n�Va_xa_a�N���������
Strneg��
Strhas_neg��������_p��_a�����E�F��V
��RecFn���
_p�_a��`�E�N�F��#�%�a���D����[���
Strterm_neg�����m�n�p���s��
���PInfo���	VMR��VMC���X�	�q����N��	q�p�u�o�r�g�_�d�d�a������������!�o�r�e�z�_�g�e�n�����������!�O	bj�)o
�g�e�n�_�s�a�h����������!g�e�n������!�#	���c�		��Q��	��J
	
intneg� 
�	
�

�c�i�t�c�a�t���������!l�e�b�a�������!g�e�n�_�m�r�e�t�����������!�7�O
�V	decl�eval_neg�������PInfo���	VMR��VMC���	����decl�smulu_1�_inst_1��n��x���������������n�PInfo���VMR��VMC�����������������decl��equations_eqn_1�����������������$�����������������������PInfo���ATTR������EqnL��SEqnL��decl�smulgu_1�_inst_1��n����������������x��	�PInfo���VMR��VMC�����������������decl��equations_eqn_1�����������������$����������������������%�PInfo���ATTR������EqnL��SEqnL��decl�zero_smulu_1�_inst_1��c������c�e���:�������������U�=���X���=���]�=�1�:�:������e_1������ge_2�:�p����=�q�z������
�=�;�:���;���8�:�:�����:add_monoidsmul_zero/�8�:�:���:���H���	>�:�	E�PInfo���decl�zero_smulgu_1�_inst_1��c���1�!�5�6�������������������U�����X�������]���1�������d�����g����������������gsmul_zero0�������}�������������	E�PInfo���decl�term_smulu_1�_inst_1��c��n��xa
n'��a'gh₁��has_mulmul��nathas_mul
h₂�=���g�j��������g
����������������������
������g���������U�����X�������]���j�b����_�
����g����������e_1�����/���e_2��p�%������
�z�%���%��
��������������b
�������� �!�������������e_2��������e_3�����$�$��$g�+
�	���$�
�+����	���� ����b��
�[�\�������
������g
����N��
�o���� add_monoidsmul_add����
�����������b�����Q�����r�b�����g���t�r���z���~�|�'�~���~��e_2������e_3��a�$���e_4���v���	�	���	�����
�������
�	��	�o����g��z���z��������
���	$����d
�V�z�������������3e_2�o������e_3���)���$g��
���$���$�
���a�|��add_monoidmul_smul1��_�g���������\����������	>����	E�PInfo���decl�term_smulgu_1�_inst_1��c��n��xa
n'��a'gh₁�	�������has_mul
h₂�=�!��g�j�!�������g
� ��������������������
������g�������U�)���X���)���]�)�j������
�=���9�j���=�<�;g�F�?��$�F��$�<��
�D�F�M��O�P�������������e_2�	�������e_3���)�!�$g�X
�	��2
�X����	���#�O��#���D
�[�\�L�M�	���
�D�	���g
�[�z�D
������Ogsmul_add����
�D��(�F��(���E�=�}�=�E�����;��g�=����� ���=�����V��������e_2�	�������e_3�����$���e_4�������	�����
������
�	�������g����
������=���
�=������
�����=�������Egsmul_mul2����g�=�=���=���E�=���j�[�\�
��
����=�E�
�?�
���E�=�=���?�����=�	E�PInfo�ڪdecl�eval_smul_mainck�V������V��N�����#�����
Strzero_smul���a_ea_n�Va_xa_a�N���������
Strmul��
Strhas_mul�����T������_p��_a�����E�F��V
�*RecFn����
_p�_a��`�E�N�F��#�%�b����������g��
Strterm_smul����T����PInfo��	VMR��VMC���i�	�q����N���V��	v�)
�c�i�t�c�a�t���������!l�e�b�a�������!l�u�m�s�_�o�r�e�z������������!�l

�l�u�m�_�s�a�h����������!l�u�m������!�#	��	�c�	
	��b	��	��[


intmul� 

�
��c�i�t�c�a�t���������!l�e�b�a�������!l�u�m�s�_�m�r�e�t������������!�l
�`
�g	
decl�eval_smul�*�����V���PInfo���	VMR��VMC���	���V����decl�term_atomu_1�_inst_1��x�1��has_oneone��nathas_one�:���������U�����X�������]���y���d�}���g���������8�:�����j��:������:��������
e_2�<��g���e_3�?�����[g��
�������
������add_monoidone_smul���8�:�:�~add_zero3�8���������	E�PInfo���decl�term_atomgu_1�_inst_1��x�y���|����has_one���
�������U�����X�������]�����������g������������������������	����������one_gsmul����������������	E�PInfo��decl�eval_atomce������cacheint_to_expr��n1�#�%�a������
��
Strterm_atom����PInfo��	VMR�VMC���	�������one��	�)�� �c�i�t�c�a�t���������!l�e�b�a�������!m�o�t�a�_�m�r�e�t������������!�ldecl�unfold_subu_1�_inst_1add_group�abch�����������H
�J
�:has_subsub5add_group_has_sub5
�����E��� �!�R�PInfo��decl�unfold_smulu_1�_inst_1��n��xyh���
�:����
�'���(���)���*�+�,�n�PInfo�%�decl�unfold_smulgu_1�_inst_1��n��xyh���!
intof_nat�:�o����
�/���0���1���2�3�4���PInfo�-�decl�unfold_gsmulu_1�_inst_1��n��xyh�����:�����9���:���;���<�=�>���PInfo�7�decl�subst_into_smulu_1�_inst_1��l��rtl��tr
tprl��
prr�:
prt�=��
�j��g�A���B���C���D�E���F
�G�H���I���J���U�����X�������]���j����������
�Bg
�����������	E�PInfo�?�decl�subst_into_smulgu_1�_inst_1��l��rtl��tr
tprl�	�
prr��prt�=�
�j�g�M���N���O���P�Q���R
�S�T���U���V��U����X������]����������
�ng
�����	E�PInfo�K�decl�eval_mainc���Y��=cases_on�������eval_atom�=var���?��a_a�(a_a_1�)��>�8a_a�(a_a_1�(a_a_2��>
�=mvara_a�(a_a_1�(a_a_2binder_infoa_a_3��>�=local_consta_aa_a_1�:�i��i����T�=app�B�i��T�s�Ga_a_a�(a_a_a_1�L��a�s�Na_a_a�(a_a_a_1�(a_a_a_2��>g�s�Ya_a_a�(a_a_a_1�(a_a_a_2�`a_a_a_3��>��s�g
a_a_aa_a_a_1�:�u��u������s�u�u����s�{a_a_a_a�(a_a_a_a_1�L����s��
a_a_a_a�(a_a_a_a_1�(a_a_a_a_2��>��s��a_a_a_a�(a_a_a_a_1�(a_a_a_a_2�`a_a_a_a_3��>��s��ga_a_a_aa_a_a_a_1�:�����������s��������s��a_a_a_a_a�(a_a_a_a_a_1�L����(��namehas_decidable_eq�����V
�8RecFn�X�g_p�_a��`�E�N�F��V�eval_neg�_p�_a��`�E�N�F�������
Strsubst_into_neg��
Strnorm_num���������a��p�#�%����s��ga_a_a_a_a�(a_a_a_a_a_1�(a_a_a_a_a_2��>��s���a_a_a_a_a�(a_a_a_a_a_1�(a_a_a_a_a_2�`a_a_a_a_a_3��>�3�s���a_a_a_a_aa_a_a_a_a_1�:����������s��������s���a_a_a_a_a_a�(a_a_a_a_a_a_1�L�������������V���3g_p�_a��`�E�N�F��V���%�/_p�_a��`�E�N�F��V�eval_add�	_p�_a��`�E�N�F������
Strsubst_into_sum�������v���a�����s�������������
Strsub��
Strhas_sub�����u������L����e₂'����q����e�V���_p�_a��`�E�N�F������
Strunfold_sub������/���tp'��������
Strsmul��
Stradd_monoid����������������3�����K����
Strof_nat��
Strint���������Zgn�V���/�
�/������n��_p�_a��`�E�N�F��#�&�
�$��
Strunfold_smul�������t������
Strgsmul�����������guardb��tacticalternative��_x���V�����q��_p�_a��`�E�N�F��#�&�[�$��
Strunfold_gsmul����$����������������guard����not�����5�6����_x����has_orelseorelse��alternativeto_has_orelse������norm_numderive��refl_conv�_p��_a�����E�F�������&���������,�.�0�/�.�0�(opt_to_tac��exprto_natn���V����_p�_a��`�E�N�F��V�eval_smul�n�g�&�����,�����/����inthas_coe
_p�_a��`�E�N�F��#�&�
��
Strsubst_into_smul��K���u������s�n��������
Strsmulg���������_x���+_p��_a�����E�F�������&���������,�����/�����6����to_intn���A_p�_a��`�E�N�F��V�C�D
�k���s�
�a_a_a_a_a_a�(a_a_a_a_a_a_1�(a_a_a_a_a_a_2��>�/�s��a_a_a_a_a_a�(a_a_a_a_a_a_1�(a_a_a_a_a_a_2�`a_a_a_a_a_a_3��>��s��a_a_a_a_a_aa_a_a_a_a_a_1���s�s�s�s�s
g�a_a_a_a_a_a�(a_a_a_a_a_a_1�`a_a_a_a_a_a_2a_a_a_a_a_a_3����s�s�s�s�=lam
g��a_a_a_a_a_a�(a_a_a_a_a_a_1�`a_a_a_a_a_a_2a_a_a_a_a_a_3����s�s�s�s�=pi
g��a_a_a_a_a_a�(a_a_a_a_a_a_1a_a_a_a_a_a_2a_a_a_a_a_a_3����s�s�s�s�=elet
g��a_a_a_a_a_amacro_defa_a_a_a_a_a_1�*���s�s�s�s�=macro
g�a_a_a_a_a�(a_a_a_a_a_1�`a_a_a_a_a_2a_a_a_a_a_3����a_a_a_a_a�(a_a_a_a_a_1�`a_a_a_a_a_2a_a_a_a_a_3���a_a_a_a_a�(a_a_a_a_a_1a_a_a_a_a_2a_a_a_a_a_3���a_a_a_a_a�&a_a_a_a_a_1�*����0a_a_a_a�(a_a_a_a_1�`a_a_a_a_2a_a_a_a_3�����a_a_a_a�(a_a_a_a_1�`a_a_a_a_2a_a_a_a_3����a_a_a_a�(a_a_a_a_1a_a_a_a_2a_a_a_a_3����a_a_a_a�&a_a_a_a_1�*����.a_a_a�(a_a_a_1�`a_a_a_2a_a_a_3�����a_a_a�(a_a_a_1�`a_a_a_2a_a_a_3����a_a_a�(a_a_a_1a_a_a_2a_a_a_3����a_a_a�&a_a_a_1�*��a�,a_a�(a_a_1�`a_a_2a_a_3��a��a_a�(a_a_1�`a_a_2a_a_3��a�a_a�(a_a_1a_a_2a_a_3��a�a_a�&a_a_1�*��M�*!�PInfo�X�	VMR�XVMC�X���	�q����Yexprcases_on

%0��������exprvar��/��H�exprmvar�exprlocal_const��
2=HTao�p�~�����!�J����/�J����H�J����#�J����%�J����
q�����-�>�O�`�!�J�J��n�/�J�J��n�H�J�J��n	�#�J�J��n
	�%�J�J��n�
������'�
��
���	�!�J�J�J��+	�/�J�J�J��+�g�e�n�_�s�a�h����������!g�e�n������!	namehas_decidable_eq	��,
	�H�J�J�J����X	�1��
��	�8��
���g�e�n�_�s�a�h����������!�m�u�n�_�m�r�o�n�����������!g�e�n�_�o�t�n�i�_�t�s�b�u�s�����������������!�O	����������
�+
	�#�J�J�J��+
	�%�J�J�J��+	�
�)�=�Q�
A�
W�
n�
��
��
��
�
�!�J�J�J�J��
�
�/�J�J�J�J��
��d�d�a�_�s�a�h����������!d�d�a������!�'	���	W�b�u�s�_�s�a�h����������!b�u�s������!�'	����d�i�o�n�o�m�_�d�d�a�������������!l�u�m�s�������!�'	����l�u�m�s�g��������!�'	�2���c�i�t�c�a�t���������!l�e�b�a�������!l�u�m�s�������!�'	�����c�i�t�c�a�t���������!l�e�b�a�������!g�l�u�m�s��������!�'	����
�H�J�J�J�J���
	����interaction_monadfailed��	����tacticrefl_convnorm_numderive_maininteraction_monad_orelse	���exprto_int�(returnopt	�	���X	�����	������c�i�t�c�a�t���������!l�e�b�a�������!l�u�m�s�_�o�t�n�i�_�t�s�b�u�s������������������!�l����������
��
�x	������	������	�����)��	�����+�.�/	�����0to_nat�2	����X	�	��intof_nat��	������c�i�t�c�a�t���������!l�e�b�a�������!l�u�m�s�_�o�t�n�i�_�t�s�b�u�s������������������!�l����������
��
	�����)��	�����c�i�t�c�a�t���������!l�e�b�a�������!l�u�m�s�������!�l�X	�>���
�c�i�t�c�a�t���������!l�e�b�a�������!l�u�m�s�g�_�d�l�o�f�n�u���������������!�7����
�
�x	�����n�
_c_1t�_c_2�
i������!a�
_�f�o���������!�#	��
�c�i�t�c�a�t���������!l�e�b�a�������!l�u�m�s�������!�l�X	�u����c�i�t�c�a�t���������!l�e�b�a�������!l�u�m�s�_�d�l�o�f�n�u��������������!�l���
�	V�g�e�n�_�s�a�h����������!g�e�n������!�#	�E�	Q
�d�d�a�_�s�a�h����������!d�d�a������!�#	���	J�X	���	C��p�u�o�r�g�_�d�d�a������������!�c�i�t�c�a�t���������!l�e�b�a�������!b�u�s�_�d�l�o�f�n�u�������������!�O	�	5�	<�	A�	H�	O�	V
�
?�X	�	\�
:
�X	�	c�
3�	�	k�
,����d�d�a�_�s�a�h����������!�m�u�n�_�m�r�o�n�����������!m�u�s�_�o�t�n�i�_�t�s�b�u�s�����������������!�O	�
�
%�
*�
1�
8�
?
�
�

�#�J�J�J�J��
�

�%�J�J�J�J��
�
�J�J�J�J�J��
�

exprlam�J�J�J�J��
�

exprpi�J�J�J�J��
�

exprelet�J�J�J�J��
�
exprmacro�J�J�J�J��+
	�9�J�J�J��+
	�;�J�J�J��+
	�=�J�J�J��+
	�?�J�J�J��n
	�9�J�J��n
	�;�J�J��n
	�=�J�J��n�?�J�J����9�J����;�J����=�J����?�J��9��;��=��?�decl�eval�8�Y�X"�PInfo�@�	VMR�@VMC�@�	�Y�Xdecl�eval'ce�����B�C�����U���eval_p�_a��]�F����E�N�F�������r#�PInfo�A�	VMR�AVMC�A�	����C�B�X	�PInfo�normalize_mode�
indlCn�Ge_1�Grawe_2�Gterm�J���c�G�L���N���I���K���M���I���K���M���decl�Grec_on�H�I���J���K���M�����I���J���K���M���Grec�H�PInfo�O�
ATTR����Oauxrec�Oprt�Odecl�Gcases_on�H�����PInfo�Q�
ATTR����Qauxrec�Qprt�Qdecl�Gno_confusion_type�HPv1��v2���S�T���U���Q�H�T����������PInfo�R�
ATTR����Rprt�Rdecl�Gno_confusion�H�S�T���U��h12����R�H�S�T���U���W����a��h1a���
h11���Q9�T���
�
��PInfo�V�
ATTR����Vno_conf�Vprt�Vdecl�Linj�����������(��PInfo�[�
decl�Linj_arrowl��(P������(�^��+�Linj�PInfo�\�
decl�Linj_eq���(�����(�����(��h�(�/���������PInfo�`�
decl�Ninj�����������D��PInfo�b�
decl�Ninj_arrowl��D�-��DP��+�Ninj�PInfo�c�
decl�Ninj_eq���D�����D�����D��h�D�H����>���PInfo�g�
decl�Gsizeofx�����Grecx�������PInfo�i�
ATTR����iprt�idecl�Ghas_sizeof_insthas_sizeof��has_sizeofmk:���i�PInfo�m�
ATTR����mclass�n�m��prt�mdecl�Lsizeof_spec���e����	�g�PInfo�q�
ATTR�����qEqnL�qprt�qdecl�Nsizeof_spec���e����	�k�PInfo�r�
ATTR�����rEqnL�rprt�rgind�G�L�Nprt�Grecnspace�GATTRderive���G��pexpr
Quotehas_reflect���odecl�Ghas_reflecthas_reflect:��id:�w_v���Q�z��reflected:��
Quote��
Quote���PInfo�w�
VMR�wVMC�w�
�z��	����ATTR����Ghas_reflectclass�{�|��decl�inhabitedinhabited:��inhabitedmk:�����PInfo�}�	prt�}VMR�}VMC�}�	decl�}equations_eqn_1����}��������PInfo���	ATTR������EqnL��SEqnL�}ATTR����}class�~�}��decl�normalizemodeopt_param:����������e����simp_lemmas����add_simpsimp_lemmasmk��
Strpow_one��pow_lemma��	lemmas�)�(_a���z�������������(�����(��
Str_eqn_1��
Strequations���������
Strtermg����<����
Strone_smul������
Strone_gsmul������listmfoldl�������(����lemmas�����T�������ext_simplify_core��unitstartacticsimp_configmksimpdefault_max_steps����������_x���failed��_x��_x��_x�(_x��e�����U�T���mk_cachec����_a���z����_a�������eval'��trans_conv�e�simplify�������
Streq�����_p��_a�������������E�F����������expralpha_eqv��!_x����������������������_x��_x��_x�(_x��_x�����_p��_a��������������E���F�����F����snd_fstsnd_snd������$�PInfo���	VMR��_lambda_1VMR��_lambda_2VMR��_lambda_3VMR��_lambda_4VMR��_lambda_5VMR��_lambda_6VMR��VMC���	�pVMC�������?failedVMC��%�3���_freshJ��|�����q�e�����!��tacticsimplifyVMC��N� ������������(�������������_freshJ��t���	H		�A	���A�*trans_conv	A
expralpha_eqv�x	#	 "#	$*�)-	.:
?F
	
VMC������������(����������VMC��N�	����_freshJ��y���_freshJ��u����simp_lemmasmksimp_lemmasadd_simp���listmfoldl_main	H�q�e�����!����������tacticext_simplify_core	6A	
FVMC���;�	����������e�n�o�_�w�o�p����������!����	*�5	-/�,�c�i�t�c�a�t���������!l�e�b�a�������!m�r�e�t�������!s�n�o�i�t�a�u�q�e������������!1�_�n�q�e�_���������!�c�i�t�c�a�t���������!l�e�b�a�������!g�m�r�e�t��������!s�n�o�i�t�a�u�q�e������������!1�_�n�q�e�_���������!�o�r�e�z�_�d�d�a�����������!�d�i�o�n�o�m�_�d�d�a�������������!l�u�m�s�_�e�n�o�����������!�l�u�m�s�g�_�e�n�o������������!������decl�interactiveabel1�������t���target_p_a�:���ta���u
match_failed����interaction_monadmonad_fail��Annotdo_failure_eq�������(a_1�L�����(a_1�(a_2�����(a_1�(a_2�`a_3����a_1�:���t����a_a�(a_a_1�L��a_a�(a_a_1�(a_a_2��a_a�(a_a_1�(a_a_2�`a_a_3��a_aa_a_1�:���t����������a_a_a�(a_a_a_1�L��a_a_a�(a_a_a_1�(a_a_a_2��a_a_a�(a_a_a_1�(a_a_a_2�`a_a_a_3��a_a_aa_a_a_1�:���t����������a_a_a_a�(a_a_a_a_1�L���������t�u������
c�U����_p�_a��]���t�E�N�F�u����
�3_p�_a����E�N�F�u�����is_def_eq���r����_x�������mk_eq_symm��ptacticexact����a_a_a_a�(a_a_a_a_1�(a_a_a_a_2��a_a_a_a�(a_a_a_a_1�(a_a_a_a_2�`a_a_a_a_3��a_a_a_aa_a_a_a_1��a_a_a_a�(a_a_a_a_1�`a_a_a_a_2��
a_a_a_a�(a_a_a_a_1�a_a_a_a�&a_a_a_a_1�*��a_a_a�(a_a_a_1�`a_a_a_2���a_a_a�(a_a_a_1�a_a_a�&a_a_a_1�*��a_a�(a_a_1�`a_a_2���&a_a�(a_a_1�$a_a�&a_a_1�*�����(a_1�`a_2���4���(a_1�2���&a_1�*��#�PInfo���)	VMR��_lambda_1VMR��_rec_4VMR��_rec_3VMR��_rec_2VMR��_rec_1VMR��VMC�-�)	�pVMC�.��)	�q��n�_freshJ���_freshJ���
����������-match_failed���-�9�q�e�����!�'	$,���-�9~�	0y�X	5r	�X	<k
�
�tacticis_def_eq	Gdtacticmk_eq_symm	KQ�]V	W]tacticexactbip
w	
~���-�9���-�9���-�9���-�9���-�9���-�9���-�9VMC�/Z�)	�q���2�_freshJ���_freshJ����
&/6?HQ���-�9���-�9���-�9���-�9���-�9�.���-�9���-�9���-�9���-�9VMC�0Z�)	�q���2�_freshJ����
&/6?HQ���-�9���-�9���-�9���-�9���-�9�/���-�9���-�9���-�9���-�9VMC�1Y�)	�q���2�
&/5>GP���-�9���-�9���-�9���-�9���-�9�0���-�9���-�9���-�9���-�9VMC���)	���tactictarget	�1doc��Tactic for solving equations in the language of
 *additive*, commutative monoids and groups.
 This version of `abel` fails if the target is not an equality
 that is provable by the axioms of commutative monoids/groups.decl��abelmodeleanparser�����Cinteractivewith_desc����
Str(raw|term)?���B���B��leanparser_state���(��optional�B�Qparseralternative�(�Tidentmode�P_a�P���(�X�P�C�D��B�M������(����������f�C�c���e��
Strraw���i�p�C�D�a���D�&�����C�,�y�C�/�y�Cleanparserhas_coe'������
�PInfo�L�2	nspace�KVMR�L_lambda_1VMR�L_lambda_2VMR�L_lambda_3VMR�LVMC�\�2	s�Lleanparserident		VMC�]�2	s�LVMC�^Q�2	��L�]�\�Tparser_orelse	K	I�m�r�e�t�������!�'	&E�w�a�r������!�'	;A���Zof_tactic'DHVMC�L=�2	�^?�)�m�r�e�t�|�w�a�r�(��������������u�Pdecl��abelSOP�Oparse��a���|��abelmodeloc���Oloc�i��interactivelochas_reflect�Otypeslocation�t�g���l���u�#��_a���mcases_on�s���t�u��a�)�P��cases_on�P�u���t��a_hd�Pa_tl���[�w�P�t���x���t�u��abel1a_tl_hd�Pa_tl_tl�����w�(�����*���mget_localsns�*����tacticreplace_at���minclude_goal_p_aboolcases_on���t�u�fail���pstringhas_to_format
Strabel failed to simplify�uwhen��������������trytacticreflexivity��%�PInfo�f�A	VMR�f_rec_1VMR�f_lambda_1VMR�f_lambda_2VMR�f_lambda_3VMR�fVMC���A	�q��n��listcases_on��		��������VMC���A	�q���_freshJ����	����VMC���A	�pVMC����A	��������_freshJ�����Olocget_locals	��Olocinclude_goal��tacticreplace_at	�	�a�_c_1e�_c_2l�	_c_3 �
_c_4f�_c_5i�_c_6y�	p�m�s�
o�t�
d�	
	b�������������������������stringhas_to_format?fail�tacticreflexivitytacticinteractivetry���x���when�VMC�f	�A	�l���g�������/doc�fTactic for solving equations in the language of
 *additive*, commutative monoids and groups.
 Attempts to prove the goal outright if there is no `at`
 specifier and the target is an equality, but if this
 fails it falls back to rewriting all monoid expressions
 into a normal form.EndFile