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��Iolinitdataratbasic�nexport_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}traversedeclratmk_numeraltypeexprbooltthas_zerohas_onehas_addhas_neghas_divarat�������ratcases_on�a_numinta_denomnata_poshas_ltltnathas_lthas_zerozeronathas_zeroa_copnatcoprime�nat_absid_rhs	nume�mk_numeral
	iteeq0has_oneonenathas_one�decidable_eq09	dene�mk_numeral&(*0exprsubstJJJcoereflected_x_1_x_2has_div_x_3!_x_40�M�O�!�has_divdiv0!coe_to_lift^coe_base^exprhas_coeS]
Quote],!�PInfo�&	VMR�VMC�(&	�������intmk_numeral	�natdecidable_eq	%natmk_numeral
�
	]exprsubst���&	doc�`rat.mk_numeral q` embeds `q` as a numeral expression inside a type with 0, 1, +, -, and /

`type`: an expression representing the target type. This must live in Type 0.
`has_zero`, `has_one`, `has_add`: expressions of the type `has_zero %%type`, etc.

This function is similar to `expr.of_rat` but takes more hypotheses and is not tactic valued.declratreflect#ratmk_numeralKLMa�d�gM
QuoteK�has_zerorathas_zeroa�d����
Quote�K�has_one�has_onea�d����
Quote�K�has_add�has_adda�d����
Quote�K�has_neg�has_nega�d����
Quote�K�Ndivision_ring_has_div'�division_ringa�d����
Quote��PInfo�.prt�VMR�VMC�.������doc�`rat.reflect q` represents the rational number `q` as a numeral expression of type `ℚ`.decl�has_reflecthas_reflect�ratreflect�PInfo�5prt�VMR�VMC�5�ATTRinstance���classreflected���declexprto_nonneg_rat�option�exprcases_on���#� �monadto_has_bind�optionmonadexprto_nat�varnreturn��ratof_intKadinthas_coe�level�
���sort�,a_anamea_a_1list�1�
���const!�,a_a�;a_a_1�;a_a_2�
���mvar!�,a_a�;a_a_1�;a_a_2binder_infoa_a_3�
���local_const0!�,a_aa_a_1���!��
���app�!�,��1�
���j�4!�,a_a_a�;a_a_a_1�=�
���j�A�,a_a_a�;a_a_a_1�;a_a_a_2�
���j�M0�,a_a_a�;a_a_a_1�;a_a_a_2�Va_a_a_3�
���j�\�,a_a_aa_a_a_1���!��
���j�l0�,��1�
���j�t0�,a_a_a_a�;a_a_a_a_1�=�
���j�|���,a_a_a_a�;a_a_a_a_1�;a_a_a_a_2�
���j���,a_a_a_a�;a_a_a_a_1�;a_a_a_a_2�Va_a_a_a_3�
���j��.�,a_a_a_aa_a_a_a_1���!��
���j�����,��1�
���j�����,a_a_a_a_a�;a_a_a_a_a_1�=�
���j��.�,a_a_a_a_a�;a_a_a_a_a_1�;a_a_a_a_a_2�
���j��,�,a_a_a_a_a�;a_a_a_a_a_1�;a_a_a_a_a_2�Va_a_a_a_a_3�
���j��*�,a_a_a_a_aa_a_a_a_a_1���!��
���j��,�,��1�
���j��,�,a_a_a_a_a_a�;a_a_a_a_a_a_1�=23�;!namemk_string
Strdiv�
Strhas_divnameanonymousnamehas_decidable_eq!���
��.m��(nratmk�(!�)�
���j��*�,a_a_a_a_a_a�;a_a_a_a_a_a_1�;a_a_a_a_a_a_2�
���j��(�,a_a_a_a_a_a�;a_a_a_a_a_a_1�;a_a_a_a_a_a_2�Va_a_a_a_a_a_3�
���j��&�,a_a_a_a_a_aa_a_a_a_a_a_1�
���j�j�j�j�j!��.*�,a_a_a_a_a_a�;a_a_a_a_a_a_1�Va_a_a_a_a_a_2a_a_a_a_a_a_3�
���j�j�j�j�lam0!��.*&�,a_a_a_a_a_a�;a_a_a_a_a_a_1�Va_a_a_a_a_a_2a_a_a_a_a_a_3�
���j�j�j�j�pi0!��.*&�,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�
���j�j�j�j�elet0!��.*&�,a_a_a_a_a_amacro_defa_a_a_a_a_a_1�<�
���j�j�j�j�macro!��.*�,a_a_a_a_a�;a_a_a_a_a_1�Va_a_a_a_a_2a_a_a_a_a_3�
���m�,a_a_a_a_a�;a_a_a_a_a_1�Va_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���
�����,a_a_a_a�;a_a_a_a_1�Va_a_a_a_2a_a_a_a_3�
���k�,a_a_a_a�;a_a_a_a_1�Va_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�Va_a_a_2a_a_a_3�
���i�,a_a_a�;a_a_a_1�Va_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_1�Va_a_2a_a_3�
���g�,a_a�;a_a_1�Va_a_2a_a_3�
���~�,a_a�;a_a_1a_a_2a_a_3�
�����,a_a��a_a_1���
�����,�PInfo�:prt�VMR�VMC��J:�exprcases_on
-=N���*�;exprvarexprto_nat		intof_nat�of_intexprsort��	����exprconst��	$&+����exprmvar��	46;����exprlocal_const��	EGL������
Par�������������exprapp��	XZ_�����������	ikp�����������	{}������������	��������������	����������
�������^�u������������	�����������������	�����������������	�����������������	�����������������	���	��������
��0�G�_�x������+�E����������	�'�)�.�����\����������	�>�@�E�����\����������	�V�X�]	�����\	����������	�o�q�v
�����\
	����������	�����������\��
�������0�L�i��������	������������	������
������	������������	������
������nameanonymousvcharof_nati��d��_��s��a��h��stringemptystringstr������������namemk_stringv��i��d������������	namehas_decidable_eq	��
	������������	��������.��	��!�.��	�$�&�-�����mk_main��
	������������	�C�E�J������
	������������	�`�b�g
������
	������������	�{�}��������
	exprlam����������	������
������
	exprpi����������	������
������
	exprelet����������	������
������
	exprmacro����������	�����������\
	����������	��
������\
	����������	�"�$�)�����\
	����������	�<�>�C�����\����������	�T�V�[	��������������	�l�n�s	��������������	������	��������������	������	��������������	�����������������	�����������������	�����������������	�����������������	������������	�����������	�!�#�(��������	�2�4�9��������	�A�C�H����doc� Evaluates an expression as a rational number,
if that expression represents a numeral or the quotient of two numerals.declexprto_rat���	��
exprto_nonneg_rat���1�
�Q�4a_a�;a_a_1�=�
�Q�Aa_a�;a_a_1�;a_a_2�
�Q�Ma_a�;a_a_1�;a_a_2�Va_a_3�
�Q�\a_aa_a_1�h���
�Q�l���1�
�Q�ta_a_a�;a_a_a_1�=�
�Q�|a_a_a�;a_a_a_1�;a_a_a_2�
�Q��a_a_a�;a_a_a_1�;a_a_a_2�Va_a_a_3�
�Q��a_a_aa_a_a_1�����
�Q�����1�
�Q��a_a_a_a�;a_a_a_a_1�=�
�Q��a_a_a_a�;a_a_a_a_1�;a_a_a_a_2�
�Q��a_a_a_a�;a_a_a_a_1�;a_a_a_a_2�Va_a_a_a_3�
�Q��a_a_a_aa_a_a_a_1�����
�Q�����1�
�Q��a_a_a_a_a�;a_a_a_a_a_1�=2��
Strneg�
Strhas_neg������
��Q.q�&has_negneg��
�Q��a_a_a_a_a�;a_a_a_a_a_1�;a_a_a_a_a_2�
�Q��a_a_a_a_a�;a_a_a_a_a_1�;a_a_a_a_a_2�Va_a_a_a_a_3�
�Q��a_a_a_a_aa_a_a_a_a_1�
�Q�Xa_a_a_a_a�;a_a_a_a_a_1�Va_a_a_a_a_2a_a_a_a_a_3�
�Q�ma_a_a_a_a�;a_a_a_a_a_1�Va_a_a_a_a_2a_a_a_a_a_3�
�Q��a_a_a_a_a�;a_a_a_a_a_1a_a_a_a_a_2a_a_a_a_a_3�
�Q��a_a_a_a_a��a_a_a_a_a_1���
�Q��a_a_a_a�;a_a_a_a_1�Va_a_a_a_2a_a_a_a_3�
�Q�ka_a_a_a�;a_a_a_a_1�Va_a_a_a_2a_a_a_a_3�
�Q��a_a_a_a�;a_a_a_a_1a_a_a_a_2a_a_a_a_3�
�Q��a_a_a_a��a_a_a_a_1���
�Q��a_a_a�;a_a_a_1�Va_a_a_2a_a_a_3�
�Q�ia_a_a�;a_a_a_1�Va_a_a_2a_a_a_3�
�Q��a_a_a�;a_a_a_1a_a_a_2a_a_a_3�
�Q��a_a_a��a_a_a_1���
�Q��a_a�;a_a_1�Va_a_2a_a_3�
�Q�ga_a�;a_a_1�Va_a_2a_a_3�
�Q�~a_a�;a_a_1a_a_2a_a_3�
�Q��a_a��a_a_1���
�Q���PInfo��Aprt��VMR��VMC���A���
&����	������������������
(1:DO[���������������������������������������������
]iu����������������������������������������������������������
�����$�6�F�X�j�|������������������������g��e��n��_��s��a��h��������������������g��e��n��������������	�������������	��
�	�neg_main��	�����������
	����������������������
	�����������
	�����������
	������������������������������������������������������������������������������������������������doc�� Evaluates an expression as a rational number,
if that expression represents a numeral, the quotient of two numerals,
the negation of a numeral, or the negation of the quotient of two numerals.declexpreval_rat_main���	��
��1�La_a�;a_a_1�=�La_a�;a_a_1�;a_a_2�La_a�;a_a_1�;a_a_2�Va_a_3�La_aa_a_1�h�!�L�!�1�La_a_a�;a_a_a_1�=�La_a_a�;a_a_a_1�;a_a_a_2�La_a_a�;a_a_a_1�;a_a_a_2�Va_a_a_3�La_a_aa_a_a_1���,�L�,�1�La_a_a_a�;a_a_a_a_1�=2��
Strzero�
Strhas_zero���v��
�&�2��
Strone�
Strhas_one������
�&6��La_a_a_a�;a_a_a_a_1�;a_a_a_a_2�La_a_a_a�;a_a_a_a_1�;a_a_a_a_2�Va_a_a_a_3�La_a_a_aa_a_a_a_1���7�L�7�1�La_a_a_a_a�;a_a_a_a_a_1�=2��
Strbit0������
functormap�applicativeto_functor��to_applicative��has_mulmul�has_mulbit0���
�RecFn�.���
������2��
Strinv�
Strhas_inv������
��has_invinv�has_inv���La_a_a_a_a�;a_a_a_a_a_1�;a_a_a_a_a_2�La_a_a_a_a�;a_a_a_a_a_1�;a_a_a_a_a_2�Va_a_a_a_a_3�La_a_a_a_aa_a_a_a_a_1���N�L�N�1�La_a_a_a_a_a�;a_a_a_a_a_a_1�=2��
Strbit1������
��has_addadd�������*2��
Stradd�
Strhas_add�����
has_seqseq��=to_has_seq�����a������2��
Strsub�
Strhas_sub���!��
��has_subsubadd_group_has_sub�add_group����2��
Strmul�
Strhas_mul���9��
��������� �
��U������La_a_a_a_a_a�;a_a_a_a_a_a_1�;a_a_a_a_a_a_2�La_a_a_a_a_a�;a_a_a_a_a_a_1�;a_a_a_a_a_a_2�Va_a_a_a_a_a_3�La_a_a_a_a_aa_a_a_a_a_a_1�La_a_a_a_a_a�;a_a_a_a_a_a_1�Va_a_a_a_a_a_2�Y�ca_a_a_a_a_a�;a_a_a_a_a_a_1�aa_a_a_a_a_a��a_a_a_a_a_a_1���La_a_a_a_a�;a_a_a_a_a_1�Va_a_a_a_a_2���qa_a_a_a_a�;a_a_a_a_a_1�oa_a_a_a_a��a_a_a_a_a_1���La_a_a_a�;a_a_a_a_1�Va_a_a_a_2���a_a_a_a�;a_a_a_a_1�}a_a_a_a��a_a_a_a_1���La_a_a�;a_a_a_1�Va_a_a_2�h��a_a_a�;a_a_a_1��a_a_a��a_a_a_1���La_a�;a_a_1�Va_a_2�X��a_a�;a_a_1��a_a��a_a_1���L�PInfo�GVMR�VMC��$G���
����!��
"�����������
$'*���������	�	��o��r��e��z��_��s��a��h����������������������o��r��e��z����������������	n���e��n��o��_��s��a��h��������������������e��n��o��������������	���intone�����zero���	�	�	��
����l�o�r��������������0��t��i��b����������������	��_��g��e��n��_��s��a��h��������������������g��e��n��������������	��X��v��n��i��_��s��a��h��������������������v��n��i��������������	�O�Q�W��inv�map�^��neg���j������bit0�mul_main����������
�t�w�z��������������������1��t��i��b��������������	��	������d��d��a��_��s��a��h��������������������d��d��a������������	��	������b��u��s��_��s��a��h��������������������b��u��s������������	��	�����l��u��m��_��s��a��h��������������������l��u��m������������	��	�B����v��i��d��_��s��a��h��������������������v��i��d������������	��	�|�~����algebradiv��	�������������mul��	�������������[algebrasub��	�������������add��	���������������_c_1���������add_main�������������������������	�	�	�	����decl����PInfo�Gprt�VMR�VMC�G�doc�Evaluates an expression into a rational number, if that expression is built up from
 numerals, +, -, *, /, ⁻¹declexprof_ratα�tactic������a_numa_denoma_posa_cop"�cases_on����0��0�����of_nat0#������
��interaction_monadmonadtactic_stateexprof_nat,!e₁24��9<��9�����������*��e₂tacticmk_app�listcons!��listnilFtransparencysemireducible�����neg_succ_of_nat0��������nathas_add!9e₁����e���������PInfo��Xprt��VMR��VMC���Xa�����intcases_onlexprof_nat	e�	`��	Zd��
_c_1i��_c_2v��_c_3	��
_��s��a��h��������������������
����������tacticmk_app_	
cj�natadd��	u��	y���	��d��
_c_4i��_c_5v��_c_6	��
_��s��a��h��������������������
�������������	
�	��n��
_c_7e��_c_8g��_c_9	��
_��s��a��h��������������������
�������������	
�doc�� `expr.of_rat α q` embeds `q` as a numeral expression inside the type `α`.
Lean will try to infer the correct type classes on `α`, and the tactic will fail if it cannot.
This function is similar to `rat.mk_numeral` but it takes fewer hypotheses and is tactic valued.EndFile