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�in,�inittacticlibrary_note���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_assocATTRinline��anddecidableATTR}��ordecidableATTR}��decidablefalseATTR}��xordecidableATTR}��iffdecidableATTR}��decidabletrueATTR}��impliesdecidableATTR}��notdecidableATTR}��nedecidabledeclhiddenu_1α�a���PInfo� VMR�VMC� ��decl�equations_eqn_1���eq����eqrefl�PInfo� ATTR_refl_lemma���EqnL�SEqnL�ATTRreducibility���declemptyelim_main_aux_param_0C�aempty��emptycases_on��PInfo�"VMR�VMC�"��decl�u_1�����PInfo�"VMR�VMC�"��decl�_sunfold� ����PInfo�"declemptysubsingletonsubsingletonsubsingletonintroa�elimbeq�PInfo�$	prt�VMR�VMC�decl�equations_eqn_1�*�6�*9�PInfo�$	ATTR����EqnL�SEqnL�ATTRinstance���class����declemptydecidable_eqdecidable_eqa�elimbdecidable1�PInfo�&	prt�VMR�VMC�&	��decl�equations_eqn_1.@�G�@I�PInfo�&	ATTR����EqnL�SEqnL�ATTR����class����declsortinhabitedu_1inhabited�inhabitedmkpunit�PInfo�(	prt�nspace�VMR�VMC�(	decl�equations_eqn_1��P��T�	PW�PInfo�(	ATTR����EqnL�SEqnL�ATTR����class����declsortinhabited'u_1inhabited�defaultW�`punitstar�PInfo�)	prt�VMR�VMC�)	decl�equations_eqn_1��a��e�
ah�PInfo�)	ATTR����EqnL�SEqnL�ATTR����class����declpsuminhabited_leftu_1u_2αβ�_inst_1]inhabited�psum��n�o�spsuminldefault�PInfo�+	prt�VMR�VMC�+	���decl�equations_eqn_1����n�o���t����n�o�t��PInfo�+	ATTR����EqnL�SEqnL�ATTR����class����declpsuminhabited_rightu_1u_2αβn_inst_1inhabited�t��n��ypsuminr�default�PInfo�,	prt�VMR�VMC�,	���decl�equations_eqn_1����n���������n�����PInfo�,	ATTR����EqnL�SEqnL�ATTR����classinhabited���decldecidable_eq_of_subsingleton_main_aux_param_0α_inst_1subsingleton�decidable_eq���a�id_rhsBeq�subsingletonelim��PInfo�.VMR�VMC�.����decl�equations_eqn_1_aux_param_0���ab.����������L�id_delta���PInfo�.ATTR����EqnL�decl�u_1����������PInfo�.prt�VMR�VMC�.���decl�equations_eqn_1������.B������������equations_eqn_1�PInfo�.ATTR����EqnL�decl�_sunfold������������PInfo�.ATTR�
�class��
declcoe_coeu_1u_2u_3αβnγ�_inst_1has_coe��_inst_2has_coe_t!aeq�coe �coe_to_lift ��coe_trans !����!���!��� !��� !��coe_base !����n�����
���rfl��)�PInfo�5doc�Add an instance to "undo" coercion transitivity into a chain of coercions, because
  most simp lemmas are stated with respect to simple coercions and will not match when
  part of a chain.ATTR����ATTRsimp���declcoe_fn_coe_transu_1u_2u_3u_4αβnγ�_inst_1�_inst_2has_coe_t_aux��_inst_3has_coe_to_fun#�x��
$has_coe_to_funF�$coe_fn_trans%"$�X�coe_base_aux%"�X���$"#$��coe_fn%$�X�gcoe_fn"$��f�3�X��6�X��9�X����n������S��U�!�rfl$�i�n�PInfo�8ATTR����ATTR����declcoe_fn_coe_baseu_1u_2u_3αβn_inst_1�_inst_2has_coe_to_fun�+�,x���#�*'��$(&'���]��coe_fn('���coe_fn&'��3���6���9���-�.n�/���0���2��H�����PInfo�)<ATTR����)ATTR����)declcoe_sort_coe_transu_1u_2u_3u_4αβnγ�_inst_1�_inst_2�S_inst_3has_coe_to_sort�8�9x��Vhas_coe_to_sortS�6*�Xcoe_sort_trans+�7*�X��`�D,)*��coe_sort+*�X��coe_sort,*����|�:�;n�<��=��>�S�?���A��������PInfo�5@ATTR����5ATTR����5declcoe_sort_coe_baseu_1u_2u_3αβn_inst_1��_inst_2has_coe_to_sort�I�Jx���C�H.��D/-.����coe_sort/.���coe_sort-.����K�Ln�M���N���P��H�����PInfo�GDATTR����GATTR����GPInfopemptyJ
indluCn�S�U�T�W��S�U�U�decl�Srec_on�T�U��V��W��Srec�T�U�PInfo�XJ
ATTR����Xauxrec�Xprt�Xdecl�Scases_on�T�U���PInfo�ZJ
ATTR����Zauxrec�Zprt�Zdecl�Sno_confusion_type�T�UP�
v1�v2��
�\�
�]��^��Z�T�U�]��
�PInfo�[J
ATTR����[prt�[decl�Sno_confusion�T�U�\�
�]��^�h12�0��[�T�U��\�
�]��^��`�%eqrec80�a�h1a�#��&��h11�#�Z89�]��3��PInfo�_J
ATTR����_no_conf�_prt�_decl�Ssizeof�Ux�nat�Srec�Ux��J�PInfo�fJ
ATTR����fprt�fdecl�Shas_sizeof_inst�Uhas_sizeof2�has_sizeofmk2��f;�PInfo�kJ
ATTR����kclass�l�k��prt�kgind�Sprt�Srecnspace�Sdoc�S`pempty` is the universe-polymorphic analogue of `empty`.ATTRderive���Slistconspexpr
Quotedecidable_eqlistnil�Vdecl�Sdecidable_eq�Udecidable_eq0�id0�__v��Z0�U�z���B�%�PInfo�wJ
VMR�wVMC�wJ
��zATTR����Sdecidable_eqclass��{��declpemptyelim_main_aux_param_0_aux_param_1C���pempty����j��k�Z@A��k�PInfo�~LVMR�~VMC�~L���decl�}u_1u_2����������~B���PInfo�}LVMR�}VMC�}L���~decl�}_sunfold�����v����t�ZCB��t�PInfo��Ldeclsubsingleton_pemptyu_1�pempty���D��a����elimD������PInfo��N	prt��VMR��VMC��decl��equations_eqn_1��7��������<�����PInfo��N	ATTR�����EqnL��SEqnL��ATTR�����classsubsingleton����declnot_nonempty_pemptyu_1notnonempty����_x��_a��nonemptydcases_onF������falseval����������PInfo��PATTR�����declforall_pemptyu_1P���iffx���true������intro����h��trivialh��x���Z��������PInfo��SATTR�����declexists_pemptyu_1P����Exists����x���������������h��Existsdcases_onH��������������w��h_h�������������falseelim���PInfo��VATTR�����declcongr_arg_hequ_1u_2αβ�nfa�a₁a₂���heq�������������������������dcases_on���t_1���X�H_1�H_2heq���������X���X����������bJ�X����X���������������
���������������/��������
�X��
�7heqrflI�
�7eqsymmJ�X��heqrefl��PInfo��Ydeclpliftdown_inju_1αaplift��b�\���downK�a�
K�\������]���^��epliftcases_onK����g����`��q�f�\���������q��upK��t�o����v����`�X�~�X���f�\���~�������������������`����t_1������`���~���H_1	�`���~���H_2��
�`���~���X���������f�\�~�������������������������������������������������������������������������������f�\������rflK�����D����3���P�������PInfo��\ATTRsymm��nesymmREL��declne_commu_1αab��ne�������������nesymmN�#�PInfo��bdecleq_iff_eq_cancel_leftu_1α��bc��a���f��/�f���-�������4�8h�4eqmpr�.�@id.���A�C�b:���A_a���F�f��L���A�C��:���C�Apropext�C�AeqreflP�h�8a��?���M��k���n�n�E�F�o�r�bP��_a��F���f���{����{�~�T�oiffrefl�n�PInfo��dATTR�����decleq_iff_eq_cancel_right�����-ab��c���@�.�8���-���������8h���B���E�G���V���\�A���fh�8a��?���N�M�������E�F�����y_a��F���z��z����z���T�������PInfo��hATTR�����declfalse_ne_true��������a�F������_x����eqsubst���������Y�������PInfo��rATTR�����decliff_of_eqa��b��e�F��������������_x�����iffrfl�PInfo��zdecliff_iff_eq��������������������������\iff_of_eq�PInfo�|decleq_iff_iffp��q�����������	����symm���iff_iff_eq�PInfo�~ATTR����declimp_self�������������iff_true_intro�"�E�PInfo��ATTR����declimp_introα��β��h���������_x�PInfo��declimp_false������������������3�PInfo��declimp_and_distribu_1���c��α���and��:�������������=�Bh�=andintro���+ha�left���ha�right���h�Bha�I���M�����S�]�_�PInfo��decland_imp��������������:���������������q�th�qha�hb��I��h�t_x�<_a�:���dcases_on���(�:���left�right�������PInfo�"�ATTR����"decliff_def���������:��A�������iff_iff_implies_and_implies�PInfo�,�decliff_def'���������:�A�����������trans�����iff_defandcomm���A�PInfo�.�declimp_true_iffu_1α��������5�&��_x���PInfo�3�ATTR����3declimp_iff_right�������ha���s��������8���sf�s��imp_intro�PInfo�7�ATTR����7declnotelimu_1����αH1��H2�����>�?���@absurd�=��PInfo�<�VMR�<VMC�<��@�?�>����decl�<equations_eqn_1�=�����>�?���@�_�<�=��������>�?���@���PInfo�C�ATTR����CEqnL�CSEqnL�<declnotimpa��b��H2�5H1�s����F���G���H�5�I�smt��PInfo�E�ATTR����Edeclnot_not_of_not_imp�����������������������������notelim�PInfo�K�declnot_of_not_imp���a������A�����O�����A���PInfo�N�decldec_emp��_inst_1Bor���Q���R�decidableem�PInfo�P�declby_contradictionp��_inst_1��������W���X�decidableby_contradiction�PInfo�V�declnot_not����_inst_1������������\����+by_contradictionnot_not_intro�PInfo�[�ATTR����[declof_not_not����_inst_1���+�����`��4�PInfo�_�declof_not_imp�������_inst_1Bh���s���������b�@�c�A�2�not_not_of_not_imp��PInfo�a�declnotimp_symm�������_inst_1�@h��hb����������g�@�h�Q�i��2�functioncomp�������PInfo�f�declnot_imp_comm�������_inst_1�@_inst_2�@�����������������m�@�n�@���f�hnotimp_symm��p��PInfo�l�declimpswap�������������t����������������t�functionswap��������PInfo�r�nspace�qdeclimp_not_comm���������������������impswap���PInfo�u�declnot_and_of_not_left����b��������p�����y�����:�M�PInfo�x�declnot_and_of_not_righta��b����5���{���|�����S�PInfo�z�declandimp_left����������h�s��;�<������������sandimp��E�PInfo�~�declandimp_right����������h�s�����o��������������s������PInfo���declandright_comm�������������:�p�:�o�����������?�����E�F����eqtrans:�������o������a������e_1��b������e_2��congr::����������congr_arg::����������������������o�:���
��p��\������p�\��andleft_comma������e_1��b������e_2����������:��T����\��������������������\���D�����\�D����\����iff_self�����PInfo���declandrotate��������������������������?�d���E�F�d�����d�����
�����T���c�����c�D���2�T�b���\�b���;�R�Z���PInfo���decland_not_self_iffa������5������������h����������h���������PInfo���declnot_and_self_iffa�����:�5������������_x��_a�:��������:����*��+���������PInfo���decland_iff_left_of_impa��b��h�����p���������������p�Mha�I���PInfo���decland_iff_right_of_impa��b��h�A�������������A���Shb����PInfo���declandcongr_right_iff�����������������������������������h��ha�eqmp���������
��������:�����2����\����&����T��\���true_and������������5�\�
�and_congr_right�PInfo���declor_of_or_of_imp_of_imp����������d��h₁��h₂���h₃�)��������������������(���)���)orimp�X����PInfo���declor_of_or_of_imp_left����������h₁�h����(�������������C���Dorimp_left���PInfo���declor_of_or_of_imp_right����������h₁�h�D�B��������������V���Dorimp_right���PInfo���declorelim3��������������h�'�Bha��hb�)hc���������������������i���j���)���korelim����X���h₂�w�u�X��PInfo���declor_imp_distrib��������������h�:�������������������h���I�~�sha�orinl��hborinr��_x��_a�:�~�s���)�D���:�)�D������*�)�+�k��n�w�orrec�X���PInfo���declor_iff_not_imp_left�������_inst_1�@���h�Q����������@���h�Qorresolve_lefth�Qdite��(����Y���(����PInfo���declor_iff_not_imp_right�������_inst_1��������������������h���orcommor_iff_not_imp_left�PInfo���declnot_imp_not�������_inst_1�@������+����������@�����+h��hb�Xna�Z����PInfo���decland_or_distrib_left�������������o���p���������������	�	_x�	_a�;�h����(�����(�������*��+�+����:�X��	#��3���	$�	&�I�X��	-����p���	andimp_right�	���	@�	���PInfo����declor_and_distrib_right�������������:�h������������������	T��b��	W�	\��h�	^���hand_or_distrib_leftor_congr�b��������<�PInfo���declor_and_distrib_left�������������B���	S�C�������������	x�	z�����	zha�I�(�'�������h�C���	�andrec�h�C�	x�	���C�'�p�Y�	x�	����	x�C�����Ya�p�	��]���I�PInfo���decland_or_distrib_right�������������	�:�C�	�������������	��:�V�U�	��	��U�p�	����por_and_distrib_leftand_congr�V�	��C�	���	��PInfo���
decliff_of_true�������hahb����������������_x�_x�PInfo���decliff_of_false�������ha��hb�������������������	������PInfo���decliff_true_left�������ha����������������h����mp�iff_of_true�PInfo��decliff_true_right�������ha��������������
��iffcommiff_true_left�PInfo��decliff_false_left�������ha���
�������������
��h�������mpr�iff_of_false�PInfo��decliff_false_right�������ha���
�������������
���
"iff_false_left�PInfo��declnot_or_of_imp�������_inst_1�@h�s������������@��s���
Rha����Z��������Z��PInfo��!declimp_iff_not_or�������_inst_1�@�������������@���
gnot_or_of_imporneg_resolve_left�PInfo��$declimp_or_distrib����������_inst_1B�����(��D�~������������
y�?�
~���E�F�
~�����
~���B����
����
�
z�
����
z�B�
Q�
��
��
Q�h�
��\�
z�
�imp_iff_not_or��h�\�
��
�orleft_comm����������e_1����������e_2�������*����5�
��
��\�
��
������
}�
����
}��B���
��
����
����
��
��
��
��
��
��D�
����D�
R�
��\�D�
R�
��\�
R�
��
��~�
����~�
��
��\�~�
��
��
��\�
��
��
��
����
��{�
��
����
��B�
Q���
���
Q�
���\�
�����
����\���
����
�����\���or_self���\�
��
��
����\�
����X�
����PInfo��'declimp_or_distrib'����������_inst_1�@�
~�����������%�@���
~h�?�����+��k�)���E�F�@�����@���������
�<�����<������imp_congr_eq��(����T����(������
�����\����&��5�\�Z��true_or�\�N���3��?�����?�Y�)���
��k�����k�N���R�����V�c�u�)�)�T�)�\�{���k�)�\�H���X�����&��B�E�F���)�)���K�)�T�V�X����]���_��iff_false_intro��5�\��false_or�?�)�z������)�)�~�������V���)�)���\���)or_iff_right_of_imp���)�Y������\�����X�)���PInfo�$�*declnot_imp_of_and_not�����������5�A�������������s������;���a_left�a_right�����PInfo�,�-declnot_imp�������_inst_1�@���A�o����������0�@���A�h�A���of_not_imp�not_of_not_imp�not_imp_of_and_not�PInfo�/�0ATTR����/declimp_imp_imp��������������h₀�Jh₁�~�����k���������������6�J�7�~h₂��������X��PInfo�5�4declpeircea��b��_inst_1�@���s���:���;���<�@�:�5hah��D��=�h�:����PInfo�9�:declpeirce'a��Hb������A���B�I�����PInfo�@�=declnot_iff_not�������_inst_1�@_inst_2�@�����������������E�@�F�@�?�R���:��������Z���E�F�R�]�K�P_a���F�����Z��������f�T�R�[�\�P�[������?�]�\�:�_�D�E�F�]�|�K��_a���F���:��Z�Z�������f���T�]�{�\���{iff_def'��	��X�Z�_�Dnot_imp_not�����PInfo�D�?declnot_iff_comm�������_inst_1�@_inst_2�@���O������������L�@�M�@�?�����:�f��Z���E�F�����K��_a���F���c��O��i���T�����\�����s�?�����:�h�����E�F�����K��_a���F���:��Z����������T�����\���������	��f���h��not_imp_comm�imp_not_comm��PInfo�K�Bdeclnot_iff�������_inst_1�����������������S����
�
h�
����h'���&�a_1���?������E�F�
�����
���������
����\�����������������\�
���X�����U�E�Za_1��
�
�
�H���
 ���
"���&�������������T�
�E�����U�����O����K�
Y_a���F�c��T�
Y���\�
Y��not_iff_self������
Y�K�_a���F��������5��T�������PInfo�R�Edecliff_not_comm�������_inst_1�@_inst_2�@�����������������\�@�]�@�?�
����:���h�
��E�F�
��
��K�
�_a���F���������Z�i�
��T�
��
��\�
��
������?�
��
��:���f�E�F�
��
��K�
�_a���F���:���Z�����
��
��T�
��
��\�
��
������	����h���f�������PInfo�[�Idecliff_iff_and_or_not_and_not�������_inst_1��
�	������������a��
�
�h���?��<�:�����o����E�F�
��
��K�_a���F����:�Z����������T�
��_�9�
�h���;��
�������d����	��I�����b�
�ordcases_on�<�
��b�
��fh�<�	��g���
h_left�h_right����X�a_1�Xa_1�h�
����Z���l�
��
h_left�Zh_right�Z�*a_1�Xabsurd���Xa_1��9�X���PInfo�`�Ldeclnot_and_not_right�������_inst_1�������s��������s����P�sh�Pha��q�����[��h�s_x��_a�X���Z�x���Z���*��+�������PInfo�r�QATTR����rdecldecidable_of_iff���a��h�iD�@B�����z���{�t�|�@decidable_of_decidable_of_iff��PInfo�y�TVMR�yVMC�y�T�|�{�z�����decidable_of_decidable_of_iffdecl�yequations_eqn_1����z���{�t�|�@.�u�y��~����z���{�t�|�@L�u���PInfo���TATTR�����EqnL��SEqnL�yATTR}���ydecldecidable_of_iff'����b��h��v�����������D�@�}���PInfo���WVMR��VMC���W�������������~decl��equations_eqn_1��������������@���������������������@�����PInfo���WATTR�����EqnL��SEqnL��ATTR}����decldecidable_of_bool_main����bboolh��coe_sort��coe_sort_bool�
y������������boolcases_on���������B���������ff��u������
3���boolff_ne_tt��������tt�����
���rfl�����PInfo���ZVMR��VMC���Z����������	decl��_proof_1����h��������������������PInfo���Zdecl��equations_eqn_1��������.�@����������������L�@��@���PInfo���ZATTR�����EqnL��decl��_proof_2����h��������������PInfo���Zdecl��equations_eqn_2���������������������������PInfo���ZATTR�����EqnL��decl�����������PInfo���ZVMR��VMC���Z������decl��equations_eqn_1����������������������equations_eqn_1�PInfo���ZATTR�����EqnL��decl��equations_eqn_2���������� ���������equations_eqn_2�PInfo���ZATTR�����EqnL��decl��_sunfold�����PInfo���Zdeclnot_and_of_not_or_not�������h����5������������4���p�����<��a_left�a_right����t���Z����9����9����PInfo���`declnot_and_distrib�������_inst_1�@�����
f������������@�����Qh�����
Q�ha��
X���������
]��not_and_of_not_or_not�PInfo���cdeclnot_and_distrib'�������_inst_1��R�����������Wh����Xhb�^ha��|����Z�f�PInfo���fdeclnot_and����������������������and_imp���PInfo���iATTR�����declnot_and'�������������������������not_and���PInfo���kdeclnot_or_distrib������������	���5�������������h���I���ha�	�hb��_x��_a�
���������
����+�*���+����h���������t�X����PInfo���ndeclor_iff_not_and_not�������_inst_1�@_inst_2�@���(���
�����������@���@�?���������(�E�F�����K�
�_a���F���+���
����5�T�����Y���
��\���
�not_or_distrib��?�����(�E�F�����K��_a���F���������T���(�\���(not_not�(ordecidable����(�PInfo���rdecland_iff_not_or_not�������_inst_1�@_inst_2�@���<���X����������@���@�?�������<�E�F���K�X_a���F������Z�����5�T���Y��X�\��Xnot_and_distrib��?���<�E�F��<�K�_a���F�����������T��<�\��<���<anddecidable����<�PInfo���udeclheq_iff_equ_1αab�������_���������e�heq_of_heqVheq_of_eqV�PInfo���ATTR�����declproof_irrel_heqp��q��hphq���������������
this�F�
�
n���������X�����P���AnnotcheckpointAnnothave��	��PInfo����declne_of_mem_of_not_memu_1u_2αout_param���-β��_inst_1has_memWZsa�b�hhas_memmemWZ���������X�����X������������������������������f�X��e����W��_x���������X���PInfo����decleq_equivalence����equivalenceV���IreflexiveV���:symmetricV��transitiveV���I�����DeqtransV�PInfo����declheq_of_eq_mpu_1αβaa'e�f�h₂�eqmp�����a���������������������]�t_1�����XH_1�
H_2����������
�a�������X�������w�X�������
���_���������������*���e���a���������X�������������������X����������F�0����_x���4
��Annotinnaccessible�eqrec_on]������
��Annot��������O�heqrefl]�������]��X��0��P�����PInfo����declrec_heq_of_heq��u_2������βnC��nx�yeq����h����X�����Xeqrec�
V�������X��������n����
���������eqdrecV����������������X�������X�����X�PInfo�	��decleq_mpr_hequα�β�h�
��x��aeqmpra�����������u���������������heqrefla������d����PInfo���ATTR����decleqcongr����x₁x₂y₁y₂�h₁���h₂�����������"�#�$�%��&���'�����$�X�����X�������%�X��������PInfo�!��prt�!decleqcongr_left����xyzh����������*�+�,�-� �?�$���#�#�E�F�$�,���_a��F����������6�T�$���#�PInfo�)��decleqcongr_right����xyzh� ����������1�2�3�4� �?�P���O�O�E�F�P�X�2_a��F���Q��Q����Q�_�T�P���O�PInfo�0��declcongr_arg2u_1u_2u_3α�-β��γ�9f�tx�x'�y�y'�hx�f���hy�
�8���
f���7��X��:�-�;���<�u�=�t�>��?��@��A��B�x�C�|�w����?���}���	�����bg����A�����	��e�����PInfo�6��declExistsimpu_1αq���p���ha����p���a������a����G�H���I���J���L��exists_imp_exists�F��K������PInfo�E��declexists_imp_exists'�Fu_2�Gβnp��q��f�Dhpqa�������hp���a������Q�b����G�Rn�S���T���U�D�V���X��existselimk�X�Y�X���a�Xhp'����introl���Z���X�����PInfo�P��declforall_swap�F�Q�G�Rnp�����xy��yx��	�G�Rn�a��������functionswapkl�b�c��functionswaplk�d�e��	�PInfo�`��declexists_swap�F�Q�G�Rnp������x�����y����G�Rn�k������_x�_a���l����y�������l�����p����o���.�+�m����Xx�X��w�h�-��l��p���s���>���X�m�X�����q����h_w�h_h�=�������m�������q�������Q�_k���q�����_x�_a��m���q����:��m����q����w�%�r���l����p���r��s�q���X�q�X���s�1�������l���K�p����h_w�Xh_h����B�l�������p�����W�����p���(��PInfo�j��declexists_imp_distrib�F�G�I��b������x��x����G�I���{��������h��x�hpx���V��|���h��_x���|���_a���|����������������r�h_1�����PInfo�z��ATTR����zdeclnot_exists_of_forall_not�F�G�I��hx��������G�I�������
3������}�����exists_imp_distribk�����PInfo����declnot_exists�F�G�I��������x����G�I���������PInfo����ATTR�����declnot_forall_of_exists_not�F�G�I�����x����x���G�I�������������������������a_w�a_h�����PInfo����declnot_forall�F�Gp��_inst_1B��_inst_2xB������x�����G�������
��������p��nx���x��p����x�������h�����V�X���X����not_forall_of_exists_notk����PInfo����declnot_forall_not�F�G�I��_inst_1B������x�������G�I�����:�
�����<�?not_iff_comm���<���<��not_existsk��notdecidable���O�PInfo����ATTR�����declnot_exists_not�F�G�I��_inst_1xB������x�;���G�I�����\�?�a���E�F�a�����a���������
�_����������x���qx���\�t�w�N�]forall_congr_eqk�����;�����\��������������T���\�l���X�����PInfo����ATTR�����declforall_true_iff�F�����PInfo����ATTR�����declforall_true_iff'�F�G�I��ha�������a�����G�I�������&��_xof_iff_true����PInfo����declforall_2_true_iff�Fu_2�Gβ����a�������G����forall_true_iff'k����_xforall_true_iff����PInfo����ATTR�����declforall_3_true_iff�Fu_2u_3�Gβ��γa�����ab����������G��������������_xforall_2_true_iff�������������PInfo����ATTR�����declforall_constu_1�{��α_inst_1]���+�{�����������+h�+arbitrary��hbx�PInfo����ATTR�����declexists_constu_1�{��α_inst_1������x��{������������_x��_a������������������r��s����Xh�V�����PInfo����ATTR�����declforall_and_distrib�F�G�I���H����x�:����:��x��G�I���H������h��I������x��M�����x��S�����_x�_a�:����x�����������:�-�/����:�����*�-�+����������X�:����x�X�I��������PInfo����declexists_or_distrib�F�G�I���H�����x��������x��G�I���H�����Q�V_x�Q_a�����������*�������������c�����������r��s�b����1x�X���1���X���t�u���rhpx�u�������������������V���xhqx�����y�|�~�{hepq�V�t����������`_x��_a���������1���X������r��s����������������~�������u_x��_a����������g���h���r��s�����������u�PInfo����declexists_and_distrib_left�F�Gq��p�����x�o����U�G��������������_x��_a������;���*����������������h�r��s�������s�����	#�|h_left�h_right�<���:���Bx�����I�����W���_x��_a�o���������;������������*��+�h�~�p�+�q����������right_w�Xright_h�����B�����:�����W�������PInfo����ATTR�����declexists_and_distrib_right�F�Gq��p�����x�:��:�U�G���������?�/���E�F�/�����/������:���
�+�:���+���������pa���������e_1�k:�������q:����������*��funextkx���*�����\�)��and_comm��\����o�C�F��k�T�.�:�\�:�9�:�d�9�\�<���X�:���PInfo����ATTR�����declforall_eq�F�G�I��a'��a������G�I��������h����rflk�h�a�e����k�_x�����D���PInfo����ATTR�����declexists_eq�F�Ga'��a�_�G�	�V�����PInfo���ATTR����declexists_eq'�F�Ga'���G��������PInfo���ATTR����declexists_eq_left�F�G�I��a'���a�:������G�I��������_x��_a�����:�����*���:�9�����������r��s��������u�s�:���u�7h_left��h_right�X��_x���M�X��������Xh��V����I������PInfo�
��ATTR����
declexists_eq_right�F�G�I��a'���a�����G�I���������exists_congrk���a������exists_eq_leftk�PInfo��ATTR����declforall_eq'�F�G�I��a'��a������G�I����?�/���E�F�/�����/������
�-���x����"������������������,�����Q��������\���eq_commk��T���\�������J��k�I���T��\�9���X����PInfo��ATTR����declexists_eq_left'�F�G�I��a'���a�:�����G�I���"�?�����E�F���������9���
����������J�Y����_x�~�$���#�2����Z�����\�\���������J�%�I���o�u���PInfo�!�ATTR����!declexists_eq_right'�F�G�I��a'���a����G�I���&�?�����E�F���������9���
���������J�Y����_�$���$��'�2�����\����Z�\���:�����J�k�I���o�u���PInfo�%�
ATTR����%declforall_or_of_or_forall�F�G�I���{��h�U��x��B���G�I���{���)���*��]�-��h₂�-���PInfo�(�
declforall_or_distrib_left�F�Gq��p��_inst_1�@��x��'���B��G�-���.���/�@���
�h�
���'�/hq����9�2�����9x��������forall_or_of_or_forallk����PInfo�,�declforall_or_distrib_right�F�Gq��p��_inst_1�@��x��N����G�6���7���8�@�?�3���E�F�3�����3�������
�/������9��]�x��9��*���Bx�������9��.�9��	�9��\�.�	or_comm����\�0��'�N�Pforall_or_distrib_leftk����2��\�2��Y��\�?���X����PInfo�5�declforall_iff_forall_surju_1u_2α�-β��f��hfunctionsurjective�?�@P�H��a���b���A�-�B���C���D���G�H������ha��b���s�Xa�X�y�X��_xExistsw�X������a�Xhab���?������E�F��������_a���F�����T������u������hb��a����PInfo�>�doc�>A predicate holds everywhere on the image of a surjective functions iff
   it holds everywhere.declexists_propp��q������h���U���V��������_x��_a���W����W���Y��������r��s������~_x��_a�p�8�[�<����W���*��+�������W���_����PInfo�T� ATTR����Tdeclexists_false�F�G����a���G_x�_a���]�����]���_�����r�s�����PInfo�\�#ATTR����\declExistsfst�{��p������{���b����������a_wa_h������PInfo�a�%declExistssnd�{��p��h�Existsfst�{���g���h���h��&�h_wh_h�������PInfo�f�(declforall_prop_of_truep��q��h��h'����n���o���pforall_const���PInfo�m�+ATTR����mdeclexists_prop_of_truep��q��h����h'����t���u���vexists_const��H�PInfo�s�.ATTR����sdeclforall_prop_of_falsep��q��hn���>���z���{���|���&�=h�	����PInfo�y�1ATTR����ydeclexists_prop_of_falsep��q��������N�����������h'��&�l�PInfo�~�4ATTR����~declclassicalnot_forallu_1αp������x���������not_forall������prop_decidable�����~��PInfo���@prt��decl��not_exists_not���������������u������not_exists_noty�����PInfo���Bprt��decl��forall_or_distrib_left����q��p����x�B��������������d�T�~�PInfo���Dprt��decl��forall_or_distrib_right����q��p����x��������������forall_or_distrib_righty�T���PInfo���Hprt��decl��forall_or_distrib��u_2��βnp��q����x�y�������1y�����n���������?�����9��N������E�F�����K��_a���F���������������/�����T�����Y�����\������������~���?�����E�F�����������9��0������
�����T�������R�9����9����9��\�N��������forall_or_distrib_left��������~���\�������X�����PInfo���Lprt��decl��casesp�����h1��h2��a�������������a����cases_on��PInfo���Pdecl��or_notp���U�5������by_cases�+���5���5�PInfo���Sdecl��or_iff_not_imp_leftp��q�����	����������������PInfo���Vprt��decl��or_iff_not_imp_rightp��q�����	��8��������or_iff_not_imp_right���PInfo���Yprt��decl��not_notp�������5�������~�PInfo���\prt��decl��not_imp_notp��q����������A�������������PInfo���^prt��decl��not_and_distribp��q�����4���������2���PInfo���`prt��decl��imp_iff_not_ora��b�������3���������
����PInfo���bprt��decl��iff_iff_not_or_and_or_nota��b����:�e��5���������?�q�����p�E�F�q�v�K�_a���F�
�:�
g�B���i�~�T�q���\������?�v���:�U���o���E�F�v���
�����2���������e���\���e�k�\�e�������A�o���A��5�o�\�A���
��O�\���o���5�p���2�e�����o�o�T�o�����PInfo���dncomp��decdecl��p��������O�PInfo���kncomp��dec_preddecl������p��decidable_predy������a���PInfo���mncomp��dec_reldecl������p���decidable_rely���������~���PInfo���oncomp��dec_eqdecl��u_1�����~�h�PInfo���qdecllibrary_note_3601811328prodstring��prodmk����
Strclassical lemma
StrWe make decidability results that depends on `classical.choice` noncomputable lemmas.
* We have to mark them as noncomputable, because otherwise Lean will try to generate bytecode
  for them, and fail because it depends on `classical.choice`.
* We make them lemmas, and not definitions, because otherwise later definitions will raise
  "failed to generate bytecode" errors when writing something like
  `letI := classical.dec_eq _`.
Cf. <https://leanprover-community.github.io/archive/113488general/08268noncomputabletheorem.html>�VMR��VMC���
�acharof_natm��m��e��l�� ��l��a��c��i��s��s��a��l��c��stringemptystringstr����������������������������>��l��m��t��h��.��m��e��r��o��e��h��t��e��l��b��a��t��u��p��m��o��c��n��o��n��8��6��2��8��0��/��l��a��r��e��n��e��g��8��8��4��3��1��1��/��e��v��i��h��c��r��a��/��o��i��.��b��u��h��t��i��g��.��y��t��i��n��u��m��m��o��c��-��r��e��v��o��r��p��n��a��e��l��/��/��:��s��p��t��t��h��<�� ��.��f��C��
��.��`��_�� ��q��e��_��c��e��d��.��l��a��c��i��s��s��a��l��c�� ��=��:�� ��I��t��e��l��`�� �� ��
��e��k��i��l�� ��g��n��i��h��t��e��m��o��s�� ��g��n��i��t��i��r��w�� ��n��e��h��w�� ��s��r��o��r��r��e�� ��"��e��d��o��c��e��t��y��b�� ��e��t��a��r��e��n��e��g�� ��o��t�� ��d��e��l��i��a��f��"�� �� ��
��e��s��i��a��r�� ��l��l��i��w�� ��s��n��o��i��t��i��n��i��f��e��d�� ��r��e��t��a��l�� ��e��s��i��w��r��e��h��t��o�� ��e��s��u��a��c��e��b�� ��,��s��n��o��i��t��i��n��i��f��e��d�� ��t��o��n�� ��d��n��a�� ��,��s��a��m��m��e��l�� ��m��e��h��t�� ��e��k��a��m�� ��e��W�� ��*��
��.��`��e��c��i��o��h��c��.��l��a��c��i��s��s��a��l��c��`�� ��n��o�� ��s��d��n��e��p��e��d�� ��t��i�� ��e��s��u��a��c��e��b�� ��l��i��a��f�� ��d��n��a�� ��,��m��e��h��t�� ��r��o��f�� �� ��
��e��d��o��c��e��t��y��b�� ��e��t��a��r��e��n��e��g�� ��o��t�� ��y��r��t�� ��l��l��i��w�� ��n��a��e��L�� ��e��s��i��w��r��e��h��t��o�� ��e��s��u��a��c��e��b�� ��,��e��l��b��a��t��u��p��m��o��c��n��o��n�� ��s��a�� ��m��e��h��t�� ��k��r��a��m�� ��o��t�� ��e��v��a��h�� ��e��W�� ��*��
��.��s��a��m��m��e��l�� ��e��l��b��a��t��u��p��m��o��c��n��o��n�� ��`��e��c��i��o��h��c��.��l��a��c��i��s��s��a��l��c��`�� ��n��o�� ��s��d��n��e��p��e��d�� ��t��a��h��t�� ��s��t��l��u��s��e��r�� ��y��t��i��l��i��b��a��d��i��c��e��d�� ��e��k��a��m�� ��e��W��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ATTRlibrary_note����unitstardecl��exists_cases_proof_1��������h��a���classicalsomeyx�y����������classicalsome_specy���PInfo���~ncomp��decl����u������C�H0Ha�������������������dite�����~���������������������������PInfo���~decl��equations_eqn_1�������������������"���������$���������������{�0�PInfo���~ATTR�����EqnL��SEqnL��ATTRelab_strategy����decl��some_spec2u_1αp��h��q�Hhpqa������������������������H���A�B������PInfo����decl��subtype_of_exists_proof_1u_1α�-P��h���������������-�������Xclassicalsome_spec����PInfo����ncomp��decl�������-�������Xsubtype������-�������Xsubtypemk����Z�������PInfo����doc��A version of classical.indefinite_description which is definitionally equal to a pairdecl��equations_eqn_1�����-�������XU�j�����x���-�������XZ�j���PInfo���ATTR����EqnL�SEqnL��declexistsclassical_rec_on_proof_1u_1��	�PInfo���ncomp�decl�u�αp��h��C�Ha������������	��
���D�����PInfo���decl�equations_eqn_1����������	��
���"���������������	��
���8���PInfo�
��ATTR����
EqnL�
SEqnL�ATTR�����declbex_defu_1αp��q�����x����h�����x��������������_x��_a��������������*���������������������4�r��s�����u��u�<�s���u��������:����h_w�uh_h�<���B����:�M���W����I����X�_x��_a�����:�����*���:���������������������u�r��s�����u���s�:�u����������������h_left�uh_right�<���B������M��M���W�������������PInfo���declbexelim�����Px����b�����x���h�����a�h����������� �0�"����4��7���#����$���v����@�a_w�a_h�?�����$�����(�����H�a_h_w��a_h_h�G�����PInfo���nspace�declbexintro������ �0ah₁��h₂���B����� �0�-�.���/�����@����h�����PInfo�,��declball_congr������ �0Q�!�����Hx�h����������x�h����x�h��������� �0�2�t�3�xforall_congr���6��y�8��|x�forall_congr���7�����9������PInfo�1��declbex_congr������ �0�2�tH�x����x�������x���������� �0�2�t�>�x������x�exists_congr��������PInfo�=��declballimp_right������ �0�2�tHx�h�������h₁�zx�h��������� �0�2�t�E���H�z�I��J�������PInfo�D��nspace�Cdeclbeximp_right������ �0�2�tH�������x���h��������� �0�2�t�M������A��B�1�N�X�����O���va_w�a_h�?�I�Q�K�B�N����O�M��a_h_w��a_h_h�G���L�N�������O�����V�����������O������PInfo�L��declballimp_left��r�������HHx������h₁x�����ux�h������V�������H�W��Y��[��\�������PInfo�U��declbeximp_left���V�������HH����x���_x���u��x���_x������V�������H�_������`����a��������(�1�b�X���c����a_w�a_h�'���a�u�(�e���2�B�b�����c����a_h_w�ua_h_h�(���L�b���
�c�������@������c��������PInfo�^��declball_of_forall�����h�u�������i�u�T�PInfo�h��declforall_of_ball��������H��hx�������/��������k���l�`x�����PInfo�j��declbex_of_exists��������H�������x���_x������������p������*��������q����r���ua_w�a_h�����1�q�X���r�����%�����u�r�u�<���PInfo�o��declexists_of_bex����������x��_x�������������������v����w�����������a_w�a_h�������w�����y�������qa_h_w��a_h_h�����|����PInfo�u��declbex_imp_distrib������ �0b������4x�h����������� �0�}���?�����E�F�����������}��}���������
���������x�x������}��������}��}���5�\���������������R�}�����}����}��\���x���������}�������z�������������T���\�������X�����PInfo�|��ATTR����|declnot_bex������ �0�����x��h����xh����������� �0bex_imp_distrib���������PInfo����declnot_ball_of_bex_not������ �0��x��h�����x�h��������� �0��.���0�*�����������������9��a_w�a_h�8�����u���=�����@��a_h_w�ua_h_h�?���O�PInfo����declnot_ball������ �0_inst_1B�._inst_2x�h��B�������z�;����� �0���S���V���W�;�p�;�znx���;x�h���p�v��x���
h��������h'���v�W��������M�������(���(����not_ball_of_bex_not����������PInfo����declball_true_iff��p����x����������&��hhrx����PInfo����declball_and_distrib������ �0�2�t��x�h���:�����:�0x�h��������� �0�2�t����a��:����������������������x������forall_and_distrib���1������forall_and_distrib�������������PInfo����declbex_or_distrib������ �0�2�t����x���h���������4��x���������� �0�2�t������a��������������������x������exists_or_distrib���1��exists_or_distrib�������������PInfo����declclassicalnot_ballu_1αp��P�0����xh�����.���������0not_ball�����%�~�.���������PInfo����ATTR���nonempty_of_inhabiteddeclexists_true_iff_nonemptyu_1α����a����������_x�_a�������������������r�s���������intro���_x�_a��������������������/��.���PInfo����declnonempty_Propp����nonempty�������@_x�@_a�?�����?������h���PInfo����ATTR�����declnot_nonempty_iff_imp_falseuα������nonempty��3���[���^�3h�^a���h�3_x�\_a�\�������\�����������PInfo����declnonempty_sigma��w���[γ�����nonempty��sigma�������anonempty�����[���}������_x��_a�~��I����������~����������������sigmacases_on���������������������val_fst�val_snd�������X���X�����_��X������u_x��_a���������������������������~���r��s��������s�����~��Xa�X���s��������������mk���X���PInfo����ATTR�����declnonempty_subtype��α�p����nonempty�subtype�������������������_x��_a��������������� �������� ��cases_on�������������val_val�val_property�������X���_��X��_x��_a���I���������������� �r��s�������������� 2������PInfo����ATTR�����declnonempty_prod��v���[β����nonempty�������:�knonempty����[��� G��� L� Q_x� L_a� H� I���� I���� H� \�:�\�� O���� \prodcases_on������� I���:�\�� O�val_fst�val_snd����:�\�X� O��I� r� t�d�X����_x� Q_a�:�l� O���o� O���:�o� �� H� j�*�o�+� a�m��*� k� H� I�X��*������+� t� H� I���X�+���� ������ ���mk�����X�PInfo����ATTR�����declnonempty_pprod����α�β���nonempty��pprod���:nonempty�nonempty����� ���� �� �_x� �_a� �� ����� ���	� �� ��:� ��� ����� �pprodcases_on������� ����:� ��� ��val_fst�val_snd����:� ��X� ���I� �� �����X����_x� �_a�:� �� ���� ��� ���:�!�!� �� ��*�!�+� ������*� �� �� ��X��*������+� �� �� ����X�+����!����!�
mk�����X�PInfo���ATTR����declnonempty_sum�������[��� G��� Hsum����k� P���[��� G���!:�!=_x�!:_a� H�!7� Z�!7��� H�!G�� _� a���!G��_a�!7���� k� m��!Psumcases_on������!7���� r� tval����!\��� r� t� yval��!`��� r� t� ~h�!=_a��l� ���o� ����o� �� H�!Ph_1�o�m��� _� H�!Z�����!�� ��!Zsuminl����h_1� �� ���� a�!����!��!�suminr�����PInfo���ATTR����declnonempty_psum����α�β� ���� �psum���� �� ��#��$� ����!��!�_x�!�_a� ��!�� ��!���'� ��!��� �� ����!���_a�!����� �� ��(�!�psumcases_on�����(�!����� �� �val����!���� �� �� �val��!���� �� �� �h�!�_a��!�!��!�!�.��!�!� ��!�h_1�!�!��/� �� ��!��/����!��!!�!�psuminl����h_1�!�!��2� ��!��2��!��!�psuminr�����PInfo�"�ATTR����"declnonempty_psigma����α�β�� ���� �psigma����a� ���6��7�"���"�"_x�"_a� ��"� ��"��;� ��"'� �9�� ������"'psigmacases_on�������"��� �9�� ���val_fst�val_snd����� �9�X� ���� �"<� ��u_x�"_a� &�9� ���� )�9�� ����A� +�"R� ��"4�r��s�"Q�!���s� ���� ��"�X��s�����"]�!!�"\�<mk���X��PInfo�5�
ATTR����5declnonempty_empty��nonempty_x�"v_a�"v���F�"v������-���PInfo�C�ATTR����Cdeclnonempty_ulift��u_1���[��nonempty��Hulift���]���[���"��]_x�"�_a�"��"������"��L�"��"��o���"�uliftcases_on������"��� _������ _�d�_x�]_a�k�m�P�l�"��"������"�����"��Mup����PInfo�G�ATTR����Gdeclnonempty_plift��α����\plift�� ��S����"��"�_x�"�_a�\�"��m�"��V�\�"��!���"��������"��� ������� �� ��_x�"�_a� ��!�X�!�\�"������"��d�"������PInfo�R�ATTR����Rdeclnonemptyforall��α�p��"�����h� ��a� ��[��\�"����"��"�h�"�a� ��h�"�_x�!_a�!�!��c� ���������� �����PInfo�Z�ATTR����Zdeclnonemptyexists��α�p�"������ �h� ����a�"��f��g�"����#�#_x�#_a���!�h�!�����!�h�!���k���!�#%� �i��#
�r�!�s���!�r� ��s�������i����� ����r��s��!����#3� ���#2_x�#_a� &�i�#� )�i���"��m� +�#N��� ��h� ����r��s�#M����� ��h� ������ ��#X�#�PInfo�e�ATTR����edeclclassicalnonempty_pi����α�β�"��nonempty����a�"�p��q�"���#k�#m_x�#k_a�#j�����a����u�#j�#u�s��"*���#u���#xa�� ����f�#m�����aclassicalchoice�����PInfo�o�ncompclassicalinhabited_of_nonempty'decl�}��α�h�"�inhabited��~���"���classicalchoice��PInfo�}�%decl�}equations_eqn_1���~���"����#��}���#��~���"����#��#��PInfo���%ATTR�����EqnL��SEqnL�}declnonemptymap����α�β� �f����!�!������ �������!�!���!� ������ �� �����PInfo���)declnonemptymap2u_1u_2u_3αβnγ�f�t���nonempty���nonempty�������n������t����#���������#��a_1�������#���#�������#��������PInfo���,prt��declnonemptycongr����α�β� �f��g�+���!�!������ ��������+���!�!nonemptymap���nonemptymap����PInfo���/prt��EndFile