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��O*initdatanatbasic���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}traversedeclnatgcd_dvdmnatnandhas_dvddvdcomm_semiring_has_dvdnatcomm_semiring�gcd
���gcdinduction_x_x
neqmpr	has_zerozeronathas_zero"(ideq&,eqrec!_a1 
9
*(
eqrefl0&�gcd_zero_leftandintro)+dvd_zerodvd_reflmnnposhas_ltltnathas_lt
a	has_modmodnathas_mod
ijmi	irui�	i
j~iy.1z�6l_a1�	girr��r	r��r�(�(r�Ez}eqsymm}l�gcd_reci
_x�_au�v�dcases_on�gr�����	����left�right�id_rhs	����N��iffmp�g����dvd_mod_iff���
�PInfo�decl�gcd_dvd_leftmn���left�gcd_dvd
�PInfo�decl�gcd_dvd_rightmn���right��PInfo�decl�gcd_le_leftmnhchas_lelenathas_le}i���c�le_of_dvd}i�gcd_dvd_lefti
�PInfo�decl�gcd_le_rightmnhb�
�����
�gcd_dvd_righti
�PInfo�decl�dvd_gcdmnka(i�
ii����_x_x��)
�r
�ti
n_x�'kn�0�1 i�1i.1�>�@6�=_a1�3 r�3E�>iIinmmposcIH��1j��3r�	��H1�ZH2�[r���b	g���.1�c�i6�_a1��pE�c�h���i�mpr�b�f�b�����

�PInfo�decl�dvd_gcd_iffmnkiff(}�&?���iffintro����h��N�'r�(dvd_trans
tr�vx�ri��i�vx��h���dvd_gcdri
����(����(�PInfo�decl�gcd_commmn/
	
���dvd_antisymm
����

�
�
��
���
�
�PInfo�#decl�gcd_eq_left_iff_dvdmn���'��
��������h����}i��li.1����6}_a1��tr��rE��l������=i.1���6j_a1���r����rrE���mod_eq_zero_of_dvdi
���ii.1��+�E_a1���Fr�E�i�PDih��eqsubst_x�&}i�!�PInfo�(decl�gcd_eq_right_iff_dvdmn������
���Q��.1�Q��6��_a1���0��ii�Z�iE�Q
�gcd_comm
�gcd_eq_left_iff_dvd
�PInfo�,decl�gcd_assocmnk��	}|
�	�
����u�w��i
�udvdtrans�u}i�}����u��
���!�}��}�w�~
�w�
���w

� 
���������PInfo�/decl�gcd_one_rightn����has_oneonenathas_one���eqtrans��	�����i���gcd_one_left�PInfo�8ATTRsimp���decl�gcd_mul_leftmnk��	has_mulmul�has_muli
����
���_x_x��	���
����

k��	��r����!��	mul_zero_classto_has_zerosemiringto_mul_zero_class�semiring����.1����6���"to_has_mul��r��_a1��	������8�������E����mul_zero��r��������.1���6 ��_a1���������E����I������.1��.7_a1������3��E�J�<��knHcIH��	���j�Fi�Fleqmp��	���r�Oi�O��T�Ot6�_a1��	���o��\r�\�]�a�\E�Vt�t��ri�N��	g�R�P�P�U�V6�w_a1��	g�_�]�]�b��bE�y�S��S�w��P�R�N��	�O��P�U�y6��_a1��	�\��]�b�����]�bE���u��u���mul_mod_mul_left�ir�PInfo�;decl�gcd_mul_rightmnk������
��|
�7�8�9����	��semigroupto_has_mulcomm_semigroupto_semigroup�comm_semigroup
i����.1����6��i
_a1��	��i��
i��s
i��������E����mul_comm��i
����������.1����6��
_a1��	��r���������E������
��������.1���6����
_a1��������%E�������
��������.1��76	����_a1�%������@E��5�gcd_mul_left
i�<�5�PInfo�6@decl�gcd_pos_of_pos_leftmnmposcb}�F�G�Hc�pos_of_dvd_of_pos}i��PInfo�ECdecl�gcd_pos_of_pos_rightmnnpos��Y�K�L�M��^
�!�PInfo�JFdecl�eq_zero_of_gcd_eq_zero_leftmnH���*�O�P�Q�norelim�ogt`i�o�eq_zero_or_posi.�oH1biabsurd��t��r�m
ne_of_ltpartial_orderto_preorderordered_comm_monoidto_partial_orderordered_cancel_comm_monoidto_ordered_comm_monoidordered_semiringto_ordered_cancel_comm_monoid�ordered_semiringt�gcd_pos_of_pos_leftri�PInfo�NIdecl�eq_zero_of_gcd_eq_zero_rightmnH�n��
�d�e�f�n�eq_zero_of_gcd_eq_zero_left
i�N���\��_a1��E���[�hi
�PInfo�cMdecl�gcd_divmnkH1�&H2�(��	has_divdivnathas_div�i��ri���i�j�k�l�m�&�n�(�z���}k0�o��	���r��r���r��	������.1����6r_a1��	�������������	������E������ ����.1���6��_a1��	�������������E��natdiv_zero���� ��.1��-6��_a1�� �����!�E��%��-�,.1�-�D6��_a1�,��,E�-�%��D��.1�D�X6�+_a�Z��E�D�gcd_zero_right�<H3�ynateq_of_mul_eq_mul_right��r��������r����r�x�.1�{�}6�z_a1��������������E�{�natdiv_mul_cancel�r����ri
�}��	����r����r�.1�}��6�w_a1�����E�}������w�gcd_mul_right��r����������.1����6��_a1��	������������������E������ri������.1����6��_a1����������E������r
�<��PInfo�iPdecl�gcd_dvd_gcd_of_dvd_leftmknH�0��}���������0��������ri�r
�r
�PInfo��Xdecl�gcd_dvd_gcd_of_dvd_rightmknH�0r�[���������0��i���r���ri��r�PInfo��[decl�gcd_dvd_gcd_mul_leftmnk~	��i
�������gcd_dvd_gcd_of_dvd_lefti�3
dvd_mul_lefti�PInfo��^decl�gcd_dvd_gcd_mul_rightmnk~	��
�������;��
dvd_mul_righti�PInfo��adecl�gcd_dvd_gcd_mul_left_rightmnk~|���������gcd_dvd_gcd_of_dvd_right
��i�@
�PInfo��ddecl�gcd_dvd_gcd_mul_right_rightmnk~|�=�������^�=i�Q
�PInfo��gdecl�gcd_eq_leftmnH��������������}i���iXi�PInfo��jdecl�gcd_eq_rightmnH?��
������?���\
.1������_a1�i�`E���[������
.1����6�[_a1��|ri�`E��
�gcd_eq_left
i�<
�PInfo��mdecl�gcd_mul_left_leftmn��	�=����������=���=�@
Y�PInfo��pATTR�����decl�gcd_mul_left_rightmn�����=��������.1����6��_a1����
�
E�����i�=���.1����6��_a1����

��E���gcd_mul_left_left
�<�PInfo��sATTR�����decl�gcd_mul_right_leftmn��	���������	��.1��
�_a1���<

�PE�����
��.1�
����_a1��	��

��E�
�����PInfo��vATTR�����decl�gcd_mul_right_rightmn�����������5�.1�5�6�3_a1����
��E�5��i�����.���6�_a�����gcd_mul_right_left
���PInfo��yATTR�����decl�gcd_gcd_self_right_leftmn��

�������_
��
��

��X
�PInfo��|ATTR�����decl�gcd_gcd_self_right_rightmn�����������r�a.1�r�a�Y_a1��|�[�[����E�r
�j�a��
.1�a��6�__a1��|}}�}E�a
�gcd_gcd_self_right_left
�<
�PInfo��ATTR�����decl�gcd_gcd_self_left_rightmn��	��
���������r.1���r6��_a1��	�[i�[��[E���p�h��
�u�O��.�w��6�p_a�}�������gcd_gcd_self_right_right
�<���PInfo�̂ATTR�����decl�gcd_gcd_self_left_leftmn��	


��������.1����6
_a1���ti}����iE�����h
����.���������gcd_gcd_self_left_right
���PInfo�҅ATTR�����decl�lcm_commmn���lcm
�
����.�
�����=
�����������
�.1��6��_a1������}�����[����}�"E����
�������.1��7��_a1������}�"���<�"E������<�5�PInfo�׊decl�lcm_zero_leftm�����.�V������!������!.1�^�c6����_a1�����Y
8���%8E�^��zero_mul���c�X.1�c�X6��!_a1���`8��E�cnatzero_div!�i�PInfo�ݍdecl�lcm_zero_rightm������D_x���T���lcm_comm�lcm_zero_left�PInfo��decl�lcm_one_leftm�������.���������������%��.1����6����monoidto_semigroup�monoid����to_has_one��_a1������
��

���%��
E��one_mul�������%��.1����6��_a1����
��
����
E����������.1����6��_a1������
��E��natdiv_one���PInfo��decl�lcm_one_rightm��������D_x�����	�����lcm_one_left�PInfo���decl�lcm_selfm������s���w�	)�|h�����

���S.1�	4�	86
_a1���iii�	)E�	4�	8�X.1�	8�X6�	6_a�	N��E�	8���ih�	-.�	4������


���	b

.1�	f�	j6�	c_a1������i|ii���	qiE�	f
�gcd_self
�	j��.1�	j��6�	h_a1���	qii�`E�	j
natmul_div_cancel

���PInfo���decl�dvd_lcm_leftmn�'���dvdintro
��%
�����	�natmul_div_assoc

���PInfo��decl�dvd_lcm_rightmn(���
�D_x���	���
�dvd_lcm_left
�PInfo��decl�gcd_mul_lcmmn����
��=��.�	����	���=��������comm_semiringto_semiring
�=.1�	��	�6�	����	�
_a1����}������E�	��	�natmul_div_cancel'�	�
��

�	����o�<�	��PInfo��decl�lcm_dvdmnkH1�)H2�0��ri�����
��0�z�
�}h�o���r�
.1�
�
��_a1�����
E�
S�
kpos�y�dvd_of_mul_dvd_mul_left�
r������]�ri����
�
7r�F��
:.1�
;�
?6�
8_a1����
�
E�(�
HE�
;�
=�gcd_mul_lcm���
?�
>	�Fr��r.1�
?�
]6�
:_a1�O��
H�
dE�
?�
\��
\�
:���r��
]�
>�
Z��r�.1�
]�
{6���r_a1�
d	�O��
=�
d�
�E�
]�
y���r���
Y�
y�
=mul_dvd_mul_left��r
mul_dvd_mul_right�ri��PInfo��decl�lcm_assocmnk����	>
�	>��)�*�+���
��
��lcm_dvd�
��
��
�i
�
��	�i���
��
��	�
�dvd_lcm_righti�����
��
�
�
��
���
���i�
��
��
�
�	��
��
�
�
��
��
��
��
�
�
��
��
��PInfo�(�decl�decidable_proof_1mneqdecidable�coprime
�
������0�1.�p0�50e_11
congr_arg0�
�i
�
��
��natcoprimeequations_eqn_1
�PInfo�/�	decl�.�0�1��0�1����/
�decidable_eq
���PInfo�.�	prt�.VMR�.VMC�.�	�1�0natgcdnatdecidable_eqdecl�.equations_eqn_1�0�1/��.
�)�0�1D��/�PInfo�B�	ATTR_refl_lemma���BEqnL�BSEqnL�.ATTRinstance���.class�3�.��decl�coprimegcd_eq_onemn��
������G�H.�
��PInfo�F�nspace�Edecl�coprimesymmmn��
�
�
�i
�K�L��
�������PInfo�J�decl�coprime_of_dvdmnHk�a�����not�)r�B�N�O�P�S�s���w}�B�|}g0��falseelim�
�ri�N�Q��M��<�N�)��Q��M��<�N�)6i_a1�Q��M��<�N�)��Q��M��<�PE�f�eq_zero_of_gcd_eq_zero_rightri�N�Q��M��'��c�f��_a1�Q��M��'��p�Q��M��(�pE����ri
bit0nathas_add��of_as_true�L���decidable_lt����trivialS����g1�preorderto_has_le����}���torresolve_left_�`to_has_lt����t����tlt_or_eq_of_le����tg2��i���r��r�PInfo�M�decl�coprime_of_dvd'mnHk��&��(�)���B�h�i�j���coprime_of_dvdi
kkl�Mkm�'�kn�)�not_le_of_gt��r��i�
r��zero_lt_onedecidable_linear_ordered_semiringto_linear_ordered_semiring�decidable_linear_ordered_semiring�r
�PInfo�g�decl�coprimedvd_of_dvd_mul_rightmnkH1�@H2�'�����x�y�z�{�@�|�	t�)	�	��i�
[����
[i�A��N�1�F���1�6�����_a1�3�O���IE��mul_one����N�1�Fs��6�0_a1�3�O���3�OE�2���coprimegcd_eq_oner�i�N�1	�	��r�
=�26�
Z�
=_a1�3	�	����
c�IE�L�1�J�r��PInfo�w�decl�coprimedvd_of_dvd_mul_leftmnkH1�?iH2��O���������k����coprimedvd_of_dvd_mul_rightr�i
�N�)�
[�)�
y�
�_a1�1�
=�1E�v�
y�
��PInfo���decl�coprimegcd_mul_left_cancelkmnH�A����
}����������
H1�
���r
��	�
[it�����coprimedvd_of_dvd_mul_left�r����
[i��
[i�gcd_dvd_gcd_mul_leftri�AnnotcheckpointAnnothave����	��r��.1����50��_a01�
����E�������r���������.1����6��_a1��	��������E�����gcd_assoc��
r����������.1����6�_a1����|���������E�����B
r�coprimesymm
r������.1���
6��_a1����������E�����gcd_one_right���<���PInfo���decl�coprimegcd_mul_right_cancelmknH�
��������������
��
&���
��.1�
&�
.6�
xi_a1�����i���
6E�
&���ri�
.������.1�
.�
G6	��r
_a1��	�
yi�
6��
6E�
.���coprimegcd_mul_left_cancelir
�<���PInfo���decl�coprimegcd_mul_left_cancel_rightkmnH�B��|��
}���������B�
n�
m�[.1�
n�
t��_a1��s��it�
{E�
n�[���
t��	�
ki�[.1�
t�
�6�
l_a1�
{�����E�
t�
����
k�
��\�[.1�
��
�6�
�_a1��	�
yr���
�E�
��[�
\r
i�<�[�PInfo���decl�coprimegcd_mul_right_cancel_rightkmnH�B��|��r}���������B�
���|�
x
}.1�
��
�6��r_a1��s���t��stE�
��
��/r�
���}.1�
��
��
�_a1��s�
�it�tE�
�}�coprimegcd_mul_left_cancel_rightri
�<}�PInfo���decl�coprime_div_gcd_div_gcdmnHb
�
���i}��}�������.���	��
������}}��.1��6�_a1��	��t�t����E���gcd_divi
}��!��
.1��
6�_a1����tt����E���natdiv_self}�
�PInfo���decl�not_coprime_of_dvd_of_dvdmnddgt1�MHm��Hn�O�N�
������������M�������Oco����not_lt_of_ge������semiringto_monoid�_to_semiringlinear_ordered_semiringto_ordered_semiring����
��h���3�h�3�.1�n�p6��_a1�[�h�[E�n����������i
r�PInfo���decl�exists_coprimemnH�Existsm'��n'�
�������������������Existsintro��������
�������t�*��t�
N��*���}�����
}�coprime_div_gcd_div_gcdi
N�������i��i}����
��
}�!�PInfo���decl�exists_coprime'mnH���g��m'��n'������������3�������_a����dcases_on�������������������������������������������o������3wh����������������������������������������	�����3h_wh_h��������������������
����3���8	�o���������b	��������@����@r����b	��o�
������Q�����Q
Nb�=�_
�����=����=��exists_coprimei
�PInfo���decl�coprimemulmnkH1��H2�B�
��
[i�������������B����t���
\�ri
�PInfo���decl�coprimemul_rightkmnH1�BH2�d�T�����������B���d������coprimemulri���r�
��i��PInfo���decl�coprimecoprime_dvd_leftmknH1�0H2�B�Ti�����0��B�eq_one_of_dvd_one�
6.��`�r�����������.1�����u_a1������E��������:��ri�PInfo��decl�coprimecoprime_dvd_rightmknH1�&H2�Ar�`�
���
�&�����i��coprime_dvd_lefti�r
��r�PInfo�	�decl�coprimecoprime_mul_leftkmnH�
����B����������
�Ar�PInfo��decl�coprimecoprime_mul_rightkmnH�
����B�����
���
L
�Rr�PInfo��decl�coprimecoprime_mul_left_rightkmnH�
����B��� �!��coprimecoprime_dvd_right�
ki
�ar�PInfo��decl�coprimecoprime_mul_right_rightkmnH�
��3�B�&�'�(�)�(��
�i
�nr�PInfo�%�
decl�coprime_mul_iff_leftkmn���
��=i�
�i�k�+�,�-���8�<h�8N���
�r�coprimecoprime_mul_right
ir�coprimecoprime_mul_lefti
r_x�<_a���D��_��A��4�V�X�����V��_���
��
=��b��	�
=���.1�b�h���b_a01�
��
c�oE�b�h��
=��h������.1�h�6�f_a1��	�
c�o����E�h�}�
\���
�PInfo�*�
decl�coprime_mul_iff_rightkmn���A�=�B���8�9�:�������g����.1��������_a01���_���`�d����E�����i�=��������i����.1����6�g_a1����s������������E�������=�����8��.1�������B_a01������r�������dE���8��
�����\����.1�����_a1�����d�����dE���[�������~��.1������_a01�������d���%E������������.1��86��_a1���%�
F�����%��E������coprime_mul_iff_lefti
�PInfo�7�decl�coprimegcd_leftkmnhmn�
��
�t
�D�E�F�G�
���ti
�i�PInfo�C�decl�coprimegcd_rightkmnhmn�
��A���J�K�L�M�
��
i����PInfo�I�decl�coprimegcd_bothklmnhmn�
��
��
6���P�Q�R�S�T�
��coprimegcd_rightr�
6
�coprimegcd_left�i
�PInfo�O�decl�coprimemul_dvd_of_dvd_of_dvdanmhmn�@hm��hn�1������[�\�]�^�@�_���`��_a���c���H�a�3��F��o�������_x�\���D���Q
������
���o
���
�o���o���D_x����r
�PInfo�Z�decl�coprime_one_leftn�
������PInfo�e�!decl�coprime_one_rightn�?���
�PInfo�g�#decl�coprimepow_leftmknH1�B�
�has_powpow�has_powr
i�k�l�m�n�Bnatrec_on_x�
����r
�coprime_one_leftinIH�������
��i�PInfo�j�%decl�coprimepow_rightmknH1�:�A���z�{�|�}�:������pow_leftri
���PInfo�y�(decl�coprimepowklmnH1�`�
���i�������������`�coprimepow_rightr�
��ri�PInfo���+decl�coprimeeq_one_of_dvdkmH�
�d�0�����������
����0�%��t.1�%�+�u_a1������E�%t�m���Ci
�+��r.1�+�A6t_a1����2E�+r��ri�<r�PInfo���.decl�coprime_zero_leftn���
������_true.1�_�b��0�_�����ba0��0e_1�	b0��0e_2�	congr00������i
�70��00����r�]���g�]�7�����a��e_1����e_2���l0����i
�u�0����r!J�����
����E��propext�i�biff_self�����PInfo���1ATTR�����decl�coprime_zero_rightn���?�������b.1���b�g���i�b�������g����������������d�����
�����������PInfo���4ATTR�����decl�coprime_one_left_iffn�����b�����b.1���b�g�����b�b�b�����b�g���
�b���������
����������������
���
�beq_self_iff_true���b�bE�b�����b���b���PInfo���7ATTR�����decl�coprime_one_right_iffn�����b����b.1��b�g����b�����b�g���
�b�)���
�����������
�����
��b�b�����PInfo���:ATTR�����decl�coprime_selfn���?�����F�b.1�F�b�g�F�i�b���D���g�D�������������S�	������
�����������PInfo���=ATTR�����decl�prod_dvd_and_dvd_of_dvd_prod_proof_1X�PInfo���Adecl��_proof_2n�����i����i���}�PInfo���Adecl��_proof_3mh0�7natzero��
�����w�
�~
�PInfo���Adecl��_proof_4��k���O�v�x���������|���PInfo���Adecl��_proof_5������H(��n_1��������succ��s�������������������
+������D_x���
�������natzero_lt_succ
����������1��.1����6��_a1���}���}���(��E��r�	�r�������1	���
=.1����6��_a1�3���IE�����������r�������
=r�Qr�i�PInfo���Adecl��_proof_6����������%����������	������PInfo���Adecl��_proof_7����������rfl���PInfo���Adecl������������subtypeprod�m'(��
n'�d��*��coe�
��(�coe_to_lift�coe_base�coe_subtype���fst��
�����+��+��+�#�*��snd��+����������_x������cases_on�����~���
��(��
��(�o���Q�����
��(���U��U�#�T�(�U�
���J��b��b��b�#�a�:�U�b
�������v�����(�\�������v���
��(�,�
���S����������
��(�������#���(���
��������������#���:�������l�
c���� �o�v�������l�������8�v���
����
�������������������#��(��
��(����������#���:������l�Y�o���,�vsubtypemk��
��)��������������������#���(��������������#���:����prodmk��������������X��������
�����r�����~��������o������U�b���J��������������#���(��������������#���:������U�b��T�������a���p����o��i�������r
�PInfo���AVMR��_rec_1VMR��VMC���An_fresh!�
����_fresh!�
����_fresh!�
���>�>natdivVMC���A���������>��doc��Represent a divisor of `m * n` as a product of a divisor of `m` and a divisor of `n`.decl��equations_eqn_1����������/�B��ri
������������D�B���PInfo���AATTR�C����EqnL��SEqnL��decl�gcd_mul_dvd_mul_gcdkmn�g�	�����������cases_on��
���&�
��?������������������#���(���
���&����������#���:����a_0���������t����
�g� �=val��h��prodcases_on�����������
[�?��
=�
E��
val_fst�val_snd�+����������
��(��������#���(���
�������
�������#��:���������N���
�!�����P������L��L��L�#�K�(�L�P��L�Pi��P��P��P�#�O�:�L�P�5�?����o���@�?�oim'hm'�N�����K���_�c�n�o
r�p�r�Y� ����������	�����,���������������ri�����m	�������,���u���u�,�n'hn'�S�����x����
�����������#���(�������������r���
��:������	
�����������������I��.1����6��_a1	����������������(��E���Imul_dvd_mul���i�������������Hi���Q�i�D_x(�����I����������i��i�����A���
�PInfo���Rdecl�coprimegcd_mulkmnh�
��������������
��������gcd_mul_dvd_mul_gcdri
�Wmul_dvd_of_dvd_of_dvd����t�coprimegcd_bothrri
�gcd_dvd_gcd_mul_right_rightri
�gcd_dvd_gcd_mul_left_rightr
i�PInfo���_decl�pow_dvd_pow_iffabnn0�������i
�@����������6�@h�6ordcases_on����w�_xor�A�D�[��|�g0�A�I�b.1�I�b�g�I�[�bchas_dvda�
e_2����e_3�������Y�i
���Yr���<���~�����[���	��bα�
�_inst_1�a
iff_true_introii
i��i��i�	�i
Qi
���g0�D����������������������3a_1�����b��exists_coprime'��gh_1����������br����
����r��������oa'h_1_h������b���-�
�����������,�b'h_1_h_h���b��e��������-������������g0'��h_1_h_h_right����������������Qr�����F�o�����o���������co��h_1_h_h_right_right�����O����������\���F���
��
rfl�
rfl��O�,6����������������w�)�����
����
��w	�c���"6�������������&��&��w	���

�����i����v���"���;�"��w	�=�c���C�v�
�b.1�^�b�g�^�
�]�b�k�C�
���C���
�
chas_mul�
�
e_2���
�
e_3���������r�i
���
���rr�����������N�������*����6��_a1��������E�����coprimeeq_one_of_dvd�������*�coprimepow�����*�*�o�dvd_of_mul_dvd_mul_right�������
�*�pos_pow_of_pos�
�*��N���������]�*��������6��_a1�����3�����������E�����mul_pow���
�*�N���C�*����6��_a1���I����(��E���������
�*
�N��������6����_a1������(��E����natpow_one���pow_dvd_pow�����*�&�
�
�<�
���
�]�]�<�]���e�	����
�b�
�
���}�
bi�~rri
��r��r��r�	�ri
�>ri
�
�����&��&�;i
�"��"�
����h�@�pow_dvd_pow_of_dvd�ri�PInfo���fEndFile