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�\initdatanatbasicalgebraordered_groupalgebraringtacticalias���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}traversedeclnatsqrt_aux_decbnathnehas_zerozeronathas_zerohas_ltltnathas_lt�shiftrbit0nathas_addhas_oneonenathas_one��	eqmpr
has_divdivnathas_divhas_powpow�has_powideq/chas_lta�e_22a�e_3<congr3Acongr_arg�3BEA-�shiftr_eq_div_poweqrefliffmpr
%
has_mulmulnathas_mulmnatdiv_lt_iff_lt_mul'mof_as_true
m�decidable_ltmtrivialeqmp
wxyeqrectsemigroupto_has_mulmonoidto_semigroupnatmonoid�to_has_one�_a4
vH�m
�f3�mul_one�natmul_lt_mul_of_pos_leftm
m�m�natpos_of_ne_zero�PInfo�decl�sqrt_aux_match_1_f_1n'_f_2_aint������cases_on��aid_rhsR��H�PInfo�decl�equations_eqn_1����:�Hcoe�coe_to_lift�coe_base�inthas_coeH����gid_delta��PInfo�ATTR_refl_lemma���EqnL�decl�equations_eqn_2����:��neg_succ_of_nat����g���PInfo�ATTR����EqnL�decl�_main_meta_aux�������dite:H�decidable_eqHb0�H�not�	b'R
this�E
��
�RecFn�@has_addadd�div2B@� B�'ERhas_subsub�inthas_sub�R��&EBAnnotcheckpointAnnothave�sqrt_aux_decE
�PInfo�VMR�VMC�*���natdecidable_eq	(nataddintof_nat��comm_ringcomm_ringto_ringringto_add_comm_groupadd_comm_groupto_add_groupalgebrasubintcases_onnatdiv2�natshiftr����declsqrt_aux_main_pack_wf_rec_mk_dec_tactic_aux_1brn�
HH�has_well_foundedrpsigma��U�psigmahas_well_founded�Xhas_well_founded_of_has_sizeofnathas_sizeofa�\�V�a��apsigmamk�XE�k�V�&�'RE�lE�pRH�
����R�1�|psigmalexleft�Xsizeof_measure	�`a�lex
�V������n�uE�z1���nE1
sizeof	�`�n��E
natsizeof�n��E
�nE14����]���n� equations_eqn_1�n��E��E�PInfo�	decl�_wf_rec_mk_dec_tactic_aux_2�
����R�i�l��p�'H�lR�pH�
����R1�������R��1���R1
�����R
�����R
�R14����]��������R��R�PInfo�$decl�_pack_x�Y�&�Y�&�Ywell_foundedfix�Y���ihas_well_foundedwf�Y�h_x�Ypsigmacases_on�X�+�Y_F_y�Y��ifstsnd�W��V�1�W�.�/�Y��
��snd_fstsnd_snd��.�/�Y��
�x���.��:E�E��"R���"	��0
��@
��E�l�p�&�'@�,�	�,@BR�l�p�(E�$�@BE�9�E��&B�@Annot�Annot��D@
�PInfo�%VMR�%_lambda_1VMR�%_lambda_2VMR�%VMC�4a�6VMC�59�.�+�Y�	6���������(���5��7VMC�%�&�Y�5�4well_foundedfixdecl�%equations_eqn_1�
��2���lH�p�%�nite��	��P
���q�v�q���9���&HRAnnot��
��well_foundedfix_eq�Y���i��g�n�PInfo�:EqnL�:decl������r�PInfo�VMR�VMC�*����	(����������������decl�equations_eqn_1�
��:�H�x	��P
�����n�s�������Annot��
���:H�PInfo�?decl�sqrt_aux����PInfo�@VMR�@VMC�@�decl�@equations_eqn_1�
��:�@H�x	��P
�����n�s�������Annot��equations_eqn_1�PInfo�BEqnL�Bdecl�sqrt_match_1n_a�G�Hnatcases_on�H�n_1����shiftl�'H�PInfo�F"decl�Fequations_eqn_1�G:�F�Gg����PInfo�N"ATTR����NEqnL�Ndecl�Fequations_eqn_2�Gs:���succ���G�Qg����PInfo�P"ATTR����PEqnL�Pdecl�sqrt�G�G���size�PInfo�S"VMR�SVMC�S"�Gnatsize��bit0natshiftl�@doc�S`sqrt n` is the square root of a natural number `n`. If `n` is not a
 perfect square, it returns the largest `k:ℕ` such that `k*k ≤ n`.decl�Sequations_eqn_1�G:�S���Gg���PInfo�["ATTR����[EqnL�[SEqnL�Sdecl�sqrt_aux_0rn:���]�^�:�t:�	�
������r�������Annot�14��'��_a4:�HH:H���%�B�'true14�'�Beqtrans3�';�Ba�ce_1<��e_2<?:B�!HP:R�%�G�%�t�Bdecidable_of_decidable_of_iff�
�B�eq_self_iff_true���'�m�$�add_semigroupto_has_add�add_monoidto_add_semigroup�add_groupto_add_monoid������ring�has_negneg�add_groupto_has_neg��~�~if_simp_congr�
�B��$���gh����e_12���e_2<����e_32�=���,B��@EH>�����BEK���,�@�@R���&���mfunextxx���y������e_1<��e_2<��e_3<>���,B���@EH>�
����BEL��,�@��@R��Uzero_shiftr����add_zero�add_monoid��g��l�o���l�lg�l��9���&���G����~��chas_sub�����e_2������e_3������7@B�#EHK����BE�#R�8��f����~_inst_1has_lift_t�a��e_2<L�H�R����sub_eq_add_neg��~��~if_true�h��hpropext�J�B�f��PInfo�\(decl�sqrt_aux_1rnbh	n'h₂:�&�<HR:��RBE���)R��������	�����z��:�t:R�RB	��
�����0�&�'�@B���0B�9�B��&@EAnnot���14������}_a4:��E@B���1EH�2��������:RBE��:������(�&�QR�9�q�has_add�����:�~����14�����[�����^���tfalse�3��c3decidable�����j����iff_false_intro��HB������3��3e_14h��Hαt��e_42HeR��Ee_52Beqdrec3
��3��42�,�t	�,�@E�t������
�,@R�@B��@��2�@@��	�����,R�H��@��� R��'�@f@�t�������@���@BHER�
�,��������BBgB�����������f�
����E������g��(�(g�(E��eqsymm��E�P������:�O����O���~�~����������OE���{intcoe_nat_add��chas_add�����e_2������e_3���"�q@B��EH�.��R���~����BR�~�~�=�~�~����if_false��B������g����:���9�q�sadd_comm_semigroupto_add_semigroup��add_comm_semigroup�~������14�����������~_a�4:������&��H�9�����@�O�H����:���9���������add_comm������~��:���~��14������7add_group_has_sub��~���~����_a�4:���9����������:��������~add_sub_cancel��~�~���:����14��.��_a4:��������������������PInfo��,decl�sqrt_aux_2rnbh	h₂
H�&R:��ER���P�2R��������	���S�Z:�wE	��P
��d�j�Annot��Y14�Z�i��U_a4�~�j�2�j��Z�g�:HER�i:��W�&�2H�Y�;��v�Y14�i���[�g���^�g�����������j������E�����W������EEgE�f��g������E���Y�Yg�YExistsdcases_onn���7��yordered_comm_groupto_add_comm_group�ordered_ringto_ordered_comm_group�linear_ordered_ringto_ordered_ring�linear_ordered_comm_ringto_linear_ordered_ring�decidable_linear_ordered_comm_ringto_linear_ordered_comm_ring�intdecidable_linear_ordered_comm_ring�O�~�_xExists
��:���j��jinteq_neg_succ_of_lt_zero���:��l
�preorderto_has_lt�partial_orderto_preorder�ordered_comm_monoidto_partial_order�ordered_cancel_comm_monoidto_ordered_comm_monoid�ordered_comm_groupto_ordered_cancel_comm_monoid�������jto_has_zero��w�����:��sub_lt_zero����:��intcoe_nat_lt_coe_nat_of_ltR�vke��:��������:����14����������_a�4:�������@�9����&�@B�:������:����14��6��_a4:��H��2����������g���PInfo��1prvis_sqrt_private�`uSis_sqrtdecl��nq3����andhas_lele�has_levrv�&�i�PInfo��:VMR��VMC������prv��equations_eqn_1��equations_eqn_1decl������4���m������r�PInfo��:ATTR�����EqnL��SEqnL��prvsqrt_aux_is_sqrt_lemma���o��sqrt_aux_is_sqrt_lemmadecl��mrnh₁�bwm'hm:v+E�}H1�
Rv�<+B���pE��vB+@�6�has_subE��BH2��bv�Q����E�pB�{v��+�@����B��������v����vv@����v@@���������|��������������ordcases_on����linear_orderto_partial_order�linear_orderB��ge��to_has_le��B��_xor�����p@��v+�,��v���@����@v�@�@lt_or_ge��B��hl�����������'����14�������_a4�p�@��v+�
��v���,�����@v�,�,��������sqrt_aux_2������
b0��
natmul_ne_zero����Annot�Annot�ne_of_gt������ordered_semiringto_ordered_cancel_comm_monoid�ordered_semiring���pos_pow_of_pos�,���l
���&����
@v� ���@��=�C�E�?�&�<���C14�G�M�3�=_a34�E
��&���
�@v�&�,���[�E�^��G�K�j�=�Knatsub_lt_right_iff_lt_add@�<��B�M�B14�M�B�H�M�E�?�&���&�����|�����Ba3�3e_1��b3�3e_2��=33�EB�EEHK3�33BE�ER�K��]@@g@�J��^�J�&�~���%�r���add_comm_semigroup���~������e_2<��e_3<���%@B��EHL�
BE��R�<�~�^�<���{�����{�~�����|�{�����&�������������^�����&�����%distribto_has_add�distribt�to_has_mul���@������t��semigroup�@��������v������chas_mul��e_2<��e_3<��t@B��EH����Ru����mul_comm�comm_semigroup�@����g��mul_assoc���@���	�@�@g�@����two_mul�semiring��left_distrib���@��������g����������add_left_comm�����{�{���{�{g�{���}�	C���{����g���	C�~���C�����B��^�����@���@�|�z�}�����}�	m�����z�{���	o�	m�&�	t�}�	w�	m�����@�����@�	{right_distrib���@���@���	~�	t�	8�@���	��}�^�	��	j���	��@�	����}�	7���@�����	��{�	���@�	����	?�	J�	t�{���	S�	v�	nadd_assoc�add_semigroup���{���	J�{���}�j���Biff_self�������������14���	����_a4�������'�������	�����ER�	������{��14�	��	����_a4����B�	�����	����	��{:���{:$���{14�
	�
�	�_a4:�	�����2�
��
	�
�div2_val���
:$�������{14�
�
)������@��_a4:$��
:$�
��
�
%�	!�@���
):�
$�{14�
)�
I�$���
$_a4:$�����,���
�
��
)�
$natmul_div_cancel_left�
$gt�3�g�
$�hl����k:�&�]�@_x���
�	�ledest�B@n'e�
~�p�,��v+��
�v���
�
����,v�
�
�
����
��&�'�
��
��
�v�&�
�
��
�14�
��
���
��4�p�
��v+��
�v����
����
v���
���
��
��sqrt_aux_1�
��
��
�
��
�
��
��
�Annot�Annot��+�
��/��5�
��x�
��&�&�
��
��
�natsub_eq_of_eq_add�
��
��,:�,�&�
��
��
��%���	��
��
��
��
�14�
��
���
��
��
��
�_a4:�
�&�
��&�&�
��
��
�v�&��
��
��
���
��
��x�
��
��	��
��
��
��
��
��
��
��
�14�
����
��
�_a4�
��
��
��
��
��
��
��
��
���
��
�:��
��B14�.�B�H�.:�
��
��5�B�4:�&�5�:�
��<�7�4:�
��<�>�4�-�
��<�B�[��g��
��E�^�����
�
��
��:�
��;���
����5�;�S�X���
��5�
��U�S�&�\�;�_�S�����
�
����
��
��c�	��
�
��
����g�\�	7�
�
�
��j�;�^�i�P���i�
�i�
��;�	7�
��
�
����|�5�	�
��
�~�
�g�
��	J�\�5�
����5�5g�5�^�T�
�5�
��	J�5�
��;�j:�%��add_left_cancel_semigroupto_add_semigroupordered_cancel_comm_monoidto_add_left_cancel_semigroup�'�
��
����<�Badd_left_inj���
��
��<�[�
��<�^�
��X���
��5�<�����:�5�����&���
������
����^�
��
��&�
��
����f�
��������
���
�����v�
��
����	�
����	�
�
��
�g�
��	!�
�
��	�
�
g�
�����	0�
��t�
��
��
��
����	C���
��	J�
��5�5�����;�	C�
��5�<�<g�<�j:�%��add_right_cancel_semigroupto_add_semigroup�Cto_add_right_cancel_semigroup�'�5�;�%�7add_right_inj� �;�5�5�j�7�B�f�5��x�&�
��
��,natadd_sub_cancel'�,�
�H�
��
���@�
��
�14�
��S��
�_a4�
����
��&�'�
��
��
��
��	��^�
���
�@B�S�
��P�;�
�14�S�r��
�_a4�
����^�
��
����h�
��
���S�5:�
��5:$�
��514�����w�.4:�\�
��
��2��������
�
���:$�����
��514����������
�
��04:$�
����
9��������
A�
�
���:���514�����$�����14:$������
�����������
`���
jg���r�
��P�Q�
��
�14�r������~_a4�
����&���
��
��
����
���r���x�����o�
�RH�PInfo��<prvsqrt_aux_is_sqrt���L"�3sqrt_aux_is_sqrtdecl�Qnmr��eH���v�+���
����v+R�
 v��H�
 ���H�R�R�S�T��
��
�Ibrec_on�S�T��e@��Y�
�
��
'�
��
(R�S_F�Ibelow�S�T��e�@�
�,�
�
��
'�
��
(�T��
>��
?v�+�Q�
L�S�T��e��
��
�V�
=�S�T��e�
�
�p�
'���
X�
(R�J�S�
�
Sv�<+�i�
g�V�
=�S�T��e�
�
�p�
'���
p�
(�
Y��v+H�
|���
|�
Z��E�
v�Q+�&�Izero�
��V�
=�S�T��e�
X�
�
k�
�p�
m�
'���
m�
(�
���p�
U��v+�
�v��B�
����
U����B�
UErfl�
���
Vv�Q�
��
��
Y����
��
��
Y@14�
��
�����e_1<����e_2<?����HL�\BE�pR�
X�
Xg�
X�
�@�^�
��@�
�@��g�
�@�^�
���@�	@@���
�natpow_zero�@�
��
�g�
��sqrt_aux_0@�
�andintro�b���
X
�
Xv���B��b�
��
U�
Y�v���
��
��
Z���
Y�14�!�#�
�� ��^� ���
Z���
����^����	����@@���
��
��
��
�����,��� ��e_2<��e_3<����@B�IEH���IR���
X�
X�
����>���=���,�	�b��
X�
v�&��qH�S��
ev�<+�&�����V�
z���
��
Y��v�
�
���
�
��
��
@�
XB�
~:���
~�B14���B�H��:�
~�
~�B�[���
~�^��$���
~�
~���'�������'������������a�ce_1<a�ee_2<���/�mH��R�����^��t�comm_semigroupto_semigroup�	�����
|�
|����v�������	�
���^+��H�
}���
|�pow_succH�	�
|�
����mul_left_comm�	���
|�	g�����^�����
|�������
|�	���
|���
|�
|���Ushiftrequations_eqn_2��n�ne_1<LH�'�����^���&$�����"�'���$�"�'���'���*���kequations_eqn_1���
���mul_div_right��l�
d���*�Bifftrans�@�=�Bgt_iff_lt�*niff_true_intro���natsucc_pos'trueintro�
���:�
~�[�
~�
~g�
~�j���B�f�
~���
v���
�w�p�
k�
#���
K���
k���{�
#�����
 �14�����
��
k�
kg�
k�������
"�
"g�
"�|���	*�
K���^+��R�
!���
 ��R�	�
 ��g���{�
#���
 ����������������^�����
 �����
 �	�
 �
 g�
 �	#�
 ����pprodfst�S�T��e�
p�
�
�p�
'�����
(nataddR�
��Irecn��punitnih��pprod���S�T��e���
�
�p�
'�����
(�����}���������@@��b�y�
X�{�
#v� �
K�
K�~���{�
#v����
 �14����_a4�
����v�Z+�<�%�
��'�&�
��#�+���
�:���9�B14�9�B�H�9:���
!� ���C�B�[��C�^������A�
 �C�Jv�A���M�	��A���@�@�	)�
K�����
K�������A�
 ���L�B�	�A�
 ��C�^����
 ���A���p�A�ov�q�
 �r�	��q����A�[�
 �
 ���	�q�
 ���
 �A�j�E�B�f�C�Annotshow����
�v� �%��semiringto_distrib�	/�
K�
K���
�v�
��
��@�
K�
K������
��
K�
K_a4�
nv�Z���%�%���
n�d������x�����	��@�
K�
K��
�v� v�
K�����tmul_zero_classto_has_mul��to_mul_zero_class�	/�
K�����to_monoid�	/_a4�
nv�Zv�%���
nv�Z�������mul_two�	/�
K��
�v� +�&�
J�����+���
J_a4�
nv�Z+�&�$����������
JHEHRH�PInfo�Q[prvsqrt_is_sqrt���]Ka�sqrt_is_sqrtdecl��n�p����se:���
d����:��R����E��:��H�
��pR��R�S14�U�W�
�RRgR�T�^�T��R�b�c�G�d�[R�G�Ge_1<�H�He_2<����B��EHL��BE��RRR�^�G�^�G�
��nat_zero_eq_zero�NR�W�p14�W���R_a4���A��W�mp�H���size_eq_zeroR���^�bv�v� � 14�����R��_a3�����������anddecidable�����decidable_le������s���H���K�������lE14�K���
�EE���J���^�J�o�������o��E���jE�EE�������PE��
Ev�+�&�l�
����v+���v���������v�	�	��������Bimp_congr_eq�
����v+�l�(��(�������]EE�����	�
�	zero_add���	�
�	�>���/�����*��
�:�*��1�J�I����l�I+�M14�O�R��N_a4:��������X��O�Q�one_shiftl�M�R�I�*14�R�j��Q_a4�X+�Y�]��R�*�pow_add�l�lg�*Annot���,�^�,���(��to_has_zero���	�mul_zero���(�(g�(zero_mul���(�.E�^�.��E�[EE�������sub_zeroE�QE�l�zero_leE��+�&��14�����_a4
Bv+�����������x����z�����+�����14���������_a4��+�&������+������x����������b�������size_leE����b����14��
���_a4�b��B�������b�������
%�rv��div_lt_iff_lt_mul��
j�#�"�&�!14�#�2��l_a4
$H���:�i��#�!�
�lt_succ_self�!���
����PInfo��ndecl�sqrt_len�bv��������left�_�v�&���d���PInfo��}decl�lt_succ_sqrtn�v�����m����right�_�g�j�PInfo���decl�sqrt_le_addn��&�&�]�������{��&�n����14�{����x_a4�b�&�&v�����������h����{�~�x�~�x�succ_mul�����le_of_lt_succ���lt_succ_sqrt�PInfo���decl�le_sqrtmn�E�����|�����intro���|h��le_trans�*�
(���mul_self_le_mul_selfH���sqrt_leh�|��H��l�P����
�
(v�����mul_self_lt_mul_self_iffH��lt_of_le_of_lt�*�
(�����PInfo���decl�sqrt_ltmn�E
��r�d����lt_iff_lt_of_le_iff_le�������d�le_sqrt�PInfo�̋decl�sqrt_le_selfn�b���������]�le_mul_self�����PInfo�юdecl�sqrt_le_sqrtmnh���b��H���������l��bv��������
H��H�PInfo�ԑdecl�sqrt_eq_zeron�E���2������h��eq_zero_of_le_zero������rv�sqrt_lt�&�14�&�1���_a4
����&�1��e�eqsubst_x��x�
����PInfo�ؔdecl�eq_sqrtnq�E�2���m�������^�me�^�O_x�^�eR���k��T��iH_x�m_a�^�{H�Pv��v�_dcases_on�b�
(R��v�
�
���^�}�����Jleft�}right�v�
J�
J�
��!��Ble_antisymm�)E��l�bE���bvEEB��EB����El
����E��v�����,B���PInfo��decl�le_three_of_sqrt_eq_onenh����bit1�������$������r���-���14�����6_a4�7���������PInfo��decl�sqrt_lt_selfnh���������l��r�z�-���z���_a4��
(��
(������lt_of_succ_lt�PInfo��decl�sqrt_posn�E�����������PInfo���decl�sqrt_add_eqnah��:���&�
(H����������H���Hl
���
�v�����,����'�$�&�����14�'�0��&_a4
�&vRRHv�����:��'�/��H���0�$�&�H��14�0�O��-_a4�:�&�6�����:�h����0�L�mul_succHH�O�$���MH14�O�k��N_a4�:�&�8R���?��O�j�add_succ�LH�k�$���
��
(�
�HH14�k����
���HH_a4�:���rR�:����k���	��
(HH�lt_succ_of_le���natadd_le_add_left���
(l�bH��|���H�natle_add_right�
(�PInfo���decl�sqrt_eqn:���d�	�sqrt_add_eq���h�PInfo��decl�sqrt_succ_le_succ_sqrtn�b�����m������ml
�����m
��v�����,���������&�mul���m�m�succ_le_succ�������z���sqrt_le_addadd_le_add_right�'�x��add_le_add�'�]���������mul_le_mul_right��������������PInfo��decl�exists_mul_selfx�E��n:�d:�]�����_x�_a����H����R����:v�T�TRwh��
�:v�J�JE�*:v���z�-�z14�*�1�E_a4:v����B���*�z�x�zE�1:�z�z14�1�J��-_a4:v���
(�P�
(��
(��1�sqrt_eqg�zh���intro����PInfo��EndFile