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�'�{inittacticrcases���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_assocPInfocan_liftindluvαβ�Cn}�~e_1coeacond�	prfx�Existsyeq
	}mk
�	}������������	�
�

	����&��
��
���5�5	�nspace}prt}recdecl}sizeof���xnat��}rec�xY�2�3�<has_addaddYnathas_addeehas_oneoneYnathas_onesizeof�	default_has_sizeofl�E�E��
�)����PInfo�ATTRreducibility���prt�decl}has_sizeof_inst���has_sizeof	��has_sizeofmk	��PInfo�ATTRinstance���class����prt�decl�sizeof_spec����2�3�<eqY�
	
	i���2�3�<eqreflY��PInfo�ATTR_refl_lemma���EqnL�prt�gind}�decl}coe���c
���
Proj}���
}rec��D�
���PInfo�ATTR����proj��decl}cond����3���
Proj}���3����
���PInfo�ATTR����proj��decl}prf�������		�	�
	���
Proj}��������	��
	4�
6�5	�
���PInfo�ATTR����proj��decl}rec_on~��������D�E�N
5�������}rec~�
	�PInfo�ATTR����auxrec�prt�auxrec}rec_ondecl}cases_on~���#�PInfo�ATTR����auxrec�doc}A class specifying that you can lift elements from `α` to `β` assuming `cond` is true.
 Used by the tactic `lift`.decl}no_confusion_type~���Pv1�v2(������(�~�
	�>�l����5��	�)5�5	��5G��G���1�
��B�coe_eq���1cond_eq�!��M�B�1�PInfo�ATTR����prt�decl}no_confusion~�������(h12�>�~�
	������(��jeqrec'&
a�yh1a�g5	�k5
h11�g�y�'()5��}��	������G��1��1�M���L�G�B��R��B�1�)(�N	�(#���PInfo�ATTR����no_conf�prt�decl�inj����2�3�<�l��/��8��g�<5
	��and�L��15	�R�A���2�3�<�l��/��8���}no_confusionG��G5
��	�����R��15	andintro�OG��
�PInfo�decl�inj_arrowl����2�3�<�l��/��8���P����
������2�3�<�l��/��8������	andelim_left�����inj��B�1G5
	andelim_right�����!�PInfo�ATTRclass��}class}declcan_lift_attruser_attributelistnameunitid_rhs�:user_attributemk�7�9coe11string�6coe_to_lift11�A�6coe_base11�A�6string_to_name
Str_can_lift
Strinternal attribute used by the lift tacticoptionnonedecl�6prioYpersistentbooltactic�9�Sdecl�6�Wuser_attribute_cache_cfgmk�7_x�7 �Umonadto_has_bind�Uinteraction_monadmonadtactic_state�7�7attributeget_instancesnamemk_string
Strinstancenameanonymousls�7listmfilter�U�g�6l�6�iprod�5exprbooltt�{�T�i�{�~���{Fmk_constFinfer_typeFmk_local_pis_p�~_a�~prodcases_on1�|�{��~�U�Tfst�|snd�{�;��return�U�g�T�is_app_of�m
Strcan_lift�plistcons�6�qlistnil�6a�9punitreflecthas_purepureleanparserapplicativeto_has_pure��alternativeto_applicative��leanparseralternative�9unitstar
�PInfo�	VMR�_lambda_1VMR�_lambda_2VMR�_lambda_3VMR�_lambda_4VMR�VMC�	αVMC�S#s�f��6�		tacticinfer_type	Fmk_local_pis_main	Mnameanonymoustcharof_natf�%i�%l�%_�%n�%a�%c�%stringemptystringstr�)�)�)�)�)�)�)namemk_stringexpris_app_ofVMC�?!��f��7�#e�%c�%n�%a�%t�%s�%n�%i�%�'�)�)�)�)�)�)�)�)�+attributeget_instances	.9���listmfilter_mainVMC�	sleanparser_stateVMC��8	�#t�%f�%i�%l�%_�%n�%a�%c�%_�%�'�)�)�)�)�)�)�)�)�)�+c�%i�%t�%c�%a�%t�% �%t�%f�%i�%l�% �%e�%h�%t�% �%y�%b�% �%d�%e�%s�%u�% �%e�%t�%u�%b�%i�%r�%t�%t�%a�% �%l�%a�%n�%r�%e�%t�%n�%i�%�'�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)��#e�%c�%n�%a�%t�%s�%n�%i�%�'�)�)�)�)�)�)�)�)�+�
�ATTRuser_attribute���USR_ATTR�declnatcan_lift_proof_1ninthnhas_lele��inthas_lehas_zerozero��inthas_zeroExistsY�Y����@Y���DY���GY��inthas_coe�:���<���Eintro2Y���;nat_absintnat_abs_of_nonneg�PInfo�9(	decl�8can_lift��Y���Y��n�����9�PInfo�8(	prt�8VMR�8VMC�8(	aYintof_natdecl�8equations_eqn_1����8������PInfo�R(	ATTR����REqnL�RSEqnL�8ATTR����8class�L�8��declpican_lift_proof_1�wιαiβi�V_inst_1ican_lift3)fi		hfi
can_liftcond3�)�E3i���g�`55i5can_liftcoe3�}�W�X��Z�
�\��_��a��H6��%iclassicalsome4x�5��3
	can_liftprf3}�)funextx}�f�}��Ficlassicalsome_spec3�>�E�PInfo�U,	decl�T��V�W�X��Z�
�\�can_lift5��e	)�W�X��Z�
�\��;5��cf�c�f
��)f���U��V	�PInfo�T,	prt�TVMR�TVMC�T,	�f�u�\�Z�X�Wdoc�TEnable automatic handling of pi types in `can_lift`.decl�Tequations_eqn_1��V�W�X��Z�
�\���?�V�d�T?@B	�z�W�X��Z�
�\��E�d���PInfo�x,	ATTR����xEqnL�xSEqnL�TATTR����Tclass�t�T��decltacticget_lift_prfhoptionpexprold_tp�{new_tp�{inst�{e�{ssimp_lemmasto_unfold�7�U�{�{���~�{��{���{���{�������7�;��ditecoe_sortFF�Tcoe_sort_bool�|is_some��5booldecidable_eq���z��h_some�����yi_to_exproptionget��prf�{����prf_ty�{���ymk_app�m
Strcond�����{G����5�����{Ftransparencysemireducibleexpected_prf_ty�{�i�9�{has_orelseorelse�Ualternativeto_has_orelse�Utacticalternative�9�yunify���ff���9��dsimplify
tacticdsimp_configmktactictransparencyreduciblesimpdefault_max_steps�z���z�z�z�z�z�z���zexpected_prf_ty2�{�iformat�9has_appendappendtacticpformat��has_append����to_pfmt�Ahas_to_format_to_has_to_tactic_format�Astringhas_to_format
Strlift tactic failed. The type of��pformatmkformatline�����
Str  ���{exprhas_to_tactic_format	�����
Str������
Stris�����������
Strbut it is expected to be�������yfail�9��formathas_to_format_x�9���{	��not���i�6�{�yget_unused_name�m
Str_x�p�SYprf_nm�6��������������
�����yassertprf�{���ydsimp_target�@��opt_paramF�����S���D���dcoe_option��
	��_x�9���yswap_x�9�:�PInfo�z?	VMR�z_lambda_1VMR�zVMC����?	��f_fresh
���{��_fresh
���{��_fresh
���{��_fresh
���7��_fresh
������simp_lemmasdsimplify	��f�%o�% �%e�%p�%y�%t�% �%e�%h�%T�% �%.�%d�%e�%l�%i�%a�%f�% �%c�%i�%t�%c�%a�%t�% �%t�%f�%i�%l�%�'�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)stringhas_to_format����to_pfmt	��formatcompose	�	
	��	formatline��pformatmk	��
�
�	
	����	�	
	���	 �% �%�'�)�)������	��
���
	������	�
�

�
� 
	�!�'
���,
	�-���'������	�6�<��
�A
	�B�T
����	�F�M�R�Y
	�Z�`��
�e
	�f��
s�%i�%�'�)�)������	�y�����	��������	��������	��������	���� �% �%�'�)�)������	��������	��������	��������	��������	���r�'������	�������	������	����	��"���'	�(�^e�%b�% �%o�%t�% �%d�%e�%t�%c�%e�%p�%x�%e�% �%s�%i�% �%t�%i�% �%t�%u�%b�%�'�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)������	��������	��������	��������	��������	���J �% �%�'�)�)������	��������	���
����	�����	�����	��6�'������	�(�/�4�;	�<�C�H�O	�P�W�\�c	�d�k�p�w	�x�����	��������
	����

��
��
	����
��
��	
	����	��?fail��	
VMC�z�1?	a�f���7�������{���{��{�~�{�{��optionis_some_main��_main	��#x�%_�%�'�)�)�+tacticget_unused_name	�	�#t�%f�%i�%l�%_�%n�%a�%c�%�'�)�)�)�)�)�)�)�)�+d�%n�%o�%c�%�'�)�)�)�)�+tacticmk_app	ek
Fassertp
	q���tacticdsimp_target	��
Fswap	��
��
�
	
��get_maintactici_to_expr	��+	�	��$�#t�%f�%i�%l�%_�%n�%a�%c�%�'�)�)�)�)�)�)�)�)�+d�%n�%o�%c�%�'�)�)�)�)�+��	��

��
tacticunifyinteraction_monad_orelse	����"
�)
	
decl�yliftp��t��h��n�7�V���������������7�;�V���9���ypropositional_goal�1�A��
Strlift tactic failed. Tactic is only applicable when the target is a proposition._x�9����
e�{����old_tp�{����new_tp�{��������������inst_type�{�����{�ymk_instance���{�����
StrFailed to find a lift from ������
Str to ������
Str. Provide an instance of��'�0�{���3inst�{�i�5���9�j���get_cache�7�9can_lift_attrl�7�mmap�U�g�6���yresolve_namecan_lift_instances���i�x���7�9�ymk_simp_set�z��listmap����simp_arg_type�ysimp_arg_typeexpr_p��_a�������7����V�����7�����yget_lift_prf�DG�1prf_cond�{	prf_nm���6iteF��expris_local_constant�����z���6�local_pp_name�z�S�6���ymk_mapp�m
Strprf�������{�@�{��D�{��h�{�B���1�����M�����prf_ex0�{	prf_ex�{coe_fnFF�{exprhas_coe_to_fun�z�H�9��neF�7���decidableF�7a�7b�7listdecidable_eq�6�!�6�"�6namehas_decidable_eq�.���U�6���6listhead�6nameinhabited�.������
���O�z�D�F��N�Pnew_nm�6�+��has_ltltYnathas_lti�'length�6natdecidable_lti�d�Dhn�e�F�'nth_le�6i�3�F�e�������.���v�z�D�F�m
Strrfl�p�J�m
Strh�p�Oeq_nm�6�+�Ptemp_nm�6���ynote�S�{	temp_e�{���ydsimp_hyp�k�1G��_x�9���yrcases�pexprof_expr��tacticlist_Pi�>rcases_patt�����yrcases_pattone
����	��������_x�9��when�U�g�F�����2�T�!�T�"�T�����z���yget_local
e�{�yinteractiverw��interactiverw_rules_tmk���Irw_rule�Lmkposmk��Ynathas_zero���z�������Sposinteractivelocwildcardtacticrewrite_cfgmktacticapply_cfgmk���z�Ynew_goalsnon_dep_first�z�z�z�z��occurrencesall_x�9���������6�1�,���'nth�6bit0Ydi�1anddecidable���������z�2���!���"��optiondecidable_eq�6�:���1�Vh_prf_nm��������6�Bandleft�����B�������B�yclear�g�F��yskip�PInfo��P	VMR��_lambda_1VMR��_lambda_2VMR��_lambda_3VMR��_lambda_4VMR��_lambda_5VMR��_lambda_6
VMR��VMC�l�rP	��f��_fresh
�H��{��_fresh
�H��{��_fresh
�H��{ �%m�%o�%r�%f�% �%t�%f�%i�%l�% �%a�% �%d�%n�%i�%f�% �%o�%t�% �%d�%e�%l�%i�%a�%F�%�'�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)������	�����	������	����	�����	��] �%o�%t�% �%�'�)�)�)�)������	�����	������	��	��	
�	��
���	��If�%o�% �%e�%c�%n�%a�%t�%s�%n�%i�% �%n�%a�% �%e�%d�%i�%v�%o�%r�%P�% �%.�%�'�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)������	������	��	
	����	����	����
��
��	
	������	��	
	���5	 �% �%�'�)�)������	����
����
	��������	����

��
��
	���
���	
	�
�!�'������	��

�
�&
	�'�.
�3
�:	
	�;�B	�G	
�N	�O�V�[�b	�c�l����VMC�mP	�VMC�nP	a��VMC�o&P	��f��_fresh
�IO�6tacticget_local	 pexprof_expr�IrwVMC�p�P	��f��_fresh
�I=�{��_fresh
�I9����_fresh
�I4�7��_fresh
�I3����_fresh
�H��{��_fresh
�H��7namehas_decidable_eq�$	
		,�,is_local_constant��	&�#x�%_�%�'�)�)�+��+�,local_pp_name2�*�#head_main	3��#length_mainnatdecidable_lt	9_����	>J�#h�%�'�)�+��^�#l�%f�%r�%�'�)�)�)�+f�#nth_le_main	g�
�#x�%_�%�'�)�)�+��	x�Fnote	���
��dsimp_hyp	��	
���>rcases	��	�o����	���	�����mwhen	������	����#nth_main���f_main	���	���	���	��tacticskip�����	��tacticclear�����
�
�	
	VMC�q
dP	
��f������_fresh
�I5�{���7������_fresh
�I&�{�w�{�z�{���{���7�#t�%f�%i�%l�%_�%n�%a�%c�%�'�)�)�)�)�)�)�)�)�+f�%r�%p�%�'�)�)�)�+tacticmk_mapp	M^
exprapp
��{
	�p
VMC���jP	��f���7������������.�%n�%o�%i�%t�%i�%s�%o�%p�%o�%r�%p�% �%a�% �%s�%i�% �%t�%e�%g�%r�%a�%t�% �%e�%h�%t�% �%n�%e�%h�%w�% �%e�%l�%b�%a�%c�%i�%l�%p�%p�%a�% �%y�%l�%n�%o�% �%s�%i�% �%c�%i�%t�%c�%a�%T�% �%.�%d�%e�%l�%i�%a�%f�% �%c�%i�%t�%c�%a�%t�% �%t�%f�%i�%l�%�'�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)�)������propositional_goal��	���d��	���]�	���V
��	���O	�#t�%f�%i�%l�%_�%n�%a�%c�%�'�)�)�)�)�)�)�)�)�+��	���H
	�l
tacticmk_instance��	���A�user_attributeget_cache	����tacticresolve_name��mlistmmap_main��	���:�n�#map_main��mk_simp_set	��3	�z	��,����	��������	�q	�1�8�?�F�M
�T
�[	
�b	doc��Lift the expression `p` to the type `t`, with proof obligation given by `h`.
 The list `n` is used for the two newly generated names, and to specify whether `h` should
 remain in the local context. See the doc string of `tactic.interactive.lift` for more information.decl�yusing_texpr�����;�]optional������has_seq_rightseq_right��applicativeto_has_seq_right���to_applicative���e���9���4parsertk
Strusinginteractivetypestexpr
�PInfo��	VMR��_lambda_1VMR��_lambda_2VMR��_lambda_3VMR��VMC��	a��VMC��L	s��g�%n�%i�%s�%u�%�'�)�)�)�)�)leanparsertk	"��'	(:��	,38?	@FVMC��	�3��VMC��	������parser_orelseTKto�NOTAtoto��decl�yto_texpr�����;�w�n�o
Strto�s�PInfo�ہ	VMR��_lambda_1VMR��VMC���	����VMC��1�	���o�%t�%�'�)�)��	��	+��	$)decl�yinteractiveliftp��parse�����exprreflect���st���yto_texprh�~�����optionhas_reflect����
Quote���yusing_texprn�~�7��7listreflect�6��6namereflect
Quote�6��with_ident_list�V������������������tacticlift	�PInfo�ޚ	VMR��VMC���	������������������doc��Lift an expression to another type.
 * Usage: `'lift' expr 'to' expr ('using' expr)? ('with' id (id id?)?)?`.
 * If `n : ℤ` and `hn : n ≥ 0` then the tactic `lift n to ℕ using hn` creates a new
   constant of type ℕ, also named `n` and replaces all occurrences of the old variable `(n : ℤ)`
   with `↑n` (where `n` in the new variable). It will remove `n` and `hn` from the context.
 * The argument `using hn` is optional, the tactic `lift n to ℕ` does the same, but also creates a
   new subgoal that `n ≥ 0` (where `n` is the old variable).
 * You can also use `lift n to ℕ using e` where `e` is any expression of type `n ≥ 0`.
 * Use `lift n to ℕ with k` to specify the name of the new variable.
 * Use `lift n to ℕ with k hk` to also specify the name of the equality `↑k = n`. In this case, `n`
   will remain in the context. You can use `rfl` for the name of `hk` to substitute it away.
 * You can also use `lift e to ℕ with k hk` where `e` is any expression of type `ℤ`.
   In this case, the `hk` will always stay in the context, but it will be used to rewrite `e` in
   all hypotheses and the target.
 * The tactic `lift n to ℕ using h` will remove `h` from the context. If you want to keep it,
   specify it again as the third argument to `with`, like this: `lift n to ℕ using h with n rfl h`.
 * More generally, this can lift an expression from `α` to `β` assuming that there is an instance
   of `can_lift α β`. In this case the proof obligation is specified by `can_lift.cond`.
 * Given an instance `can_lift β γ`, it can also lift `α → β` to `α → γ`, and similarly for
   general pi types, see `pi.can_lift`.EndFile