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��xinittacticinteractivealgebraorderalgebraordered_groupalgebraringtacticnorm_cast��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}traversedeclnatcast_main_meta_auxu_1α�_inst_1has_zero_inst_2has_one_inst_3has_addanat����	�
natcases_on�
id_rhshas_zerozero�
has_addadd
RecFn�has_oneone�PInfo�VMR�VMC��
�����decl������	�
�brec_on�
_F�below�
�
�8�
��
�8�

B�8�
	�zeroJJ=�
�D�succBBpprodfst�
nataddM�recn
punitn
ihepprod��

ha�kbvh)B=�PInfo�VMR�VMC��
�����decl�equations_eqn_1�����	eq���
nathas_zero����	eqreflid_delta��PInfo�ATTR_refl_lemma���EqnL�decl�equations_eqn_2�����	n
���
nathas_add�
nathas_one�)����	�
����PInfo�ATTR����EqnL�decl�cast�����	��PInfo�prt�VMR�VMC������doc�Canonical homomorphism from `â„•` to a type `α` with `0`, `1` and `+`.decl�equations_eqn_1�����	���������	�equations_eqn_1�PInfo�ATTR����EqnL�decl�equations_eqn_2�����	�
����������	�equations_eqn_2�PInfo�ATTR����EqnL�decl�_sunfold�����	�
�
!�+�PInfo�decl�cast_coe�����	has_coe
����	has_coemk
��PInfo�prt�VMR�VMC������decl�equations_eqn_1�����	�����#����	���.�PInfo�ATTR����EqnL�SEqnL�ATTRinstance
�class��
decl�cast_zero�����	�coe
coe_to_lift
coe_base
�.������	rfl�H�PInfo�ATTR����ATTRsimp���ATTRsquash_cast���unitstardecl�cast_add_one�����	n
��=�@�C�*���`�����	�
�O�a�PInfo�ATTR����decl�cast_succ�����	n
��`V�e����	�
�l�s�PInfo�ATTR����ATTR����ATTRmove_cast����Vdecl�reversed�����	�
��e�s����	�
eqsymm�s�e���PInfo�ATTRpush_cast����Vdecl�cast_one��_inst_1add_monoid_inst_2��=�@�C�*add_monoidto_has_zeroadd_semigroupto_has_add�to_add_semigroup�)�����zero_add���PInfo�ATTR����ATTR�����Vdecl�cast_add��_inst_1��_inst_2m
n
��W�X�Y�Z��������������������
������
�
�brec_on�
��=�@�C�*������� �������
_F�below�
�9�=9�@9�C9�*9��9��9��9�9����
����
�=�==�@=�C=�*=��=Z9��=��=Z�=�"�&�&��
����
�B�=B�@B�CB�*B��BJ=��B��BJ�ZY�B�FZ�F�6�F�G�M�F����
�J�=J�@J�CJ�*J��J=Z��J��J=�9J�j�n9�nM��^�n�o��t�P�d��J���add_zero�J=��
��RV�}�6�K�U��M�K�W�
this��eqmpr���6�K�X���id�����eqrec
B�U_aB���]]��]��]B�=]�@]�C]�*]��]BJ���=)]J����=��������������������X��
����������a��
��
������
�l�=l�@l�Cl�*l��l]��l��l���Bl����B����a�������������6�����������!����_aB������������������������add_assoc
B�A�L�W��B��Annotshow�PInfo� ATTR����ATTR�����Vdecl�reversed�������
�
�����������
�
�������\�PInfo� ATTR�����Vdecl�is_add_monoid_hom��_inst_1��_inst_2is_add_monoid_hom
natadd_monoid�������is_add_monoid_hommk
�t��is_add_hommk
�
�
�t�����cast_add�cast_zero�����PInfo�$	prt�VMR�VMC����decl�equations_eqn_1��������w�����������w���PInfo�$	ATTR����EqnL�SEqnL�ATTR����class����decl�cast_bit0��_inst_1��_inst_2n
��>�A�D�+������bit0
�bit0����������
���PInfo�'(ATTR����ATTR�����VATTR�����Vdecl�reversed�������
�����������
���������PInfo�'(ATTR�����Vdecl�cast_bit1��_inst_1��_inst_2n
���bit1
��bit1������
����
����������������������
��_a
�����������������������bit1equations_eqn_1
�����������)���������#����_a�����������������!�cast_add_one���������#����� �������#�F�(��_a��������*����������#���cast_bit0��D�PInfo�)(ATTR����ATTR�����VATTR�����Vdecl�reversed���
����
�������
����
�������k�PInfo�)(ATTR�����Vdecl�cast_twou_1α_inst_1semiring���=�@�C�*mul_zero_classto_has_zerosemiringto_mul_zero_classmonoidto_has_one�"to_monoiddistribto_has_add�"to_distrib�������)�����~����true��������eqtrans�����������add_comm_monoidto_add_monoid�"to_add_comm_monoid������a�0e_1�a�2e_2��congrZ���Z��congr_argZ�2Z���������,��������������������������\�����s�2�2e_2��5��������������������propext������eq_self_iff_true��trivial�PInfo�,decl�cast_pred��_inst_1add_group_inst_2n
�has_ltlt
nathas_lt���W�X�Y�Z��add_groupto_add_monoid�����.has_subsub
�Bhas_sub��Gadd_group_has_sub�7���<�%�>�?
��+�5�?
��+�������������,9���P�=�@9�B9�Y)9��*M�Bless_than_or_equaldcases_onU�t_1
��J�lH_1��
MH_2heq�j�o�^�_�`�a�b�c�,J=Z�g�h�{�;M��@J�BJ=��M)JZM�M�r�l�no_confusion�N�u�o�l�Jrefl�l���=Z�@Z�CZ�*Z��Z�,Z9��Z��Z�����@Z�BZ9��M)ZM�la_b
a_a�p�M�rU���N�v�oU�Jstep�l��M����
Mheqrefl�j�?
��*V�}���`�_��U�`�c�c��9���`add_sub_cancel9�`�c�PInfo�;.ATTR����;ATTR����;�Vdecl�;reversed���<�%�>�?
��+��H�>��<�%�>�?
��+���>�H���PInfo�X.ATTR����;�Vdecl�cast_sub��_inst_1�%_inst_2m
n
hhas_lele
�Bhas_le�������������,������<�@�B�#�#��Z�%�[�\
�]
�^�eq_sub_of_add_eq�%�+�-���� ��%�-�+���#��$�+�����@�F���>_a�������Y�;�Y�Y���T���@�D���D�>����$���F���+�+�����F�m��C_a
�����Y��N�T���Y�T���Fnatsub_add_cancel��+�PInfo�Y1ATTR����YATTR����Y�Vdecl�Yreversed���Z�%�[�\
�]
�^����.�%��Z�%�[�\
�]
�^��_�%�.���PInfo�g1ATTR����Y�Vdecl�cast_mul��_inst_1�~m
n
��>�A�D�+������������has_mulmul
�Bhas_mul�m� to_has_mul��������i�~�j
��i�~�j
�k
���k
��W�X�Y�Z�������������������������k
_F���k
���������������������������������k
�p���k
������������Z��Z9��Z��Z9��Z��Z9����Z��Z��)�)�5�k
�p���k
�^�_�`�a�b��J��J=��J��J=��J��J=��Z��J��J�<�KZ�K�^�K�L�U�K�p���k
�������=��=Z��=��=Z��=��=Z��9��=��=�h�w9�wM�}�=�i������=����mul_zero�=�h���k
�p�ZV�}�^�_�`�a�b�c��J��J=�B�g�h����BmulZaZ�U�K�

Annotinnaccessible
�Annot�s���
�Annot�s��J���s��������Z����J���B��Z
��^�s�G�]�T�U���_���B�����^���`�T������������J�]_aJ���6Y��B��BJ�7�8�9�:��B��BJ��B��BJ����=��=��B��B������������6����������`���k
�6��������a���
��������k
����=���@���C���*����������]��������]��������]��B����������.B�.��a�����E�����������P�'to_has_mulJ�F�T�_�U���������Z���U��_aJ���6����������d�����Yleft_distribJ�F�T�_�����Z���W�T�����Z�y���Psemigroupto_has_mulJ�$to_semigroupJ�A�T��_aJ���d�����QB����������d�����Z�Tmul_oneJ�A�T�J��Annot��PInfo�h4ATTR����hATTR����h�Vdecl�hreversed���i�~�j
�k
�������i�~�j
�k
���������PInfo�}4ATTR����h�Vdecl�is_semiring_hom��_inst_1�~is_semiring_hom
�semiring�����~is_semiring_hommk
�����������!
�#
��������������������������������������������������������������������� �������%
�&
�����	�����	�	���	�	�����	�����	����������	������������	(������ ��x
y
�����(
�)
����������	M�����	M�	M���	M�	N�����	P����x
��
��
����	E���������
�����	dx
��
�	e�	eforall_congr_eq
��
�	L�	h��
�	n��
�	K��
����
���	K���������������	J���0�0e_1���29�2Ze_2���J���^�^��J�2J���^�	F�	���	z���	J�	J��	J��	��	����	�a
�	e�	eforall_const�	e
�Binhabited���
�����	���
�	�� ��x
y
������o
�����	������	��	����	��	������	�������
��
��
����	����	\���	e���	��	j�	e�	n��
�	��	h��
�	n��
�	��	t��
���	��������	��	����h���������	����	����	��	�� 
�PInfo�~9	prt�~VMR�~VMC�~��decl�~equations_eqn_1����~�����~��
���~�����
!�PInfo��9	ATTR�����EqnL��SEqnL�~ATTR����~class���~��decl�mul_cast_comm��_inst_1�~an
�������������~����
�rec��
�������������
*��M���
=�������
B�����
B�����
I���	��
>�
I���
>�
*�
I�
Ichas_mul�2�2e_2���2Z�2=e_3�^�4BB��9�
\��B�2B]�
\����
=�
I�
P�
=����
I_inst_1has_lift_t
a
��
e_2�q�5
Z����M��Bnat_zero_eq_zero�������������
A�
I�
P�
A���
I�
I�
s�
=�
I�
��
vzero_mul����
K���	��
I� n_n
n_ih�
:����������
��������
������
��� ����
����0�09e_1���2=�2Je_2�6��]��������]�2]�����
��
����
��
���Q�*���
��
��
��
��
��
��
��
��
����
U�29�2Z���	��2J�2B�����
Y�����39�
�����2��l�
����
���
��
��
��
��
� ��add_comm_semigroupto_add_semigroup�-to_add_comm_semigroup���
��
�������add_comm�2�
��
��n��
��
�c�29�2Ze_2�	��2J�2Be_3��	��9�Q��Q��
������
��
��
��
��
��
��
��
��
��
��
��
��q���w�!�
���E�$right_distrib��
��
��c�sone_mul���v�
����
���
�����
�� �PInfo��<decl�cast_nonneg��_inst_1linear_ordered_semiringn
�`preorderto_has_lepartial_orderto_preorderordered_comm_monoidto_partial_orderordered_cancel_comm_monoidto_ordered_comm_monoidordered_semiringto_ordered_cancel_comm_monoidlinear_ordered_semiringto_ordered_semiring������to_semiring������������������������������������
����
������������������������>�A�D�+����������������
_F����
���������������������
�W�X�Y�Z�������������
������
��9��9��9��9��9��9��99��9��9��9�-���������:��9��9�8��9��9�8�5��
������
��=��=��=��=��=��=��=Z���f�g��=�W�����a�k�l�_�p�q�_�c�m������
��Z��Z��Z��Z��Z��Z��Z9Z����Z�����������������"�#��M�}����le_refl�Z������
���qV�}�P�Q�Rordered_cancel_comm_monoidto_partial_order=�X�����=��to_add_comm_monoid=�X�+�� ���=�a�f�ia)=�fadd_nonneg=�X��������
��J��J��J��J��J��J��J=P�:�;��J���_�`�a�b���?�@���D�E��a���
���������
��]��]��]��]��]��]��]B]��]��]��]��������������]��]����]��]����a������
��zero_le_one=Z�PInfo��?ATTR�����decl�cast_le��_inst_1��m
n
iff�������������������
��
����
��
�
;�����������������������������
L�����
T���
T�
`���
_F����
��
�
;�3�J�K���
��
��
������
��
�
;��B��B��B��B��B��B��BJ�7�8�9�:������B�
{�����
������
��
���5��
������
��
�
;����������������������������]�����������
��"�#�
��'�(�
��
���
;���
�
�������
��
�
;�
��
�M�}�
;�
��
���
������
��������
������
��
;������a������e_1��b������e_2�
��4�����
;�
;�5���������
;�
������
��
�B�
��
���chas_le�B�2]�2��e_2���2�2e_3��������9�����2�����
��
����B�
��
��
��
��
��>�
������������
iff_true_intro����BJ�
�����
���n
�=�
��zero_le��
���iff_self��� ��
���
�V�5��
�
;�
��
����
�����}�
;���
����
���r����zhas_ltlt]preorderto_has_lt]��linear_orderto_partial_order]��to_linear_order]B�
��������]��to_add_comm_monoid]�����
�
������z�����znot�����
�����
;��false���
��v�����	]�2���2l����
�2��2�������������9�������2���������s����]�������������
���r���
��������,]�.]�����
��������������]���
���]a����le_2���2��2�e_3���
Y������9�������2���������
��]�
������]���
�@]���
����u�
��]���
�
�y���������n
iff_false_intro�V��not_succ_le_zero�����iff_false��������������
��not_le]�����
lt_add_of_lt_of_nonneg]���
��
��zero_lt_one]B�?]B��
�}�
;�
��P�����������������
�����
��
��
�_M)���
��j�n_M�t�����������trans�|�
��q�y��add_le_add_iff_right���
��q�y�t���
��
��
��������
��
�
;���
���
���
���
���
���
���
l�=�
�@�
�C�
�*�
���
���
���
�����
���
�����
���
������p���
���������
��
�
;�����������������������=��@��C��*����������������������������������p����������symm���
��
��
��
��
�ordered_semiring������.
��
���%��add_le_add_iff_right
���PInfo��CATTR�����ATTRelim_cast�����Vdecl�cast_lt��_inst_1��m
n
�
;�}����
<���)�������
��
���\�
;�S�T�������
<���[�����\�l���leqmp�
;�������
<����k�'preorderto_has_lt
���
�linear_order�
��w�j��������f���
<�j�H�d���
<�{�������
������
��not_congr�v�z�cast_le�PInfo��JATTR�����ATTR�������Vdecl�cast_pos��_inst_1��n
�
;�}��������+�������
�����
;��������+������������_a���
;�V���
<�*�
;�V�
<���������������������������
;�+�+��������������_a�����
;�V����
<���
;�������+����+�cast_lt�iffrefl�+�PInfo��MATTR�����decl�cast_add_one_pos��_inst_1��n
���������������
add_pos_of_nonneg_of_pos������B�W�PInfo�Pdecl�eq_cast��_inst_1��_inst_2f�
H0�����H1���Haddx
y
����Z����9n
���9����������9�5��
�����)�
�-��0��=��
�����)�
�-��0��=�
���
��/�
_F���
�^9�w�
����
��=���5�
����
��B���B������
�J��������]B�b�c]M�}�J����s=�
��fV�}��B�r���r��������hB�������������l��_al����]��������������
l�����
���
l������������Z���������)l]��������������_al�����
��]]���������������=��������j���������������h_al������)�
�����������������j���
��]��a���
��������
�l�������������
���������a���������l��9�PInfo�	Sdecl�eq_cast'��_inst_1�%_inst_2f�)H1��� Haddx
y
������n
���N�y���%���)��I��R�eq_cast��
�N�������� ��add_left_cancel_semigroupto_add_semigroupadd_groupto_left_cancel_add_semigroup�b�b�p�e�����f�t���f_a��������4�Q���f�teqsymm���t�f��t�fadd_left_inj�l�b�b�e���t�r�b�����t���K�<�b�e_a�������h9�j9�z�z���|�����t�b����b����������b���������K���b_a�����z�W�z�������_�����*������PInfo�Ydecl�cast_idn
�qcoe

coe_to_lift

�

�
����,
��
id
���������
�t����eq_cast
�t���rfl
�������_x
_x
������PInfo�+]ATTR����+ATTR����+�Vdecl�cast_min��_inst_1decidable_linear_ordered_semiringa
b
��>�A�D�+��������decidable_linear_ordered_semiringto_linear_ordered_semiring�����!�����!min
�9to_decidable_linear_order
�decidable_linear_ordered_semiringmin�<�-�-��5��7
�8
dite��Bdecidable_le�Ch�����W�X�Y�Z������	������R�����R�4�9�;�^�^�������k�����k��g�g���0�0e_1���2Z�2=e_2�
X��B���6�6��B�2B���6�a�g���
��
��
e_2�
��
�=��]�`��
�`ite��decidable_of_decidable_of_iff��
���decidable_linear_orderto_linear_order
�3��has_leledecidable
�3�=��
��������
��minequations_eqn_1
�3if_simp_congr
������������if_true
���j�g���jite����������H�e�g�i���K�e�g�i���������Q�g�i�������P���g�i�g���������g�i��N�e�g�i�O�������g�i�g�i�
��g��i�P��g�i��s����g� �A����m�p�q��i�i�����i���������������.��
���R���������M����if_false
�N�j�i�����������������M�g�i�i��v��!�����g�i�g�i�q�)�+�R�r�g�i��D���9�i� �PInfo�4`ATTR����4ATTR����4�Vdecl�4reversed���5��7
�8
��B�7��5��7
�8
���7�B���PInfo�S`ATTR����4�Vdecl�cast_max��_inst_1�a
b
��-max
�3max�=�?�A��U��V
�W
�M��h�����^�����e�g�i���������������D�������i����������������maxequations_eqn_1
�3�������������i�����
�i�g�i����i�g���]�e�g�i�#�i�g�i�g�
�+�)�1�i�g��� �Z�B�������s�����g�����P������X�M�����d���g���t�i�g�g���1��|�i�g�i�g�q�+�)���i�g�;� �PInfo�TcATTR����TATTR����T�Vdecl�Treversed���U��V
�W
�������U��V
�W
�������M�PInfo�^cATTR����T�Vdecl�abs_cast��_inst_1decidable_linear_ordered_comm_ringa
��absdecidable_linear_ordered_comm_ringto_decidable_linear_ordered_comm_group��������no_zero_divisorsto_has_zerodomainto_no_zero_divisorsintegral_domainto_domainlinear_ordered_comm_ringto_integral_domain�dto_linear_ordered_comm_ringzero_ne_one_classto_has_one�hto_zero_ne_one_class�s��ringto_distrib�hto_ring�s����`�`�b
abs_of_nonneg�e���@linear_ordered_ringto_linear_ordered_semiringlinear_ordered_comm_ringto_linear_ordered_ring�q�PInfo�_fATTR����_ATTR�����_�Vdeclis_semiring_hommap_nat_castu_1u_2αβ�}_inst_1�}_inst_2semiringf�_inst_3is_semiring_hom�|n
eq���������5�6�>�?�C�D�
�
�
��!�#�%�&�(�)�~��������������������~���������������������
����
��9�������������"�#��9��9��9��9��9��9��9��9��9��9��
_F����
��Z�����f�g9�k�l9�p�q9��Z��Z��Z��Z��Z��Z��Z��Z��Z��Z��
������
��J9�7�8�9�:����=����=����=��J��J��J��J��J��JZ��J��JZ��J��JZ�5��
������
��]=������B�"�#B�'�(B��]��]��]��]��]��]J��]��]J��]��]J�i=�u��������
��BZ������������J�
�
J�
�
	J��B��B��B��B��B��B=��B��B=��B��B=M�}��Z����������������������������}B�������0B�0]e_1�����2l�2�
e_2����4���������5��2����������,B��Z�������]���e_1��5�|�
lB����"������is_semiring_hommap_zero"]BJ=Z9�����B������������9B��� ��
����V�}�i=�u�r���r���9�������9�����9�i�]���]�����H���0]�0������l�2�
�2��������������T�����T�6�H��]�6�C=�s�n���H�l=�P�b�c�d����B�m���p����l�������
]�5�z���������r�u�n�w�r�x���m�P�b�,���.���t�m�����x������������u�n�������l���
e_2���2��2�e_3����
Y������9�������2�����w������������m����u�n�@�������mis_semiring_hommap_add"��]BJ=Z�m����has_add]������le_2���
�2��2�e_3�T�4�����A��9���5���������n�Fis_semiring_hommap_one"��]BJ=Z��������
��J����������l��l]��l��l]��l��l]������������������������B��������B��������Ba���
���������
��]�=��@��C��*�������l������l������l���
���
���
���
���
���
�����
���
�����
���
����a����J�����8�H�k�y�z�{�|�]�.]�/]J���]�]���r�C���F�B����]��]���F�����B����������]�����������]�����F�]������]�����F��J���)]�H� �PInfo�{ndeclring_hommap_nat_cast�|�}�~�����������fring_homn
��coe_fn���has_coe_to_fun���������������������������������������~��������������	��
is_semiring_hommap_nat_cast�ring_homis_semiring_hom�PInfo��tATTR�����EndFile