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�C�>�initlogicembeddingalgebraorder_functionsdatamultisetdatasigmabasicdatasetlattice��dexport_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}traversePInfofinset
indlu_4α�Cn���e_1valmultisetnodupmultisetnodup
�mk�

�������	����
�	
�nspace�prt�recdecl�sizeof��xnat��rec�x,��has_addadd,nathas_add6has_oneone,nathas_onesizeof"default_has_sizeof"��E�PInfo�
ATTRreducibility���prt�decl�has_sizeof_inst��has_sizeof�has_sizeofmk��PInfo�
ATTRinstance���class����prt�decl�sizeof_spec����eq,U


:���eqrefl,_�PInfo�
ATTR_refl_lemma���EqnL�prt�gind��decl�val��c��
Proj�����rec��"���PInfo�
ATTR����proj��decl�nodup����	��
Proj����|�	�oy
���PInfo�
ATTR����proj��decl�rec_on�����o��"�$
%���o���rec��
�PInfo�
ATTR����auxrec�prt�auxrec�rec_ondecl�cases_on�����PInfo�
ATTR����auxrec�doc�`finset α` is the type of finite sets of elements of `α`. It is implemented
 as a multiset (a list up to permutation) which has no duplicate elements.decl�no_confusion_type���Pv1ov2���o�������	����
���	aval_eq����PInfo�
ATTR����prt�decl�no_confusion�����o�h12������
���o���eqrec	�
a�h1a������h11��

��������������
�PInfo�
ATTR����no_conf�prt�decl�inj�����"�$���
����
����"�$��	�no_confusion��
���
���PInfo�
decl�inj_arrowl�����"�$��	P���������"�$��	���*�inj�����
�PInfo�
decl�inj_eq�����"�$Y�	�����val_1"nodup_1$propext�	�Iiffintro�	�Ih�	�3��
a�I����&e_1��	�
�		
�
�e_1��	

eqdrec��r����
�z�
�}��z����	
��q
�q���r��r	�u��r
�
�
�PInfo�
declfinseteq_of_vequ_1α�sfinsett���eq�
�val
������
���������������������������
�����
s_val��s_nodup����������������������������������
������������t_val���t_nodup���������������eqdcases_on���a���a���a��t_1�������d���d���d��H_1�����f���f���f�H_2heq�����h���h���h���8�9���=
�����m���m�a��I����
����
���#���#����f��=�8�9��5�����m���m�K�h�I
�j�i�refl�f�i�����q���q�d�a�y
����d���-�.�/���.����5�=�8�:�=�<�s�6�<id_rhs�L�Krfl�G�Keqsymm�#�
�s��Wheqrefl�Z�!�W�PInfo�decl�val_inj����s��t��iff������
����������S�����eq_of_veq
congr_arg����������PInfo�ATTRsimp���decl�erase_dup_eq_self����_inst_1decidable_eqs�����erase_dup
a
b��������������mpr����
���erase_dup_eq_self
����finsetnodup
�PInfo�ATTR����decl�has_decidable_eq_main����_inst_1�������������������decidable��decidable_of_iff�	���������val_inj�has_decidable_eq��������PInfo� 	VMR�VMC�
 	�����has_decidable_eq_maindecidable_of_decidable_of_iffdecl�equations_eqn_1�������s₁��s₂��Y�
��
�!������������e�
id_delta�
�,�PInfo� 	ATTR����EqnL�decl�has_decidable_eq���������(�PInfo�
 	prt�
VMR�
VMC�
 	���decl�
equations_eqn_1��������������'�
�
�!�������equations_eqn_1�PInfo� 	ATTR����EqnL�decl�
_sunfold���&�PInfo� 	ATTR����
classdecidable�
��decl�has_mem����has_mem�����has_memmk��as��has_memmem
���has_mem
���PInfo�%	prt�VMR�VMC�%	�decl�equations_eqn_1�������R���a����s�R�e�PInfo�%	ATTR����EqnL�SEqnL�ATTR����class����decl�mem_def����as�����X���d
�^�������iffrfl�p�PInfo�'decl�mem_mk����as��nd�����W���d
���}���Z
����"�#�{�$�|�v���PInfo�!)ATTR����!decl�decidable_mem����h��as���������&���'�(��multisetdecidable_mem����PInfo�%+	prt�%VMR�%VMC�%+	�(�'�&��decidable_memdecl�%equations_eqn_1�����&���'�(��Y���%�
������&���'�(��e�����PInfo�-+	ATTR����-EqnL�-SEqnL�%ATTR����%classdecidable�%��decl�to_set����s��set����0��set_ofx�n�PInfo�/1VMR�/VMC�/a�0�doc�/Convert a finset to a set in the natural way.decl�/equations_eqn_1�����0������/�������0���!�����PInfo�61ATTR����6EqnL�6SEqnL�/decl�has_lift����has_lift �������has_liftmk#%�������PInfo�73	prt�7VMR�7VMC�73	�4�0�decl�7equations_eqn_1���������7�������������PInfo�<3	ATTR����<EqnL�<SEqnL�7ATTR����7class�8�7��decl�mem_coe����as�����X��
sethas_mem
coe ����lift_base')������
�p����>�?���v���PInfo�=5ATTR����=decl�set_of_memu_1�s������a�����������������F���G��rfl�E ����PInfo�D7ATTR����DATTR����Ddecl�decidable_mem'����_inst_1��as����}��������������������K���L�M�����	�PInfo�J9	prt�JVMR�JVMC�J9	�M�L�K��%decl�Jequations_eqn_1�����K���L�M��Y�!�J�
�(����K���L�M��e�!�2�PInfo�O9	ATTR����OEqnL�OSEqnL�JATTR����Jclassdecidable�J��decl�ext����s₁��s₂������a
����
�@����R���S���trans�����E�symm�����
�nodup_ext
���������PInfo�Q=decl�ext'����s₁��s₂����E������Y���Z�������E�ext
�PInfo�XAATTRext���Xprodmkboolprodlistext_param_type�r�sname�s�r�w�wboolff�o�u�}listnil�t�o�x�|���wlistcons�{�o�w�wnamemk_string
Strthunknameanonymous��
Strfunext��������
Strmultiset����
Strext'��������
Strulift����
Strext��������
Strarray������������
Strmonoid_hom������������
Strperm��
Strequiv������������
Strring_hom������������
Strset������������
Strembedding��
Strfunction������������
Strplift������������
Strlist������������
Strprod������������
Stroption����������������������
Strunits����������namemk_numeralunsignedof_nat':����
Strpropext��������has_zerozero,nathas_zero�������{ATTR�\���X��dtt�������w��
Strfinset�����decl�coe_inj����s₁��s₂������������������x���y���J�<x
����
�C���setext_iff
�:���N���E�j�PInfo�wDATTR����wdecl�to_set_injectiveu_1�functioninjective�~/ ���������s��t���mp�<���coe_inj.
�PInfo�}Gdecl�has_subset����has_subset�����has_subsetmk��s₁��s₂��a
��A�W�����d�
�PInfo��L	prt��VMR��VMC��L	�decl��equations_eqn_1�������j����y����s�j�}�PInfo��L	ATTR�����EqnL��SEqnL��ATTR�����class������decl�subset_def����s₁��s₂����has_subsetsubset���|
�����has_subset
����������������v���PInfo��Ndecl�subsetrefl����s�������|��������subsetrefl���PInfo��Pnspace��ATTR�����decl�subsettrans����s₁��s₂��s₃��������|
����o�|�
�����|��
����������������subsettrans��
����PInfo��Rdecl�mem_of_subset����s₁��s₂��a
�����s�W����d�
�������������
�mem_of_subset����PInfo��Tdecl�subsetantisymm����s₁��s₂��H₁��H₂��
���o
������������������������T���������g�
a��S�����PInfo��Vdecl�subset_iff����s₁��s₂����x
�u���PInfo��Ydecl�coe_subset����s₁��s₂���������@has_subset
�:����������������v��PInfo��[ATTR�����decl�val_le_iff����s₁��s₂����has_lele��preorderto_has_le��partial_orderto_preorder���partial_order
������������������le_iff_subset
�����Z�PInfo��^ATTR�����decl�has_ssubset����has_ssubset�����has_ssubsetmk��a��b��and��not���PInfo��`	prt��VMR��VMC��`	�decl��equations_eqn_1�������-����:����s�-�>�PInfo��`	ATTR�����EqnL��SEqnL��ATTR�����class������decl�partial_order_proof_1����a��b����has_ltlt��has_ltmk��has_ssubsetssubset���=
�P�����������iffrefl�P�PInfo��b	decl������partial_order�������mk�������}�I���>�subsetrefl�subsettrans����subsetantisymm	�PInfo��b	prt��VMR��VMC��b	�decl��equations_eqn_1�������\����q����s�\�u�PInfo��b	ATTR�����EqnL��SEqnL��ATTR�����class������decl�subsetantisymm_iff����s₁��s₂���?�2�5�����������le_antisymm_iff���t
�PInfo��idecl�le_iff_subset����s₁��s₂�����������������������������v���PInfo��lATTR�����decl�lt_iff_ssubset����s₁��s₂�����F��to_has_lt�����L������������v���PInfo��mATTR�����decl�coe_ssubset����s₁��s₂�����I��sethas_ssubset
�:���������������
this���7eqmpr�����7�7id�D����a�C���Ce_1�Db�C���Ce_2��congr�C�C������
congr_arg�C���C�C�������7eqtrans�C���1��3����:�7setssubset_def
�:��a�C���Ce_1��b�C��Ce_2�����1��1�
���1����P���finsetcoe_subset
���6a�C��Ce_1�����C
�3���5�P���5��7�7e�C�7�V�7Annotshow�PInfo��oATTR�����decl�val_lt_iff����s₁��s₂�����E�����������������	���
��and_congr�has_lemk��multisetle
�����3�<�������6�val_le_iff
not_congr�A�5�G�PInfo�sATTR����decl�nonempty����s���C������Exists���PInfo�{prt�VMR�VMC���doc� The property `s.nonempty` expresses the fact that the finset `s` is not empty. It should be used
in theorem assumptions instead of `∃ x, x ∈ s` or `s ≠ ∅` as it gives access to a nice API thanks
to the dot notation.decl�equations_eqn_1��������D���Y��������^�PInfo�{ATTR����EqnL�SEqnL�decl�coe_nonempty����s����setnonempty�
�^�������v�h�PInfo�}ATTRelim_cast���unitstardecl�nonemptybex����s��h�^�W
x
�A���� ���!�^�PInfo�nspace�decl�nonemptymono����s��t��hst��hs�\
�\�
����%���&���'���(�{setnonemptymono���������Z����x������PInfo�$�decl�empty�����������has_zerozero���has_zero�nodup_zero�PInfo�-�prt�-VMR�-VMC�-���zerodecl�-equations_eqn_1���������-�������s�����PInfo�4�ATTR����4EqnL�4SEqnL�-decl�has_emptyc����has_emptyc�����has_emptycmk�����PInfo�5�	prt�5VMR�5VMC�5�	��-decl�5equations_eqn_1���������5�������s�����PInfo�:�	ATTR����:EqnL�:SEqnL�5ATTR����5class�6�5��decl�inhabited����inhabited�����inhabitedmk8��has_emptycemptyc�����PInfo�;�	prt�;VMR�;VMC�;�	��-decl�;equations_eqn_1�����8���;�������:�����PInfo�B�	ATTR����BEqnL�BSEqnL�;ATTR����;class�<�;��decl�empty_val������������������������PInfo�C�ATTR����CATTR����Cdecl�not_mem_empty����a�3�W���d����������E�����PInfo�D�ATTR����Ddecl�ne_empty_of_mem����as��h�pne������������G�H���I�pa�����false�not_mem_empty�eqsubst�o_x�o���
���o����PInfo�F�ATTR����Fdecl�empty_subset����s����������R���zero_subset���PInfo�Q�ATTR����Qdecl�eq_empty_of_forall_not_mem����s��Hx�3����������
����U���V�����eq_zero_of_forall_not_mem
���PInfo�T�decl�eq_empty_iff_forall_not_mem����s���������������Z���S�,�rfl�,x
�]�����Z���3�s���@��
����
��h��eq_empty_of_forall_not_mem
�PInfo�Y�decl�val_eq_zero����s�������{�����{���,����`������PInfo�_�ATTR����_decl�subset_empty����s���������,����b���J���{�����Q�R�,�subset_zero���val_eq_zero�PInfo�a�decl�nonempty_of_ne_empty����s��h�������\
����f���g�u�exists_mem_of_ne_zero
��mt��������
��^����m
�PInfo�e�decl�nonempty_iff_ne_empty����s�����^�u����k���S�^�u_x�^_a�wExistsdcases_on�,�r�m�{���o�wh�����������������ne_empty_of_mem���nonempty_of_ne_empty�PInfo�j�decl�eq_empty_or_nonempty����s��or�,�^����u��classicalby_cases�,��orinl�,�^h�3�,orinr��w��
�PInfo�t�decl�coe_empty�����������������������������@has_emptyc���������PInfo�~�ATTR����~ATTR����~decl�singleton����a����������cons�Q�nodup_singleton�PInfo���VMR��VMC�������2�consdoc��`singleton a` is the set `{a}` containing `a` and nothing else.decl��equations_eqn_1�������*�����������s�����PInfo���ATTR�����EqnL��SEqnL��decl�singleton_val����a�M��������������{���PInfo���ATTR�����ATTR�����decl�mem_singleton����ab������
��
��������mem_singleton
�PInfo���ATTR�����decl�not_mem_singleton����ab���3�o�	��
�������not_iff_not_of_iff�	�	�mem_singleton
�PInfo���decl�mem_singleton_self����a�������������listmemlistnil���PInfo���decl�singleton_inj����ab�����		�	�	(��������S�	F�	(h�	F�^������
�	*
����_x���r�	N
�	O�mem_singleton_self
��
����
�	N�PInfo���decl�singleton_ne_empty����a�s��������������	c�PInfo���ATTR�����decl�coe_singleton����a���	��singleton�����@has_insert�������	��PInfo���ATTR�����ATTR�����decl�eq_singleton_iff_unique_mem����s��a�����	�1��x
H�A���
����������S�	��	�t�	����1��
����������1���	O���������
�	����D�	��	��3
_a���D�1�r
������������1�	���������	���	��	Oandintro�	��	��	d_x�^�	��	�
�	*�
���	��X
�	Oa_1�������	��	��	����D�	��	���C�	�_a�C�D������	�����	���	��	��P�	��	��	��S���	���right�	��	�r�	����_x��W����d�������left���������
����
�PInfo���decl�singleton_iff_unique_mem����s�����Xa�	�exists_unique�����������
:���X���	��Xx�	�y
��A�	����D�
:�
F���
5�
?p��C���
�Ce_1����C�����C�C
�W��
4�
>funextx�Cx�	����	����P�	��	��eq_singleton_iff_unique_mem
�
9�
Eexists_uniqueequations_eqn_1?��V�
?�PInfo���decl�has_insert_proof_1����_inst_1��as�����ndinsert������������������������nodup_ndinsert������PInfo���	decl����������has_insert���������has_insertmk�����������
�������
	�PInfo���	prt��VMR��VMC���	��������ndinsertdoc��`insert a s` is the set `{a} ∪ s` containing `a` and the elements of `s`.decl��equations_eqn_1�����������
�����
���������s�
��
��PInfo���	ATTR�����EqnL��SEqnL��ATTR�����class������decl�has_insert_eq_insert��������as����has_insertinsert���
��insert���
�������������������
��PInfo���ATTR�����ATTR�����decl�insert_def��������as�����
��
��
���������������
��
��PInfo���ATTR�����decl�insert_val��������as������
��
�������������������
��PInfo���ATTR�����ATTR�����decl�insert_val'��������as���
������������������������
��
��
��
������D�
���]���
�_a���D�����
���o�
�������
�������
�����
���erase_dup_cons�������
����D��
���_a���D��
���
����7�����erase_dup_eq_self��s���
��PInfo���decl�insert_val_of_not_mem��������as��h�3��������������������S���T���7�����D�T�]�]���_a���D�����
�����
���
�
�����
���p��T�[�insert_val��
���]�������D�]���b�5���������
�_a���D���
���
��o�p�t��]��ndinsert_of_not_mem��
��s����PInfo���decl�mem_insert��������ab
s�����	�����	�
�	������������
�����mem_ndinsert��
���PInfo���ATTR�����decl�mem_insert_self��������as�����
���������������mem_ndinsert_self����PInfo���decl�mem_insert_of_mem��������ab
s��h�	��
�h
�����������
�������	��mem_ndinsert_of_mem��
�
���PInfo���decl�mem_of_mem_insert_of_ne��������ab
s��h�s�����
�

�����������
���������vresolve_left�	�
���^���i�����mem_insert��
�
�PInfo���decl�coe_insert��������as�������
��
���	�������������setext��#x�����n���������o�-���o�-�����1�
�-�	��
�8�����	����G���D�C�I���:�G���:����G�P�:�Q�mem_coe���P������
�G�
��
�B�G���B�E�1�@�G�P�B�osetmem_insert_iff�
�@���C���Ce_1����C��Ce_2����������
�����	��	���	��n�F�P�n�F�X�V�G�PInfo��ATTR����decl�insert_eq_of_mem��������as��h�������������
�����������ndinsert_of_mem��
��PInfo��ATTR����decl�insertcomm��������ab
s��������������������
��������T������i�������������x����������	�����
�	������D���������������e�f��������������������P���������������������P����
����
����������������	����
������

�P�
�
�
�����������
�
�P�����
���P�

��orleft_comm�����	��V���PInfo��nspace�decl�insert_idem��������as�����
��
��
���������������
>�T�������Q�g�
<�
�x���
G�I���D�
G�I���
E�G�����^����E�	��F�G�
W�E�G�
Z�
W�E�Q�
]�P�
V�
`�f����Q�G�h�P�
]�
Z�N�
Z�
]orassoc�	��	��F���
X�	��P�
X�	�or_self�	��F�F��F�Q�G�h���PInfo��ATTR����decl�insert_ne_empty��������as�����
�����������!�"�����
��mem_insert_self��PInfo� �ATTR���� decl�ne_insert_of_not_mem��������s��t��ah�3��
���h
��������%���&���'�(�
�imp_of_not_imp_not�3�	��
��Jdecidable���������@����
���a�3�
��3�3�

��+���
��
����D�
��
�imp_congr_eq�
��3�
��
��
�push_negnot_not_eq�
��
��
�h�
����
�true���D�
��
����
����
��
��
��
����	�

�
��
��
��
��
�����
����
�
�c�P����K��K�e_2���a�K���d�K���fe_3�����h��D�G�C�W�m�G���
�
��DD�m�K�G�C���
�


�s�
��
��P�
��
��
���������a�a
�
��
���

���
��
��P�
��
�eq_self_iff_true�
�
��
���
��P�
��
�true_or�
�trivial�PInfo�$�decl�insert_subset��������as��t��������	�����������8�9���:�����l���	�x�a��
�

�	�����v���D�l�|���g�x���g�1x�x�a�	���W�����d��;��>��<�
���x��x�����1���������������j�u���P�g���subset_iff��forall_congr_eq����������1�?���u�v�����������s�u���
����	����	��P����
����
��	��P����or_imp_distrib���s�	��P�>��1������forall_and_distrib��>����>��v���=����	��Pa��?���E����E��	�
forall_eq���
�w�w��w�k�{���	��	���	��j�z�P�j�z���V�x�PInfo�7�decl�subset_insert��������as�����
���������H�I��b�mem_insert_of_mem��
�PInfo�G�decl�insert_subset_insert��������as��t��h�j���j���������M�N���O���P�j���'�1�
���
��insert_subset��
�
��	��/�2�
���
��i�
��subset_insert��
��PInfo�L�decl�ssubset_iff��������s��t�����I���=�Wa�1�
����
��������T���U���S�Z�d_x�Z_a�I�o�=�
��dcases_on��
�3�1�X�I���=�
�W��V��1�3��������|��
�����
������left�sright�3�����|����_a�W�a���W���d��H���3�W�a���a�d�a��W��V��1�3��������|�a�
��a���
��a��a��d�d��eqmp�3������x����a�����������a��3x������W�d�
��d�d������3����������������P����������P�3�b�����classicalnot_forall��b������?��C���?��Ce_1���?�a�C�
S�?�d�C�C
�W�d�a��3�����
a��b��C����3�b���b�����
�������a���3��a��P���d���b����
����
�\���]������^���3�����a�]�a������^�8�3�W�f��d�f�a�\�W�a�C��V�d�1�3�=�a����|�f�
��f��
��f��f��h�h�a��p�a�q�B�o�>��^�b�3�W�h��d�h
�d�q���b�k�W�h�V�h�1�3�	�d�m�f���G�|�m�
��m�G�
��m��m��q�q�f�dh_w�bh_h�j���W�m�V�m�1�3�W�q�w�d�q�h���w�|�q�
��q�w�
��q��q��u�u�h�f�nintro�m���	��3�q�f�x���f�d�����1���d�x�f�d�5�m��f�d�	������AnnotcheckpointAnnothave�-_x�d_a�
Y�V��1�3�����h
����V��1�3�
����
���l�W����I���=���p��q���q�3����������q�1����I��=���h_left��h_right����|��
����
���/
����_a�1��������I�
��=�d���^�������!�5�a�����o�!�q�������
��|�d���o�1�8�>�I��=�f�a��Z�8�[�M�a����1����|�h�d�a�3�N�a�d�	��P�Th�S��
�4�PInfo�S��decl�ssubset_insert��������s��a
h�3�C�o��
��������r���s
�t�t���v�
Y�V��������ssubset_iff��
�u������	��3�t���u�u�f��u�PInfo�q�decl�inductionu_1α��p����C_inst_2��h₁�h₂as�o��3�	���
�����������
s�o��x���y���z���{���|����o�������s_val��s_nodup��������multisetinduction_on�w�_x��_a�����_x���������a�s�IH�����a�a�&nd�����d
�q�3�:�,�Z�f
�`
_x�1�����f�9���h��^�`���f
���nodup_consH�f
m��nd'���h���h�I���m��
�h�z�{��m��q�m��I����D���]�G��_a�G�D�m�y���q���m������G������m������g�h��h���g�
��m���h�
�)���D�*�2�]�f�'_a�f�D�����q���q������q��u�}��y��;��:�F��*�0�{�m���
���2�g���)���D�2�Z�7�,��m��q��u��z����_a�f�D�:�
��q�=��;�B�F�J��2�����m����t���a��
�PInfo�v� prt�vATTRrecursor���vUREC�vfinsetdecl�induction_onu_1α��p��_inst_2��s��h₁
��h₂a�s����3�t��
��������a��
�
������������������������finsetinduction���_x���������
�PInfo���(prt��doc��To prove a proposition about an arbitrary `finset α`,
it suffices to prove it for the empty `finset`,
and to show that if it holds for some `finset α`,
then it holds for the `finset` obtained by inserting a new element.ATTRelab_strategy����decl�singleton_eq_singleton��������a���	�
����
�
���	����������������PInfo���ATTR�����ATTR�����decl�insert_empty_eq_singleton������PInfo��� ATTR�����ATTR�����decl�insert_singleton_self_eq��������a���
�
�������	����������insert_eq_of_mem
�����	c
�PInfo���"ATTR�����decl�has_union_proof_1��������s₁��s₂���
��ndunion�
��������������������nodup_ndunion�����
��PInfo���(	decl����������has_union���������has_unionmk���������������������
�PInfo���(	prt��VMR��VMC���(	��������nduniondoc��`s ∪ t` is the set such that `a ∈ s ∪ t` iff `a ∈ s` or `a ∈ t`.decl��equations_eqn_1�����������������������s���PInfo���(	ATTR�����EqnL��SEqnL��ATTR�����class������decl�union_val_nd��������s₁��s₂�����has_unionunion���������������������
��'�PInfo���*ATTR�����decl�union_val��������s₁��s₂���(� ���has_union��������������������ndunion_eq_union�����
��PInfo���,ATTR�����decl�mem_union��������as₁��s₂�����	�� �o������	��	�������������������mem_ndunion�����
�PInfo���/ATTR�����decl�mem_union_left��������as₁��s₂��h�R�
� �����
�
��������������������R���l���

�
�mem_union��
�
���t�v�PInfo���1decl�mem_union_right��������as₂��s₁��h�R�
�i
��������������������R�������v�t�|
���v�t�PInfo���3decl�not_mem_union��������as₁��s₂�����3�P�1�3�R�3�	�������������������������3�T�����D�����	��P_a�C�D���3�l�1�3�t�3�v���3������T�P�P�T�y��
�������������D�����	���_a�C�D���3�w������������P����not_or_distrib�R�	��V���PInfo���5decl�coe_union��������s₁��s₂�����&� ��@has_union�G�����������������*���x��
�PInfo���8ATTR�����decl�union_subset��������s₁��s₂��s₃��h₁��h₂�1��� �������
��������������������������^�������������*
��F��
���)������*��*�-�1�������7�-�)�9�-�ndunion_le����7�9�-�	��B�E���E��
�1
�PInfo���:decl�subset_union_left��������s₁��s₂�����&���������������x�mem_union_left��
�PInfo���=decl�subset_union_right��������s₁��s₂����&���������������x�mem_union_right��
�PInfo���?decl�union_comm��������s₁��s₂�����&�$��������������������T�����M
���N
�
J�&��x���������
��F�����D�����������P���J�K��
�������������
���F�
����P�����	
�P����or_comm�F�
��V���PInfo���AATTR�����decl�is_commutative��������is_commutative��� �����
&�������is_commutativemk�����union_comm���PInfo���D	prt��VMR��VMC�����decl��equations_eqn_1�����������������������������PInfo���D	ATTR�����EqnL��SEqnL��ATTR�����class������decl�union_assoc��������s₁��s₂��s₃�����M�����O������������������������T������i�i
�����k������x�������������s�	�����D������������f�g�������	�s�	����������	���P��"�{����� ��P���
��'
�	��	����P��or_assoc�	����s�������.�k�	���k��P�H�K�3�k����������J��P���
��'
�V��PInfo���FATTR�����decl�is_associative��������is_associative�����������is_associativemk�����union_assoc���PInfo���I	prt��VMR��VMC�����decl��equations_eqn_1�����������q����z����������q���PInfo��I	ATTR����EqnL�SEqnL��ATTR�����class������decl�union_idempotent��������s����� ���
�����������������T
���@�%�C�h��_x
�J�����C�C�C�y��
}�C�PInfo��KATTR����decl�is_idempotent��������is_idempotent�����������is_idempotentmk�����union_idempotent���PInfo��N	prt�VMR�VMC����decl�equations_eqn_1������������������������������PInfo�
�N	ATTR����
EqnL�
SEqnL�ATTR����class����decl�union_left_comm��������s₁��s₂��s₃�������N�����������������������T�������j��������_x���������D��������b��������Y���
�	�	�����
�������P�����^�����s�s��s�����P���.���3�P����
*�s���	��f�PInfo��Pdecl�union_right_comm��������s₁��s₂��s₃�����M����������������������T������i��
��x����%���	���	��s�-���D�%�/��-���-�C�V��,�P��,���s�	��$�-�������
�����s�-�G�����s�I�P�F�M�'��
��������s�s���P�I�-�>�s���	��V�-�PInfo��Sdecl�union_self����������s����
���PInfo��VATTR����decl�union_empty��������s��������������������y�T
���@�%���C�h�wx
�J����9�C����or_false�C�PInfo��XATTR����decl�empty_union��������s����������������������T
���@�$���C�h��x
�J�����9�C�C����false_or�C�PInfo��[ATTR����decl�insert_eq��������as���
��$�	������
��
��PInfo�"�^ATTR����"decl�insert_union��������as��t�����M���O��������&�'���(���������M�	���o��
�O�����D����a�o�)��e_1�����K���K�e_2������
��C���
�����
��
��K�
��C�����������o���M��������c���o�K���K��e_2�����K��K��e_3����OO��� �����
����K������L����insert_eq��
�s�o�w���������-�O�2���PInfo�%�`ATTR����%decl�union_insert��������as��t�����N������������1�2���3�����L���N���T���D�L�V���J�T�'�2���S�-���T���^�O�����\
�O����?�union_left_comm�����2�T�PInfo�0�cATTR����0decl�insert_union_distrib��������as��t������������������6�7���8�������������D�����������2������������^����h���^�����union_insert��
�_inst_1�
���o�K��K�e_2�
#�K��K��e_3���O�����
���f������

�s�
�����insert_union��
�insert_idem��
�O���PInfo�5�fdecl�has_inter_proof_1��������s₁��s₂���
��ndinter�
������������A���B���nodup_ndinter�����D�PInfo�@�m	decl�?��������has_inter���������has_intermk���A���B�����������@�
	�PInfo�?�m	prt�?VMR�?VMC�?�m	�B�A����ndinterdoc�?`s ∩ t` is the set such that `a ∈ s ∩ t` iff `a ∈ s` and `a ∈ t`.decl�?equations_eqn_1�������������?��	��������s����PInfo�J�m	ATTR����JEqnL�JSEqnL�?ATTR����?class�E�?��decl�inter_val_nd��������s₁��s₂�����has_interinter���
�����������L���M���
���PInfo�K�oATTR����Kdecl�inter_val��������s₁��s₂��� ����has_inter������������Q���R���ndinter_eq_inter�����D�PInfo�P�qATTR����Pdecl�mem_inter��������as₁��s₂�����	���o�
���1�R�	���������V�W���X���mem_ndinter�����
�PInfo�U�tATTR����Udecl�mem_of_mem_inter_left��������as₁��s₂��h�G�t��������[�\���]���^�G�
�t�v�^�
����
��
�
�1�t�v�mem_inter��
�
�PInfo�Z�vdecl�mem_of_mem_inter_right��������as₁��s₂��h�G�v��������a�b���c���d�G�
�t�v�v�PInfo�`�xdecl�mem_inter_of_mem��������as₁��s₂����R��v�
�����
���
��������f�g���h���^�?�J�j��and_imp�R�	��G���G�J�o��
�PInfo�e�zdecl�inter_subset_left��������s₁��s₂�������������k���l��a�mem_of_mem_inter_left��
�PInfo�j�}decl�inter_subset_right��������s₁��s₂������������p���q��a�mem_of_mem_inter_right��
�PInfo�o�decl�subset_inter��������s₁��s₂��s₃�������r�������������u���v���w��������������t��������������~�1�
��
����D����imp_congr_ctx_eq�����r�i����������u���������P������
_h�������������P�������_h�����������~�����
��/���@�����������P���������������������������~������
�����~����~_h�~�����
����a��d��f�f���1�������P�A�F�o��/�����C�
��P�C�
�������iff_true_intro���������
��V�]trueintro�E�
��P�E�
��������V�����d���a_1�����a_2�~�	��
��
��Z�Z�PInfo�t��decl�coe_inter��������s₁��s₂��������@has_inter�G�����������������*����_x��
�PInfo����ATTR�����decl�union_inter_cancel_left��������s��t������&������������������������G���D�����	���_a�C�D���D��

�������C�����P�����a������������G�G���D����� ���_a��D���-�8���8
����������coe_inter��&���������G�G���D��������_a��D����-����8�������������������coe_union�������G�G���D�������_a��D����� �-������@����������Gsetunion_inter_cancel_left�G�����G�PInfo����ATTR�����decl�union_inter_cancel_right��������s��t������������������������C���A����D�C�K�	��C_a�C�D������C�K���K�C�P�K�C���A���K��������D�K�i���I_a��D���8�Q�@���@��K�g�����i��������D�i����_a��D����@�@����@�@��i������������D�������_a��D���%�@�@�s����setunion_inter_cancel_right�G��7��PInfo����ATTR�����decl�inter_comm��������s₁��s₂��������������������������T�����D
���E
�
J���_x�������1�
��F�����D�����������P���A�B��
��������������
�1�F�
����P������
�P����and_comm�F�
��V���PInfo����ATTR�����decl�inter_assoc��������s₁��s₂��s₃�����D�����F�����������������������T������g�g
����i����_x�������1���1�s�	�� ���D��"���� �����d�e����1��s�	�� �.�1����	��1�P�-�6�q����4�/�P���*
�/�;
�	��	����P�1� and_assoc�	����s�� �����B�i����i� �P�\�_�G�i�������U�^��P���*
��;
�V� �PInfo����ATTR�����decl�inter_left_comm��������s₁��s₂��s₃������E��������������������������T�������h������_x������"���D���"���� �u��� �����l�����	�� ����������P�����q�����s�s�������P���B���G�P��� andleft_comm�s���	��y�PInfo����ATTR�����decl�inter_right_comm��������s₁��s₂��s₃����D��������������������������T�����g��
���_x��������1�1���D�����'�1�N���1�����*��
�1���s�1���1���s���P�����;��
���������s�s���P���1andright_comm���	��s�V�1�PInfo����ATTR�����decl�inter_self��������s��������

����������������"�T
���@��C�h� _x
�J�(�1�C�C�C�o�and_self�C�PInfo����ATTR�����decl�inter_empty��������s���������������������E�T
���@����9�h�C�_x
�J�K�1�9�9�8��and_false�C�PInfo����ATTR�����decl�empty_inter��������s���������������������d�T
���@����9�h�b�_x
�J�k�1�9�C�9�7��false_and�C�PInfo����ATTR�����decl�insert_inter_of_mem��������s₁��s₂��ah�F���g�
�
�
����������������������F�����T����
���
���
�
�����g�����x�
��������
����
�������,���������,�����1���
#����������D���������������)�*����������1���������P�����o�������������P������������
������������������������������������1�����������������P����������������������P�������������P����or_and_distrib_left��������������������P�����V��Annot�iAnnot�jor_iff_right_of_imp����rfl���]�������������
�PInfo����ATTR�����decl�inter_insert_of_mem��������s₁��s₂��ah�
�����
�����������������������
����K���g�
������D�K�V�]���I_a���D�����
���������K�T�inter_comm��
��
����V�����l�����D�V�v�[�*�r
_a���D�����
�����b��V�t�insert_inter_of_mem��
�
���v���r�C�����D�v���[�s_a���D���6�����3������6����v�C�j��
�s�����PInfo����ATTR�����decl�insert_inter_of_not_mem��������s₁��s₂��ah�3�F�����������������������������T����
�����x�
���3�1����
���������������D�����������������������1�����������������P����or_and_distrib_right�������������P����iff_false_intro����������P��������������V��Annot�iAnnot�j����a_1���q����������rfl��H��
��]�a���a���3�8�����3����PInfo����ATTR�����decl�inter_insert_of_not_mem��������s₁��s₂��ah�
��J���������������������
����2�U����D�2�:�\_a���D�^���a����2�T�m���:���s����D�:�M�~_a���D�����A��:�s�insert_inter_of_not_mem��
�
���M���C����D�M�f��_a���D�������A��M�C�����C�PInfo����ATTR�����decl�singleton_inter_of_mem��������as��H�����D�	��	������������������
�����D�����������^��������D�����]�o���^�_a�o�D���g�i��
����������������
�������������D��������_a�o�D�����*��
�������������empty_inter����2��Annot��PInfo����ATTR�����decl�singleton_inter_of_not_mem��������as��H�S�������������������S�E������W��3���g�	�
�W��3�1���s���D�������W����W����W�����������*�	�
�1���	��s���P����;�	�
�������P�����	*��s�s��x�����a_1���q�	������1�	�����rfl�	�h��
��]�������3�������3�������PInfo����ATTR�����decl�inter_singleton_of_mem��������as��h�����E�	��	���������������������B�����D�B�����@_a�o�D���h�	��	����	���B���i���	��������	��	����D���b�����	�_a�o�D�����	��R����	��singleton_inter_of_mem��
�2�	��PInfo����ATTR�����decl�inter_singleton_of_not_mem��������as��h�S�A�����������������S���������D�����M_a�o�D�O������������\�����������D�����i_a�o�D�j���������singleton_inter_of_not_mem��
�2��PInfo����ATTR�����decl�inter_subset_inter��������x��y��s��t�oh�sh'��
�����-
������������������o��s�	������a�a_in�������������
�a�����1�������D�����	���_a�C�D���
��
�d�8��������P�����o�a�����	�������
��������������1�����	���_a�C�D��������� �P��� ����%�
����� �PInfo���decl�inter_subset_inter_right��������x��y��s��h�������i�������������������finsetinter_subset_inter��
�
�f��PInfo���decl�inter_subset_inter_left��������x��y��s��h�����g� B
�������������������� 3
� :�PInfo���decl�latticelattice_proof_1����a������7����le���t�����le_refl���u�PInfo���	decl�_proof_2����a��b��c��a����7��� [���t
�$��o�7�o� [�o�t�
����7��� [���t��
�����le_trans���u�PInfo� ��	decl�_proof_3����auto_param�����������F�H��lt�����1���7��� [�����3� ���
Strorder_laws_tac�������lt_iff_le_not_le���u�PInfo�&��	decl�_proof_4����a��b���$������mk��� �� �� e����� ������ ������$� i���� ���� m� ���� l� e��� l� ���� l� ���� l
�������le_antisymm���u�PInfo�*��	decl�_proof_5�������������������!�"�
���������subset_union_left���PInfo�/��	decl�_proof_6������������������ ���������subset_union_right���PInfo�1��	decl�_proof_7��������a��b��c�������������3�
��������4���5���6���union_subset��
�PInfo�3��	decl�_proof_8���������k���l�������
���������inter_subset_left���PInfo�8��	decl�_proof_9���������p���q���!��������inter_subset_right���PInfo�:��	decl�_proof_10��������a��b��c������������
��������=���>���?���subset_inter��
�PInfo�<��	decl���������latticelattice����������Bmk����� ^� ���� ]��� ��&��*��/��1��3��������8��:��<��PInfo���	prt�nspace�VMR�VMC���	������Hdecl�equations_eqn_1�����������!;���!l��������s�!;�!r�PInfo�E��	ATTR����EEqnL�ESEqnL�ATTR����class�B���decl�sup_eq_union��������s��t�����Ahas_supsup���Asemilattice_supto_has_sup���Bto_semilattice_sup���!p��&��������G���H���
��!��PInfo�F��ATTR����FATTR����Fdecl�inf_eq_inter��������s��t�����Ahas_infinf���Asemilattice_infto_has_inf���Bto_semilattice_inf���!����������O���P���
��!��PInfo�N��ATTR����NATTR����Ndecl�latticesemilattice_inf_bot_proof_1��������a����� ��Ble���!p
����������Ble_refl���!q���PInfo�X��	decl�W_proof_2��������a��b��c��a� r� s�!��o�!p��
�`� {� |�!����!p��
�
����7���!����!p����
��������Ble_trans���!��PInfo�\��	decl�W_proof_3��������� �a��b�����E���G���Blt���!��1� i� j�!����!��3�!�� ���������Blt_iff_le_not_le���!��PInfo�b��	decl�W_proof_4��������a��b���`� i� �� ��!��!��!����!��!����!��!����!��`� r��o� ��o�!��!��o�!��!��o�!��!��o�!��!��o�!�
�
�
��������Ble_antisymm���!��PInfo�g��	decl�W_proof_5��������a��b��� i� �����^���!��!��"�"�"�"+���!��!��Ahas_infmk���Binf���!���������Binf_le_left���!��PInfo�k��	decl�W_proof_6��������a��b���"F��������Binf_le_right���!��PInfo�r��	decl�W_proof_7��������a��b��c��a� r�"��o�^�o�!��"�"�"�"�"+�o�!�
�z� {�������^���!��!����!��!����!��!����!��!����!��"+���!��!��������^���!��!����!��!����!��!����!��!����!��"+���!���!����"=���"?���!�
��������Ble_inf���!��PInfo�v��	decl�W��������latticesemilattice_inf_bot����������}mk�����!����!��!����!��X��\��b��g��empty_subset�"?���!��k��r��v�
�PInfo�W��	prt�WVMR�WVMC�W��	����-�Hdecl�Wequations_eqn_1�����������"��W��"���������s�"��"��PInfo����	ATTR�����EqnL��SEqnL�WATTR����Wclass�}�W��decl�latticesemilattice_sup_bot_proof_1u_1�_inst_2�������� ��}le�����"�
�����������}le_reflg���"����PInfo����	decl��_proof_2�����������!���"���#���$� r� s�"��o�"���
�$� {� |�"����"���
�
�!��!��"����"�����
���������}le_transg���"��PInfo����	decl��_proof_3����������� ������������!��!��}ltg���"���1� i� j�"����#$�3�#.� ����������}lt_iff_le_not_leg���"��PInfo����	decl��_proof_4�����������+���,���$� i� �� ��#,�#%�"����#$�#���#$�#=���#$�$� r�"�"�#�#!�o�"��"��o�"��#�o�"��#=�o�"�
�"$���������}le_antisymmg���"��PInfo����	decl��_proof_5����������a���������^���"��#!���"��"����"��#���"��#=���"��#h���"��|has_botbotg���|has_botmkg���}botg���"����������}bot_leg���"��PInfo����	decl��_proof_6����������a��b���"<�!|�Ahas_supmkg���Bsupg���!����������Ble_sup_leftg���!��PInfo����	decl��_proof_7����������a��b���"<�#����������Ble_sup_rightg���!��PInfo����	decl��_proof_8����������a��b��c���z�"h�z�"
�"��!{���#����#����!��
���������Bsup_leg���!��PInfo����	decl�������������|semilattice_sup_botg������������mkg���#����"��"����"��#!���"����������������������#����!��������������PInfo����	prt��VMR��VMC����	�����-��decl��equations_eqn_1�������������#������#����������s�#��$�PInfo����	ATTR�����EqnL��SEqnL��ATTR�����class������decl�latticedistrib_lattice_proof_1��!��!��PInfo����	decl��_proof_2��!��!��PInfo����	decl��_proof_3��!��"�PInfo����	decl��_proof_4��"*�"/�PInfo����	decl��_proof_5���������#���������#��PInfo����	decl��_proof_6���������#���������#��PInfo����	decl��_proof_7���������#���������#��PInfo����	decl��_proof_8��"K�"P�PInfo����	decl��_proof_9��"U�"Z�PInfo����	decl��_proof_10��"��"��PInfo����	decl��_proof_11��������a��b��c�����������F�������������������
���$���$����1�?���1�?�
��
��1�$�#�?�u�
��$#�
��?�s�1�?�t��
����$$�?�u���#������D�$�$;���$�������g�����t����@�����1�?���1�?�
��
��1����?���
��$I�
��?���1�?���
����$J�?���������P�$�$G���$�$������$F����$:������$F�1�?���1�?�$/�$&�?�u�$5�$)�?�s�$s�$:�$n�?��$s�$w�$n�?��?���$/�u�$5�$%�$z�$n��1����$}�1���u�$����$C�����i�$��	������*�����1� ���$��P�$��$��;������� ��5�����_h�$����t� ����$}�t���$��P�$��$��y���������$/�$/��$/�$��$��P�t�!&�$��o���
�P�$��$�������$�����?���$���1�?���
��$��?�	��$}�$��
���_h����$��1�?�$/�$�?�u�$�$s�P�$��$����$/�u�$����$��$o���$/�$��$/�$��$�_h�$/���$4�
��P�$4�
��V�$4�$%�$%��$%�$��$r���u�$��u�$���u_h�u�$��$4��$4�$%�$)���$�$��$�$$�
��P�$$�
��V�$$�P�$z�$w�����s�$����$t�$-�����$����1�?�
��$��?�	��
��$��U_h�����$o�$'�$��$��
��$��P�$/�
��V�$/_h�
���$&�$r�$+�%	�$��u�%8�%
_h�u�$��$��$��$)�$)��$)�$v�$9���s�$��s�1�?���
����u�?�	��$}����_h�s�%=�$2�%?�$/�%e�$�_h�$/���
��
���
��$%�$0�%�
��P�$�
��V�$�$$�$$��$$�$r�$7�%O�%h�%
_h�u�%�$)���%}�
��
��%s���$;�
����D�$;�
����$b�@�����
��
����$l����
�������$:���
����$-�
����$-�?���
��
��
����%:���
��U���%:���
����%6�
����%6�?�
��
��
��
��
��
���
��
��%s�P�%��
��T��P�%��
�imp_true_iff�
��%9�
����%9�?�	��
��
��
��	��
���
��	��
����P�%��
��T�%��P�%��
��%��	��P���
�true_and�
��P�%��
��%����$9�
����$9�?�s�
��
��
��s�%j�s�
������%j���
����%f�
����%f�%��
��%��
����	����
��U���&�
��	��
��%t�&�	��P�&�	��%��	��P�&�
��T�	��%��%i�
����%i�%��
��%��	���	��
������&/�	�
��
��V���
��%��P�&5�
�or_true���%��%��P�%��
��%��s�%��P�?��
��
�����ZAnnot��PInfo����	decl�����������Adistrib_lattice�����������mk���#��"��"�����������������������"�������������
�PInfo����	prt��VMR��VMC����	������Hdecl��equations_eqn_1�����������&h����&���������s�&h�&��PInfo����	ATTR�����EqnL��SEqnL��ATTR�����class������decl�inter_distrib_left��������s��t��u�������O�M������������������������Ainf_sup_left�o
�&����PInfo����decl�inter_distrib_right��������s��t��u�������M���F��������������������Ainf_sup_right�o
�&��PInfo����decl�union_distrib_left��������s��t��u�����$�$��������������������Asup_inf_left�o
�&��PInfo����decl�union_distrib_right��������s��t��u�����&��D���O��������������������Asup_inf_right�o
�&��PInfo����decl�erase_proof_1��������s��a
�
�multiseterase�
���������������
�nodup_erase_of_nodup���D�PInfo����decl����������������
���������������
���&������
�PInfo����VMR��VMC������������erasedoc��`erase s a` is the set `s - {a}`, that is, the elements of `s` which are
 not equal to `a`.decl��equations_eqn_1��������������
�����
�'�������������
�s���'(�PInfo����ATTR�����EqnL��SEqnL��decl�erase_val��������s��a
����'%��'�������������
�
��'8�PInfo����ATTR�����ATTR�����decl�mem_erase��������ab
s�����	��'$���1���
�	������������
�����mem_erase_iff_of_nodup��
������PInfo����ATTR�����decl�not_mem_erase��������as���3���'5��������������mem_erase_of_nodup����
��PInfo����decl�erase_empty��������a���'$
����������������'x�PInfo����ATTR�����ATTR�����decl�ne_of_mem_erase��������ab
s����s�'F
�������������
�������'���1�'J
�5�����D�'��'��
��'��'��'��'��P�s�'D��
�'��mem_erase��
��'��
�'��5�PInfo����decl�mem_of_mem_erase��������ab
s����'�����������
����mem_of_mem_erase��
���PInfo���decl�mem_erase_of_ne_of_mem��������ab
s����'L��v���'$���
���������
������'���'L��v�1������
���D�'��'��
��'L��	��
�'$��
�
�'L��	��1��
�v��'L�
��	��'H�	��'N��P�	��'��'N�'�
�	��'L�	��PInfo��decl�erase_insert��������as��h�S���'E�
��������	�
����S���(	�T������'��j�s���(x����(���1���s�s���D�(�( ���(�(�����'����j���(�(�(+���(���(�(,�(+�(���(1�(+�(���(4�P�(*�(7�'���
��j���(�(��(�������P�(4�(1and_or_distrib_left�(���s���(/���P�1�3������not_and_self���(�(��(�P�(,�(���(�s�s��and_iff_right_of_imp�(�sH�s���'��rfl�	��4
�	���3������3�$
��PInfo��decl�insert_erase��������as��h������'E
�����������������(��T������i�'�
�s���(�x����(������s���D�(��(����(����������(��������(��1���(���(��(����(�(��(������(��(��P�(��(����(����(��(�P���('
�(�(?
�P�(��(�����(�s���(��
��P���(W�
�p�C_inst_1��V���3dec_em������������P�(����%����s�s���1���srfl���]��������,����
�PInfo��decl�erase_subset_erase��������as��t��h�j���(��'�����������������j�^��������������(����)�)�F��(��)�erase_le_erase��
��o�����)%�o����),
�PInfo��decl�erase_subset��������as�����'d��������"�#���erase_subset����PInfo�!�decl�coe_erase��������as�����'dhas_sdiffsdiff��@has_sdiff������� ��������&�'���*�)U�)b_x�J���(��1�'J
�F�1�)W�-�)Y��@���-����=
�'�
�����)o�){�����)m�){���D�)��)��	��)o_a�C�D���1���	�
���������)W�)��)Y������)������)����
�	���)�����	�����)���)��)��P�)o�)����)m�F���)��)��1�n�3�1�)y���D�)��)��	��){_a�C�D���1�)��)��)��)���)��)��P�){�)�setmem_diff��@�)y���)��)��)��3�	����D�)��)��	��)�_a�C�D�)��1�)��)��3�)��)��)��)�����)��	��P�)��	�setmem_singleton_iff�
�V�)��PInfo�%�ATTR����%decl�erase_ssubset��������as��h���n�(���������4�5���6��trans_rel_left�o�(��(��n
�ssubset_insert���(�
�not_mem_erase��
Annotcalc
�insert_erase��
Annot�:�PInfo�3�decl�erase_eq_of_not_mem��������as��h�S���(���������=�>���?�S���(��erase_of_not_mem��
��PInfo�<�decl�subset_insert_iff��������as��t�����i�����(���������B�C���D�����*L�������s�?�3�	��$$����?�(�?���$$���D�*L�*[���*H�*V���*H�����s�t�
��
�@��������?�3�
$�$J�P�*H�*g���������*f����*U����&�
�s�?�(W�u�����
 �
�*{�
$�P�
�*{or_iff_not_imp_left���	��(��*K�*Z���*K�����(��u�@�����?�'���?���$J�P�*K�*����(�������*�����*Y������*���(�u�*Y�
��(��	��(�	��(����P�*��*Y���(�s�	�forall_congr��*w�*�x�forall_swap�s�(W��s�?�*S�$$�PInfo�A�decl�erase_insert_subset��������as�����'5�
���������J�K���^���
��
��*��subset_insert_iff��
��f�
��PInfo�I�"decl�insert_erase_subset��������as����
��'d��������N�O�����*��)F�'d�*��'d�*��'d�PInfo�M�%decl�has_sdiff_proof_1��������s₁��s₂���
�has_subsub���has_sub������������R���S���nodup_of_le�+��sub_le_self�����D�PInfo�Q�+	decl�P��������has_sdiff���������has_sdiffmk���R���S�����+�Q�
�PInfo�P�+	prt�PVMR�PVMC�P�+	�S�R����subdoc�P`s \ t` is the set consisting of the elements of `s` that are not in `t`.decl�Pequations_eqn_1�����������+�P��+(��������s�+�+.�PInfo�^�+	ATTR����^EqnL�^SEqnL�PATTR����Pclass�Y�P��decl�mem_sdiff��������as₁��s₂�����	��)W�o�+,���I����������`�a���b���mem_sub_of_nodup��
����'[�PInfo�_�-ATTR����_decl�sdiff_union_of_subset��������s₁��s₂��h�����M�+;

��������e���f���g�+S���+X�T������i�)W���+,��
�
�s���+Va����+i����s���D�+i�+q���+g�������+d�$��
���+{�$��	���+|�+{�	����+��+{���+����+��+{�����+d���+��P�+z�+��'�+d���+��+��P���+_�+`��
�+��mem_sdiff��
�
�����U�P�+��+����+����P�+��+�����s�������$��+�
��P�+�
��(�������
��P�+|�and_true��s�s���1���s���PInfo�d�0ATTR����ddecl�union_sdiff_of_subset��������s₁��s₂��h�+S�����+T��������l���m���n�+S���+��+V����
�+T�sdiff_union_of_subset��
�PInfo�k�4ATTR����kdecl�inter_sdiff��������s��t��u�������+<�+:����������q���r���s���	���+��,x���������+c���+b��
����D�,�
����,�����3�	��,�
����,�,�����B�,����,�,�P�,$�,'�G�,�i�,&�,�P���+��,�+��,�,�����+���0�,�,�,?�5�,�,@�P�,>�,C�+���J�,�,��,�P�,@�,�R�,���s�P�,�
�iff_self�,�Z�PInfo�p�7decl�inter_sdiff_self��������s₁��s₂������)W���+,�����������w���x���E�,q���W�3�����+T�W�3�����
����D�,}�,����W�,|�W�,��W��,{�,��������+T�����+T�,��P�,��,����+T���
��
���
��,��,�P���+7�+8��
�,�+���
x���,��K�,��q�
��)��
��K�1�
��,���h�
�a_right�1�
��
��q����3�,���{�1�,��,���a_right_left�,�hn�3�����PInfo�v�:ATTR����vdecl�sdiff_inter_self��������s₁��s₂������,p���������������������,��,q���i��,p�inter_sdiff_self��PInfo�~�>ATTR����~decl�sdiff_subset_sdiff��������s₁��s₂��t₁��t₂�oh₁��h₂�����)W���+,�����,�
�����������������������o���,��������-����?����?���1���3�����D�-�-���-�������)W��+,��/�����)W���+,�a�����@�����?����?�1�1�=
��3�--��P�-�-*���,��-�������-)����-������-)��1�-
�3��1���3��-�
��-!���-��-G�1���(x�P���-�-�<���-G�+���/���P���-Y��-V�-a��P�-K�-���-
�-F�-Va�m₁�-
m₂���	��-�-���~�-�
�PInfo���Adecl�coe_sdiff��������s₁��s₂�����,n�)[�G�����������������*�-��-�_x�,�
�PInfo���DATTR�����decl�to_set_sdiff��������s��t������-��)[�-��-����������������finsetcoe_sdiff��PInfo���GATTR�����decl�union_sdiff_self_eq_union��������s��t�����%�,p�&������������������-��T�����+����
J�-��&a���-����?�
��)��-����D�-��-����-��-��������+T�1�-��<�
��
��-��-��?�
��,��-��-����,�-��-����,��-��P�-��-��
�+T���
��
��,��,��,�,��P�-��-��*��
��,����
�P�-��-�imp_and_distrib�F�
��
��P�-��-�and_iff_left�-��-����
����-��������-����P���-��-��F�-��V�-��PInfo���JATTR�����decl�sdiff_union_self_eq_union��������s��t�����$�-��&������������������.-�����-��&���D�.-�.5�3�.+_a���D���M�+:
��������.-�.3����-����.5�����&���D�.5�.S�3�.3_a���D���N�.<���.C��.5���union_sdiff_self_eq_union����.S���&���D�.S�.l�3��_a���D�������.C��.S�&�.K�'/�&�PInfo���NATTR�����decl�union_sdiff_symm��������s��t���-��.3������������������.����.3���D�.��.��3�-�_a���D�+��.Y�.B�.Y��.��&�.e���.������D�.����.X_a���D�����.Y�.���.����.g�����.R�����D���.��3�&_a���D�.����.B��������.K�'/���PInfo���Qdecl�sdiff_eq_empty_iff_subset��������s��t�������-����+S������������������.��.�����
��)����D�.��.��	��+S_a�C�D�����.<����.���.��.��P�+S�.������.����T�����.<����.����D�.��.��	��.�_a�C�D�.���������.��.��P�.��.��
J�-������.��
����D�.��
����.����T�.��.��
����.��/�,��T�.��T�.��T���.��?�
��3�3�)��.��/&�3�����/)�/&���/,���/-���.��/,�P���,�
�/,�-��.����P�.�������E��������P�/1�/-iff_false�/,�P�/-�/)not_and�
����
��
��3���
��F�,��P�/\�Fnot_not�F�-��.��.���.��P�/�/�
��,]�/�Z�PInfo���Tdecl�empty_sdiff��������s�����)W���+,
������������������/�������D�/��/��	��/�_a�C�D���,n������/��/��P�/��/��sdiff_eq_empty_iff_subset
����"�
�PInfo���WATTR�����decl�insert_sdiff_of_not_mem��������s��t��xh�����+b��
�
��+b
������������������������/����)��)��/��)��/����D�/��/��	��/�_a�C�D���)W���+,������
��/����/��/����/��/��P�/��/��a��/��/����/��/��d�)��)��)��/����D�/��/����)��/�_a�)��D����������/������/�����/��/��/��/���/��/��coe_insert��
��/����/��/��)��)����)��/����D�/��0�/��/�_a�)��D�/��
��/��	��
�/��/��/��0 ��/��0�-���
���
���0�0�/��)��)��)����D�0�07�/��/�_a�)��D�/��)W�/��)Y��/����/��0 �0D�0��0�05�0,
���07�/��)��/��03�)��06���D�07�0Y�/��0_a�)��D�0D�0�0?�/���0B�/��0?�0B�0b��07�0U�0setinsert_diff_of_not_mem��)��03�PInfo���Zdecl�insert_sdiff_of_mem��������s��t��xh�F�/��/���������������������F���0��/��/����D�0��0��	��0�_a�C�D�/��/���0��0����0��0��P�0��0��/��/����0��0�/����D�0��0��0_a�)��D�/��0�0#�0��0��0�0.���0��0�05���D�0��0��0<_a�)��D�0D�0�0D��0��05�0P���0��0X�05���D�0��0��0^_a�)��D�0D�0a�0g�0a��0��0U�0osetinsert_diff_of_mem��)��03�PInfo���adecl�attach_proof_1����s����subtypex�\���attach������������0������nodup_attach�����PInfo���ndecl�������������0�������������1�0�����PInfo���nVMR��VMC���n�����doc��`attach s` takes the elements of `s` and forms a new set of elements of the
 subtype `{x // x ∈ s}`.decl��equations_eqn_1�����������1����1
��������s�1�1�PInfo���nATTR�����EqnL��SEqnL��decl�attach_val����s�������1���1�1�0�����������1�1�PInfo���pATTR�����ATTR�����decl�mem_attach����s��x�1�W�0�
�r���1)�d�1)�1
��������mem_attach���PInfo���rATTR�����decl�attach_empty���������0�x���1�����1>���1=������1>�1A�PInfo���tATTR�����ATTR�����decl�piecewiseu_1u_2���s��fi
g����_inst_1j����i����������1L�������1M���1N���1Pi�ite����������PInfo���zVMR��VMC���z��������������	doc��`s.piecewise f g` is the function equal to `f` on the finset `s`, and to `g` on its complement.decl��equations_eqn_1�����������1L�������1M���1N���1P�����1Q��������
�1^�������1L�������1M���1N���1P����1Q�1m�PInfo���zATTR�����EqnL��SEqnL��decl�piecewise_insert_self�u_4�����s��f�1Mg�1N_inst_1���j�_inst_2i�����������������
�finsetpiecewise��i���1��������������1��������1M���1N���1�������1����1��
����D�1��
����1��1����
��)�
��)�
e_1�1���K�a��K�d�e_2�1��f�����h��C�1��1���1��
�����1��K�1��C���1��1�����i������1�����
�����1��
���J������������a��d�
���
����
��1����
#���1����1��or_congr�1����
����G��V���T���
������1�����1���������a�
�����1������2congr_fun���1��1��2�����1��1���1�if_simp_congr��
��1��
���������2	���
���2=��if_true��
��2
������2>�P�1��
��4��
���Z�PInfo����ATTR�����decl�piecewise_empty���������1����������1M_inst_1i��.���������1��������
�����������1����2a���1M��2cfunext�����������2ni����1��2y�1���2x��
����
����D�2��
����2��2~�
��)�2y�)����e_1�1��1�
�K�1��K���a�a�e_2�1����d�d��1����f�f��C�1��2���2��
�1��2��K�2��C���2��2��1�����2��2��1����1����������/F������2�����1��
�������������2������2��2#��2��2��2��2(��2x��
�2��22���2����������2��2<�����2�if_false����2����2��P�2��
��2Q�2y�Z�PInfo���ATTR����decl�piecewise_coe���������1��������1M���1N_inst_1�1P_inst_2j���
�/�����0_�2di��2�setpiecewise���2��0_
j����1���2��
���������1��������1M���1N�
�1P��3!�2v�����1��3+�33���s�������e_1�����af���d�2�����f�
�h�he_2�2d���h�
�m�g���m�
�q�q����q�
�u�ue_3�2d���u�
�z�z_inst_1��z��W�����������a������W���3l���3l�a���3l�1��
�3v�3$�3v�3x�f��
�3|�d�������3v�f��3����W���3����3�
�d�a�3���3�����3�e_1���3�����
�3�����3��
�3�e_2�2d���3��
�3�����3��
�3�����3��
�3�e_3�2d���3��
�3����3���W���3����3��a���3������d��3�������f�1��
 �3�
�3$�3��3��h�a�
�3����3����3��h��3��!��W"���3����3�
�����3��
�3��3����4
��2d���3��3���3��3���3��h���3��h
�4���4
��4��3��3��4
�2<�
�3��3��3$�3��4)�d���3��3��d��3���3���W�3��3����3��d���3��d
���a��f�d�a�����
�2#�3v���3v�
�3��3��3��3�������3v��W�3��3����3��f���3v�4h�3��3��3������4u���3��
�3��3��3�subsingletonelim��4upisubsingleton�3v��3v�4ta�3vdecidablesubsingleton�4s�3������3B�����3B�����������Z������3B�4�������������1��������4������������PInfo�	��ATTR����	�pdecl�piecewise_eq_of_mem���������1��������1M���1N�
�1Pi�hi���1��1���������������1��������1M���1N�
�1P�#��$�����4��
����D�4��
����4��1��
��1��4���1��4��1��1����
�%�V���
������4�����1���4��1������4��2%�4��5�2*���4��23���
�%�������4��2>�2@�2E�4�������2>�2T�Z�PInfo�"��ATTR����"decl�piecewise_eq_of_not_mem���������1��������1M���1N�
�1Pi�hi���4���������1��������1M���1N�
�1P�&��'�����5.�
����D�5.�
����5.�1������
��4����4��2��4���%�����
�������5�5J�5�5
��%�������5E�2>�2@�3�
��5F��������2@�P�5>�
��2R���Z�PInfo�%��ATTR����%decl�piecewise_insert_of_ne���������1��������1M���1N�
�1P_inst_2���i�j�_inst_3i����������a��d��h���a
�1��a�1��d�2��
��d�
��
��d��d��f�
�
������d�5��a������d�2�������1��������1M���1N�
�1P�)�5t�*��+��,�5}�.�5����5��5��1�����1��5��5��5��J�5��5��5���d��f��h��m��
����5��5��5������d
�5��5��
�d�5�
��1��5��5����5����5��V�5����5��5����5���5��5��5����D�5��5��)�5��)�d�e_1�1��f��K�h��K�m�e_2�1��q��1��u�a�C�1��5���5��
�1��5��K�5��C���5��5��5��1����d�3H�5����d�1��G�O�P��f��h���a���f���3H�1��1��5��2#�d�6�5��6$�2(�d�2��5����5��22�5��5��5��5��5��5��5��5��5��2<�5��5��6>�5��5��5��6(�2��5����d�1��H���f�1��2��1��1��6,�a����5�c�C�1�Ce_1��h�
�3�6\α�1t�5e_4�1�
e�7�e_5�1���1���1��f���
�1��d��C�f�1�C�(���d�a���6j����1�C�1�Ce_1���3�6\�4�1�5�5e_4�6_�7�7�e_5�6b��C�d�1�C�9�D�f�1���1��h�a����1��6l�h�6n�a�������5��:�1����6��6��6��h��h��6�
�7��;�6��6��6���2<��6j�6l�d�6n��d��d��
��a��f�d�a����
������7���6u�6z�6��5��7���6t�6y�����1�4�1�5�7
�6s�6x������d�4�1�6��6j�6j�6r����3�6��6��6j��6��4��d�6r����5��5���5��5��5��5��5��5��6?�5��5��6A�PInfo�(��ATTR����(decl�piecewise_insert���������1��������1M���1N�
�1P_inst_2�5tj�_inst_3i����������a���2d����1��1���1��76�������functionupdate���1��72�7<a��1�����4��
������1��������1M���1N�
�1P�=�5t�>��?�79���7Q�7;�3$��1�����3C����3C����76����classicalprop_decidable���3D���a�����3D�����3D���a�5x
��7P���D�7Q�7}���7:�7B_a�7:�D�2d���a�2��1��a�2��7v�����a�7D�a�2��5v�7��C�a�2�������a��
�
�7��7���7Q�7{���7:�7{�7B�piecewise_coe���1��76���7A�7z���7}�7|�7G�7]�7d������7i�7m�7t��
���D�7}�7��7��7=����4�_a�7:�D�7��3$�a�2��7w����a�7i�����d���d���
��7����
��7����d�5���7��7��7�
�7���7}�7��7��7��7��7�����4��7����7��7|�7]��3C�	���7���j��7i�7m���3D�	��a
�7����D�7��8�7��7G�7\�7H�7����7��
_a�7:�D�7��7��7��7�����a�7i�7��7��
�7��7���7��8�7��8�8setpiecewise_insert���1��7����7��72i��8
���8�7|�7]�7d������a��d��f�7i���h����I��7i�7m�7t������a��d��f��h�7i���m
����D�8�8i���3C�8_a�3C�D�7��7��8���I�a�7i�7��5��7��	��d�8!�7��7����I�a�7i�7���8�8R� �3C�8R�8�0�����a�7i�5����3C��3De_1���7���3M��3Pe_2�2d�3W��3[��3_e_3�2d���z��������3u���3l��W�3v�3����3v�a����4w�3��3|�a��3��d�3��a��8���3���3�e_1�3���3���3�e_2�3���3���3�e_3�3���3��3��3��a��3��R���3��d�4�3$�3��4�f��
�8����3��3��f��3���3���W�3����3����3�
�4���3��4*���8��S�2d�4
��8��8���8��f���3��f�8���8��T�8���8��8��8��4��8��3$�3����3��3��a��3��3��a��3���3���W�3��3����3��a���3��a
�����d�a�����
�4m��3v��4r�d�4w�8��8��8��4}��9:�4��8��4��9:�4���3v�99��3v�4��98�8��7e�8R_inst_1has_lift_t����3Ca���W�
�e_2��������h
����9d�7c�76�8Qeq_of_heq��76�8Qα��α'��e_0�������
�[��γ��γ'��e_1�9{�:�
��
_inst_1'��
e_2heq�
����
���K�aa'�e_3�9��f��K�a'�e_4�9��d�a�9��
��u�f��
�d�
��h�d���]���^���_�9{�9~�^���:�9�`�
���a�9��9���9�
�K�a�c�d�d�9��f�K�a�e��f�9��9��h�9��h��
�a�9��a���:�9�
�`�9��a�9��9���9��]�9�
�`�9��K�a�c�d�d�9��K�a�e�d�f�9��9��9��a�
�h�9����K��c�a�d�9��d�]�f
�c�f�K�a�e�d�f�9��9��9��
�h�9��K��e�a�f�9��9��e�f�9��9��h�9���f���f��
�9t�f
�:�9t�9�
��eqrefl�������:0��73�8Nheq_of_eq�9���73�8N��������������
�
�����:A���
�
�����
�:?���������:J�
������4��:J��
�
���	��
�4���:[��4��:Z��72�8M�:9��s����:9����s�����4�����2�����:���7z�8g�PInfo�<��decl�update_eq_piecewise�u_2���β�k_inst_2��f�

iv��a��functionupdate�������
�piecewise���:��	�j�
�����������
����
����l�:��m���n�:��o�p�������q���:��:�j�dite����
eq��:��:���:��:�
�:���:��:��u�
�����������h�����:��q���:���:����
�:���:��:��u���������������:��:��:��;	���D�;�;�5_a��D�:��q��
�:���;����
�:���;�;�u���������a��a��d�-���a�
�:��;�;�;1��;���;�
����D�;�
����;�;

�
��)�;
�)�;�e_1�:��q�a�a��K�q�d�d��K�q�f�f�e_2�:��q�h�h�����q�m�m�a�C�:��;_��;b�
�����;_�K�;_�C���;b�;
functionupdate_same���:���
��;
�"�������:��:���;���,��:��
��J�;��
"�
��	*��2�c�P�;K�
��4��;

�Z�y�3���;�
����;�
����;�:����
��)�:��)�;e_1�:��;O�K�;T��K�;V�e_2�:��;X��;]�;^��C�:��;���;��
�;i�;��K�;��C���;��:���}update_noteq���:���������
��	��;�A�C�����
��V�;��
����;��3���
��;��3���;�nedef�������P���������P�;��
�not_false_iff�c
��;
��%���;��:��:���;���3���:��
��J�<�;��
��K�<���J�<�����;��<�<
�c�P�;��
��;��:���Z�PInfo�j��decl�decidable_dforall_finset����s��paH���Chpa
h�A�&�ah��������������<I���<Lmultisetdecidable_dforall_multiset����������ah�n���Z���&
�PInfo����	prt��VMR��_lambda_1VMR��VMC����	����_freshJ��VMC����	����������decidable_dforall_multisetdecl��equations_eqn_1�����������<I���<LY�<O���
�<b����������<I���<Le�<O�<l�PInfo����	ATTR�����EqnL��SEqnL��ATTR�����classdecidable����decl�decidable_eq_pi_finset�u_2��������:�ha
decidable_eq����decidable_eq�aH��������������<y���<|multisetdecidable_eq_pi_multiset�����a�����-��PInfo����	prt��VMR��VMC����	��������decidable_eq_pi_multisetdoc��decidable equality for functions whose domain is bounded by finsetsdecl��equations_eqn_1�������������<y���<|���<������
�<�����������<y���<|���<��<��PInfo����	ATTR�����EqnL��SEqnL��ATTR�����class�����decl�decidable_dexists_finset��������p�<Ihp�<L��\a�����<W����������<I���<Lmultisetdecidable_dexists_multiset���<X�<a	�PInfo����	prt��VMR��_lambda_1VMR��VMC����	ha��_freshJ��VMC����	����������decidable_dexists_multisetdecl��equations_eqn_1�����������<I���<LY�<����
�<�����������<I���<Le�<��<��PInfo����	ATTR�����EqnL��SEqnL��ATTR�����classdecidable����decl�filter_proof_1����p��C_inst_3decidable_preds���
��filter
a�������������<����<������nodup_filter
�<����
��PInfo����decl���������<����<�������������<����<��������<��<������
�PInfo����VMR��VMC������������filterdoc��`filter p s` is the set of elements of `s` that satisfy `p`.decl��equations_eqn_1�������<����<����������
�<�������<����<������'/�<��PInfo����ATTR�����EqnL��SEqnL��decl�filter_val����p�<�_inst_1�<�s������<��<��<�������<����<������
��=
�PInfo����ATTR�����ATTR�����decl�mem_filter�������<����<�s��a�����<���<�����������<����<��������mem_filter��<���PInfo����ATTR�����decl�filter_subset�������<����<�s�����=	������<����<������filter_subset
�<����PInfo����ATTR�����decl�filter_filter�������<�q�
M���<�
_inst_2�<�s�o���<������=A�������=Aa��1�������anddecidable������������<����
M���=>���=@���o���=W�T����
�<���������=_�������
�=_����1�2�������=O�2����������=I�=Va����=v���=K�1���
�=����D�=v�=����=h�=����
�=`���������=f�=}�=K�=~�=��=��1�=����=��=��1�
�=f���=��P�=��=��mem_filter���=a�=f���=��=����
�=c���������1�=~���=��P�=��=��=���=d�P�=��=����=~����������P�=��=����=����P�=��=��������=~�=u�=����
�=m�������=O�1��2������=K�=����=��=��=��=l�=��P�=��=��=��=l�=r�P�=��=L�=����=~��������������=��=�P�=��=�=����V�=��PInfo����decl�filter_true����s��h�<�_x�
����<�
_x
�
�����������>�	�
�>a
�����@�<����
�
�A�
����D�>,�
����>,�B�A�
����>*�A���@�>'�<�
�1�A�>&�A�P�>:�>>�=��>&�<�
�P�><�
��A�+��A�A�A��A�P�>3�
��,]�A�Z�PInfo����ATTR�����decl�filter_false����h�<�a��s�����>��
���������>e�������>k�T
���@�<�����
�9�h�>i�a
���>v�����9���D�>v�>~���>t�����@�>q��������1�>p���P�>��>��>C�>p�����P�1�����Z�9�9��9�V���PInfo����ATTR�����decl�filter_congr�������<����
M���=>���=@s�oHx�H�=~���
��
���=f�=b������<����
M���=>���=@���o���>�����=f�>��filter_congr����=d�=a�*�PInfo����decl�filter_empty�������<����<����>��
����������<����<��^���>���>��subset_empty
�>��filter_subset
�>���PInfo����decl�filter_subset_filter�������<����<�s��t��h�j���=E�����
�>�������<����<������������ja�ha�
�=c����������<�������2��1���
��=����>��	����
�%�
���
��^���>���1���
��?��
���
��?�PInfo����decl�coe_filter�������<����<�s�����=	has_sepsep��@has_sepx���������<����<������*�?&�?0_x�=���<��PInfo����ATTR�����decl�filter_union�������<����<�_inst_3�:Js₁��s₂�o���>��f�g������?F�>��>�������<����<����:J������o���?N�T����
�>��������
�
�?Y�>�
�>����?I�?M_x����?d�����1�

���=��?o���D�?d�?q���?]�?o���
�=c����>��?[�1���?k�=~���?o�?}�1�
�?[���?��P�?|�?��=��>��?[���?��?�P�
����������a��
�?�$��?W
�����>�P�?��?o���?k�=~���?c�?o���
�?��?_�?a���
�?_�
�?a�?o�P�?��?��?��?_�?a���?��?m�P�
�?z
�?m�?�
�?��=��P�
�?z�=��?��V�?o�PInfo����decl�filter_union_right��������p�
Mq�
N_inst_4�=@_inst_5�<��s������=b�=_����=_x����������ordecidable���������������
M��
N��=@��?�������?��T������ �������>���=��>����������>������2�������?��2��������g��?��?�x����@ ���1���?��@*���D�@ �@,���@�@*�����@�@���@�@���@)���@)���@*�@8�����@���@�@<�P�@7�@B�y����@�@���@?�@9�P���@	���������@9�?��=��@A�@;�P���@
���������@;�?��@�P�@<�@*�N�@*�@<�(N�@(�����@�@*�P���@�������?��1��2������@)�@�?�@�@�V�@*�PInfo���decl�filter_mem_eq_inter��������s��t�����<�i�F���/e���������
������	��@��i�������=���s����+�

���������D�@��@��	��@�_a�C�D���	��=A��������:����	�����@���@����P�@����?8�@��@�
���@������D�@����	���_a�C�D���,��)��@��@���@����P���������PInfo���decl�filter_inter�������<����<����:Js��t�o���d�e�?D�>��>��@�������<����<����:J�����o�	���@��@���������
�����?W�?_�
�>��A
���1�?m�=~�A���D�A�A���A�A���
�����?��?_�1�?��=~�A�P�A$�A'�$��?W�?_���?��?m�?��=~�=~��=~�A�A���
�?z�A�1�?l�=~���A�A?�1�
�A���AB�P�A>�AG�?��A���AE�A@�P�
�A!
�A@�A-
�����>�P�AB�A�	�?k�=~���V�A�PInfo���decl�inter_filter�������<����<����:Js��t�o���@��?L�@�������<����<����:J�����o���Av���@��?L�@����D�Av�A��[�At_a���D���A�?a�A�a�A��Av�A�j�?D�?L���A����>��@��@����D�A��A��[�A_a���D���A�?a
�A�A���A��A��filter_inter���>��?D���A����@��@����D�A��A��[�A�_a���D���>��A
�A���>��A��A��@��A����@��PInfo���decl�filter_insert�������<����<����:Jas�o���>��e�f�?D��������A��?L�?L������<����<����:J���o�A�A��A�x������
�>��
��
��?W
�
�A��
�����A��?a�?a���1���=~���B���D�B�B	���A��B���
�?z�A��1�
�A����B�P�B�B�?��A����B�B�P�
�
��
��?�
�B�;�?W
�����>�B�B��B�:��A����B	h�A������1����
�
����A��5��5������������
��>�
�BH�B?���BI���D�BM�BP���B>�B>��B>�BL�BO�1�P����K��K�ae_2�8��K��K�e_3�H��w�C�����Ba�
��q�K�w�C���Ba���s��BK�BIif_pos��5��5����BI�BH�:�����BPh'�������1�����
���1�����?���<�������1��
����D�B��
����B����
��
��
����B��
����B����
����B��
����B��
��,��
����B��
����B��B����
��)��)�ae_1�8���f��he_2�8X��q�C���q��B��
�Bh��q�C���B�
����:y��P�B��
��G���B��B��1�P���K�a�K�d�"���f�K��K�G�#�x����u�C�W�u�B����B��
��u�K�B��C���B���
��:��P�B��
��T�B��1��
����1����
�����ae_1�8����f�C
�d
��P�C�
��V�C�%��;�
��B��
����B��B��
��C=���B��,��B��B��C=�,��B��CB�C�B��B��:��B��P�,�������a��d��f�-��B��CB�
��?����B����B��
��B��CA�B����,��B�������a�1��1�B��
��B��Cm�Cn�C�Co�P�Cl�Cr�=����B�����B��B���B��C�
��C3�P�Co�B��+��B��C�P�B��
��,]�
��Z�%�;��B��B��B����1�B��1��C��
��B��C��B��B��B����B��B��B����P�B������B��B��B���B��P�C��B����B��1��1���1��B��C�����CV���C��C��C��B���B��C��P�C��C��C[
��B��C��C��C��P��Ck�C��Cz
�P�C��C����C��P�C��
��,]�C��Z�!�3�A��BN�B?���BH���BR�C��BY�C��B~�BHif_neg��5��5����BI�BH�B��C��%�����B��C��
����D�D�
����D�>}���
��B����B��������C���C���C-�C/�����C�P�D
���Y�
��C������C��Cn�����D"�Cr�D#�D"�CA�Cr�C�B��B��:��B��C|�C����D�P�D#���Y�B��P�D	�
��,]���Z�%�;��D�D�D�C��
��C��C��C��C��C��Z�PInfo���decl�filter_singleton�������<����<����:Ja���=�	��A����o�D^�������<����<����:J�+�,	�D_�Dex��������>��:����A��:������1�����Ds���D�Dt�Dz���Do�Dx�����=E����>��:��1���:����Dx�P�D��D��=����>��:����D��Dv�P�D��Dv�
�����=��Ds�Ds��Ds�:�����Dzh������1�	�
�
�t�A��:��2��D��t�:����D�D��D����D��D���D��D��D��"�%�D��:��B��A������:��2��:��D���
�D�h'�D������1�
"
�7��#�:��
����D�D��
����D��B��
����D��
����D����
����D��
����D��;��
��)��)�e_1�
���d��fe_2�8F��m�C�8V��8V�
���m�C���8V
�B{�P�;��
��;��7��
����7��5��
�����e_1�
��C!�d�C
�a
�P�5��
��V�5��C8�D��
����D��;��
��E.�;��;��Bx
�:��:��s���:��P�;��;��;��E
�C��Z�.�3�D��D��D��D��D	�
��D����D��1���7����D����P�D������D��7��7���7��P�EO���{�7��D����E.�D����P�D��D��;�
�EW�D?�Z�-�3��D��D��t�2����D��E{�D��Ez�D��2��C��A������:��2��D��E{�.�D����D��#��������
����D�E��
����E��D	�
��EM�D��D
���E���E���E �E"�����5��D�E������E��,��E����E5�E��E��E8�E��P�E����/F��D?�Z�.�EJ�E��E��E��Ec�E����P�E����E�
�D?�Z�PInfo�*��decl�filter_or�������<����
M���=>���=@���1�s�����=_a��@����@���������=e�?�������<����
M���=>���=@���1��3�����E��T������>��4����1��2�����@����@�@�1��>��=��@�@#�E��E�_x����E������@)�2��@9�F���D�E��F
���E��F�����E��������?��1��1��2����@)�E��F�P�F�F�?�E��E��P�@)�@�F�@t�2����E��F�����@�@�1��E��@�����E��@?�F�P�F6�F:�@G�1��E��@���F8�F�P���>��������2��F�?�=��@?�@9�@\�V�F�PInfo�2��decl�filter_and�������<����
M���=>���=@���1�s�����=s�����E��E��?�������<����
M���=>���=@���1��7�����Fl�T������>�a��1�1��2��=����)�*�1��E��@�@#�Ff�Fk_x����F����=j�=K�@(�F����D�F��F����F{�F������Fx�������=O�1��1��2����=j�@9�F��F��@)�Fw�F��P�F��F��?�Fw�=��P�@)�=k�F����@(�2������2��2���2��@9�F��P�@9�F����@(���F��F������)�*�1��E��@�=K�=j�@(�F��F��=K�1�F��@(�F��F��F��F��F��F��1�F8�@?�F��P�F��F����1��E��@���F8�F����FL�F�F��FR�P�F�F��F��2��@?�F����@U�@9�F��@\�F��P�F��F����F����@(�>�F��F����F��=j�@)�@(�F��G�@)�F��G�P�F��G	���F��@(�P�G	�G�F��@(�F��G�@(�P�G�@(�;�@(�P�F��F������2��@(�V�F��PInfo�6��decl�filter_not�������<����<����:Js�����=a��3�����notdecidable�����+7�+8�������=������<����<����:J�;�����GI�T������=A�<��3������G;�������+_�+`�?D�>����G@�GH���G`�T����1�G8�	��1�	��?���3�u���D�G`�Gn���T��G_�T��Gm�T����GX�Gg�����GR�������G;�2����Gi�GQ�Gg�P�G��G��D��GQ�GU�P�Gi�G8�Gg���	��G8�G^�Gl�����+_�+`�����BD�>��Gi�3���>��Gl�P�G��G��+��?D�>����	��	����G��Gk���G��3�=}�	��Gk��G��G������D��Gi���G��P�G��G��D��P�G��G��G����P�G��Gk�/U���	���a����G��Gl�@��T����1�GP�?k�?l�?���3�����?��G��Gu�?����G��Gg�G��Gl�Gl��Gl�?�and_congr_right�	��G8�Gkh�	��J�3�
�?�u�3�7��?�
�3�$$�N�G��G�imp_iff_right�u�G�imp_not_comm�u�
�PInfo�:�decl�sdiff_eq_filter��������s₁��s₂���.��<�
_x��Annotinfix_fn���G;�F�/e��������E���F�����H"�T�.����=
�G��3�sAnnot�H����G;�s�@�
�/�H!_x���H2�/0�/,���D�H2�H8�/<�H1�/,�P���=�H)�������G;���@�
���H)�?8�H)�H.
�V�/,�PInfo�D�decl�filter_union_filter_neg_eq�������<����<����:Js�����J�K�GC�GG�G@������<����<����:J�K�����Ha�.B���D�Ha�Hh���H_���H_�H^�GH�&�H\�GG�GG�2�GG�G@�GH�filter_not��>��<��GC�union_sdiff_of_subset��GC�GG�>���<��3�3�PInfo�J�decl�filter_inter_filter_neg_eq�������<����<����:Js�����A�B�GC�GG�G@�������<����<����:J�O�����H������D�H������H�����H��H��GH�c���o�K���K��e_2�	�K��K��e_3�������H��
��H��H��GG�GG�Hv�G@�GH�H�,���GC�GG�������PInfo�N�
decl�subset_union_elim��������s��t₁��t₂�_inst_4�?�
_x��)�
Annot�Hh���)����B���)��C�����)��)�� �)����
�W��s₁���W��s₂���1�� ����/��1���3C���H���3C�H���3C�7b��I�I�)W�3C�)Y�����������T���U���V��W�H��Y�H������I�=_
_x����3B����Annot�H�?���I!�[���1��@�>�
�\����3C����Annot�H�@���1���3B���H����3B�H����3B�4��I7��I?�IE�)W�3B�)Y���=_
_x��3�I'Annot�H����G;�I'��	�����I,�I^��1���/����H����/��H����/��/��I,�Ig�Im�I^�0?
���Ic�
����D�Ic�
����Ic�����
��)���)��e_1��K���K�
�e_2�9b���C����
�9c�K��C����Ia������ ��=_�I(����@��=_�IW�������G;�I2����=_����
��3����C�����I'�IV���I��<������?��I'�IV�I[�I��
a�����C�I��I����P�I��
�p�C�V����classicalor_not�I'���I��=_�����I3�]��3�I2����?��I��I��I��I���I��filter_union_right����I(�IW�?��I\����I�����e_1�������<��a
���
����e_3��3��D�����D��d���B�����B��<��u����I��3���u�C����J�<��z��u_1�G
���G�e�x�J�I��J
����J��s�G�<��m��3��D�����D��<��q����D��
���I��I��I��I����s��������I����JG�P�I��
��G����Z�	��Ip�Iv���Ipx����4�I&�IF�I0��
����D�Je�
����Je�?�~�
��
��Jk�?�~a�Jd�7l
��Jl�Jk�4�1�~�I'�Jd�Jr�
��Jb�I'�Jv�I'���Jb�1�I&�4��ID�x��I2�Jv�J~�I&�?(��3B�?+��I3�J��J��1�B[�3B�K��K�ae_2�8��K���f�K�9de_3�����m������q�C���J����J��
�Bh�K�J��C���J��I$�B{�IF�J�����I3�@���mem_sep_eq��J��J����J��~�P�I&�4��~�V���I'�I'��I'�J��P�Jw�Jr���~�I'�I'�
��~�h�I'�Jd�~�
��3�P�J��
�imp_self�I'�P�Jl�
�forall_true_iff�~�Z���Ivx����4�I&�IE�>�
�I�Annot�H�I���Jc�I�?�~�h�3�Jd�1�Jo��3�Jp���D�K�K���K�4�Ju�IV�1�Jc��K�K�
��K�I&�IP�K�1�I&�IV���K�J��i��I��K�K �I&�J��I��J��K#�J��K�K'�J��I��I���J��K!�J��IV�IV��IV�P�K�K�)����P�K�K�J��IV�Khx�~hx₂�K�	��K�K��Jp�K�<��PInfo�S�
decl�filter_congr_decidableu_1�s��p�
Mh�==_inst_4�=@���=
�Kf������t���u���v�
M�w�Ke�x�=@���
T���K��Ce_1���I����I�
���<��
�������
�e_3�9b����<��h��
�K{��3��K�h�C����K��<��m����K����K����D�e_1�I����<��u
�����z������e_3�����3l�3��K�3v�C����K��{���K�3��C������3��<��3�����K��3��K�3��C����K��<��3���J���3v
���K��|�����3��K��K��K�����K���s�K��<��3v��3��K�����K��<��3�����K��
������
���s������G�K��K��:I�<��h�����G�K��K��K������K����G�w�K��4��K��4��h���h��1���h�4��1��K�

���
T
�Kj�2�PInfo�r�ATTR����rncomp�has_sepdecl�}u_1�has_sep�~������has_sepmk����p�<�x���>���
�7i�PInfo�}�&prt�}doc�}The following instance allows us to write `{ x ∈ s | p x }` for `finset.filter s p`.
 Since the former notation requires us to define this for all propositions `p`, and `finset.filter`
 only works for decidable propositions, the notation `{ x ∈ s | p x }` is only compatible with
 classical logic because it uses `classical.prop_decidable`.
 We don't want to redo all lemmas of `finset.filter` for `has_sep.sep`, so we make sure that `simp`
 unfolds the notation `{ x ∈ s | p x }` to `finset.filter s p`. If `p` happens to be decidable, the
 simp-lemma `filter_congr_decidable` will make sure that `finset.filter` uses the right instance
 for decidability.decl�}equations_eqn_1�~������L.�}�~�L9����s�L.�L=�PInfo���&ATTR�����EqnL��SEqnL�}ATTR����}class���}��decl�sep_defu_1�s��p�
M���?(
���L<
x
���>��
�7i�������������
M���LJ�PInfo���(ATTR�����ATTR�����decl�filter_equ_2β�:�_inst_4�<zsfinset��b
�:��LZ��filter��:�����ite�����L\���%���L\�����L\�5������@��L\�L|���:����LY���L[��
�:��Lo�Lu�L�h�Lo���:��LZ��L^��:�������
�Lg�Lh��L��Lk�
�Lq��
�L��Lx��L��L{��L~���L��L��L��L��L����D�L��L��)�L��)�LZ�e_1�:��LZ��K�LZ��K�LZ�e_2�:��LZ�a�;]�LZ�d�C�:��L���L��
�;i�L��K�L��C���L��L��L����L��L��L��L��$��L��L��L��L��L��X���L��L���������Lh��L��Lk��L^��:��
����5��L��Lx��L��L{��L~��
�
���1�L��L��L�
���D�M
�M���M�M�P�L��L����������M�mem_filter���L��L��M�M���M�L��singleton��
�M�1�����L��K��K�e_2�:���K�L��K�L�e_3�:��LZ�f�;]�LZ�h�C�Lh�h�MB���MG�
�;i�h�K�MB�C���MG�L��L���M�M4�insert_empty_eq_singleton���
�
�P�M5�M�mem_singleton��
�S�M�Mh�M�symm���
�Lh��L��Lk���:��a_1�M���t_1����:��
H_1�M;�H_2�5�:��a���M�
�1�Lh�d�L��Lk�d���:��d�����M�����������M;����5�M���M��L��a�1�M�
��M�
���M������5�M���M��L����	��Lh�a�L��Lk�a���M����rfl��a�
�L�����M����3�Lo�L��L��L����L��M��L��L��)��L��L��L��L��L��L��L�������M�L��L��L��M�?�M�3�M����D�N	�N���N	�3�M�N�N�M���N�M.�N���P�N����:��E���Lh�L[�Lk�L��L[�L{�not_mem_empty���P�N�N�/N�M�P�N�N�/U�M�Mm�M���Na_1�M��M���t_1����M�H_1�M�H_2�5�M��M���
���M���M���������M�����M����5�:��f�
�NV��L��f������Lh��L��Lk������M����5�M���Nj�L��d��1��My��
�L��
���M�
�PInfo���3doc��After filtering out everything that does not equal a given value, at most that value remains.

This is equivalent to `filter_eq'` with the equality the other way.decl�filter_eq'�����:�_inst_4�LYs�L[b
�L]�L_a�L������L����:����LY���L[��
trans��L\�L]is_preorderto_is_trans��L\�L]is_equivto_is_preorder��L\�L]eq_is_equiv��L\�N��L__x�L��Lc�L��filter_congr��N��N��N��Lc��_x�L�
�S�L�
�L��My�
�N�
�filter_eq��������PInfo���Ddoc��After filtering out everything that does not equal a given value, at most that value remains.

This is equivalent to `filter_eq` with the equality the other way.decl�rangen,finset,��,�,�range�nodup_range�PInfo���OVMR��VMC���O��,�rangedoc��`range n` is the set of natural numbers less than `n`.decl��equations_eqn_1��,Y�N����N���,e�N��N��PInfo���OATTR�����EqnL��SEqnL��decl�range_valn,Y�,��val,�N��N���,rfl�N��N��PInfo���QATTR�����ATTR�����decl�mem_rangen,m,���,�N��,�N�has_ltlt,nathas_lt��,��,�mem_range�PInfo���SATTR�����decl�range_zero�N��N���@�N��5,�N��N��O�PInfo���UATTR�����ATTR�����decl�range_one�N��N�:��,�N��O��,�,�,��decidable_eq��O�O �PInfo���WATTR�����ATTR�����decl�range_succ��,�N��N�natsuccinsert,�N��O-�N���,�eq_of_veq,�O4�O;���N��N��O3��,�N��N��O;�range_succ���N��ndinsert,�O,�N��OH��,�O,�N��not_mem_range_self�PInfo���Ydecl�range_add_one��,�N��N�6:�O;��,�range_succ�PInfo���\decl�not_mem_range_self��,�3�O�N���,�O]�PInfo���_ATTR�����decl�range_subsetn,m,�����N���,�O�N���,��has_le��,��,�range_subset�PInfo���aATTR�����decl�range_monomonotone,�N���,ordered_comm_monoidto_partial_order,ordered_cancel_comm_monoidto_ordered_comm_monoid,ordered_semiringto_ordered_cancel_comm_monoid,natordered_semiring�O��N���,�N�_x,_x,���Ov�O}�range_subset�PInfo���cdecl�exists_mem_empty_iff����p�<����Xx�1�������������<����O��D	���D�O��D	���O������O��X�������
^�O��O��
d�O��O������O��EN�������O����P�O����/F
��������P�O����{���P�Xa��������W�>dexists_false��������>��PInfo���hdecl�exists_mem_insert����d��as��p�
O���
Yx��1�������(}�
Yx��������������������
O���O����O��O����D�O��P���O��O����O����
Yx�x��1���
Yx�����1���O��P	�
Y����������O��P���
T���Kse_1�Kv�
S���C
���O��P�
a�����C�O��P������O��1�����P�������������O��P�P3�P�����s���P�
Y������P
�P�Pexists_or_distrib�����P�O����
Y�PP�(}�P�
Ya����=C�Kj
exists_eq_left���Kj
�O��O���O��O��O���O��V�O��PInfo���kdecl�forall_mem_empty_iff����p�<���x��O�%�
�����	�<��V�Pz_xfalseelim���PInfo�	�pdecl�forall_mem_insert����d��as��p�
O��x����%�1�(}x���s%����	
���	�	���	
�
O���P����P��P����D�P��P����P��P���x��	���
�*c���1�=��>��?�����;��>��<�����P��P��@��	��1�P��P��P����	��P��	��1�?��%�P��	����P����%�P������������O��P�P��P������P�>��1�P��P��P����>��P��>��P����=��P��(}�P�E��?���=a�P^���Kj
�P��P���P��P��P���P��V�P��PInfo�		�sdecloptionto_finset_match_1����_aoption������	�P�optioncases_on�	�P���������val�Q���	�PInfo�	�}decl�	equations_eqn_1�������	��	none��������	����Q�PInfo�	�}ATTR����	EqnL�	decl�	equations_eqn_2����a�*�Q�	some������	���Q���Q�PInfo�	�}ATTR����	EqnL�	decl�	to_finset����o�P�������	!�P��Q	�PInfo�	 �}VMR�	 VMC�	 
�}�	!�	�5��doc�	 Construct an empty or singleton finset from an `option`decl�	 equations_eqn_1�����	!�P��*�	 ��Q+����	!�P����Q0�PInfo�	#�}ATTR����	#EqnL�	#SEqnL�	 decl�	to_finset_none�������Q.�Q����������Q9�PInfo�	$��ATTR����	$ATTR����	$decl�	to_finset_some����a�*�Q/�Q������	&�����Q@�PInfo�	%��ATTR����	%ATTR����	%decl�	mem_to_finset����ao�Q���o�Q.
�X�P�
optionhas_mem
����	(�	)�Q�	
�	)�QM�����Q.�}�P��QO
�����o�QI�Q
�QR�Qh���o������D�Qm�Qq���Qj�Qo�1�P
���K�K�e_2�	��K���K��e_3�I�����C�����Q}�
��a�K���C���Q}�m�s
�Qi������Qi�Q
�Qh��	#
�Qh�	
�Ql�����Ql���QM�Qh�Q
���P�Ql�Q�optionmem_def
�Qheq_false_intro�Q�_h�Q�optionno_confusion���Q�Q
�V�Qo�	)
�������QZ�Q��Qb�Q����	S�Q����D�Q��Q����Q��Q����Q����	n�Q��1�P���K��K��	,�	��K���K��	-���������Q��
��d�����Q��

�s
�Q��	n�,��Q��Q�Q��	n�Q��Q��	�P�Q��Q��	V
�Q��Q����Q��	R
�Q��R���Q^�Q��Q��R�P�Q��R$�Q�
�Q��	someinj_eq
�P�R�Q�eq_comm
�V�Q��PInfo�	'��ATTR����	'declmultisetto_finset_proof_1����_inst_1��s�{�����
������	:���	;�{�	7nodup_erase_dup
���PInfo�	9��decl�	8�����	:���	;�{������	:���	;�{��
���	9�
�PInfo�	8��VMR�	8VMC�	8���	;�	:��doc�	8`to_finset s` removes duplicates from the multiset `s` to produce a finset.decl�	8equations_eqn_1�����	:���	;�{���	8�
�Ra����	:���	;�{�s���Rh�PInfo�	>��ATTR����	>EqnL�	>SEqnL�	8decl�	7to_finset_val�����	:��s�{�����Rf���R[����	:���	@�{�����Ru�PInfo�	?��ATTR����	?ATTR����	?decl�	7to_finset_eq�����	:��s�{n�|�����Re�����	:���	B�{�	C�|�^��������R��R�����R������
�����R��
�����PInfo�	A��decl�	7mem_to_finset�����	:��as�������R�������	:���	E�	F���	7mem_erase_dup��PInfo�	D��ATTR����	Ddecl�	7to_finset_zero�����	:���*�Re���Q������	:���QE�R��PInfo�	H��ATTR����	HATTR����	Hdecl�	7to_finset_cons�����	:��as�����R��
��
��R�����	:���	J�	K�����R��R��*�PInfo�	I��ATTR����	Idecl�	7to_finset_add�����	:��s�{t�����R�has_addadd���has_add�$�R��R�����	:���	M�{�	N���	��R��R����������Re���R����R��
���M�R�
�R��
����D�R��
����	��������Re��
��R����R��
���i�R��R�
�@����
��
��,����R����
������R������<]
�<]�S�
����R��S�����R����R��<]�R��S�P�S'�S)�	D���R��P�S)�S�mem_add�
�R��S�������R��R������R����R��S�P�SC�SH�	�R��R����SE�S�P���S%
�S�S1
�SG�S�P���S%�S�S1�P�S �
��,]�S�P���
��
��n�Z�PInfo�	L��ATTR����	Ldecl�	7to_finset_smul�����	:��s�{n,hn�J,����R�add_monoidsmul��add_comm_monoidto_add_monoid����to_add_comm_monoid�������ordered_cancel_comm_monoid�
�R�����	:���	T�{����	:���	T�{�	U,�	V�S���brec_on�	U,�	V�S����Re����S���S���S���S���S����S���	U,_F��below�	U,�	V�S���Re����S����S����S����S����S����S���	V�S~��	U,�	V�S��	^�S��	U,�	V�S��9`�Re�f�T�S��,�S��,�S��,�S��,�S��f�a�S��a��cases_on�	U,�	V�S��	^�S��	U,�	V�S��x�Re�q���S��9�S��9�S��9�S��9�S��q�h�S��h�H�Re�m��S��f�S��f�S��f�S��f�S��m
�f�S��f
�	V�S~��zero��	^�S��	U,�	V�S��H�S��S��f�T�T����Re�h��h��m��S��6�S��6�S��6�S��6�S��h��d�T�dabsurdZ���T&f��	U,�	V�S~�O3��	^�S��O2���H�S��S�6
:�f�T�:�Z
��O(
��T>h�TA���x�S��S�6:�h�S��x�S��S�6�:�h�S����D�TM�TU�	�,_a,�D�I��Re�u��u��z�z�S����u�S��Tb�S��Tb�S��Tb�S��u6�:�m�Ta�m�I��Ta�Tk�Od�m�Tr��TM����TU�x�S��S�:�h�S����D�TU�T��TZ4add_semigroupto_has_add,add_monoidto_add_semigroup,��add_monoid��	gto_has_zero,�T�:_a,�D�I��Ta�Tk�TP�m�Tr�I��Ta�Tk�m�Tr��TU:zero_add,�T�:���T��x�S��S����D�T��T��]�9�T�_a�9�D�I��Ta�Tk:�m�Tr�I��Ta�Tr��T��hadd_monoidone_smul��9�S��h�s�w�S��	c�3�TA�TN�x�S��R��9�	f��9�	h��9�S��S��h�T��S����TW�T��T��TJ_a�9�Tt�T��T}�T�add_monoidadd_smul��9�S��h:���T��x� �w��q���S��T��T��S����D�T��U�]�w�S��T��R��q�T��T�_a�w�D�I��Ta�R��Tb�T��Tb�T��Tb�Tj�Tk��m�T��Tr�I��Tr��T��U�	7to_finset_add��q���T��T����U�x�U�S��S����D�U�U2�T�_a�9�D�I�� �B���u�T`�Ta�U�T��Tr�I��U<�T��Tr��U�h�T����U2�x�U�S��S��S����D�U2�UQ�U
�U_a�w�D�I��U<�Tr�Tr�I��U:�Tr�Tr��U2�S�pprodfst�	U,�	V�S����K��Re�z��z������S����z�S��Um�S��Um�S��Um�S��z�q�Ul�qnatadd�T��recn,punitn,ih�U�pprod�	��	U,�	V�S��K��Re�3l��3l��3v�3v�S����3l�S��U��S��U��S��U��S��3l�z�U��z�U��U��	x�U��U��U��U����UQ�T����D�UQ�T��U
�UO_a�w�D�I��U:�Tr�Tr�Tr�U ��UQ�S����q���S��T�

�PInfo�	S��ATTR����	Sdecl�	7to_finset_inter�����	:��s�{t�����R��/��R��R�����	:���	��{�	����	��U��U����������R�����,��
���D�R��R��
����D�V�
����	��������R�����,��
�
���g�S�S	�S�
��,����V
�S�����V
���1�S�S�V,�
����V�V,�����S%�V�<]�V�V,�P�V4�V6�S1�V�P�<]�V�V��
�V,�mem_inter��
�V�V,�������R��R��1�SE�SG�V,�P�VR�VU���R��R����SE�S�SX�SG�S�Sa�P�V.�
��,]�V,�Ss�Z�PInfo�	���ATTR����	�decl�	7to_finset_eq_empty�����	:��m�{�����Rt���������	:���	��{�J�Vy�Rv����V|�N�V��Vy�Q�Rt�multiseterase_dup_eq_zero
���PInfo�	���decllistto_finset����_inst_1��llist������	����	��V��Rs�H��V�
��coe_to_lift�V���coe_base���V����has_coe

�PInfo�	���VMR�	�VMC�	����	��	���	8doc�	�`to_finset l` removes duplicates from the list `l` to produce a finset.decl�	�equations_eqn_1�����	����	��V����	��
�V�����	����	��V��Rn�V��PInfo�	���ATTR����	�EqnL�	�SEqnL�	�decl�	�to_finset_val�����	���l�V������V����V�listerase_dup
������	����	��V��R{�V��PInfo�	���ATTR����	�ATTR����	�decl�	�to_finset_eq�����	���l�V�n�	�nodup
�����H��V����V��V����V��V����V��V������	����	��V��	��V�multisetto_finset_eq�
��V��PInfo�	���decl�	�mem_to_finset�����	���al�V������V��}�V���has_mem����	����	��	��V��	�mem_erase_dup����������PInfo�	���ATTR����	�decl�	�to_finset_nil�����	����*�V����	=������	����QE�W�PInfo�	���ATTR����	�ATTR����	�decl�	�to_finset_cons�����	���al�V����V�listcons�
��V�����	����	��	��V��R��W�W�:��V���decidable_mem�����W���Wh�V��������V����W�
����W1listperm��V����WA���D�W;�WC���W;���H��V�����V��WI���V��WI���V���WA�WT�WC�)���)��e_1����K���K�e_2�Z��#�C�$��$�
��#�K�#�C���$�W6�WT�������W0���W4�WS�W?���W4�WT�	����W4�U�V��WI���W�V���W�V��e_2���V�����V���
�H��W���WR�W@�W4�WAlisterase_dup_cons_of_mem��
���n�WI�V��
�
��V�W��c�W:�WT�Ww�W:���W8�WS�W|��o���e_1��������
���W9�W8����
�W8���	��Wx�
��J�W��W��
��	���
�W��c�W��P�WV�WC�coe_eq_coe��WA�WA�	�permrefl��WA�	��3�V��W<�W>�W3�WA�W����WE�W��WH���WS�W��W��W��Wu�W��W�W��W��W��W��	�erase_dup_cons_of_not_mem��
���3�W��
��J�X�;��
��K�W������W��<
�c�W:�W��Ww���^�W8�WS�W|�W��W��X��W��X!�X�����W��X$finsetinsert_val'��
�W8_inst_1�1�s���	��e_2���J�
�	���	��Z�$���d���X9�s����
��X(�W��Ww�X(��WT�W�a��	��e_1�Q��	����	��e_2�W]��#�#������
���d�	��#�,����

���W��WT�W��cons_coe�
�WA�coe_erase_dup���W��W��W@�W��W����WI�X �W3�W|�WA�W��X�WA���3�W��WA�
��J�X��;��
��K�X����J�W��W��W����V���
�X�<
�chd��	��e_1�Q�tl�W��	��W�e_2���V��a��V��d�X��W�d��X��
�X\�	��X��V��f���X�

���W@�WA�WA�	�erase_dup_idempotent���P�W��W��W��W��W��W��W��PInfo�	���ATTR����	�declfinsetmap_proof_1���������:�ffunctionembedding�s���nodup�
�map�
coe_fn���X�
�	�has_coe_to_fun�
��������:��	��X��	����nodup_map�
�X����	�inj�
�
��PInfo�	���decl�	����������:��	��X��	����LZ
������:��	��X��	�����
�X��	����
�PInfo�	���VMR�	�VMC�	����	��	�����mapdecl�	�equations_eqn_1���������:��	��X��	����:��Y	�	����
�Y������:��	��X��	����L��Y	�Y �PInfo�	���ATTR����	�EqnL�	�SEqnL�	�decl�	�map_val���������:�f�X�s���:���
finsetval�
�Y �X�������:��	��X��	����M��Y.�Y2�PInfo�	���ATTR����	�ATTR����	�decl�	�map_empty���������:�f�X��:��L[�Y
��N#������:��	��X��M��L[�YC�PInfo�	���ATTR����	�ATTR����	�decl�	�mem_map���������:�f�X�s��b
���Ln�Y�
�
Ya����sH�s�L��X��X����X����
������:��	��X��	����	�
�J�Li�Y-���X���X��X���X��
��
Ya��1���o�L��X��X����X����Yb�mem_map���Yw������Y��Yb�Y��
Y�	����Y����D�Y��Y����Y��Y���Y��Yb�Y��P)�Ya�Y��P.����YTh�s�Y^����Y��	���P�Y��Y�exists_prop�s�Y��V�Y��PInfo�	���ATTR����	�decl�	�mem_map'���������:�f�X�a
s�����Lm�Yw�YP�5������:��	��X��	�
�	����mem_map_of_inj���Yw�X��
���PInfo�	���decl�	�mem_map_of_mem���������:�f�X�a
s����5�L��Y�
�Y��������:��	��X��	�
�	������Y��5�	�mem_map'��
�PInfo�	���ATTR����	�decl�	�map_to_finset���������:��	��X�_inst_1�:J_inst_2�<z
s���L��Y��R��?Dmultisetto_finset���GC�X����Y�������:��	��X��	��:J�	��Y��	������Z�T����L��Y����S��?W�L��Y���?D�X����Y[�	�ext���Y��Z_x����Z���}�	���1�����Z�
�M��X��X����X�����Z6���D�Z�Z8���Z�Z6���Z�}�	�������S��BD
�	��ZB�M��X��X����X����
�Z6�P�Z�ZQ�	�mem_map�����Z���I�����e_1�I��
S���C
�E�ZP�Z5�I�����ZC�	��ZB�ZM����Z4�	�����Zj�1�ZB�Z3�Z4�P�Zj�Zq�Y��ZB�Z3���ZB�Z(�P���S�������a��d��
�Z(�S.��BD
�Z3�Z3��Z3�Z�Z6���L��Z�G��Z�L��Y-��Yk��Z�Z6�P�Z��Z�multisetmem_to_finset���?D�Z�P�Z��Z6�Y����Y[�V�Z6�PInfo�	���decl�	�map_refl�����	����*finsetmapfunctionembeddingrefl����	������Z��T�����Z�

�Z�
���g�Z�_x���Z����q�	�
�><�	R�	��	���	����Z������D�Z��Z����Z��Z����Z��q�	�
���A�	��A�	��Z��Z����Z����Z��
�Z��P�Z��[�	�mem_map

�Z����
N���
Oe_1���
T�
S�Ks�C
���[�Z��
a
��
�C��
�Z��	��A�[��
�Z��	�
�P�['�Z��Y��A�Z��������exists_eq_right�
�	�
�A�PInfo�	���decl�	�map_map���u_3������:�γ�
�	��X�
�	���g�	���
���	���	�map����Y�
�	�map���	�trans����
������:��
	�[F�	��[H�	����

�[K�	�eq_of_veq��[V�[b���[L�����[V�[r�[b�[p�map��functioncomp�����	�����[I��	�����Y�
���[z�	����	����	�����[`�����D�[v�[��)�[o�)�[n�e_1�[L�[n��K�[n��K�[n�e_2�[L�[n�����[n�a�C�[L�[���[��
�����[��K�[��C���[��[s�[�����[o�[s�map����[��Y��[����[��[��[��Y0��[U�[��	�map_val����[Uf�<���
�:�e_1eq��<��s�Y-��
�Y-�e_2�:��Y-�a�����Y-�d�[��[��d�a��[��
�����<�d�d�
�[��[n�d���[��[��[���has_coe_to_funF���[��[��[��[��[��
���
multisetmap_map�����[��[����[u�[��
���[`�h��[o�[��PInfo�
��decl�	�map_subset_map���������:��	��X�s₁��s₂��������L\����YQ�Y��j������:��	��X��
 ���
!���S�\@�jh�\@x�xs���^�M��Z0�Y������Y����
�\J���\K�\N����\V�h�j���\:�L��\<��Y�
�Y��
����D�\l�
����\l�\:�Y-������Z�o�Z���
��\r�\w�[��\j�[��Y��\{�P�\l�\��	�subset_def���\j�Y�c����\s�K�Z��K�Y-�e_2�:��[��K�[��K�[�e_3�:��[��;]�Y-�f�C�\:�\����\��
�;i�\��K�\��C���\��\v�\~�\x�\
�\��\z�\��P�\{�
��V�\{�map_subset_map����Y��o���Z�PInfo�
��decl�	�map_inj���������:��	��X�s₁��s₂�����L]�YQ�Y���������:��	��X��
,���
-�����\����1�j���\����D�\��\����\��\����\��1�\@�\>�Y��YQ�\��P�\��\��	�subsetantisymm_iff��YQ�Y����\@�j�P�\@�j�	�map_subset_map��
�\��\��P�\��\��]�\��\��P�\��\��
/��V�\��PInfo�
+��decl�	�map_embedding_proof_1���������:�f�X�s₁��s₂����\���
������:��
3�X��
4���
5���^�\��\��	�map_inj��
�PInfo�
2��decl�
1���������:��
3�X��X����L[������:��
3�X��	�embeddingmk����L[�YB�
2���
�PInfo�
1��VMR�
1VMC�
1���
3����	�decl�
1equations_eqn_1���������:��
3�X����]:�
1���
�]F������:��
3�X����]:�]O�PInfo�
:��ATTR����
:EqnL�
:SEqnL�
1decl�	�map_embedding_apply���������:��	��X��	����Y�X��X����Y	�X����Y	�]L
�Y ������:��	��X��	����M��Y	�]e�PInfo�
;��ATTR����
;ATTR����
;decl�	�map_filter���������:��	��X��	���p�
N_inst_1decidable_pred��L��L��Kj�\j�Y��=A�
����C�Y�����Y[
������:��	��X��	����
=�
N�
>�]t���]��T����L��L�
�=C�Z
�L��Z
�=_�]y���C
�Y[���
�Z1�Z�]w�]�b����]����1�}�	���1�)�Z3�}�	���]��1�]y���C�Z0�Z3���D�]��]����]��]����L��]�����=a�]��1�L��]��]��P�]��]��M(
�=C�]����]��]����]��}�	�����)�	��)�ZM�]��P�]��]��ZY�Zf�]��]��I�����]��	��)�ZM����]��	���P�]��]��Y��)�Z3��]��]����]��}�	�������>��]�����ZJ��	��^�ZM�]��P�]��^	�ZY�]��Zf�^�]��I�����^�	��^�ZM����]��	�����^�1�]��]��Z3�]��^�1�^�Z3�^�P�^�^!�Y��^�Z3���^�^�P���]���������X��X��a��X��a����^�?�]��^��Z3�Z3�Z��P�^�]��R�Z3�)�]��S�]��]���]��q���	���1���M��]�
����1�^]�����	���1���1�]y�a��C��^2�M;�^3a_left�^]h2���6�	��a�1�8�M��X��X��d�a�X��d�a���
A�E�^��	��d�1�G��1�]y�f�d�C��X��X��f�d�X��f�d�a�M��^��x�aa_left_h�^~�q�b�M��^���
D�1�b�^��o�	��h�1�r�d�1�]y�m�h�C�a�X��X��m�h�X��m�h�f�:��h�^��h1�brfl�NU�X��X��h�f�X��h�f�d
��M��h�^��
@�h�
B�2��W�u�	��u�1�W�z�K��d�z�m�1�]y�z�u�C�h�X��X��z�u�X��z�u�q�:��u�^�
�
B�a�^����q�	��q�1�B��d�u�h�1�]y�u�q�C�f�X��X��u�q�X��u�q�m�:��q�^��^����	�����f�1�]y�q�m�C�d�X��X��q�m�X��q�m�h��:��m�_��_
�	��_�_�M��m�_����]�����	���^X�1�]y���C��ZJ�^Z����_E�1���	���^b�^k��x�a_h�_D�q��1�^g�M;�^2�
H���_V�1��	��d�^��^��Mh1�a_h_right�1�]y�d�a�C��^z
�M��^z
��q�^��M��^���
J�1�_l�_p�1�o�	��h�^��^���h2�_lrfl�NU�^����^��^���
@�h�1�W�q�	��q�^��_�2��	����	��m�1���f�_�_�_��a�_����_���	��q��d�^��_��_��M��h�_���PInfo�
<��decl�	�map_union���������:�_inst_1��_inst_2�<zf�X�s₁�os₂���:��L��Z
���:�����L��������_��_�������:��
N���
O�_��
P�X��
Q�o�
R�����_��T����M��\M�@�@��
�_��_��L��_���:��_�
�_��Z��_��_�_x����_�����������-U�M��ZI�������1��
�_������	���_����	���_����D�_��`���_��`���_����	�����_��_������������1����M;�^1�
���������1���`�`���	�������H��H���
�	��`.�M;�`
�`�P�_��`6�ZV���_���`5�`�����`/�	��`.�`2����`�	�����`E�1���-T�_��_��`�`J�1�`.�_��`N�P�`E�`R�Y��`.�_����`.�`L�P���H��H�����a��d��f��
�`L�y���
�_��_���_��P�`N�`���-T�_��_��P��������`�`%�`(�PN��_��_��_��`���_��_��_��������_��_����_��_��_��_��`�P�`��`��	�mem_union���:��_��_����`��`���`����	�����-T�	��-T�`2�`�P�`��`��`=
��`��`�����`��	��-T�`2�_��	���P�`��_��Y��-T�_��`��`���`����	�����_��	��_��`2�`�P�`��`��`=��`��`�����`��	��_��`2�_��	���P�`��_��Y��_��_��V�`�PInfo�
M�decl�	�map_inter���������:�_inst_1��_inst_2�_�f�X�s₁�os₂���_��_������:��O��L��?�����_��_�������:��
V���
W�_��
X�X��
Y�o�
Z�����a
�T����_��_��)�*��
�_��a�L��a��:��_��_��_��a�a	b����a!�����	���1�-U�_��_��1�`�`���D�a!�a0���a�a,���a���	��������
��
�	��a<�`2�a,�P�a�aA�`=�a��a@�a+�����a=�	��a<�`2����a*�	�����aM�1�a<�_��a*�P�aM�aT�Y��a<�_����a<�a(�P����
�`b
�a(�K��
�_��_��`s�a �a/���_��a�a�`��_��_��1�`��`��a/�P�a{�a~�	�mem_inter���:��_��_����`��`�`��`��`�`��S�a,�a/��a,����	���1�`�`!�`����a��1�E�	��a�1�7��M��^y��E�	��a�1�7��a�a�a_h�a��q�1�������M��a��
^�1�a��a��1�W�f�	��f�1�g��NU�^����a��	��f�1�a���a�a_h_left�a�rfl�M��^��
��q�g��a���
_�1�a��a��1���	��m�1���a�_�_�d����	��m�1����a�m₁�a�m₂�q���M��m�a���
[�m�1�^��	��u�1�^��f�^��^��h�^��	��u�1�^��d�a��	��_��	��q�1�^��d�_�^��f�b��_��	��q�1�^��a�b�^��b��	�����a�_�a��a��_&�a��^��b��	��b��b�b �
��a/�q���	���`���	���`#��1�b<�b?�E�	��a�1�a��a��a�a_left�b<a_right�a����d�	��d�1�G��M��a���
c��bR�a��	��f�1�a��a��a�a�da_left_h�bQ�q�g��NU�a���
f�1�b^�bb���	��m�1�a��a��a�m₁�b^e�^��^��a
����q�	��q�b�b
��
d�_��bu�^��	��u�1�a��a��a��a�a'�qa_right_h�bt�q�^��d�^��a��a�
j�1�b��b��W���	����1�1�3m�K��d�3l�m�b��h�:����X��X��3l���X��3l���q�fm₂�b�rfl�:��z�X��X����z�X����z�m
�d�M����b��
[���
h�:��3l�X��X��3v�3l�X��3v�3l�u��W�3��	��3��1�1�3��K��d�3��z�b��u�:��3��X��X��3��3��X��3��3���
�
h�b��b���b���3v�t_1�3v_x���3��aH_1���3��H_2�5���3��f��X��3��3��3l�f��b�
�W�3��	��3��1�1�W�3����3��d�3��3v�b��3l�:��3��X��X��3��3��X��3��3��3��c�a��X��3v�3l�u���
o���3v���]�3��a�
i�3��
k�b��
h�:��3��X��X��3��3��X��3��3��3l�f�c&�
n���3��h
�
p�5���3��m�c/�m�s�3��m�W�3��	��3��1�1�W�3����3��d�3��3��c>�3��:��3��X��X��3��3��X��3��3��3��cK��
k�4n�K��d�3��a�q�
h�b��b��d�c^�
n�b��f�
p�5�c,�h�cb�s�3��h���3��	��3��1�1�W�3����3��d�3��3��co�3v�:��3��X��X��3��3��X��3��3��3��c|�q�m�	��1�b��m�3v�c��3l�b��c�m�c��	��c��c��f�M��3��c�����3���a�X��3��3v�z�a��s�3v����c���c�f��PInfo�
U�	decl�	�map_singleton���������:�f�X�a
�Y�Y�	n�M2
�X�������:��
r�X��
s
���c��T
���Ln�YP�	��Ln�M2�Y��Z
�c��c�_x
���c����L`�Y��La�Y����D�c��c����c��c����c��
Y�	���1���Y��	��Y��c��
Y�	�������	�
�	��d�Y^�c��P�c��d
�ZV�
�c��P)�d	�c��P.����d�	��d�Y^����c��	�����d�1�d�Y��c��P�d�d �Y��d�Y����d���P�d���

�Y��Y���Y��P�
Y�	��c��	��L��]�
�d�Pa�d�c��c��P�c��c��Mn�Y�eq_comm��Y��PInfo�
q�ATTR����
qdecl�	�map_insert���������:�_inst_1��_inst_2�_�f�X�a�s���_��_��
��
��:�insert����L��M���YZ
�_�������:��
w���
x�_��
y�X��
z��
{�����dn�_��_��M3�dk�_��dy���D�dn�d{�)�L��)�L�e_1�:��L��K�L��K�L�e_2�L��;]�M>�C�M?��M?�
�;i�M>�K�M>�C���M?�dc�dy����L��dc�_��_��������_��:��_��dy�d��_��_��d��d��	��YV�	��Z+e_1�]J�ZE�	����	��
�e_2�9b�����M>�Y�h�f��d��
�����^��	���MB���d�

�]U�YV
�db�d��I��
��
��`����`��	�����2��d��d��*��:��,�����K���K�e_2���K�
��K�e_3���G�G� �G���d��
���G�K�G�w���d��_��d��d_�d��	�insert_empty_eq_singleton��:��JF�	�map_union����:���
�d��,����L��K�L��K�L�e_2�:��L��K�L��K�L�e_3�MA�����MB�MB�_��MB���e+�
�����MB�K�MB�LZ�m���e+�_��d��dw�	�map_singleton���
�_��_��L��L��_��dm�dy�d��dg�M�d��dk�_��d��M�eV�dk�_��dy�	�insert_eq�����dk�_��eD�M�dh�dk�dw�Mg���dk�_��_��eP�eO�dy�PInfo�
v�ATTR����
vdecl�	�map_eq_empty���������:��	��X��	������Y!�L��Y	�L{
����������:��	��X��	����S�e��e�h�e���a�m�s�	�ne_empty_of_mem���Y\�]��	�mem_map_of_mem����
e�e���_x�o�L��Y��L�����o��M��L\�YP��PInfo�
��ATTR����
�decl�	�attach_map_val����s���*�Z��1�
subtype���1����
������e����M���e����M�
�1�Z��Z��1�Z��1�e��1�����D�e��e��]�{�e�_a�{�D�����Z��1)
�e�
�r�11���V{����e��e��	�map_val�1�e��1���e��M�e��0������D�e��e��]�1�1_a�1�D���e��1)
�Z��Z��1)
�Z��1)
�e����1)�11�����f����e��0��	�attach_val�attach_map_val���PInfo�
��decl�	�range_add_one'n,�Of�O9���map,,�
8,,i,�Odi,j,natsucc_inj�N��
�,�X,�Oe�f6��,�S���,���O�N��T9�O�f%�f4�N�
�����O�T�N�6:�fH�f%�f4�O�
����D�fQ�
����fQ�B��
����fL�
����fL�O��fJ�
��f\�O��fK�f^�1�,�N��K,�K,e_2Z�K�N��K�N�e_3�N����N��C�O���fn�
��,�K�N��C���fn�O�T���nat_zero_eq_zero�fK�fK�N��fK�P�fb�f^���fJ��P�f]�T6�
��V�f�natzero_lt_succ�fP�
����fP�
����
��f����T*�fa�fN�f��f��fa�fO�f��f��fO�fO�N��fO�P�fa�O8�O'�,�,�O,��fN�f���,�O,���fN���T*�
��P�T*�
��4,��f������f�Exists,a,�����f��f��	�,���O�f@�	��f�Zcoe_fn�	�,,�	�,,�f3��f��P�f��f��	�,,�f3�O����,�C���f�e_1Y�f����f��C
�f��f��f���,��,�C��,�f���,���	�,���f��f��	��f�������a�f��C���
��O�N��Ce_1Y�
��O
�N���C���
��O�N���C�C
���g#�f��g���f����f��C���f��f����f����	��f����f��1�fh������g9�1�fh��T��	Z,�	[,canonically_ordered_monoidto_ordered_comm_monoid,canonically_ordered_comm_semiringto_canonically_ordered_monoid,natcanonically_ordered_comm_semiringZ:�gM�g<�g9Z�fJ��gR�K,�K,e_1�fi�,�,e_2�fi��,�CZ�Z�
�fu�f���Z�f��fJ��,�K,,�f��f,�
coe_fn_mk��,,�f,�f2���T-�PZ4�T��T��gK:�gM�gRadd_eq_zero_iff,�gH:���gN�g:��g:�gQ���PZ8zero_ne_one_classto_has_one,��zero_ne_one_class��
�to_has_zero,�g���α�U�s�
���Y7�g���g�one_ne_zero,�g��P�g<���Y�g:�P�f��
��f��������C�����>dexists_false�f��P�f������U����f��>d�
�,�P�f��
����
��C��Zn,�����O�O3�f=�g��fB�
����D�g��
����g����O
�h�
����g��h���g��O�Od�T9�O	preorderto_has_lt,�O�
�h	�O�Od�f=�h�f��O3�Odnatsucc_eq_add_one�f=�f=�N��f=�P�h�h�f��T9�Od�P�h4�T��T��g@�gB�O�:�h-
:�hadd_lt_add_iff_right,�O�
:�g��h���g����h�h�hA��Z�Od��h�fA�hB�hA�h�fB�hI�h�fB�fB�N��fB�P�h�f��fA�hI�f��Od��fA���hF����Z�g�:�gM�1Z������hd�1�he�gM�gQ�hh�P�hc�hm�g�:���hk�hf��hf�gQ���g��P�hh���Y�hf�hH�h���hH�f��	�,�1�O�hea,�h��h��f��	�,���O�g�	��h��f��T9�h��P�hH�h��f��f@�Od�g�h��h��g��,�h���,�h��	�,���h��1�h��h��h��h��h��	��h��fh
�h����
��h��C���
��g�g�C�
�Y�
��g�g"�C���
��g!�N���C�C
���h��h��h��g1�h����h��C���h��h����h��h��	��h����h��gU�T9�h��g}�T9�T9f�T9�PZ4�T�add_right_cancel_semigroupto_add_semigroup,ordered_cancel_comm_monoidto_add_right_cancel_semigroup,�O�:�h�
:�h�add_right_inj,�h�:
�P�h��	��h��h��h��Y��h��h����h��h��P�h��h��f��h��h���h��P�f�a,�1�
�,�O��h��h�exists_eq_right,�h��P�hB�h���h�P�h�
��,]�h�Z�PInfo�
�� decl�	�image���������:�_inst_1�LYf�:�s���L\������:��
��LY�
��:��
����Y���Yp��
�PInfo�
��)VMR�
�VMC�
�	�)�
��
��
�����	��	8doc�
�`image f s` is the forward image of `s` under `f`.decl�
�equations_eqn_1���������:��
��LY�
��:��
����L]�
�����
�i>������:��
��LY�
��:��
����L��L\�iI�PInfo�
��)ATTR����
�EqnL�
�SEqnL�
�decl�	�image_val���������:��
��LYf�:�s���:��Yi�Y0�iF��	�erase_dup���i=������:��
��LY�
��:��
����M��Yi�i]�PInfo�
��+ATTR����
�ATTR����
�decl�	�image_empty���������:��
��LYf�:��Y�iD
�����e�������:��
��LY�
��:��]l�it�PInfo�
��-ATTR����
�ATTR����
�decl�	�mem_image���������:��
��LYf�:�s��b���N��iD���
��a����?kH�?k�M��
������:��
��LY�
��:��
����
����i������	���1�
��Z��-�L����i����D�i��i����i��i����i��L��\s�Yk��Y�
���i��i��i��i_���i��i��i��i��[��i��i��P�i��i��	�mem_def���i��1�M8��\s�K��K�e_2�M��K�[��K�[�e_3�\��\��Lh�f�\����i��
�;i�f�\����i��i��L���i��i��	�image_val����
�P�i��i����i��i��mem_erase_dup����i��P�i��i��Y���
���i��i����Ks���I�e_1�����
S���C
���i��i��
a�����C����i��	��?k�i�����i��
�����j�?l�i��i��P�j�j#�Y��?k�i����?k�i��P�?k�i��
��
�i��i���i��V�i��PInfo�
��1ATTR����
�decl�	�mem_image_of_mem���������:��
��LYf�:�as�oh���L��-��iD���
�������:��
��LY�
��:��
��
��o�
������jO�}�
������
�
��jX�M��
���	�mem_image����
��-�����j_
�h�
��
��jn�M���jp�M���-��PInfo�
��4ATTR����
�decl�	�coe_image���������:��
��LY�
���f��� set��B���L\�j��C���L\�j��7��iZ��image���@������:��
��LY�
����
��j�setext��j��j�_x�J�N��i�
���
�������
����M���
�L��j��sethas_mem���j����)��jb���
�����j��j������
���P�L��j����D�j��j����j��j��j�j��j��j����j��	����j�����j��
���P�j��j��Y����j��j��j���j��V�j��PInfo�
��7ATTR����
�decl�	�nonemptyimage���������:��
��LY�
���h�zf�[�finsetnonempty���i�
������:��
��LY�
����
��j��
��[�_a�\�
����,��)�
��\��j���iD����
��p�h_1�)���n���,��Ng�iD�a��/���h���k���	�mem_image_of_mem�������PInfo�
��:decl�	�image_to_finset���������:��
��LY�
��:�_inst_2��s���L��i��R��������Y���i�������:��
��LY�
��:��
��k6�
������k@�T����L��jM�S�������L��Z�
��Z�Z�k;�k?_x����kT���}�
���Z)�M����k_���D�kT�ka���kM�k_���L��jK���kK�}�
�������S������
�
��kq�jZ
�k_�P�kk�kw�jf�kK�Zf�kv�k^�I�����kr�	��kq�ks����k]�
�����k��1�kq�k\�k]�P�k��k��Y��kq�k\���kq�Z(�P���S�������a��d��
�Z(�Z��kn
�k\�k\��k\�kS�k_���L��Z���kQ�Z��kQ�k_�P�k��k��Z��
��kQ�P�k��k_�Z��V�k_�PInfo�
��=decl�	�image_val_of_inj_on���������:��
��LY�
��:��
���Hx�H�	�y�H����M��5��
�
��
�:��\s�i��i�������:��
��LY�
��:��
�����k����k��i��i��X���i�multiseterase_dup_eq_self����i��nodup_map_on���
������PInfo��@ATTR����decl�	�image_id�����
���_inst_2����finsetimage

�
�&id
����
����
�����l�T
���@�l������l
�A�h�l	_x
���l�>3���D�l�>3���l�A���@�l������l
�\�
��1���	��
����l/�\�
��<��
����	��l�
�l4�P�l.�l@�	�mem_image�l�l
���
O���
Te_1���Ks�
S�I��C
�}�l?�l3�
a���C���l>���l2�
����l>�<��
����	�
�l2���?���C���?�	��Ce_1Y�?�
���C���?�,���C�C
���lp�l=�le�g1�������C�����l<�����ld�
�������e_1������ae_2�8���f�C�B���B��
��f��f�C���B��l:idequations_eqn_1�

�s�
�P�<��	����ld�l2�Y����l1�P�\�
��1�
�����l1�l7�[<�l6�A�A�>S�V�A�PInfo�	�Cdecl�	�image_image����
������:��
	�[F�
��_��
��j��
��o_inst_2decidable_eq�g�:��[L�[M��
�image�����k8�k	�:�
�image����k8�[{���
������:��
	�[F�
��_��
��j��
��o��l���:��[j��l��l����[��[q��l��l��l��[��
����k8�[x���l���
�m���D�l��m�)�[��)�[�e_1�[L�[��K�[��K�[�e_2�[L�[��[��[n�f�C�[L�m��m�
�[��m�K�m�C���m�l��m�[��[��l��l������kn�l��l��m1�[����X����m�m�m6�l��m:�i_��:��m>�m@�m6�m7�m:�Y0��l��mG�	�image_val�����k8�l��	��l���	��[��	��[�e_2�[����[�
�	��[�� �m�m�l��f���m^�\/�[��l��a
�k8�mL�mF�
�[��
���e_1�[�����
�[��
�[�e_2�:��\��[��Y-�h�m�[��h�f��m��
�[���h�h�
�m}�[n�h���m��\
�[��mK�mE�i����:�
�erase_dup_map_erase_dup_eq�����:��k8�m>�mr�m?�m�\����m�l��m�����k8�l�
�\/�[��m�PInfo��Fdecl�	�image_subset_image���������:��
��LY�
��:�s₁��s₂�oh�,��\:�L��\<��jM
�jN������:��
��LY�
��:��%���&�o�'�,����m��
����D�m��
����m��\:�Z��\u��kP�-�kP�>��
��m��m��i_��
��m��m��m��m��m��m��m��m��m��m��Y0��m��m��jN�m��P�m��m��\���m��jN�
'�\��Z��K�\��K�[�e_2�:��[��K�[��K�[�e_3�m|�;]�m}�C�\:�m}���n�
�;i�m}�K�m}�C���n�m��m��m��i����
�
�m��m��n-�P�m��m����m��m��m��erase_dup_subset'���
��m��m��P�m��n6�m��m��subset_erase_dup'���
��m��m��P�m��
��V�m��\����-�>��Z�PInfo�$�Idecl�	�image_mono���������:��
��LYf�:�monotone����Y	�"0� l����Y	���
�is������:��
��LY�-�:�_x��_x�o�	�image_subset_image����
�PInfo�,�Ldecl�	�image_filter���������:��
��LY�
��:��
���p�
O_inst_2�]r��_��L�������m��jM�=_�]������
������:��
��LY�
��:��
����3�
O�4�n����n��T����_��L^�
�?��k
��_��n��>��]�
����
���_��n��n�b����n����1���
���-E�M������
���1�-E�_>��n����D�n��n����n��n����_��n��I��n��1�_��n��n��P�n��n��M'�
�?��n����n��n����_��k	�3����
�����-
�
��-
�M;�
�
�n��P�n��n��jb�������n��n������n��	��-
�n�����n��
���P�n��n��Y��-
�n��]��n��n����_��n��n����
�������B��n�����2���
��o�n��n��P�o�o�n��n���o�n������o�	��o�n�����n��
�����o(�1�o�n��n��P�o(�o/�Y��o�n����o�n��P���o������a��1���n��Cw�n��o��n��n���n��S�n��n���n��q���
���1�-,�M;�2�
����1�o\���E�
��a�1�1�7��_c���M��1�a_left�o\h2���bK�
��d�1�G��M��1���6��ou�a��
��f�1�1�a���]y�h�f�C��a�NU�2��x�da_left_h�ot�q�b]��NU�,��9�1�o��o����
��m�1�1���d�_�a�f�_�2��h1�o�rfl�^��d
��a��f�5�m�7�2��W�z�
��z�1�1�3c�K��d���m�]y���z�C�h�q�b��3T
�7�a�o����u�
��u�1�1�^��h�^��f�m�^���m���	��1�^���f�^��d�h��_�h��o��	��o��o�
�M��q�o�����n��a��
���1�oW�^e���oY����o��1�E�
��a�ob�oi��x�a_h�o��q�1�l�od�M����=�1�p�p�1�a��
��f�oy�o��Ma_h_left�prfl�M��
��q�a���o~�>�1�p�p�1���
��m�o��o��_xh1�ph2�^���d��a��5��5�m�1�^��
��u�o��o��2��	��_��
��q�1�^��f�_�3J�5��a�5��^��p5��	��b�d�_�5��5��_&�5��
�PInfo�2�Ndecl�	�image_union���������:��
��LY_inst_2�:Jf�j�s₁�os₂���_��jL
�?Y�_��_��
��p_�p_������:��
��LY�C�:J�D�j��E�o�F�����pj�T����_��k
�@�@�BD
�_��_��_����ps
�ps�_��pb�pi_x����p�����������-U�M���������_��p������
���p����
���p����D�p��p����py�p����_��n��pw���
�����p��p������������`�M;��
���������`"�p��p����
�������H��H��?�
�
��p��M;�

�p��P�p��p��n��pw��p��p������p��	��p��p�����p��
�����p��`M�p��p��p��1�p��p��p��P�p��p��Y��p��p����p��`L�P���H��H��CR
�`L�`j�?�
�p��p���p��P�p��p��`z�p��P��������p��p��p��`��p��p��p��p����_��_��_��3�p}�p���_��p}�_��p�p��P�q�q�`����p}�p���q�p����_��p�
���
���`��
��-T�p��p��P�q'�q,�p�
��q+�p������`��	��-T�p��p��
���P�q8�p��`��p��q�p����_��p����
���`��
��_��p��p��P�qH�qM�p���qL�p������`��	��_��p��p��
���P�qY�p��`��p��V�p��PInfo�B�Tdecl�	�image_inter���������:��
��LY�
��:�_inst_2�k6s₁�os₂��hfx�y���jZ���
�
�L��n��)�*�kn
�a�a���n�
�n�������:��
��LY�
��:��I�k6�J�o�K���L�qz���q��T����Lh��L��Lk��iD�������
����a�
�
�q��a�L��a����q��q�
�Z��q�q����q��T������
���a��oX�1���
���`�q����
���`"�q����D�q��q��B���T��q��T��q��T����q��q����q��q�����q����
�����������k���
��q��p
�q��P�q��q��jb������q���������e_1����
S�l��C
�a��q��q��
a�����C����q��	��q��q�����q��
�����q��1�q��q��q��P�q��r�Y��q��q����q��a��P��������a��d��f��h�-��a����k���q��q���q��q��q����q��q��q����q��q��1�q��q��q��q��q��P�r2�r7�a�����q��q����r4�q����q��q����
�����`�
��`�q��q��P�rF�rL�q��q��rK�q��q�����rH�	��`�q�����q��
���P�rX�q��Y��`�q��r6�q����q��q�
���
�����`!�
��`!�q��q��P�rj�rp�q�
�q��ro�q��q�����rl�	��`!�q�����q��
���P�r|�q��Y��`!�q�b��S�q��q�_x�q�_a�E�
��a�bD�oh
�bK�
��d�1�bM�G��or�R��r��1�a��
��f�a��o���a��
��f�a��r��p�d�q�r��q�bd�b]��o���q�1�r��r��1���
��m�a��o�����
��m�a��r�h_left�r�h_right�o���q���a�r���S�1�r��r��1�^��
��u�a��o���^��
��u�a��r�h_left_left�r�h_left_right�o��a���1�o��
��z�1�o��h�o��a�o��
��z�1�o��f�r��	��r��r����z�r���	��^���f�^��o��
�r��r���	��r��d�r�
_x�q�_a�1�E�
��a�a��r��E�
��a�a��r��q��
��d�bM�r���
��d�1�r��r��X�1�s�s�a��
��f�bV�r��Z�s�[�r����h�
��h�1�r��^��2���Z�o�s&���
��m�bg�r�left_w�hleft_h�s%�q���a�_�5��Z�1�s0�s3�^��
��u�by�r�left_h_left�s0left_h_right�_�h
����z�r��[�r��b��
����b��b��3X�d�right_w�zright_h�r��q�b��h�b����d�^�1�sK�sN�W�3v�
��3v�1�1�c[�u�sS�q�:��3v�8��hright_h_left�sKright_h_right�b��z
�f���b��
��3��b��b��3l�m���3��si��	��1�c[��u�so�q�sY����h�	��sp�sr����3�_x�3��b���m��d��3v���h�su�My�3v�su�h���PInfo�H�Wdecl�	�image_singleton���������:��
��LYf�:�a�L]�i[�D^�c���������:��
��LY�c�:��d���s��T���N��i��:��N��M2�%�Z�s��s�x���s����L�%�N�%���D�s��s����s��s����N��i���
�:����
�����i��	��i��s����
�����
�:��
��s��i��s��P�s��s��j�
�:��j�s��s��j����s��	��s��i�����s��
�����s��1�s��i��s��P�s��s��Y��s��i����s����P�s����	*�
�i��i��j8�P���	����	��k[
�s��P`��s��s��s��P�s��s��Mn�%�dT�%�PInfo�b�\ATTR����bdecl�	�image_insert���������:��
��LY_inst_2�:Jf�j�a�s���_��p_�A��dg�M	%�ph������:��
��LY�g�:J�h�j��i��j�����tB�_��pe�M3%�ph�tM���D�tB�tO�d��t=�tM�d��t=�_��_����kh
�d��tY�tM�tV�p_�?Y�d��t]�
��<z��
��mu�
��mve_2�:���a�a�
��
��
��e_3�����m�m��
��tk�k�:���q�q��:��LZ�q�iD�u�q����tv�J�
��G�l�J�ty�tw�L��MB�iD�m�h��
��
�

���[�
�t<�ta�I��B!�?��d��B �ta�d��?W�e�?X�d��A��d��e
�?W�e�	�image_union����
��?W
�d��eC�pd�p_�d��tK�	�image_singleton����
�
�ph�ph�eO�ph�tA�tM�d��dg�M��%�ph�tX�M�t�%�ph�tM�eb�
�%�ph�t��M
%�tK�Mh%�ph�ph�t��eO�tM�PInfo�f�_ATTR����fdecl�	�image_eq_empty���������:��
��LY�
��:��
������L]�i\�L��.B�������:��
��LY�
��:��
����S�t��uh�t��E�a�m�?k�e����n��k!�����
e�u����_x���_��jM�N���������M��L��i����PInfo�o�cATTR����odecl�	�attach_image_val����_inst_2��s�����l�1(��
�C
��subtypeval
�u5�10����v���w�����u?�������u?�������e��u6
�u<���u6�u>�����D�uI�uS�]���uG_a���D����l�0����
���u:�u[�1�����uI�uQ�	�image_val�u6
���u<�u>���uS�����uM�0�
�������D�uS�u��]���u6�uO_a�u��D��
��e��u\�ua���u\�ud���
��u����uS�u}�f
���u������D�u����uX�e��1(��
���
�u;�u��u}_a���D��
��u��0�����
����u����f
���������������D���u��uX��_a���D��
����uk������D
���s�����PInfo�u�gdecl�	�attach_insert����_inst_2��as�������uZ���Q�uc�
��
��u��u��
��u���u���0�������subtypedecidable_eq�x��P��
�subtypemk�u��
��l�uZ���F�u��u�x�v�u���u��u:�����s��v
��property��v
�uc����������������v�T�u����W�u����u��d�u��1���v*�
��u��v&�
��u���u���0���u��u��������������v
�
���
�l�u��v
�u��v>���vH�u���u��u:���������
��vQ
�v��vO�v+�g�u��u��v_x�u�_a�u���cases_on���u����v3���W�0���v8���vn�d�vn�1��P��vt�
��vn�vp�
��vn��vn��0�����������u������������/�u���v8��
������l�vm�k�vn�v����v��u���v��u:�����������v����v��v��vuval�property�P������W�v����v��d�v��v�
�v�Annotinnaccessible�1��v6�v��
��v��v��
��v���v���0���v��u��a���a�7�5��5��8�����v���
�������l�v|�v��v��v����v��u���v��u:���������/�v����v��v��v���S�v��v�orcases_on�
$����v��W�v����v��d�v��v�
�v�Annot��
�
��v��w�
��v���v���0��a�v��u��d���d�G�V�a��8�v���
���/���l�v��v��v��w���w%�u��a�v��u:�a���a�8��a���w.���v�a�w,�1���^���v6���
$������h�
$_x�w�w<�v~���W�w���w�d�w�w)
�v�Annot��
�
��w�wP�
��w��w��0��d�w�u��f���f�a��9���
��h�T�d�a�T�w*��
��a�����l�w�w,�w�wl���wv�u��d�w�u:�d���d�^���d�8�w���v�d�w}�1�a������w�wW�wt�wX�w��
�w�wl�wW�wt�w����w��w�subtypeeq�a�v��wW�wth��_x�wN��w�wl�wW�wt�w����w��W�wv�
��wv���W�w\�w}���w��d�w��1�d��
��w����0��f�wf�u��f�wf�u:�f���f�a��a��f�T�w��a��v�f�w��w�
�wfAnnot�����lE�wv�w�wl�w��w��wW���wv�w��w)�w,�jm�W�wv���wv�d�wv�w��w��
��w����w]�w{�w~�wz�w}�
�w��w����w��w��wz
�wAnnot����	�mem_attach�a��w��w��w*�w-�w��w1�x
���w6�w��wW���a�w+�v��x_x�v��x��v~�w
�PInfo��jATTR����decl�	�map_eq_image���������:��
��LYf�[Hs���L]�YO�iZ�Yv������:��
��LY���[H�����	�eq_of_veq��x6�x:�My�Yi�ia�iY�x6�xF���iX�xG�xF�X��xF�k���xF�	�nodup��x6�PInfo���rdecl�	�image_const���������:��
��LYs��h�j�b�L��i�a�
�s�������:��
��LY�������j������xd�T����L��jL���
�L��M3�Z�xa�xcb'����xs���N��xz���D�xs�x|���xo�xz���L��kh�xl���xz�xz�x��1�}����v��xz�x��x��}�
���]��M�
�x��x��}�
���]��
��)�M�����
�x��P�x��x��je�xl�Zf�
���]��
��)�M�
�x��I�����]��	��)�x�����x��
���P�x��x��]��x��P�}x��1�x��x��x�exists_and_distrib_right��xz�k���}�k�
��P�x��
��V�x�finsetnonemptybex�
�xz�xz��xz�P�x��xz�%��xz�xr�xz���xr�M�xz�P�xr�x��Mo�P�x��xz�dT��V�xz�PInfo���udecl�	�subtype_proof_1u_1�p�<�_inst_2�<�s��x�uZ���=�v������>��������<����<��������y�
�r�y
�y�^�y�=�1�y�y�?;�y
�v�y�PInfo���ydecl��_proof_2���������<����<�����x�yy�u��yH���v2����v2����>��v���u:�������?�
�
�y/��y/�^�y1�>��1�y2�y4�?��y/�v��y-�yD���vm�i�������B��
�������<����<��������y���y%���yH�w���y-
subtypemkinj�����y.
�
�
�y`��y`�^�yb�>��1�yc�ye�y;�y`�y?
�y.�
�
�yr��yr�^�yt�>��1�yu�yw�y;�yr�y?�PInfo���ydecl�����������<����<��������uZ
�������<����<������Z��y�y��
8���y�y����y�v
�y
�����
����
�uc�=		�PInfo���yprt��VMR��_lambda_1VMR��VMC���z��VMC���y���������������	�decl��equations_eqn_1���������<����<��������y�����
�y��������<����<������s�y��y��PInfo���yATTR�����EqnL��SEqnL��decl�	�mem_subtype����p�<�_inst_2�<�s��a�y����W�u����y��d�y��y���<��r�v������<����<��������y��vj����y����W�y&���y&�d�y&�y����>�
���vN�
a_val�a_property�������W�vm����y��d�y��y*�y����>��
�y+��y����z�
����D�z�
����z�������
����y������y��$����z�
���]��2��$��z�}a��1�z�
"
�z�z�}�����a��yJb�z!x�v�������<��a��Cg��
��w+���a�7�<��d�a���d�2����v�a����a�z/�z�z�W�vm�y-�	��zC�
"�v��yK
�z@�z�zD�	��zC���W�v|�yK���zM�d�zM�v��?�	��zU���v���Z��Z��v�����z'�zW�Z��zZ�zW�y��zZ�zW���zZ�w)��z2�y��a��Cg��y����B���v��
�zJ�z�y��Z��zC�y��y��zC�y����zC�v���zF�y����>���y����>��vu�>��z|�1�P�y��y��K�v|��K�zWe_2���w��K���w\�a�K���w��de_3�����0��h�f����0��m�h�C�W�z��z����z��
����z��K�z��C���z��y��y��y����y��y��y��z������>��P�z��z|�[
�zC�y��z��z��y�����zC�C����zM�Ce_1����zZ�C������w�z0�C�C
�W�z��z{�zI�����zC���zC�C���zC�zz���zCh'�zU�B��v��zY���zU�
�����������1�V�12�x
��?�c�	��zC���zz�zV�	��zU�z��{����zU�C����W�zZ���zZ�d�zZ�w<�yI�Ce_1Y��W�z����z��d�z�
�w��z&�C����W�w\���d�G�<��f�d���f�2�����{5�d�{5�w��z.�C�C
���{=�zy�{�g1�zU���zU�C���zU�zx���zU�z��	��zU���zx�zX�zu�z��y����B���zw�z��)�zW�)�z�e_1���z��K�z��K�z�e_2���z������0��q�m�C���{f��{i�
�����{f�K�{f�C���{i�zs�{Y�����zZ�<�zZ�z��zr�zk�
��zZ�zW�zk�zp�zw�zw���zW�zw��inj_eq���z��{X
�P�zV���zU���{ �
��z1
��{exists_prop_of_true�zU�{�{�PExists��vm����z!���{����v|�z �B��z��z@subtypeexists�����y,���vm�{��zH�Zf������y,���y,�B��z��v��z(�z�I�����{��	��y,�B�����z������{��1�y,�z�z�P�{��{��Y��y,�z���y,�z�P���>�a��B���z�?�z�z��z�P�}�
���1�
���^X�1��z�z�[<��z����������
�
��P�
�
��V�
�P�$����+����z���|�P�z�
��,]���Z�PInfo���}ATTR�����decl�	�subset_image_iff���������:��
��LY_inst_2�:Jf�j�s�L\t�)����\:�j�������B���L��|;�C���L��|;�j���j���
�H�s'���1�IK�L��ps
������:��
��LY���:J���j����L\���)��S�|O�|Xh�|O�v�����L����\:�j���|=��|@�L��|e�|C�L��|e�j���j����
�W�������1���7���d�H��
��7��H��
��7��7���L��iD�d�a���
�����\:�j���|=��|@�L��|��|C�L��|��j���L��L��L{��j����������1���3D��a�H����3D�H����3D�7r�e$�k��L��L��L{��������	��I�I�|�
�d��q���|��L��L��L{�setempty_subset�
finsetimage_empty������a�s�L�has�3�Ngih���\:�j��a�|=�a�|@�L��|��|C�L��|��j��a�j��d�a���W�����1���9d��h�H���9d�H���9d���h��M?�iD�h�f�T����\:�j��d�|=�d�|@�L��}�|C�L��}�j��d�de�d�L��L~�d��d��f�T
�j��f�d���������1���J���m�H��G�J��H��G�J����m��:��MB�t��T�a�a_0�W��}?�W�G���G�1���J���q�H��w�J��H��w�J����q��:��e4�iD�q�m��d�de�m�e4�L~�m��m��q�T`���
�i��j��f�j��f��j��h�f���\:�}j�|=�f�j��M>�}j�j��M>�}j�j��f�}r���}w�de�f�}j����f��}�}r�1�}s�}��	��}�_a�C�D�\:�j��h�|=�h�de�h�}��}��h��j��MB�}��j��MB�}��j��h��j��m�h�a���}��}��P�}��}�setinsert_subset��f��}�}r���}w�|@�M>�}j�|C�M>�}j�}|�}��M>�L~�f��f��h���}r�}��� �}j�}~�}�_a�}j�D�}��|@�MB�}��|C�MB�}��}��}��MB�L~�h��h��m�����}��}��}���}��}�finsetcoe_insert��f�}��s'�h_1�}>�q�}F�}M��}R�}V����1�}��~�W�B����B��1�����z��z�H��K��~�H��K��~���z�d�:��LZ�u�iD�z�u�T`�h�de�u�~�L~�u��u��z�����3l�3l��hst�}�hsi�ts�tu���f
��s@a�z�1�3h�f�b���aa_1�Lh�u�j��u�j��u��j��z�u�h�d�W�K����K��1���3n��3l�H��K��3n�H��K��3n���3l�h�:��LZ���iD�3l���~#�q�de���~Y�L~�������3l��3v��3��3��d�a�
�~I�\:�~@�|=�u�j��~�~@�j��~�~@�j��u��~H���~y�~�~@�}��u��~��~H�1�~I�~��	��~����C�D�\:�j��z�|=�z�de�z�~��}��z�a�j��LZ�z�~��j��~��~��j��z��j����z�m�f��~��~��P�~��~��}��u��~��~H���~y�|@�~�~@�|C�~�~@�~~�~+�~H�~��}��~@�~��~+���~@�D�~��|@�~��~��|C�~��~��~��~��~��L~�z��z����U��a��~��~��~���~��~��}��u�~'���x�zh_1�~<�q�3q�h�b��|�d���1�~��~��W�K����K��1���3���3��H��K��3��H��K��3����3��q�:��LZ�3v�iD�3��3v�~g�z�de�3v��L~�3v��3v��3���3���3��3��h�fhxt�~�rfl�b��u
�f�M��3v�z���3v���3�Lh�3��LZ�3��Lk�3��h���1�Lh�3��j��3��j��3��j��3��3��3l�z�\:�2�|=�3��j��LZ�3��2�j��@�2�j��3��m�:�W���3����L�1�����3���3��H��b��N�H��b��N���3��3l�:��LZ�3��iD�3��3���3���3��3��3��de�3��]�L~�3���3���3���3���3��3��u���3�Lh�3v��Lk�3v�'�f���1�)�j��3��j��3�����j��3��3����u�\:���|=�3��j��*���j��*���j��3��h�������3������1�����3���3��H��L���H��L�����3����:��LZ�3��iD�3��3���3���3��3��3v�de�3����L~�3���3���3���3���3��3��3v��q�
��3����
��3���3���3��3���a�	������3���3��H������H��������3����z�:��@�iD�3��3���3l���de�3��@�L~�3���3���3��d�3l��m�����������	��3�����������������a�z���D������������_a���D�����
��3��L�
��3���3���3����d������������0�3�����a�����1�W�3������3���z����
�z���D����>�	���_a�C�D�������	��3�����L�����L�����d�������>�P����>���3����
�z�	���:��=�����������������a�����D����r�M��@��_a�@�D������ �����������pfinsetimage_insert��3��3�����3l��a����r����n�m�����D��r�����w��o_a�@�D�������������d������������r�m��L��@����h�d���\:�j��3v�|=�3v�
����}��3v�h�j������j������j��3v�f�j��3��3v�z�q�1������j��3v�h�������������	�������C�D���de�3����}��3��m������������P�������}��3v�h������������|@�����|C���������������}��������������D���|@�*���|C�*��������*�L~�3���3���3����m�h��������������}��3v��h�f�
��|X���������1�I

�d��|���H���D�|h�|o�|us��a_h��C�q�|��|��e$�|�����1��O��S�|��|���|�hs��Orfl�L��|�
��M��L��iD�f�d�8����L��}w�}��}r���}�}��e�}'�}�}&����J�����J����f�}'���D��n��z�}��}�j��L��}�j��L��}�}��e_a�}�D�}w�}��}��}r�}w�}r���n��x�	�coe_image��f�d�8�setimage_subset��f�d��w����PInfo����decl�	�card����s��,�������card���PInfo���VMR�VMC������carddoc�`card s` is the cardinality (number of elements) of `s`.decl�equations_eqn_1�������Z�����������f����PInfo���ATTR����EqnL�SEqnL�decl�	�card_def�������s���N�,����PInfo�	��ATTR����	decl�	�card_empty����Z����������������PInfo���ATTR����ATTR����decl�	�card_eq_zero����s���������,����
���JZ�����R�,�card_eq_zero���o�PInfo���ATTR����decl�	�card_pos����s�����f]����^�������J����S~�����^natpos_iff_ne_zero����J�3������^�K����,�	�card_eq_zero�N�^�u�	�nonempty_iff_ne_empty�PInfo���decl�	�card_ne_zero_of_mem����s��ah���S~���
��������������3Z����3�����K�������
�
�
�PInfo���decl�	�card_eq_one����s�������:�
5�������������Z���
:�qa
��	ns_val�{s_nodup�|����Z����:�\������
�D^�
����D��@�
�����@���\a��
����������O�
�����7��O����7Z���:��O�gm��5��X���::f:�P��Z��Omultisetcard_eq_one��?��O�lY��>��N�l^����=����M�����=��<��9��L�����M����;��;�2��;�D^��|����inj_eq�
��L��{�P��Q�
��,]��O�Z�PInfo���decl�	�card_insert_of_not_mem����_inst_1��as��h�SZ�����6���:����#���$�%���&�S�����Z�����[6����:���D�������gm��������,������������_��s���'��e_1�W[�C!��,
������[�������chas_add,�K,�K,e_2�fi�K,�K,e_3�fi�gY,4������
�fu�K,,�����5���������::��e�������������gm������f����������card_cons�
��C!��,�[�������PInfo�"��ATTR����"decl�	�card_insert_le����_inst_1��as���O{���
�6��:����/���0�1���:����(��h�����O{�������O{���������D��&��)���__a�o�D�O{�����j6��/
:�O{��/��4���&�W�natle_add_right���:�2�S��'�O{����������+��L�TZ����__a,��6�O{��4��=����	�card_insert_of_not_mem��
le_refl,�O�����PInfo�.��decl�	�card_singleton����aZ�����:����:�card_singleton�PInfo�9��ATTR����9decl�	�card_erase_of_mem����_inst_1��as�����Z����(���pred�������=���>�?���card_erase_of_mem����PInfo�<��decl�	�card_erase_lt_of_mem����_inst_1��as������O��w�������C���D�E���card_erase_lt_of_mem����PInfo�B��decl�	�card_erase_le����_inst_1��as���O{���'d������H���I�J���card_erase_le����PInfo�G��decl�	�card_rangen,Z�	�card,�N��M,�card_range�PInfo�L��ATTR����Ldecl�	�card_attach����s��Z����1�1�������Q��multisetcard_attach���PInfo�P��ATTR����Pdecl�	�card_image_of_inj_on���������:�_inst_1�LYf�:�s��H�k�Z�	�card���i���/������:��U�LY�V�:��W���X�k������Z������������D�������gm����������������i�����������i��������i��'�\s�'�Z�e_1�:��\�����[�,
�����i��i��	�image_val_of_inj_on����x����card_map���
����������_�f����PInfo�T��decl�	�card_image_of_injective���������:�_inst_1�LYf�:�s��Hfunctioninjective�����������:��_�LY�`�:��a���b���	�card_image_of_inj_on����
x�_x�?ky�_x�-
h�M;�5��
��j[
�PInfo�^��decl�	�card_mapu_1u_2α��β�:�_inst_1�LYf�[Hs��Z����x6����n���o�:��p�LY�q�[H�r������7Z��3�x:��6���D��7��@�M��L\�x6_a�L\�DZ����[U���Z���������7�x:�	�map_eq_image�l�m������@Z��6��6���D��@��_�TZ��>_a,�DZ����i��[�����he������@��6�	�card_image_of_injective�
����x8�Y�f��6�PInfo�k��ATTR����kdecl�	�card_eq_of_bijective����_inst_1��s��n,fi,��O
�hfa�H���f�i,���ih�i�B��hf'i,h�h������f_inji,j,hi�O�hj������5��5��7��g]Z����������x���y���z,�{����}�������������
��a�����f�i,���O�h�hi����5��
��^�g�N�������f��


����finsetimage��,��,�����/i������val�,��,�O����^�O����h��O�����f�������property�,�����attach,�g"
�������a�����h������������������h�����������������a��i���������,�O�N���^�O�������O����������������������
��Z�����Z�������D�����]���_a���DZ����d�������������d�8����������,�O�N��a�^�O��%����O��%��f����%�����#������Z����8�����f��Annot�:
�	�card_image_of_injective����a����	���_x���_a����,��#�������#a₂�����,�O�N��d�h�8V�������,�O�N��f�d�����,�O�N��h�^�O��a��Y�O��a�f�f��f��a�����_��pY�����_
��,����"��_x��\_a��u�h���u�������,�O�N��m�h�����,�O�N��q�^�O������O����m�f��m������������
,Annot��
���Annot��
���Y���������
���Annot�������\����u��R���������h���z������m�����,�O�N��u�^�O�������O����q�f��q���������������Y���������
���Annot������,�������eq����������q�����,�O�N��z�^�O�������O����u�f��u������������������Y����i,��,�O�N������
���Annot�������
�����subtypeeq,����������1�
�^�O�����O��u������^�g����O
�u���
Annot�:
�	�card_attach,�h�Annot�:
�	�card_range�Annot�:Annot�iAnnot�j������T������f���,�����������B����^�O��$���,��,��"����O��D���-��D��0��C
���D�����W������T���=�����@��T�a���7��f���,�����������8D���^�O�����W��?��,��V��!�O��i�a�f��a��i�����W��h
�P�����_�g���������T���^�T���V�T������������]��U���������a��d�T��	����f�����
�����5����f���,����,���������������@�8D���d�^�O�����!�O����a��p�����s��?��,��e�������
�������N����N����O����6�
�����B�����T���
����P�������	�mem_image����a����	����������C������Ce_1Y���T�C�����X�C�C
�f���X�
��������
�����B����$�^�O�������O������-�����0
����g���������C���������	����������������
������������������
�1���������P�����Y�������������
��P����
���U����N���������N�
�N�
�O
�V�N����
��
�N��N��O
�N���3�O��3���
�	�mem_attach
,��������������P������%�����P�f������,�������\���������B���3
���subtypeexists�,��,����������i���Annot�iAnnot�ja��S����ha�_a�f���,���O�����}�B����o,��,���O�������8D������f�����f���,����"����"�8V�,�^�g��U����d�f��d��p,�q����a����a������8V�a
��q���������f���,����Z����Z��~�5�^�g��]����h�f��h�h_w���h_h������f���,����^����^����Q�^�g������m�����h�,����jm�g!��Y�������~�f��^�O���]�O��h�����������O�f��i�_x���_a�f���,��>������B����^�g���������-�����,��c������8D���^�g��!�����p����f����=�a�p,�q���a�������8V����^�g��U���d���
��q������&�_��fh_w��h_h��%��_x�q�^��m����q��/�d�^�����������1���8�PInfo�w��decl�	�card_eq_succ����_inst_1��s��n,��Z���Od�\a�W�ot�o�1���1���
�Z��7
�������������,�S��V��eeq��V
���f]���

_a�k�k�,��~���k�������W�����1�3���1�����Z�����p��q�~��������|w�����1�3���1���v����<��������|�����1�3��
�1����
���~�'$��/��	��3�����1������Z���������*��/��	��������*&��/�������g[����D�������gm��������������<���y6�:������y��������	�card_erase_of_mem��/�a,��,e_1�fi�fu,
��y���������pred_succ���f�����^�f]��/��o�	�card_pos�Annot�iAnnot�j�O,_x,�f]�fJ��m��,��m�fJ�f�_x��e_a�
Y����W�������1���1���
��Z����������H������1�3���1���Z����������BZ��*��TH�p��q��A��=�����1�3��1���Z�����q�H���WZ������h_w��h_h��V�q�3��1���(�Z�������1��`��i��6�:h_h_left��`h_h_right�1���v��
�Z��
��q�9`�V��aZ����f����1�����Z����h�d6�a:h_h_right_left��h_h_right_rightZ�����a��_x�GZ����q6�f:�f���G��������f��_x,Z��������Od����m��d��Y�m����PInfo����decl�	�card_le_of_subset����s��t������O{����T������������
����O{��)��*multisetcard_le_of_le
����������I�PInfo����decl�	�eq_of_subset_of_card_le����s��t��h��h₂�O{��T��������������������������
multiseteq_of_le_of_card_le��<^����������������<^����
�F�
�PInfo����decl�	�card_lt_card����s��t��h���O����T����������������card_lt_of_lt������E��������������X
�	�val_lt_iff
�PInfo����decl�	�card_le_card_of_inj_on���������:�_inst_1�LYs��t�Y	f�[�hfa�H���M�%f_inja₁�H�)a₂�H����M��5��
�l�
�O{��������������:����LY�������Y	���[�����1����9trans_rel_right,��:��<�k��=�O{
��Z��:��J��N��:���D��O��Q�TZ��<�n�������_a,�DZ���������q����\���O��:��������V�f��:Annot�:
�	�card_le_of_subset���kx�hx�q���__a�_a��
��d���^��
��^��NU��
���f�
��f���w��
��w��^������a�����i��M>�Lk�f
��p�f�q����a�q�d�
�����_�����q���������Lh�m�e4�Lk�m��dh_w���h_h����M��q��4t_1�q���^����H_1�b��H_2�5�b��m�����
�Lh�3l�LZ�3l�Lk�3l�a�u����_���4�M��u������u���b��h����5����������L���������
�u�����������5����������L��z������Lh���~Y�Lk������q�5����My�u�����L��q����_��4��^�|��k�E�
��a�9�
��8�M��
��jb�a��/��Annot�:�PInfo����decl�	�card_le_of_inj_on����_inst_1��n,s��f�,�hfi,H�h��
%f_inji,j,����������
��5��A�����O{���*���������,��������$����(����/��H�����g��1�O{
����;���5�Annot�:
�	�card_le_card_of_inj_on,����g
����,���O�g"������,���O���N���D��P��T�B,��,��O��,��S��,�
���L�������R��a�P��L��R�f�����a����,����L��,�������5��5��
��g]
��,����R��,����}��v���D��z����Z��,��y��,��~��,��_��,�������
��A��
Z
��R��,���O������i��Z��,�����,�����,�
������B�����T@�������P�������������a₁,h₁��Ra₂,h₂��}�jp
Annot�:�PInfo����decl�	�strong_induction_on_match_1_aux_param_0����p����
s�{IHt��H��_a�����
nd�R�_a�oH�z���
����
����
�{�
����
�R��
�o����
���

������
�
���������ss�I���=��������
�
����A����E�����������������
��������#�������	�PInfo�
��decl�
_proof_1�����
���
�0�t��nd'�
��
�n��9��9
�E�������)#��������������
���
���
���
���
������%�z����#��#�����#�PInfo�
��decl�
equations_eqn_1_aux_param_0�����
����
�{�
����
�R��
���
�����
�

�����������
�
�����
��?�
��A���
���
����
����
�{�
����
�R��
���
��<����E�	���E��M�PInfo�
��ATTR����
EqnL�
decl�
_main_aux_param_0�����
���s���s���t���

�n���%����
����
�����s����
����s_val��s_nodup��������multisetstrong_induction_on�
�_x���
�����
���
�
��
	�E������������
����U�
�����_x���G�a�

�PInfo�
��VMR�
_lambda_1VMR�
_lambda_2VMR�
VMC�
 ���

�
��_freshG��FVMC�
!���
�
�
��_freshG��D�
 VMC�

����
�
��
!�strong_induction_on_main_packdecl�
equations_eqn_1_aux_param_0�����
���s�{nd�|ih�
����
�o�

����
���=��;�
�
-����;��~��
���
��<���?
�
���
�
���
	�E�����'�
��������
����B�
����G��
����
����
.�{�
/�|�
0�����a�����c�������PInfo�
,��ATTR����
,EqnL�
,decl�	�strong_induction_on�u_2����
����1K��u����
����
�
2��PInfo�
1��VMR�
1VMC�
1���
��
decl�
1equations_eqn_1��
2����
����
.�{�
/�|�
0�����
2����
1�����;�
������
�
���
����
�������
���
����
����
����
equations_eqn_1���PInfo�
4��ATTR����
4EqnL�
4decl�
1_sunfold��
2�������
����
�����s�����y�
���
������|��������
���
����
�������
�����a�

�PInfo�
7��ATTR�����
1decl�	�case_strong_induction_on����_inst_1��p����Cs��h₀��h₁a�s������t��H�
����
�-�����
9���
:��2�
;���
<��3�
=��>finsetstrong_induction_on�_x����
s��finsetinduction_on�_x����
���

�
���
���_x�
���

����E��
�a�s��n�3�_x��
���

�$
�,�pih�
�
��

�D�V����M
t�ss�N�%lt_of_le_of_lt�G��G�t�m������*�m�����PInfo�
8��ATTR�����
8decl�	�card_congr���������:�s��t�L[faH�
��h₁a�ha���L�&h₂a�b�ha��hb�]��M;�5��A��5��h₃b�H�_����a�����ha���M��
������<�������:��
S���
T�L[�
U����
X����
[����
`�����������<�iD�v|a��������7i�M=a�����v��
e����v�����v������������v|����������
���������	�card_attach��Annot�:
����������r�������������a���b�v����h�M;�
f�w�
e�a��a��w|�
e�d�H�w��������w��d���d�H
����
������
���Annot�:
����L�,������<���L������T����q��iD���������7i�M��
f�����w+����w5����w<��q���q�����b��S�� ��"h�� _a�W����
�������W�w\�������,�d��,�w���
���4�M���w��
e�f�a��d�w���7����,�
���,���W�w���7����E�d��E�1�f�a�
���N�NU��u:�h�
e�h�s�v�h��Q��
m�W��,��]�M���p��,h_1��\�a�W�z���Q����f�d��f�1�h�d�
���o�^��a�u:�m�
e�m��
�v�m��r
��
n����o��|�MF�Lk�h��dh_1_w��oh_1_h��{��_x�m�Lh�q�tr�Lk�q�h��O��m����d�u:�q�
e�q��.�v�q�����a�������^�|��iD��������a�7i�M�����w����C�jb�������������h��"_a�E�
c�a����a�
d��a�M����bK�
c�d���H�
d�H�NU����
s������a�iD��E�d��d��f�7i�^��
f��E���R��V��M�p�dh_1����a�b]�d�
d����^������
t������������iD�z���r�h��h��m�7i�_�
f����d�������1�m�fh_1_w���h_1_h����������iD�{e����m��m��q�7i�^��
f���f�u:�u�
e�u�^��q�v�u���1�q�h�����W���
������W�0��u������!�d��!�1�u�m�
���*�^��h�u:�z�
e�z�o��u�v�z��.��jb���m�������������:�u��q��������W�������d����I���
���Q�_�f���u��u���
����V��
����D��^�
�����^��R�
���Q�
�����Q�
����W�{e���q��.����j�d��j��I���
��{
�q�h��I�c���
���Q�C���
���&��V��)�Ce_1Y�
��W�0��z��.������d����u��z��.��1�z�q�C���
��W�0����
e���b��z������d����u���������1���u�C�C
�������]��e�g1��Q����Q�C����Q��\����Q�
��
���Q����\�_���
��)�q�)�ue_1�b��K���K�3le_2�sY�;]�3��C�b���b��
�;i�3��K����b���Z��������P����
��;��q��P��R����Q����}�
���y�{���Q��h��x�Z&Annot�:�PInfo�
R�decl�	�card_union_add_card_inter����_inst_1��s��t��Z6���&���6��T������
{���
|���
}����J_x��Z6����������6��m��6���Z6���~���J�������
����D��0�
�����0��U��T�
��gm��,��T�����,�����T�����)��T�����oe_1���C!��,
��*�~����+������+��.���K�J������add_zero,�T���T��/��T�����/��=��T�����T��Tf��T��.���b��i�P��7�
��f���T�Za�:��
��-����o����Z6��*���*��6��E��*Z6����@���
��������6���������h�
���������3�
��Z6�����������������Z6����H����
��������6����������
����D����
����	��������3�,��Z6�����������������Z6���� ����a������
��������6����������@�������
��
�����������������
���������������
��
�������Z6��*���*�������+Z6���������������������������
�����_h���������Z6����������
��
�����������
��gm�����add_comm,��add_comm_semigroup������������f���_h���������Z����
���,Z���6���
:��3��-�gm�����3������4�T�add_comm_semigroupto_add_semigroup,��"�����?:��0��3��:;�����0��C��:��A��?������
�����
��G��:6��K;��N��P��������K������
��C!�,
��������J����H��H��<����<�
��k��h
��J����/��
����/���J���,���o�
��J��}�f��
�������,��,�
�f��`j�/��
�1��,�����
����V�,�������g��c�����T������6��N:��A��N�����������M�����b����������/�
����,��
�����c��Y��/���M���3�,���M�
��J����;��
��K������J�,��>�
�D
������1�,�����D
�L��
�6�,�����
����������D�<
�c��#��N:add_left_comm,��"��K:��N���::��e��O��F�����O��?��N��K��F��#��K��N���:�����0���������f�����B��2��#:��0�����3��
�����2���
���3����
��J���;��
��K���������<
�c�PZ�h������2��,��-�h���2�������P��-�
��f�����P���
��J����P����
��J�����Pa���
��
�forall_const�
�������Z�
��
����������������������_h�������+_h����/��7��9��E��I��:��A�����G��:���;��K��^��:6��a��N��b��X��a��������S:��A��K��j��������J��k��c��o��w�����J���3�,���J�
��J��x�;��
��K��w������������������������������,�����
}���<
�c���:�����N�����M����/�
����,��
��J�,��;��
��K�,�������<
�c��#��a��N�����N:��K��������F���������3��(��4��:��B��J��W�Z�PInfo�
z�decl�	�card_union_le����_inst_1��s��t���O{��������
����
����
�����_x,�O{����������	�card_union_add_card_inter���E�����PInfo�
��decl�	�surj_on_of_inj_on_of_card_le���������:�s��t�L[f���hf���hinja₁�a₂�ha₁��ha₂�]���hst�O{������Eb�H��"�Ea�a���ha��a�M���������:��
����
��L[�
�����
�����
����
���b�hb��"
hZ�����������aclassicaldec_eq��d���������

h₁�L��iD��,�a��a��d���fa��,���8��;��3�
����E�
���E����k��n�
���5�^��a��s��w�a_2�W��E��?�o�
��h���s�
��s�_����^��a�����d��f���h�����M��B�jb��E�d��P�����M����b��T��`�_a�L��D�����a��a���b��S�My�L���S�
a��Eh_1��>�a�W���������d�������
���z�_�d���
���
��
�����z����_��
��q����.�
���.�^���Rha₁��zha₂����o��
��u�����
����b��a�coe��!�u�	����!�u�	����!�ucoe_subtype�u���jm�^�����m�
��������h�������z�������z�������z����z��.����My�q�f������Annot�iAnnot�j�	�eq_of_subset_of_card_le��a��0�b�ah�M���S_a�W��f�
���f����x����
�����_�d������������
��������O���
�����_�f������
��W����������f�p���h_1����a��&��)�
�����^��h��/
��3
��
���������~?�~�Lk�u��mh_1_w���h_1_h����_x�z����u�����z���m�u:������v�������h�����^����iD��f�f��f��h���m�
���f�a��s��w��n����jb��f�f��2��8��n���O{����a���J��0�
����D��N�
�����N��L���
�chas_le,�K,�K,e_2�fi�,�,e_3�fi�gZ�Oy����Z�
�gc��Z�Oz��K��Kf��K��M���P��U�
��V��U�ZAnnot�iAnnot�j��_x,Z��M����w���a��a����������a���r������������_x���_a��,�vj�f��7�
���E����f�h�^�����������
���f����6��_x���_a���h�_�
���!�h��/��3��S
��Annot��
�����������
��.Annot����
�����
����vj�u���
���!�h�^��
�����m������������������
���Annot�������u������h�b��
�����q�u:�3la�3l�8��K��d�3v���v�3l���������������0��3l�i�3l���3v�sS�3l�u��3l
���Annot�������
�
�����w��3l���3l����������h�������������������������PInfo�
��decl�	�inj_on_of_surj_on_of_card_le���������:�s��t�L[f���hf���hsurjb�H�M��a����ha��M;�hst�O{��E��a₁�a₂�ha₁��ha₂��ha₁a₂�M��5��1��8D�������:��
����
��L[�
�����
�����
���,�
���.�
���
���
����
����
���2	f'��z�x�h�s����hx�h����fx��C����h��H�a��q�
��m����v��N���P��S	g���I��j�}surj_inv��z���N��Ix��I_a�_��
��q����
���.�^���val��u�
��u�Lh�z�~��Lk�z�q
�R���u�
��u����
����b���`�z�
��z����
��^���z�{����
��z��-a��~eq� ��D�z��s���p�u�q��y�a�o��u�
�����b���`���
�������z��q
�q���������{��������
���������D�3l�
��3l�����2��h_w���h_h������{��0��3v����
���������D�3v�
��3v�.�3l�1���h�������u��3v���subtypeeq��3l���������My�3l��`�3l�����u���`�m�
��m�����property��m���
hg�}injective� ���D�m�����j

hsgfunctionsurjective� ���D�q�
��q���m�� �
��u��

hif�
�injective�� ��~��D�u��h
�^������
�������������a�������������������subtypeext������������������z��s�������Annot�iAnnot�j�
�injective_of_has_left_inverse�� ��~����h� ��������finv��'�
�left_inverse�� �������
�
�left_inverse_of_surjective_of_right_inverse� ������~
�}right_inverse_surj_inv�� ��~����
�����
��b��
���������
�����b����
�����3l�
��3l������
�����sY��`�3v����T^�
��W�3l��L����
��������p�3l�q��K�a�c[�3l�
���W�b���`�3��
��3��1�@�Lk�3��3v���
�q����W��f�{��0��3��
��3���5���d�3��3��
���q�����D�3��
��3��Lh�3����Lk�3��3��2���
���W�
���e���{��0��3��
��3��W�3��L�d�3��3��
���������D�3��
��3��Lh�3��]�Lk�3��3��2������������u��3��������3���z�a�����My�3���`�3���z��3l�f��t����z��sAnnot�iAnnot�jx���_a�k����
�������Lh����LZ����Lk���finsetattach��z�q�
���������
x��D�����hx�Lh����LZ����Lk�������3l�z�
��o�����
�������Lh����LZ����Lk���������u�
����������
�����
��Lh����LZ����Lk�������3v�����
��k�����Exists�#����
������������p����q����������
�������0��3��
��3��b��3v�2���h�$�����"�������Existsfst�������
���-������
�����
��Lh��D�3���_�LZ��2�Lk��2����3��3l��
�snd��-��A�	�surj_on_of_inj_on_of_card_le������~����u�m����
�����
�����x���_x���
���W���������d�����1�3l�z�x�3l�z�Annot�x���y���_x������_x��-hxy��/��=��?��h���O{�����~�����������U�O{����z�q����u�m���D�������l��{�������z�q��~����P��u�m�a�x�z�qAnnot�iAnnot�jfunctioninjective_surj_inv�� ��j����
�����
��^��
��u����
����b���t
��s@�
��z����-�
���-�b�����}�
��o�����{�����
�������������p�z�q����a�sJ�z�
�����b������#�q������������
���������
�����
�������{����
��������2�1�����������u��3�������3v���������s���F��'�a��`�q�������q����PInfo�
��-decl�	�bind���������:�_inst_1�LYs��t��L\�L\������:���LY�	���
���i;�bind���a��[���
�PInfo��Kprt�VMR�VMC�	�K�
�	�����bind�	8doc�`bind s t` is the union of `t x` over `x ∈ s`decl�equations_eqn_1���������:���LY�	���
���L]�����
��������:���LY�	���
���iQ��'�PInfo��KATTR����EqnL�SEqnL�decl�	�bind_val���������:���LYs��t���iX�iY��$��ia��������:���LY�������ii��8�PInfo��MATTR����ATTR����decl�	�bind_empty���������:���LYt�
�Y	�Y��"
�����e�������:���LY���G�]l��L�PInfo��PATTR����ATTR����decl�	�mem_bind���������:���LYs�����b���N���"���
��a��j�H���M�
��������:���LY�����������e����a��1�i��9�Z��m���t���D��e��v����]��t����]��������mH��m�M}�\��Yk�
a��Y0�����t��}�i������o����p�����}�i��i���������}�i��[���\����P��]����i���\�i��������	�bind_val����
�P�i��i��������i�����P�������mem_bind����o����j����~���m����mJ����s�j�����~�	���m��������r���P�����r�Y���m��q��d��t�j��c��s�j�����b���������b�P��q��r����j�������������K���C���K���Ce_1Y�K��C���K��C�C
�����a����g1�������C������`�����������P��`����i��
���P�j��	����������j���q������m�P����m�j2��q��q���q�V��t�PInfo��RATTR����decl�	�bind_insert���������:���LY������_inst_2�1�a��_���"���
��
��
��E�
�pe��/
������:���LY�������!�1��"�����;�T����_���"�����1���_��p|����F��_���5��:x�����Q�����_���������^X�q�����Y������\���D��Q��d����J��_���_���E�3��G�����������1�
��Ng
�����������^b��t��_��o�������1�B�
��[��\�����o���������2�������s�
����P��n����	�mem_bind�������G���������������	���������������������1���������[�������1�����[����P�������Y������[���������P��������a��d��f��
�����CZ�2
���[��[���[�P���������������[�P���������w��}����`���������]���������X�P���	�����	���t�	���[�P`������^��^���^��P��c���_��q����N��Y�_���N��c�P��	���q����N����X��X���X����b���_���k���������������b�P����"�������!��a�������	��������]���P��/��\�Y�����[�V��_�PInfo� �UATTR���� decl�	�singleton_bind���������:���LY���G_inst_2�k6a��L���Z�	�
������:���LY���G�&�k6�'�
���L���Z�e�f�k8��
�d��L���\�_��L��_�����Z��
�	�bind_insert������
�k8�	�union_empty���Annot��PInfo�%�ZATTR����%decl�	�bind_inter���������:���LYs��f��t�L\�L��a�L��a����\��[x��a�a�
�������:���LY�+���,���-�L\�L�������x������L������9�L���8�.��q���
���1�L��}���]��M����}���]��1�M�
������D�����������������������L���9�������L������9����Mc�����������
���9�P�L��a�a����9����a���
���9���������������������L���.��
�}���]���)�q�
�����P������������
�
�Zf�������I�����]��	��)������������P�������]����������������}���]���)����.��a�L��a��/���������L���8�.��q�
�����Mc�������te�	���	�e_2���
��d�L��
��f�M>e_3�:���h�MB�J��	�G�0�x��ts��"�u�q�����0�tj��m�e4
�
��:�1�:���q�tr��3��1�t���"�m�h��
��
��JF������:������L�����a�a�3��
�����d
���.���������
�P�L��������������Zf���]���)����q������I���������������������]���)�1������������
��)�C���
��C�Ce_1Y�
������C���
��5���C�C
������������g1�)���)�C���)����r/����)�����)�P�������r=
��P�]��	��)�������]�����S������_x���_a��������^X������q��������^b�Ng���4�������E��a�^s�1�M�������2��Z����[�E��a�^s����bK��d�^��M��1��[�����a���f�1�w��1���������1�right_w�dright_h����q�b]�a������6�1����������m�_��1�����a����2�right_h_left���right_h_right����������_���q�^��1����a�d���2��^����	��r��f�������4�	�������_x���_a�����^X�������a����^b�1��������:����8��5����p��q��7�q�W�������
��q�1�W��A�1�M���a���f������h_left�Wh_right��F�M��1��q�������1��<�����Q�1��	�����m�_���h_right_left���h_right_right��	�1������_���q�^�������`�^���_��	��b�f����1��PInfo�*�]decl�	�inter_bind���������:���LYt�L[s��f���L��L����
��Z���x������������:���LY�@�L[�A���B���������L�������
������D�������M��L����_a�L��D�_������/
����C��q���_����������������
���������L�����.������������D������������_a�L��D�_���������������������	�bind_inter����
������
����D����
�������L��������
��L���������<z��	���	��e_2�I��
��a�L��
��%e_3�:���&�J���	��G�H��}R��"�q�m�������tj��'
�
��'�H�:���:�������L��M>��"�h�f��
�����������:�����L������������������.�������������L�����P����
��;��L�����Z�PInfo�?�adecl�	�image_bind����
������:��
	�[F��_�_inst_2�l�f�[�s��t���l��l��
�bind�������l�
finsetbind�����a���������:��
	�[F��_��J��H�K�[��L���M��I��J�_x���[L�[M���J���:��q�����S���:��Q�
������classicaldec_eq�arfl��l���M��N�E�a�s�has��uih�[L�[M���J�a����|��;*���S�d����Q�d��2����[L�[M�a��J�d�a�;*��b�`^��O�P��f��h��z�m
���S�f�a�;*����Q�f��1��������������a�;*��5����
���������D�������)����)�[M�de_1�[L�[M�f�K�[M�h�K�[M�me_2�[L�[M�q�[��[M�u�C�[L��������
�[�����K����C������������[���������������a��d��f��h�6������������
�����������}�}�`^�5����������l��a�	�M>�	�MBe_2�}R�
��q����
��u���e_3�[���z�[M�z���~Y��	�~Y�\�:������[L�[M�3l��J�3v�3l������������[M��
�
��*�]�[���3l����!���\/����J���z��
��;*���������f�d�`^����
���\
��d�����	�bind_insert���d�a�;*�����`^�5��,�������K����K���e_2�[L����K����K���e_3��������������������q�
�������K����)����q����������\/�����������������������^��f�a�;*
�������������PInfo�I�edecl�	�bind_image����
������:��
	�[F��_�_inst_2��Hs�ot���L�f�:��l��l�����E�:�
��V
a��l����:�������:��
	�[F��_��b��H�c�o�d����e�:���d_x����f�����"����
��s�f��l�����
����
����������E�a�s�has��uih����l��a�����"�d�a�;*�����f�d�l��d�a�;*�������������"�f�d�`^��������f�f�l��f�d�`^��2�����������5��������	���D������������	�����������������5������
���	������_��L��_��d�`^�5������
���
�
���f�f�
��m�e_2�[��tk�
��tr�
��~e_3�:��~���(�������
���-�l�[���3l�3l����l��3v�3l�����6��
�
��~Y�m����9��7��6�l����z��
��;*���\
�[�������"��l�f�d�`^
�����	�image_union���d�a�;*�`^��5��������������������������	�������������	�PInfo�a�kdecl�	�bind_to_finset���������:���LY_inst_2�:Js��t���\s�L��k=�����Z�Y�a��kO��������:���LY�p�:J�q���r���������T����L��kO����
�L���/�Z
�s��Y�����Z������x���������}���1�Z'���������D�����������������L��k�����}������������q��[��Yk�
���������Z��������P�������k�����P�����������
�Zf�������I��������	����������������P�������Y����������������L�����������}�������Z@�������s��Y���/������P��������������Zf����	�������Y����������I������"���������"�1����������)��	��������+���K���C���K��Re��?���Ce_1Y�K����Re�a�Z}��C���K�5��Re�d�CN��C�C
����C��!��.�g1�������C������������������������P��V����Z����
���P��	�	��������+�Y��������������P���Z�����Z������������V����PInfo�o�qdecl�	�bind_mono���������:���LY���t₁��t₂���ha�H���\:�L��\<���%�m���9��8������:���LY����w���x����y���
��b�a���������a�d�^��M���2�
�������N��M
���x������M�
�
��a��~�f�����a�1����D����������������q���������|���"�a��/���@������a��8��M����o�~�h�^������1��P�������	�subset_iff����N����q������������������������?���a�^s����2����d�^���a�2��@���a�?�8�?��a���o��h�^�����1����������^b�|����E��a�^s���������
�����q������������^b�|������q�������������0����������P��������������q�������q�����0�	���������������P��%����Y���������q��������0�������
���P��5��;���q���:��
�q�����0�	�����7�����	���P��G��	��,���P�?��������������exists_imp_distrib���(��������?��������������P��b�������������Annot�iAnnot�jb�a�ha��hb������d���
�	��-�M��A�finsetmem_of_subset��a�7��A��-~�PInfo�v�udecl�	�bind_singleton���������:���LY���f�j��L]��6a��L����j�������:���LY������j�������T���N���[����M
�j��s�����j�x������������j�����x���������D������������������������j������_����M2����������N���[����M3����1�i��L��K��K�e_2�i��K�L��K�L�e_3�d��d����������
�i��d�������L��i���������

��
��������#����t�����������Mh�P�N���Y��
������������
����j���j������_�M2�������j������������������������������
�����������P��
����Mn���
�j�������N��s�
�j�����P��,�j��j��j�����j����j����
������j������������j����
����P�j�����dT���
�V����PInfo���zdecl�	�image_bind_filter_eq���������:���LY_inst_2�:Js�Y	g���L���Zfinsetimage����?Da��L�c��
"����
������:���LY���:J���Y	����V�L���hb������L���/��W���?W
����n�����B����������L�
���}���1�k��
���1�q����z�1�M��
"%������D�����������������L������w����}��������W���BD
�����������L^�����5��������������P�����������w����Zf�������������L^�����
���
������
�����I���������������������1��������������������1�����B��-�������
�����C���
����W���?���Ce_1Y�
������W��a�Z}���C���
��5���W�a�d�CN���C�C
������������g1���������C��������������������������������
�����P�����M'��������
�P����	�����������Y�����������������������Z�
����
��������
�����
��
����P��6��>�
�����BD
���I�����e_1�j���������C
�k�a��=��������I������8�	������:x�����
���P��`����Y������z���������������������S�����������_;���1�k�
���1�k�������������������a�a_h����q�k��
���1�NR����
�1�����
��jp���1����������a_h_left���a_h_right�1����5��j[
����d�
��d�1�����8D�1�����k�d�������b'�da_h_left_h����q����a�8V������1����������da_h_left_h_left���a_h_left_h_right�B������q���f��~�d�a����1���������d�h�hb���a_h_right_right����f�d�hb���������%�	�����
�������y�-�������%�k�����	����������%����PInfo���}decl�	�product_proof_1���������:�s��t�L[�nodup�prod�
�product�
��Y1������:��������L[�nodup_product�
����D�xT
�PInfo����decl�����������:��������L[finset���
������:��������L[��-��
�������
�PInfo����prt��VMR��VMC������������productdoc��`product s t` is the set of pairs `(a, b)` such that `a ∈ s` and `b ∈ t`.decl��equations_eqn_1���������:��������L[������(���0�1
��5������:��������L[��3��(��@�PInfo����ATTR�����EqnL��SEqnL��decl�	�product_val���������:�s��t�L[��:����
��val�4��
��@��������:��������L[rfl�4��O��S�PInfo����ATTR�����ATTR�����decl�	�mem_product���������:��������L[p��
����������'��c��6��c��<�
�1�r��fst��
�Lm��snd��������:��������L[����
�mem_product�����iY�PInfo����ATTR�����decl�	�product_eq_bind���������:�_inst_1��_inst_2�_�s��t�L\��:��'������<��finsetbind��������������proddecidable_eq������:�a�finsetimage��8����������������������b�prodmk���������:��������_��������L\������T�������a�����'�����g�����<��
�������������
�����������������������a��;*����������
�	�ext����������_x���_a���prodcases_on������������a�����'�����g�����<��������������������a�����d�a�`^�;*�����������������d�a����f�d����`^�������d�a�fst�snd�������a����'����g������a���<�a�����:����a����!����a����a���������f�d����h�f��h��m�R������a����f�d�����^���1���k���c���D��^��e����?��c�P��?�1����q�a���9��Ng��x�a���9��	�mem_product��a�����9��]��c����:��B���������H����h�f����m�h���L����a��S��$��E��a�1�5�
�ob�M���	�a�������E��a���oa��oa��a��H��'��H��g��H��U
���f����f�����������m�h����q�m�=�����h�f�����P�������	�mem_bind�9�a����!������9�������e_1���l��
S�K��C
�o��a�����oa�������d��H�����V�����
a�a���a�C���a������a�����a��������������oax�>����������������oa�1�B��M��������?�oa�C���?����Ce_1Y�?�h��C���?���a�C�C
����������g1�oa���oa�C���oa���������H������������q�m����u�q�`�=��V����oa����oa����1��������d���f�1�����^������6����
��d�1�8D
��1�����NU��A��6����
��d����G�
���G��:�������m�h��T����N�P��1��^�	�mem_image��9�d��H�����V����������l�e_1�j��K���O�D��C
�k�m��]��M��\�d���d�C���d��\���d��L�
��d����\��F��Q����G�������_
���L�����Q�
���G�1�8V�����������?��G�C���?����Ce_1Y�?���
�a�C���?����d�C�C
�������[����g1��G����G�C����G�:������V��Y����G����
���G�P������prodmkinj_iff��m�h���P��Q����G���������exists_and_distrib_left��G��E����G�������E��E���E��Q�����K�P��Q�	���G�����K�Y���G��J�P������d��F��>��A����d�����d��K������������������P����
��d�1�
��f��8��J�
��d��G
exists_eq_right�:�d��
�P������oa������������oa������oa�����������������������P����	��oa������Y��oa����P�E�	�a����	�d�oq������P`�a����V��c�PInfo����decl�	�card_product���������:�s��t�L[Z�	�card���
��@has_mulmul,��has_mul��T���
������:��������L[multisetcard_product�
����PInfo����ATTR�����decl�	�sigma_proof_1�u_4���σ�s��ta
�nodup��sigma�<�>�multisetsigma�<�>��ay�����������k��������m�nodup_sigma�<�>����y�D��finsetnodup�<�����PInfo����decl������������k��������mfinset�<��p�>��������k��������m��>�����t�>����y�����
�PInfo����prt��VMR��VMC������������sigmadoc��`sigma s t` is the set of dependent pairs `⟨a, b⟩` such that `a ∈ s` and `b ∈ t a`.decl��equations_eqn_1����������k��������m����������A�B
����������k��������m��D�������PInfo����ATTR�����EqnL��SEqnL��decl�	�mem_sigma����������ks��t��mp��p
����<�<��o��������>���E��������>�
�1�rsigmafst�<�
��<�<��������<�����snd�<�����������k��������m������mem_sigma�<��>���a����ya��2����PInfo����ATTR�����decl�	�sigma_mono����������ks₁��s₂��t₁a��t₂����H1�sH2a����<�2����<�2������<�����o�a��1����G��������
����
�������k�����������	����
�s���_x��_a��o��7Hsigmacases_on�<�a�7����o�a�7�������o�d�
�d�2������*�����*����d��)�������o�f�
�f�2������8�����8����f��7��fst�asnd�2���H��=�mk�<�f
��7Annot����@�a�_a�1�g����h�
�h�3J��H�h
��SAnnot��
�d����f��Z��^�����^����h��S��Y���Z�����o�m�
�m������m�����m��H�m
��lAnnot��
����m��l�d��^�����o�h��S��������������Y����h��S�d���j�	�mem_sigma�<�h��S�d���Y���Q���j�q�q����m��l��w�f����h����������������m��l��w�a�����1�����������o�q�
�q�3T��������������H�q
���Annot�������q����f�a�Z����[����m����q�������������������q�������d����������o�u�
�u�3X��������������H�u
���Annot��������u����h�d������1�^�����u�������h����q����������������u�������d�������u����h�d����	��������a������������PInfo���decl�	�sigma_eq_bind����������k_inst_1��_inst_2a
decidable_eq�<s��t�����������o��
���������&finsetbind�<���'���'���o����sigmadecidable_eq�<���
��a���1�����1�a�finsetimage�<�I����3���3�����4��7H���#���1���,�pb����H���
���������k������$�����������������%�
������-��]�T��f�������2�
���
�����n�����n�������
��t��/���3��S
�$���D�2���������"��4�a�7��;*�#�a��2��������'�2���H��7H�	�ext�<��f��-��]_x��f_a��n��#��
��7H�*��	����������!�
��7������������������7H������/���"���"���'��4�d��)�`^�#�d��2���5�o���$���D�1���'���'���*��4�f��7����#�f��2���Q�f
�'�1���H�d��)������1����������&�
�a��)��������������H�a�������a�7��������/�a��'�����$�a��D�2���*���*���8��4�h��S��L�#�h��3J���s=�'�2���I��7����������a����7�����a������������������a����������������D����.�������$�P��������&�
�a�
�d��7�����9��������8���1���������������G�����G����a��������"����a������������-������������������(��6���6�
�f��S����
�h��l��4�m��l��#�m����|�m
��$�a��������	�a�ob��<�2����2��1�������������
�heq�K��7��7
��-���E��a������������E��a�����oa�����a�����a�����a��I��`
�$�f��D�2�����������m��4�q����=�#�q��3T��������U��S�1�����P��~����	�mem_bind�J�a����������^������|��������a�����oa�����D����8���8������p��
�
����������a������a�����a��������������oa�����������������1����h����������1������l��l�������������oa������������1����������������1������S
��S����������������oa��������a���a���d���k�
�m��������
�q�����4�u����`�#�u��3X��T]�#��
�
����oa��������������oa����1����
�����F����7��:����
��������
����������s��l��s������=�P��1��M�	�mem_image�<�J����a��r��
�
����������C�������Ce_1�
�K�����C���L��m��C�C
�����c��L��<���K��x���C������K������;�
�������K��F��@����������1��������
�������;��y��@�
�������������������?���C���?��{�Ce_1Y�?�����c��c�����c
�1��C���?����q�����������1��C�C
�������J����g1���/���C������K��ka₁�m����s����������������
����inj_eq�<�m��l���P��@��������������������E������������@������P��@�	���������Y������P���������F��4��7exists_and_distrib_left�K������
�P������oa�������������oa�������������P����	��oa�������'����P�E�	�a����	�d�oq����2����2��1����5�5����5�������S��	�����9����������������������1����������������A������)
��A��,����H��8������@���A�
�����?������C�������C�.��]���4�C��b�����C�C
��������G��P��q���/���C��G��P��������?��?���?��E��N�P��E��Nheq_iff_eq�K��A�P��8�
����1�
���������4��4�����4�5�������Texists_eq_right�K����S�V��$�PInfo���decl�	�pi_proof_1�u_4����k_inst_1��s��t�����na�H�Y|����pi�8������:�a���&�a�y��������9��k�:���;���<����nodup_pi�O�������>������+La�_x�Y|����
%�PInfo�7��decl�6��8����9��k�:���;���<������a�H�s�
����9��k�:���;���<����������������>������7��8�
�PInfo�6��VMR�6VMC�6���<�;�:�9��pidecl�6equations_eqn_1��8����9��k�:���;���<����������6��8�
�������9��k�:���;���<�������������PInfo�I��ATTR����IEqnL�ISEqnL�6decl�	�pi_val��8����9��k�:��s��t��������O���finsetval�T�������>�����������9��k�:���K���L���rfl�O��	���PInfo�J��ATTR����JATTR����Jdecl�	�mem_pi��8����9��k�:��s��t���f��������a�H���
������"�����"������&��
a�h������
��
�����
�&������9��k�:���Q���R����S����mem_pi�O�����&�oa��A�y��l���PInfo�P��ATTR����Pdecl�	�piempty�u_2����:��β�<ya
h�9%����:���]�<y�^
�_�9multisetpiempty�\��
�PInfo�[��nspace�ZVMR�[VMC�[���_�^�]�:��piempty_maindecl�[equations_eqn_1��\����:���]�<y�^
�_�9�:�%�[��\�
��\����:���]�<y�^
�_�9�L�%��h�PInfo�g��ATTR����gEqnL�gSEqnL�[decl�	�picons_proof_1�����:��s��a
a'h���u���m
������:���k���l
�m�n��w����{���ld��x��multisetmem_cons�
��������
��	��}�N�������
�PInfo�j��decl�i��8����9��k�:���k���lb��fa�����
��m��n�����������9��k�:���k���l�q���r����m��n���multisetpicons�O�������
�j�����
�PInfo�i��VMR�i	VMC�i	��	�n�m�r�q�l�k�:�9��piconsdecl�iequations_eqn_1��8����9��k�:���k���l�q���r����m��n�������i��8�����
�������9��k�:���k���l�q���r����m��n����������PInfo�z��ATTR����zEqnL�zSEqnL�idecl�	�picons_same��8����9��k�:��s��ab��f���h�
��d`
��5�������
���

����9��k�:���}���~�������������multisetpicons_same�O������;*��
���
��������PInfo�|��ATTR����|decl�	�picons_ne��8����9��k�:��s��aa'�b�fa���)��h�#���ha�;���������a���a�2��;*��
�
���k�������^��1�����;*������/��2�
�a�;*����Jsymm�a������9��k�:�������������������������� multisetpicons_ne�O�a����7�����
����a�;*�����I�PInfo����decl�	�injective_pi_cons��8����9��k�:��a
bs�ohs�3��functioninjective�O�O�s���jX���m��n�����
����������2��:�
����9��k�:����
�����o����te₁��we₂�s���-T��eq����m��n����5���,�������1��������multisetinjective_pi_cons�O�a�;*�����
funext�O�a���aH���#�Z�d����%�a�f�2�����a�����$�����
���e�afunext�c���������������d��d��f��L���d�2���������
h���
���������f�������������>�O�P��������B���>����D�������P�>�O�P��f��h�������
�f�������������.���������P����
����f�������d��������
Annot�iAnnot�j���� �������������D�� ��)��c�m�f�n�a��w_�w`��L�a��Q���_a��5�D��������h���h�3J��L��a��
���h��2����D�a�h����D��B��G�P�h�w_�w`��h��m�=�a���G�
�h��L
�a����d�6�Z�h
���a�8���E��b��d�P��f��i����h
�a��d��9�f��L��a��
��t��8�(}��t��~��� ��%
�����'�PInfo����decl�	�pi_empty��8����9��k�:��t��m�������E�F�.������>��l���	�singleton�O����	�piempty�O�l
����9��k�:������m���������PInfo����ATTR�����ATTR�����decl�	�pi_insert��8����9��k�:��_inst_2��$s��t���a�ha�3�?k�������E��F����
���������
����
finsetbind�O�O�
����������E��F����5��,���O�a����7����%b�
��Mimage�O�f�E��F�-,�,���������E�a�F�7�5��5��`^��������d�����)�������7H���
�����7H�������9��k�:������$������������������	�eq_of_veq�O�E��F����7�����������������������������erase_dup�O�������������������D����!��h�������_a��'�D������E��F�����)����,��������/����1��������-����1�����E�a�F�oa�����������E�d�F�G������5����f��=��7�����#�7��;*�����a�7��;*����.��X�������j��'�����������'������n�����multiseterase_dup_eq_self�i���������Mnodup�O������s'��h����
���J����a�����_h�$�XX�%�������=�f�>��a
�Q�����������=�h�>��f�Z�m����O�m��l��m����f�����7a�fy�2��1�����bind�O�O�1����y�1���b�1������������=�m�>���9�Z�q��|����q�������multisetmap�O�O�=�h�>����h�a����f���a'�mh'�������u�`�q���u�f�a
���Tb_x�Tb�^��Um�Z�z
����u�a������Tb���������h��L��S�8����hy�3J�1���������=�a�>�����������������=�d�>������.��5����f��	��7�������a�;*�7�������ay�2���������1���y�1��jp���1����������=�f�>����������Q����h��'��S������=�d�>�����5������6���f����(����m��h����
���f���f���
��������G�t��G����d�`^��)������dy�2��2�������$b�1���8����`^��)������Y��^���D��_��l��&����_a���D���������3��T�����X��3����1���y�1��j[���1�����*���*��=�h�>�����G������G��l��m����=�f�>�������Q��*��������h��������q�=�m�;�d�
���9���9�B��Tb�Z�u
���������s�9�������������t��3������_��i�pi_cons�O�a�;*�7�������	�decidable_eq�j���	�������	�����*�	������e_2������=�m�>�������|���j���=�q�>��������������
�������	��������	����=�u�>������z�d���z�h�T]�	����=�z�>�3c�����Z�������f�����m�Uhe_2������=���>�3m�U��Z�3l���3l�h���3l�q�~ ��j���=�3l�>�8����3v�Z�3v���3v�m���3v�u�U�
�	�����������=�3v�>�4n���3��Z�3����3��q���3��z�~d������=�3��>�3����3��Z�3����3��u���3���������<����@���������
�
���j�j����	����������������j��j����	����������������o�	�����	������������o�����O�r������������������������r���������t�����4���s�������i��]s�1����1�e_1��1�f��1��������1����e_2��c�j��m�������t�j��q�a��������������������
���c�t������������������#��#������#��h��\funext�c�j�1��/�1���s��h��\b�1�����t��g��[�����Z���D��������&��s��[_a��s�D�������������f�����7��������������������h��������
���������������Z����t��[��Z��n����Z��n����2��Zmultisetnodup_map�O�O��6����P��Y����d���d���f����)������s�E�d�F�op�5����d��)�`^�������s��g������������	�insert_val_of_not_mem����PInfo����ATTR�����decl�	�powerset_proof_1����s��t�{h�W�������Z���powerset
���R�����������{����E�+���^�W�������Z����B�������������mem_powerset���
�
�PInfo����decl��_proof_2�������������pmap�{��a�{a��������B����g��������nodup_pmap�{�����{�|����t��ga�{ha�|b��hb�����������
���������{��t�0��nodup_powerset���1�PInfo����decl���������������������������m��}����t�������PInfo����VMR��_lambda_1VMR��VMC������VMC��������powerset���pmapdoc��When `s` is a finset, `s.powerset` is the finset of all subsets of `s` (seen as finsets).decl��equations_eqn_1���������������������������s�������PInfo����ATTR�����EqnL��SEqnL��decl�	�mem_powerset����s��t�����W�������d�����
���������������
�������W�������d������s_val��s_nodup�������W�o���o�d�o������
����
�������������D��������������������W��a���1�)%���s
�
�������������������W�������Z����B���h������>��������
������������o�Z�o����k���o������<��9��B�������
�����������o��"����
��#�1�P�o����K���K��e_2�	�K����K����e_3�����
������C�W���6����;�
���K��6�C����;��������2�������*���
�P��+��#�	�mem_mk�o����"��)�P���������������9����!���mem_pmap���o����9����!��������C������Ce_1�����C�
S����C�C
�W��������
a�������C����������������������1������������������WZ������?���C���?�W�����Z���B��7�Ce_1Y�?�W�������Z��
��B�����C���?�W�����Z���B��4��C�C
�������
����g1�������C�����������������������
�P�������Y��������������P�������]��������������P����
����1�
����)�7�������[<�����������������������������������D������	����_a�C�D���)%
����������������������P����������
�V����PInfo����ATTR�����decl�	�empty_mem_powerset����s���W������d������������������A��	�mem_powerset���"��PInfo����ATTR�����decl�	�mem_powerset_self����s����?��������������P����G�f�PInfo����ATTR�����decl�	�powerset_empty����_inst_1�����������	�����������
����������A����������������]�PInfo��ATTR����ATTR����decl�	�powerset_mono����s��t����������|��������������������S��x��h��x�^���
�������F
�(}�	�mem_powerset_self
st��u��h���������W�������d�������,���F��C��^��������,������
�PInfo��ATTR����decl�	�card_powerset����s��Z��������has_powpow,,��has_powbit0,5:������������������������{��t����card_pmap�{����}����t����card_powerset���PInfo�
�ATTR����
decl�	�not_mem_of_mem_powerset_of_not_mem����s��t��a
ht������
h�3���3������������
���������~������^�������r�����
�PInfo��
decl�	�powerset_insert����_inst_1��s��a
���������
�� �����������o�@��
�����l������	����������������
�	�������t�������������u���� �����o��o����@�������l�o�o��%����������'G
���\�
��X�
��o�1���������D��0��A������3�����\��u���'�
�P����I��F��u�P�\��]
��L�*���
��/��@�����������o����������@��/�����-�������������-��@�P��r��w�y�o��%�����-����t��5�P��t��5��Q
��v��?�������*��m�������X�
��o���������
�������
�
��?�P�������lE�o�o��%��������K�o�C���K���Ce_1���K���C�
S�K���C�C
�H������>�
a�o���o�C���o����	����������o��=�
��o������1�����<��=�P�������Y������<�������8�P�����8�����<��<���<�:��5�-���Ah�5�S���'��������#�
����1��������
H���������H��
����1��������I!���'��	����'��������'�
�*&���
H���ordcases_on������ ����������'$������ ����i���!��	�erase_subset����� ����=�
����1��4������ �H���;�������u��hu��:�����'$�a���������F��������D��J��Q���_a���D�<�'$�d�8����<��X�����J��M������M��
�������M��i�a��O��	�erase_insert_subset�a����
��l��o��6�����������
����D����
���������������
����������
'�i���K���K��e_2�I��K���K�
�e_3�9b�I��L������
�I�������'�finseterase_eq_of_not_mem��
�
���������������������������������������P��#u���������������3����
����D����
�������;��
��������������#�,�����������������������
S�K��C�C
��s�������
a�������C��������������,��������������������������������P������������E��
����	�ne_insert_of_not_mem���
�P������Y����P��#���������O����<�Z�P������������P����
��,]����Z�PInfo��decl�	�powerset_len_proof_1����n,s��t��h��P�powerset_len
��������0,�1���2���3��H�+
����
���Z����^�W�������Z����D����1�����T�mem_powerset_len����'[
�PInfo�/�%decl�._proof_2�����0,�1��������k���������������RZ��D
����p����0,�1����z������n�RZ��~��pa��ha��b��hb��<���������?�*�nodup_powerset_len
�����PInfo�6�%decl�.�����0,�1���������0,�1��������v��n�RZ��~�/�
�6�
�PInfo�.�%VMR�._lambda_1VMR�.VMC�<�%��VMC�.�%�1�0,��powerset_len�<��decl�.equations_eqn_1�����0,�1��������.�
�������0,�1���s�������PInfo�?�%ATTR����?EqnL�?SEqnL�.decl�	�mem_powerset_len����n,s��t����������
�1�+S��U
����A,�B���C�����B������������1�\���^s_val��s_nodup����������������
�1����
Z��/������1�)%�oZ�������������D��������������������W�������1�1����9Z������WY
�
����������������������D���9����������������������������Z������k������h����D���o�����
��������������1�����
��2�1�P������K���K��e_2�I��K��1�K��2e_3����6�����C�W���C����H�
�9c�K��C�C����H����������������:�?��
�P��;��2��`������1��9�P��%��'�����������,��0����r������h����,��0������~����e_1������
S���C�C
�W������
a�������C���������������������1����������������X2������
����C���
������D�����Ce_1Y�
����
��D������C���
��W�����Z���D�a���[�C�C
�����������g1�������C�����������������������
�P�������Y������������P������d���9��������P����
����1�
���1�����������Z���������[<����
���������������P����)%���o�N������),��
�����������V����PInfo�@�+decl�	�powerset_len_mono����n,s��t��h�+S������|�o���
�������K,�L���M���N�+Su�oh'���������W�������d��������1��Z�����	�mem_powerset_len��andimp��K���O��L��Oh₂��Y��'
������O�^��E��G��1��Y��O��U��PInfo�J�/ATTR����Jdecl�	�card_powerset_len����n,s��Z��������natchoose��*����V,�W��������������������~��~���������n�RZ��~����card_powerset_len
���PInfo�U�4ATTR����Udecl�	�fold���������:�op��
hcis_commutative�hais_associative�
bf�:�s���������:��\����]����_����a�b�:��c���	�fold����
�m<��PInfo�[�BVMR�[VMC�[�B�c�b�a�_�]�\����	��folddoc�[`fold op b f s` folds the commutative associative operation `op` over the
 `f`-image of `s`, i.e. `fold (+) b f {1,2,3} = `f 1 + f 2 + f 3 + b`.decl�[equations_eqn_1���������:��\����]����_����a�b�:��c���M��[�������
���������:��\����]����_����a�b�:��c���M�����PInfo�g�BATTR����gEqnL�gSEqnL�[decl�	�fold_empty���������:��\����]����_���f�[�b��L�������
�2�������:��\����]����_����i�[��j��jv����PInfo�h�FATTR����hATTR����hdecl�	�fold_insert���������:��\����]����_����i�[��j�s��a�_inst_1���h�3��
�M�����d�a������5��5���d��f��
��A����������:��\����]����_����i�[��j��l���m��n����o��������M�����a�����X��d�a��%����������%���D����!�)�a�)�de_1�NU�K�h�K�me_2����;]�u�C�^���^��
�;i�u�J���^�������g��d�a������������ ��a��de_1��'��h��me_2����e'�u�u����q�
�e2�u��u�z���q�A��A��M��A�������G����!�M������
��d���
���� ���D��!��u�^��_a�#�D�M�����d�a����X��f�d��.�O�P��f��h���a�5�������.��M������������!��q�{�d���
����u�M����������� ���D��u����^��n��d��f��h��m�
��_a�#�D�M�������
��f���������������u������d���
��������M�������a�A����� ���D�������M��[����_a�[��D�M���������������M��������������map_cons��d�a�
��������M��� �� ���D�������M��a���_a�a�D�M�������d�5��������M���������� �fold_cons_left��a�����A����M��� �PInfo�k�HATTR����kdecl�	�fold_singleton���������:��\����]����_����i�[��j��m��M����
�:��������:��\����]����_����i�[��j��m��M����-�PInfo�z�KATTR����zATTR����zdecl�	�fold_map����
������:��
	�[F�\��
�]���
�_����i�:��j�g�	����s��e�M;����a����
finsetmap���a�~fold�������
�
����a��	�����J��a�	����a������:��
	�[F�\��E�]��G�_��I�i�:��j��|��L�}��e����s�M;�������
�
������p�[q�������D��s����)��)�ae_1����K�f�K�he_2�_�;]�q�C����_�
�;i�q�B����_��Y����d����Y����X��a����map���a��o����	����a����M�����a�d��\�������a���L���������\�������a�����
��������O������
�������\����\��a��d�fe_1�:���d��f�h�]����f
�_����h�a�m�a�qe_4���b��-�b��0e_5�:���3v�3v�c�K��c�K�e_6��������3���3��3��m�\������:���3���3��3��q�cu����3��3��u�h�f�d������M���3���3��3��u�\������3��h���\������3��f�a����3���a�3����b��a�������
�u�L����u���u��&��tj��3��3���b��3���:���3��3������+�d�J�L
�c�L�����b�����:��L��3�����3��3��m�M�����m�\�������3��d�m�L�����m��Q�\�������3��a�m��Y��
����h�f�������

�M�
�t��tf��X����	����a��@�a����
���op��������e_1���hc���ha�����m��qe_4����Y-�z��Y-��e_5�:��Y-�3l����3v��3��3��d��������:���3���3��3��f�c����3��h�a�������M���3���3��3��h�\�������3��a����\�������3������3v���3v���b������������h�L�����h����h������Y-�3v
�������:��Y-�3���������L��3v����3v�d�M�����d�\�������3���d�L�����d����\�������3���d����
��a��������

���������multisetmap_map����a���o�����r����g�������
��p�M�����PInfo�{�MATTR����{decl�	�fold_image����
������:��
	�[F�\��E�]��G�_��I�i�:��j�_inst_1���g���as�[M�Hx�H����a������ay�dH��R�f�����U�f��B��5��
�[L�m�
�M�����f�d�����finsetimage��a�f��f��h�
��[�a�d������b�a�f�d�
������:��
	�[F�\��E�]��G�_��I�i�:��j�����O����P����Q����i������M���{��������a�d����[q�a������D�������)�d�)�fe_1����K�m�K�qe_2���;]�z�C�b���b��
�;i�z�K�z�C���b���y����d��d��y��������.��x����M������\���������L���������\�������f�����������@�f�d�������x���������f��h�me_1�:���h��m�q������m
������q��u��ze_4�b���������e_5���������d��������:�����f�b�����3��h�a�������M�����h�\�������3��a���\�������3������3����3����:��3����������h�L�����h���h��!���Y-�3�
���-���:��Y-�3�����&��L��3�����d����d�����d����d��<�����d��@�
��a�����������Nn��������d��[�����������a�f
�������
��&�
�m�e_1�:��tk�
�9�
�Tbe_2���Um�d��������X����z���|�
�������-�
����������|���t���&������o�	�image_val_of_inj_on��a�f��u���a����+�a�f�d�
�����������7�a�d��������Nn����PInfo���QATTR�����decl�	�fold_congr���������:��\����]����_����i�[��j��l��g�muHx�H��
�M��
%�M;��N����
���
������:��\����]����_����i�[��j��l�����mu�����������M;����������
������D�������NP���_a��D�M������
�M������������������
��������������������D������NP���_a��D�M����������������
�����M;���������a��������D����'�M��[�������a�����_a�[��D������
���M�����3�����$�map_congr��a���-��"����M���%�PInfo���UATTRcongr����decl�	�fold_op_distrib���������:��\����]����_����l�of�:�g�[�b₁�b₂��M;�����x�a��������������
�������:��\����]����_����l�o���:����[�����������f�M;����������������
�����z���D��f��|�����\��z�����\����������Z������r���x�a�������v���������������Z��fold_distrib���a��������������e��z����ae_1�����f��he_2����e'�q�q�o���c
�e2�q��q�u���m��`��t�����d��y��
��M���z�PInfo���Xdecl�	�fold_hom����
������:��
	�[F�\��E�]��G�_��I�i�:��j��l��op'�����_inst_1is_commutative��_inst_2is_associative��m�[�hmx�fy�h�[L�h
�6�%�[L�ffinsetfold��m�f�
�x�m
�1������m�h�d�a����������:��
	�[F�\��E�]��G�_��I�i�:��j��l��������������������[���������������d��f�
����[x�m�f����h�������D��������f���_a�f�D�������q�h��
����q�2��
����q�m�f�d�a��������6�������g��m�f�
�����������������h�d�a���X��m�h������D����Y�^����_a�h�D�����
�h����'�[x�q�h��*�;���6��j�����W��@�m�h�d�a��������Y�����m���V���D��Y����� ��X_a�f�D��j
����m�f�d�a��X��q�m���g��j���Y������f�����X�fold_hom���h�f�d�a��
���V������������[{�m�h�f������D���������m���_a�m�D��j��c�[��m�h
�����j��c��������\�m�h�f����\/�f���PInfo���\decl�	�fold_union_inter���������:��\����]����_����i�[�_inst_1�5ts₁��s₂��b₁�b₂��M������� �
���d�5�
���������5�
�������
������:��\����]����_����i�[����5t�������������������M�������%��������%�������������%
���D����#��=�������a�������E�����������E��������"��a������3����!��-
����#�M������	P��[��	Q��a������"���D��#��O�����_a�a�D�M��a��~
����.���f�6���~����.�H��
�f�6��a��_�����U����.����o���#��M�My�a��M���fold_add��a�����������O�M���E���R��#�R��d������"���D��O�’�����L_a�[��D�M���~�����F�[���H�d��\��f��o�M��˜��o���O��My�[����L�map_add��d�a��������’�M���E���Œ� �#�4�d�5���������"���D�’����^��_a�#�D�M��˜����R��,�R��f��[��e��o�M��˜��������e��o��’�¾�	�union_val�d�5�
������M���E���¿��#�,�d�5�������"���D�������^��_a�#�D�M��˜������� �,�4�f�6�����l��e��o�M��˜��������o��������	�inter_val�d�5�
������M���E���Œ������"���D������^���_a�#�D�M��˜��������,�,�f�6�����l��o�M��˜�����o�������union_add_inter�d�5����������M���E��J���� ��"���D����G�����_a�[��D�M��˜�����������l��o�¤�����D�±��������G�M����1���D��"���D��G��d�����_a�a�D�M��˜�›�����m��o�M���~��k��o���G��`�^comm��a������d�M���"��"���D��d�Å�����b_a�a�D�M���~�,
��k��o��r���d��"�€���� �M���"�PInfo���adecl�	�fold_insert_idem���������:��\����]����_����i�[��j��l���m�_inst_1���hiis_idempotent�����������:��\����]����_����i�[��j��l���m���������õ����������#���������_a�a�D�M���k�a��������������������������H������M������X8�����������D��������z_a�#�D��������������������X,�d���
������M����i_�a��a��d��f��h�7i�����������D�����������_a�a�D�M���������f��������������������y������fold_erase_dup_idem��a�����a��d�7i��'���������M��������������D����-�����_a�[��D�M����i_�d��d��f�������������������*�#��d�a��������������-��������D��-��P�����+_a�a�D�M�����8������������-�����"��������P������D��P�����=����� �d��a������M��������������d���L�������p���������d����x������ ����������e_1�:����������h
������m��q��ue_4�����������e_5�:����������d��������:�����f������3��h�a����Ė��P�h��T�a�Ğ��^�����3����3����c��Ĝ�ė�Ġ�h��X�h�ĥ�h�Ĵ�����
�������:���-�Ĝ�Ĺ��L��3�����3��d�M�����d���������3���d�L�����d������������3���d����
��a�����x�����M����������������� ��i���PInfo���fATTR�����decl�	�fold_op_rel_iff_and���������:��\����]����_����i�[��j��l��_inst_1��Or����hrx�y�az�d���-����1�<��-�c�a������1�x�fH�a������������:��\����]����_����i�[��j��l������O��������'���a��J�f�l���������h�f�d�a����1������h���r�5��,��u��������������f��+���f���a�������h��-�
����D��b�
�����b����*��*�
�����Y��*��d��fe_1�����m��qe_2���������!
�����Nn��X��h��f�d�a������a��*����a��+�
���*����*��*���*��`�
����	�f���h���r���G���m��L�@�f���h�
��
����f���f��_���f�
����f��a��^��-������-�
��
���^���1����Ų�P��^���/F�h��Ų�Ph'�������5�����
�forall_prop_of_false��������-���;��
��<
�c�P��f�
��
��Sq�f�P���*�+���*�P��j�
��,]��*�Za�fs�ha�3���IH���5���/�h�f�d��a�1�5�����q���^�
���5�����M����u�q�m�h�f�a�d�9��B��
��u��u��z�����3l�6
�1�M�a���u���^��
��z�K��
��z��z�����3l��3v�R��_x�Q���M�m��4��
��'���D��(��/�M��q��_a�q�D���������z�u�q�m�h�d�f��"�1����d���z���o��
����K��
��������3l��3v��3�����a���������T���(��,finsetfold_insert��u�q�m�h�f�d�a
��u��z�-����/���1�M��4�M��+��'���D��/��w�	���-_a�C�D������q�����<��T����T���/��u�P��-��u�j[��4��+����w����s�����u���^���$��'���D��w�ƚ�	���t_a�C�D���1�����������~��T���ơ��T���w�Ɨ�P��t�Ɨ���ƚ���1��s���Ɩ��'���D�ƚ�ƻ�	��Ƙ_a�C�D���ơ��A���z���o����Q��T�Ƅ��ƚ�ƹ���ƹ�Ƙ�P�ƹ�Ƙ�R�Ɩ��r�����ƻ���1����r�Ɩ��'���D�ƻ����	��Ʒ_a�C�D���1�ơ��@�����T���1�����T��ƻ����P�Ʒ�������r�������������s�Ɩ��'���D������	����_a�C�D���1��A�Ơ�����T�Ƅ�������P������������r�6���������&�v���S�����&a_1����q�Ơ�����ơ����������b��
��3l�K��
��3l��3l��3v��3���3��}���d��|h₁�Ơh₂�������b����6b�3lhb����
��3v�K��
��3v��3v��3���3���3��������b����V��	����N��P�h�d�sb����V�
��3��K��
��3���3���3���3���3��T^����S�	���e_a�C�D�b�
�
��3��K��
��3���3���3���3���3��Ui�a����e��S�P��e��S�
�3���`��rfl��N�]�3�
���3����3��n�a��q�h�~ �u�m�3v����3��i���m�f�s��a��hb��P��"h��&�	��Ơ�����
��z���b�zhb���%���sJ��3�����3l��sJ����D�Ƿ�Ǿ�	��Ƿ_a�C�D���
��K��Ƿ�Ǿ�P�Ƿ�Ǿ�
�3l��/�����ǻ�ǽ�PInfo���ldecl�	�fold_op_rel_iff_or���������:��\����]����_����i�[��j��l��_inst_1��Or��hrx�y�az�d�� ���<���"c�a��)����*�a�x�f����,H��,��-������:��\����]����_����i�[��j��l�����O���������a��>�l���H����I�o��h����K���K��L��u�����Z���a���f����^���^��-�
����D��&�
�����&��j�
��Ō��%��*����%������*����*��*�ŕ��$������$�a����f�������l����K�e_1���D��
S�B��C
�_���#��;�
a�f���f�C���f�� ����^������ś�ſ��;��f�P��T��p�Cq�<��?�(�����
��
exists_prop_of_false
��^����^��-���3��^�
��J��i�;��
��K��^���Ź�<
�c�P�a����f�����O��f�P��2��*����*����Za�fs�ha���IH���������_���q���������������������^���u����#���#��$��.�ȟ���D�Ƞ�Ȣ��5_a�q�D��?����@�o���z����O���O��Q��X�ȭ��Ƞ��,��m���Ȣ������r��t�ȟ���D�Ȣ�Ⱦ��|_a�C�D�Ɓ�ȭ���ȭ��Ȣ�ȼ�Ƌ�ȼ�Ǝ���Ⱦ���Ȼ�ș�^���u���Ɣ��Ɣ��$�ȟ���D�Ⱦ����Ɵ_a�C�D�����Ơ�Ƣ�ȭ������ȭ��Ⱦ����ư�������������Ȼ������ȟ���D�������	����_a�C�D������ȧ�o���z�����������Q�ȭ�������������������P�������>�����r������������ș��r����ȟ���D������	����_a�C�D���������@���ȭ���I����ȭ�������P���������r���������ș�Ȼ����ȟ���D����?�	���_a�C�D�����ȧ�Ơ���ȭ��������=�P����=������r�1�����<���Ȟ�� �S��<�Ȟa_1��<���Ơ���)������b��������4���4��6h₁�Ơ������f������o����N���o��P�������p�	���o��q�1��o�_x����Y���o��y����z�
����D��z�
�����z���
�����o�
�����n��C��D�����3l��G���
���n��
��ɒ��������ɓ�ɔ�P�ɑ�ɚ�
����J������ɘ�
��P�ɘ�
��G����ɓ�ɓ��ɓ�P�ɔ�
��T�ɓ��y�
��P��y�
��V��y�C8�Z�)�������������<���<��6�)�b������N��3l����L���L�f�a��x��a_1_h����a������������#�,���������b���3����b���v�����ǚ�Uhhx���h₂������3���3�����n������3���3���3���3��~!�d�a�����ǐ�jm�b���v����ǚ�������
����D���
�������k��l��3���3���3���3���3���3��U��a����b��a�
��
�����������P����#�
�3���r�a������������"�
��P��"�
��V��"�P���
��&>���Za_1�Ȟ�s@�ȫ�/�Ȭ����y���x�za_1_h�Ȫ�a�Ƿ��Ƿ��5����1���Ƿ��Z����5�q��sR��3v���sS����a��T�T]hx�Ƿh��Y���b���c[��2����m��p����T�z�a�W�3���3����Ǎ��Ǎ�ǐ����o��d��s�	��ʀ_a�C�D�b����v��ʀ��s�P�ʀ��s�ǂ���2��m����u��|����T�z���u�Nj�_a�3��D�ǚ����ǚ�8���ʚ�a�2��p����u��|�����{��jm�ʄ���ʲ�ʟ�PInfo��|decl�	�le_fold_min���������:��i��j�l��_inst_1�1�_inst_2decidable_linear_order��c������������nk��Sto_partial_order���U���Alattice_of_decidable_linear_order�����min���Ainf_is_commutative������Ainf_is_associative��������1����x�H�-
���������nk�������������
��������:��i����j�l���7�1��8����:��	�fold_op_rel_iff_and���������������1����x�y�z�le_min_iff��a�
�PInfo�6��decl�	�fold_min_le���������:��i����j�l���7�1��8����:�����������������x��n�H�-
����
������:��i����j�l���7�1��8����:�����I�	�fold_op_rel_iff_or���������������1�ge�����x�y�z�������]�a����a�nk�a����a����a����a�
����a�����m��mmin_le_iff��a�
�PInfo�G��decl�	�lt_fold_min���������:��i����j�l���7�1��8����:������������������1�˕�x�H�-
�ˏ��ˑ���

��������:��i����j�l���7�1��8����:���'�˔x�y�z�lt_min_iff��a�
�PInfo�P��decl�	�fold_min_lt���������:��i����j�l���7�1��8����:����˔������˔���x��n�H�-
�˝��
������:��i����j�l���7�1��8����:��������\gt���˓x�y�z���������a�ˑ�a��j
��q��������min_lt_iff��a�
�PInfo�W��decl�	�fold_max_le���������:��i����j�l���7�1��8����:���������max���Asup_is_commutative���M������Asup_is_associative�������1��@x�H�-
��C������:��i����j�l���7�1��8����:������� �������
���1���_x�y�z�������m����a��1��t��vmax_le_iff��a�
�PInfo�_��decl�	�le_fold_max���������:��i����j�l���7�1��8����:��������������x��n�H�-
��������:��i����j�l���7�1��8����:���U�������
���1����x�y�z�le_max_iff��a�
�PInfo�i��decl�	�fold_max_lt���������:��i����j�l���7�1��8����:����˔���1���x�H�-
���������:��i����j�l���7�1��8����:�����z��&���x�y�z����������+�1������max_lt_iff��a�
�PInfo�p��decl�	�lt_fold_max���������:��i����j�l���7�1��8����:����˕�����˘��x��n�H�-
�˟������:��i����j�l���7�1��8����:���^�˔x�y�z�lt_max_iff��a�
�PInfo�w��decl�	�sup_proof_1����_inst_1�#����!{�!}��to_semilattice_sup���������a����PInfo���decl�~_proof_2����������o������������b����PInfo����decl�~���������:����#�s�L[f�
��������:���������L[�����finsetfold���!{��!}�����
���
����
�#���|order_botto_has_bot���to_order_bot�
�PInfo�~��VMR�~_lambda_1VMR�~VMC�����z�z��_freshG�{�
VMC�~�����������
���[doc�~Supremum of a finite set: `sup {a, b, c} f = f a ⊔ f b ⊔ f c`decl�~equations_eqn_1���������:���������L[������	��~����
��������:���������L[���������
�PInfo����ATTR�����EqnL��SEqnL�~decl�	�sup_val���������:������s�L[f������	�sup�
�map�����������:���������L[����������
�PInfo����ATTR�����decl�	�sup_empty���������:����������	R��
�e��#�������������:����������1�	�fold_empty�
�!{�!}�����������=�PInfo����ATTR�����decl�	�sup_insert���������:���������L[�����_inst_2�<zb��	�������dg�M�k8
�!{��!}��������\
������:���������L[���������Y����	�fold_insert_idem�����i����������
�#������������k8�Asup_is_idempotent���g�PInfo����ATTR�����decl�	�sup_singleton���������:����������1_inst_2�Y�b�	������L��L��GC
������:����������1���Y�������͘�de��L��͙�L�
�!{��!}������͘�L�

�	�sup_insert����L�
�GCAnnot�:
�|sup_bot_eq�Annot�:�PInfo����ATTR�����decl�	�sup_union���������:������s₁�L[s₂�Y	����V_inst_2����	���\�_��_�����&
��i��k��\
������:���������L[���Y	����V�����finsetinduction_on��_x�L��
"������_��_��E�
�!{��!}���������
���
������	���\����N
��i��\�N����	���������D��
���M��L���_a�L��D�
"�������|�
�������|�
����
"��������

�	�empty_union�����
��������i�͆������D����4�)��
_a��D�
"�������:����������͆�	�sup_empty��������4��������D��4��O�)��3_a��D��:����#����������������:���4����|bot_sup_eq������%���a�s�L�has�3��Zih�
����a���_��L��_���2���!{�a�!}�a����a���v���v�����5����d�a��_��L��_��a�1��de�a�L��L~�a�1�
���!{�d�!}�d����d��Ώ�Κ��Ώ���5��Ώ�Ι�Γ
���Ϋ���D�ά�δ�M��L��Μ_a�L��D�B����f�d�a��������}�}�������!{�f�!}�f����f�a�ν�����ν���B��ν������ά�ΰ�	�insert_union��a�1�
����δ�5��Υ�5��Ώ�ί��Ϋ���D�δ����]�d�β_a�d�D�B��ν����ο������B������δ����ͻ�d�a��ί��1����������Υ����Ώ
��Ϊ���D���������Χ_a�d�D�B�����M�ν���������!��������������	
��1������5�������������D����9������_a�d�D��!����������B�����C�����6����9��8��7���D��9��S�����_a�d�D�B��������@�����C��\���9��7�Asup_assoc�d��5�����s�d��7�PInfo����decl�	�sup_congr���������:���������L[���Y	f��Vg���hs�_�
hfga�H�����9���B��������ϊ�
������:���������L[���Y	����V���ς���τ���χ�M��L�����L���������NR�B��
��
�5��Ώ���Ώ���������k��5��
�finsetfold_congr���a�΅����a�����a���#��a����a����a����PInfo����decl�	�sup_mono_fun���������:���������L[�����g��V�b�H�M��������to_partial_order���X��%�����������̈́��l���������:���������L[���������V	_inst���������_x�L��������q���a��a��a����a�Ͻ�
�����������������ϊ������_x������_��|������le_refl������a�s�L�has��sih�������NR
��f��f��f����f����f�a���
���d��d��d����d����d������H���a����������h��h��h����h����h�d��������(���������(����C��?���A���D��L��R�
��
��f�K�h�K�me_2�B��K�u�K�ze_3�����3l�C��3l����`�
��3l�K�3l�C����`��'��J��P�ͻ�f�d�a����������A��}������Asup_le_sup�f����C�M��O��@�
��(�C�M�;�d�<������m��m��m����m����m�f�,�������d������}��}���f��h������1�����	�d���f����7�}��}���h��m�-����q��q��q����q����q�h���,�1�=�d�>�f�?��:�����;�d�>�f�<��7���������@�d���f�1����������q��d���d����d�1�?��I������d�������?�����������
����E�1��1��������P����}��}���f��h��m��q��������	�mem_insert��f��������P����������������P�>�d�1���������forall_and_distrib��d�>�d����>�d����=�d�����P�E�d�?����E�h����2��2��E�d����forall_eq��d��.������
����=�PInfo����decl�	�le_sup���������:���������L[�����bhb�N����%��l������:���������L[����������N�	_inst�te����*��-�����de��L��L~�����&
���������������Kto_partial_order������^����-���l��i��s
�Ale_sup_left�����-���lAnnot�:
�����i��v�ͻ������c
Annot�:
���
"��i��l�
"��l��l���D�ѐ�ѓ�M��L���`��a�����72
�_a�L��D�B��ϊ�de��L��L~����������ϋ��B��ϊ��Ѯ��ѐ��	�insert_eq_of_mem����c
��B{��lAnnot�:�PInfo����decl�	�sup_le���������:���������L[�����a��b�H�M���
���������:���������L[��������	_inst���������_x�L����������������
���_x����������|bot_le���X
n�s�L�hns��sih����������)���8�H���a����;��F�����K���Q����D�������Ё���s�f��Asup_le�f����C��O��
�Б��;�d�<�Д�П������d���Ъ���1��	��
���	�d���f������a�1�=�d�>�f�?������;�d�>�f�<����������@�d���f�1���� ��$������d�����d�1�?����������d��������?�������2������������:�����:�P��7��2����:�P�>�d�1����"��$���>�d��0�>�d�����=�d��0��	�P�E�d�?����E�h��'�a�E�d��:���2��_���
��
���
�
��	��
��l�PInfo����decl�	�sup_le_iff���������:���������L[�����a������������������͘
���������:���������L[���������S�ҏ���h�ҏb�hb���le_trans�����Ѯ�	�le_sup������
�	�sup_le���
b��PInfo����ATTR�����decl�	�sup_mono���������:���������L[���Y	����Vh�\i
���������������:���������L[���Y	����V���Ҿ�Ү������b�hb����ң�&�PInfo����decl�	�sup_lt_iff���������:���������L[�����_inst_2is_total��������������a�ha�E��������͆���E���������lb�H��"�E�a���a����
������:���������L[������������������	_inst�<z�����S�E�������Ѯ
������Ϫ�E�d���d��4�
��h��b�hb�NS��l�f��&���ν����Ҡ�f�d�a��
����_x�L��������Ϝ�E�f���f��&������Ϥ������&�����������k�|��������v�|���
����D��E�
�����E�%����
��
��c�
���@��
�ϊ�|��
�
��
����	�������NR�L��L��L{�a��1�@�����
��
��q�������?����
����������>���������
��
���>���������r�P��>���N+����r�P����������/�1���
��������������P���
��
��n������T��
�#��������
�
�chas_lt��K�a�K�de_2�B��K�h�K�me_3��Z��u�C�E�u���Ӥ�
�B��J���Ӥ��	��R�Ӛ��F����

�:y
�P�Ӝ�
��V�Ӝ�P���
���M��Nforall_prop_of_true�
���M�c�Z��������L���3��������d�����
�E�m���m��,��E�h���h��C���h�f�d
������f����7�}��}���h��m����E�q���q���������m�h�f����a��
����D��
�
����	�������L���3�M������f����7
��������
�a�����h����F�}Z�}[��m��q����ӣ���u��u����u����u�m�5�a������q�m�h��#�d��@�������L��
��
���f�����������L��
�����q��L����L������L��
����L����������
��
�����������a�������������/������d������}��}���f��h�
�
�����������e������
�����_h�������
�����
��
��������m����
�����_h�������	����f������;��7����
��
�������l�ԃ�
��q��f���f�����f�Ԃ���f���������2���ԁ�Ԓ�P��7�}��}�a�hb�m��q��u�-��ԁ���h����_h�ԁ����_h�ԃ�������
��԰�1�������З��n�m����m�f�1���Թ���a����԰����!{�m�!}�m�Ե�1��Ծ������ӟ�m�K�q�K�u�����K���K�3l��c��3��C�E�3�������
��3��K���������������ͻ�m�h�f�a�������s�m��P�Թ��������Asup_lt_iff�m�Ե���1��Ծ���Ի�
��P����1���
����h�����_���F��V��/&������^�������
��J���f��
��1������
����;��h�����
�g��c����
��P����Ծ��
�����h������/�V�����4��d���a�h���m�������E�z���z��z����z����z�q�Q�d�
��J��Ua�h���m�
��
�forall_congr��h���h��<���h�
����h�J�����/����
��
�imp_congr_ctx������2�����
��V��_h�����q�����^�������V�E��������������������u��f��������������
��J�Ռ�Չ�
��
��1��Ո�Ջ�Ո�
��V�Ո�V�Ջ�&>�Ո�c�J����ӑ�h�c�C8�P�Ԅ�
��J��ԃ�P��u�
��J�����P��R�
��J�����Pa��?a��L��
��
�forall_2_true_iff������L��Z�PInfo����ATTR�����decl�	�comp_sup_eq_sup_comp���������:���������L[�����_inst_2���γ�U�_inst_3��g��
mono_gmonotone�
���O�
��
��
botY�Ͽ�������
Y�
�ϡ�finsetsup���a��
��a�d�
�������:���������L[�����������U�������������� ��
Ax�dy�fY���!{�h�!}�h����h�d�J��L��������
	_inst�<z�d������f_x�M>Y�����a����h����h�m���a��f��h&�a����$�����L��M>�L{�f�����f���W���f�h����
����D��f�
�����f��$��������������r�
�a��(�e_1Y��(�a�(�de_2Y�f���h�CY�h����
���h�K�������Z��r�����Z��#��h����h��A��r��h��me_1��Z�C!�u�a
���Y�֛��F�h�f�d�
��e��r�����f���d�P��t�
��f����r�Z�����f���MB��3����Y�a����u�q�m�f���a�q����q�u�a��fY�d����z�u�q�~�~��u��z�
�
�h���d�u�a������u�z�d��h�
����D����
����	�f���h���e4��3�Պ���������h��������z�a�����z�u�~��~���z�����
�m���f�z�d�����z���f�a�m�@�f���h���e4�
��
��ԋ���f������f���MB�
����f�q��MB���MB������MB�
����MB����������
��
���������w���4�d����m����m�q���d��������de�q�tr�L~�q��q��u�
�f�����Q�������
�����_h�������������
��
��������X����
�����_h�������������/�d��1�d��3�d�a�������
�����t�
��(�d�(�f�)���(�m�(�q�*Y�u���z�CY�z��׀�
���z������׀�����t���d�����q����
�h��t�ט��!{�z�!}�z����z�q����ך�ל��z����+�Ǻ�C!�3v�m
�f����צ�ͻ�z�u�q
�h��������ךc���da�f�/�he_2Y�m�K�q�K�ue_3�׀��������/��������
�����K���3l�������n��p��pe�d��p�כ��s�����t�ח����~�~��u��z�����3l��
�����o�����s��t����d�u�a
��������������p�
�comp_app��u�z�d��h��s��s�����s�P��v�
��f��d��t�P��`�
��J�����P��6�
��J�����P��f�?��h�e4�
��
�����f��f�MB�ZAnnot�iAnnot�jx�dy�f����E��E_x����L��O��?����
��/���1���3���A��
is_totaltotal�h��E�h��L����_�
����D��_�
�����_��?�
�
�
��(��(��)����(�d�(�f�*��z���m�C��������
���m�D��������U�
��m��q�+��~�C!�z�d
���T�Asup_of_le_right�m�Ե
��^�
�9���Z�A��
�-~�P��p�
��f���
�Zh��O��j��m��n��?�A��A��
��؋�A��ؘ
�Asup_of_le_left�m�Ե
��^�A��;���Z�A��
�
�P�ع�
��د�A��Z�PInfo��decl�	�subset_range_sup_succs�N��Ot�N��O2finsetsup,,�|natsemilattice_sup_botid,�=�N�n,hn�O���g�N��O2���
����������f����natlt_succ_of_le����	�le_sup,,���
�C,�PInfo�<�
decl�	�exists_nat_subset_ranges�N��f�n,�Ot�N��I�N���������finsetsubset_range_sup_succ�PInfo�H�decl�	�sup_eq_supr���������:�_inst_1latticecomplete_lattice�s��f�j��L`finsetsup���|semilattice_sup_bot_of_bounded_lattice��Pto_bounded_lattice�
�Osupr���Pto_has_Sup�
a��W���s��2�H�s%������:��N��!�Q���R�j�le_antisymm�����|bounded_latticeto_order_bot���)��-��?finsetsup_le����*��?a�ha�s�Ole_supr_of_le�����Y���6��)��2���Z�)�%�Ole_supr������a���-��Osupr_le��
��>��-a��d���s��<��"����%���'�
ha�s�	�le_sup�����%���'��
�PInfo�M�decl�	�inf_proof_1����_inst_1�|semilattice_inf_top����!��!��kto_semilattice_inf����j�ٟ�>�٤�PInfo�i�decl�h_proof_2�����j�ٟ����٦����j�ٟ�?�٤�PInfo�m�decl�h���������:��j�ٞ���������:��j�ٷs�L[f�������!���!���٢�
�i��
�m��
�|has_toptop��|order_topto_has_top��kto_order_top�
�PInfo�h�VMR�h_lambda_1VMR�hVMC�u��z�z��_freshK���
VMC�h��o�n�j���
�u�[doc�hInfimum of a finite set: `inf {a, b, c} f = f a ⊓ f b ⊓ f c`decl�hequations_eqn_1���������:��j�ٷ�n�L[�o����	��h����
���������:��j�ٷ�n�L[�o���������PInfo�z�ATTR����zEqnL�zSEqnL�hdecl�	�inf_val���������:��j�ٷs�L[f�������	�inf�
��"������:��j�ٷ�|�L[�}�����*����PInfo�{�#ATTR����{decl�	�inf_empty���������:��j�ٷ�}��1�	R���
�e����������������:��j�ٷ�}��1��E�!��!��٢��������	�PInfo��%ATTR����decl�	�inf_insert���������:��j�ٷ�|�L[�}���_inst_2��Yb��	���������`
�!���!���٢����$
������:��j�ٷ�|�L[�}�������Y�����x��-����������
��������������k8�Ainf_is_idempotent���+�PInfo���(ATTR�����decl�	�inf_singleton���������:��j�ٷ�}��1_inst_2�Y�b�	�������͛
������:��j�ٷ�}��1���Y����ͦ��Y�ͫ
�!���!���٢���Y�L�

�	�inf_insert����L�
�GCAnnot�:
�|inf_top_eq�Annot�:�PInfo���+ATTR�����decl�	�inf_union���������:��j�ٷs₁�L[s₂�Y	�}��V_inst_2����	���$�����-��/��$
������:��j�ٷ���L[���Y	�}��V��������_x�L��
"���������
�!���!���٢���ڛ
�ڛ
������	���$����-��$�N�ڏ�	��ڏ�ڶ���D�ڷ�ں��_a�L��D�
"�ڛ��
�ڤ�ڛ�|�
�ک�
"�ڦ�����ڷ
��-���ں�ڹ��-��G�ڏ���D�ں����)�ڴ_a��D�
"�ک�������ڤ�ک��ں��G�	�inf_empty����������ڹ�ڏ���D�������)���_a��D����ڤ��������������ک��������ڏ�|top_inf_eq���ڏ�%�ڏa�s�L�has��sih�
�����a����|��!��a�!��a�٢�a�����������5�����d�a��Μ��!��d�!��d�٢�d���)�Κ���)���5���)�ΰ���8���D��9��>�κ_a�L��D�B�����f�d�a�����!��f�!��f�٢�f�a��E������E���B���E���T���9�ΰ�������>�5���2�5���)�ί���8���D��>��j�����<_a�d�D�B���E������T�����T���>��h��s�d�a��ί��1�����j��i��2��e��)
���7���D��j�ی�����4_a�d�D�B���N�M��E������T�ۖ��N��S���j�ۉ��~
��1����ی�5���e��2�ۈ��7�ۋ���D�ی�ۮ�����g_a�d�D�ۖ��N�ے��E���S�B��ے�۸��ی�۫���ۮ�ۭ�۬���D�ۮ�������ۋ_a�d�D�B��ے��N�۵��S�۸�����ۮ�۬�Ainf_assoc�d��0�5��ۈ��7��o�۬�PInfo���/decl�	�inf_congr���������:��j�ٷ���L[���Y	f��Vg�ςhs�τhfg�χ�B������������
������:��j�ٷ���L[���Y	����V���ς���τ���χ�ϛ���L����Ϡ�5���)����)����Ϯ�ϱ������a�����a������a����a����a����PInfo���3decl�	�inf_mono_fun���������:��j�ٷ�|�L[�}���g��V�b�H�M����������rto_partial_order������%�����������1���E��0�ڌ������:��j�ٷ�|�L[�}�������V	_inst���������_x�L���������������������1�a���
�����������1������������Y���_x���������X�������4���a�s�L�has��sih������������ ��!��1�f����f�a���
���-��.��/��1�d����d��ۇ��ۈH���a����;��<��=��>��1�h����h�d��������r��O���P��r��N�C�۴��۶���D�܏�ܕ��v��q�܍�ܓ��s�f�d�a�������P�۶�ܠ������Ainf_le_inf�f��L�C�M�ܒ�۵�
��r�C�M�;�d�<�Д�Е�Ж�З��1�m����m�f�,�������d���Ъ�ܿ�1�ܵ������	�d���f���з�и�й�к��1�q����q�h���,�1�=�d�>�f�?�������;�d�>�f�<�������������@�d���f�1���������������d������d�1�?����ܿ������d�����Ъ�ܿ�?����ܿ�������܈�1��1��������������P������������P�>�d�1������������>�d����>�d������=�d����ܵ�P�E�d�?����E�h����2��2��E�d������2��������������
�ܵ�����*�PInfo���6decl�	�inf_le���������:��j�ٷ�|�L[�}���bhb�N���@%������:��j�ٷ�|�L[�}��������N�	_inst�te��\��^�ڛ��g�ڛ��K��������;��ڢ��^�ڤ�-���L��I��U
�Ainf_le_left��ڢ�-���LAnnot�:
�с��I��X��s������c
Annot�:
���
"��I��L�
"��L��L���D��q��t�ѡ_a�L��D�B�����Ѫ������B�������|���q�����B{��LAnnot�:�PInfo���<decl�	�le_inf���������:��j�ٷ�|�L[�}���a��b�H�M��6
����?��0������:��j�ٷ�|�L[�}������	_inst���������_x�L������������M��
��X��Z���_x��������ݩ��|le_top����
n�s�L�hns��sih����������r�����}���~H���a����;�܈������ݹ�܍�ݹ�ܓ���D�������ܚ������܍�ܓ�ܣ�Ale_inf�f��L��C�ܒ�
�ݹ�C�;�d�<�Д�ܽ��,�����d���Ъ����1���������	�d���f���з����a���1�=�d�>�f�?�������;�d�>�f�<�������������@�d���f�1���������������d������d�1�?������������d�����Ъ����?���������������1������������P��	�������P�>�d�1������������>�d���>�d������=�d������P�E�d�?����E�h����2��E�d�����2��1������������
��������>�PInfo���Bdecl�	�le_inf_iff���������:��j�ٷ�|�L[�}���a����҂�҃�҄��1�������Y
�ݛ������:��j�ٷ�|�L[�}�������S��^�ݛh��^b�hb����қ��V��|�
�	�inf_le�������	�le_inf���
�ҳ�PInfo���Hdecl�	�inf_mono���������:��j�ٷ���L[���Y	�}��Vh�Ҿ��?�ڏ�ڌ������:��j�ٷ���L[���Y	�}��V���Ҿ��{����ڏb�hb�����q�&�PInfo���Kdecl�	�lt_inf���������:��j�ٷ�|�L[�}���_inst_2��������������1����a����������=��G�b�H��"��������K�
������V
��|������:��j�ٷ�|�L[�}������ޫ���	_inst�te��\����_x�L���޸����������T����������,��-��p���������{���~��c�������������4������������>����
��޲���|���
����D����
��������������
��
������������q��|��޳�޸����|�������������������
�������
�����c�
���������h�
�������	��������@���i�
��q�����������
������������޳�����޳�
��
�����޸�������P������N+�����P������������7��
���������޳����P���
��
��ӑ���ӟ��K��K�ae_2�8��K�f�K�he_3�8X�B��������;�
�B���;����B|��h����������P���
����
��޲������������c�P����
��J�����Z��������L���|����������d����d��y����d������������ܻ��,�������܆�����h�f�d���������f����f��n����f����7�}��}��5�����������������w����m�h�f�ߎ�a�
����D�ߡ�
����	�������L��������ߊ����f���Ԁ�ߓ��w�ߘ�a���}����h����h�܄����h����F�}Z�}[��m��q�-���ӣ��%��&��1�u����u�m�a�5�ߒ����q�m�h�߸�d�@���J�
��q�����ߠ������L��
�����q��L����L��ߟ���L��
����L����ߟ��|��
��
����|�����Z����a�����
��}�������E
����s����d������}��}��6���x��}�߀�����|��
���|�_h�|����ߞ��߅�
��
����߅����߅�
���߅_h�߅���ߝ��ߊ�
��
����ߊ����ߊ�
���ߊ_h�ߊ���ߜ����f������:���7��ߓ�
��
����ߕ������
��ԋ���f�ߔ���f�����f���ߏ��w�2�����)�P��7�}��}���h�
�m��q��u�������ԣ�5���_h����ߓ_h�����ߛ���
���F�1�������З��P�m�٢�m�f�����P�ߘ��a����F��w�!��m�!��m��K����T��V�����u������ߚ��^��s�m�h�f��a�5���P��P��^��V�Alt_inf_iff�m��K������T����Q�
��P��w���
����h���������F��V���&������^��������
��J����f��
��1��������
�����)�������g��c��U�
��P��w��T�
����w����m����m�ܹ����m��������F��G��H��1�z����z�q�d�Q�V�������u�q�m��f������
��V���c����h���m���
��J�����[�
���_���h����������b���h�J������������
��
���i����ߒ�2�����
��V���_h������q������r������V��w��x��y��1��������u�f�����������Պ��
��J�������
��
��1�����������
��V����V����&>����c�J�����ժ�c�C8�P���
��J����P��
�
��J��ߊ�P���
��J��߅�P����
��J��|��P���?����
��
��������L��Z�PInfo���Ndecl�	�comp_inf_eq_inf_comp���������:��j�ٷ�|�L[�}���_inst_2�ޫγ�U�_inst_3�kg���mono_g�����V�����
�t
top������q�s��a
��
���finsetinf���a���������:��j�ٷ�|�L[�}������ޫ���U�����]���������g����r
Ax�dy�f��$��!��h�!��h�٢�h�d�R��T��l�����
	_inst��=����>_x�M>��?��ߘ�a��v��h���L��R�a����$��߀��W���v��f���W��d�
����D���
�������$��j���l���a������
��֓������֖����߱����֧���߱����h�f�d�
���������f���d�P����
��ֽ����Z�����f���MB������������f��v�a�q������������z�u�q����h��v�d�u�a�������
����D���
����	�f���h���e4�������������h��������z�a������z�u���m��v�f�z�d������(�
��ԋ���f����.���f��0���MB����3���MB������6�
���9���w�����d��v��m���F��������Q�f�����Q�������
���]_h������������
��
��������@����
�����_h�������������d���d���d�a��p���
�����Z�
��ה�����Z�ח�����W����
�h��Z��a��!��z�!��z�٢�z�q�����c��e�׳�����o��s�z�u�q
�h����׿��cc�n�d�/�f�/�he_2����K�q�K�ue_3���������������
�������U��p��p�����d��Y�����Z�ח�����������V�����Y��Z����d�u�a
�������������p����Y��Y�����Y�P��\�
�����Z�P��G�
��J������1��A�ZAnnot�iAnnot�jx�dy�f���܈�܈_x����������?���\
�����������A��
��c�܈�h���������
����D����
�������ع�
��؊����A��ؗ���
�Ainf_of_le_left�m��K
����A��������A��
�ة����Z�:��������������p�
�����
���Ainf_of_le_right�m��K
����
�������A��
����ر�Z�PInfo���Rdecl�	�inf_eq_infi���������:�_inst_1��!s��f�j��L`finsetinf���|semilattice_inf_top_of_bounded_lattice���)�Oinfi���Pto_has_Inf�
a������s��Q���<������:�����!�������j���N��L��]�Ole_infi��
��\��La�����s��<��D����G��ق
ha�s�	�inf_le�����G��ٍ
finsetle_inf����I��]a�ha�s�Oinfi_le_of_le��������U��)��Q����a%�Oinfi_le�����H���-��PInfo���`decl�	�max_proof_1����_inst_1decidable_linear_order���Q�	*lift_or_getmax�������	*lift_or_get_comm������!�<�PInfo��idecl�
_proof_2��������o�Q���������	*lift_or_get_assoc���������PInfo��idecl�
�����������QM�������	�fold�Q�������Q�Q�PInfo�
�iprt�
VMR�
_lambda_1VMR�
VMC��i�	VMC�

�i���max�	*lift_or_get_main�[decl�
equations_eqn_1�������������
�����������s�������PInfo��iATTR����EqnL�SEqnL�
decl�	�max_eq_sup_with_bot�������s���Q����
�	�supwith_bot

with_botsemilattice_sup
�!
��
�Q�������������QM����PInfo��lATTR����decl�	�max_empty����������Q�����������������Q���PInfo�#�oATTR����#ATTR����#decl�	�max_insert�������as���R"���
�
��
����eqdecidable������
�Q����������%�&���	�fold_insert_idem�Q^��)���
���
�Q��Q����	*lift_or_get_idem��(max_idem
�PInfo�$�qATTR����$decl�	�max_singleton�������a�Q���������
�����Q��������-�	�max_insert
��PInfo�,�tATTR����,decl�	�max_singleton'�������a�Q�����	��Y�������0�	�max_singleton
�PInfo�/�vATTR����/decl�	�max_of_mem�������s��a
h�C�
Yb����P���QO�������������3���4
�5�C�imp���|b�����w�������������!������Q�H�������������n��!�����b���+�����	�le_sup����������!����
�Q����P�����PInfo�2�xdecl�	�max_of_nonempty�������s��h�v�\a�n���QO�����
�������=���>���_a�z����,����@�}���?��
�P���QO��������p�h_1�����}�6����P���QO��������	�max_of_mem����PInfo�<�{decl�	�max_eq_none�������s��������Qh����������D���S����h���velim�������finseteq_empty_or_nonempty����H���_a�
Y�?���{������J����I�2��p�h_1��������E������Q�t_1���ha���P���Q�H_1���P��a�Q�aH_2�5���P��d�QO�d��Q�d����1����d�a���3�]��-��7_a��-�D�:�P��f�QO�f�����f�d�a��A���8��2�����-��2
�9`�a��W�Q�����������a�� �]�������P����D����"�QO�
��������k���b�� ��N�������_�� �Q���O�5��k��$����o���]��"��n�P��"�D����'�QO�a����a�������o��$���%��$�s��"��$����������a�Q�
��$�s�����_����d��z�	�max_of_nonempty�
h���	Z_x����������Q����=���	�max_empty
�PInfo�C�~decl�	�mem_of_max�������s��a
��Qa���t�������V����J
_x���W��������)���S_x
H��������������t_1���Z����s��y��H_1������Q�H_2�5��������E���|���
����|�������������Q���]�5��v
����������s��s������2���
�Q��s������������b
s��_x�6iha��������
��a�h�����������������a���:��B��������������a���d�a��p��;�J�a��c�a�e�5���d��@��C�O�P��f��h���m�h���h�w_�w`��h��m���q�m�a��d�����������a��d���f�d���
��d��d��f���h�f��
�e�3��;����(���aa�ab�d���f�d��)����������_x_1�������5��5��5�����optionlift_or_get_choice�a��max_choice�a�����q�����-�Q�d�t_1��-�d����=�Q�f�H_1���P��h�Q�h�H_2�5��P��m�QO�m��Q�m�d��������m���m�h�������m�h�a����]�������f�m�g�q���u�q������_a����D���P��q�QO�q����q���q�m�Q�q�f����q�m�d�������������������z�{��m��q���u�q�d�a��������_a����D������������q��u���z�u�f�d�����������^�m�h�d�a���������
�����������0���d���d�a����6���4����;��5�f�d�g�f���h�f����:�p��-�D��@����f������C���J���<������4��6����<��;��[�q��-�D��J��]��R���\��;��^�d�a��
�n��R��2���Q��f�o�5��J������P��t�]��=��K�f�f�g�h�������N�p��=�D�d���QO�h����h��A���a����h�f������P������`��P��x��]�q��=�D������h�����`��O��^�f�d�������s��=���g���h�����val_eq�l���]�h�a�c�h�e�3�8V�d�d�������o�5�B��P��u�QO�u
�Q�u�h������������s�������^�������z������3l���m�h�e�3�8D�a�a�d����d����o�5����f���������������s�������Ldcases_on_x_1���^��m���
���u�h����h��a���������]�����f�h�g�m��������p���D�����������
�����������q���D�����������^�h�f�a���s��-��2����>��oq���w������jp��=��4��:��W��:��n�PInfo�U��decl�	�le_max_of_mem�������s��a
bh₁�th₂��v��z�����������P��!����
�������w���x
�y�z�t�{��X�k�8�������������������!��������^�9��u����������n��!������a_3�}�������������Q�!����o��������������������������b'��q���a��j��������������{����9�������������n�a�!�a���a��
�q�����������������P�a�!��a����hb��ab�������t_1��-_x�����H_1��H_2�5��&����a����������������f�������������������
�и�й�к��P�q�!��q���q�m�f�d��2����-�����7��2����-��7��������q�����s���5���������=�����D������=��D����
�������������<��=��>��P�h�!��h���h�f�a�������r�l������}�h�~����������m�m����m�!�m���m�h�f�����и�й�к��n�q�!�q����f���������f���
���5���P��z�Q�z�h��<��>��=�s��:��=��������y��P���!��������z�q�m�~����������h�h����h�!�h���d����Е�Ж�З�Գ��'�d�a���������d��m���5��7��6��p�����6
����
����������d�������������6����R�����2����PInfo�v��decl�	�min_proof_1�����������min�����������٫�!�����PInfo����decl��_proof_2������������������������ٳ���PInfo����decl���������������������������Q�PInfo����prt��VMR��_lambda_1VMR��VMC�����	VMC��
������min��[decl��equations_eqn_1�����������������������������PInfo����ATTR�����EqnL��SEqnL��decl�	�min_eq_inf_with_top�������s���Q����
�	�infwith_top

with_topsemilattice_inf
�!�
����Q�����������������PInfo����ATTR�����decl�	�min_empty���������
��������������������PInfo����ATTR�����ATTR�����decl�	�min_insert�������as���R"���
��#��&��
��*�����������������5�����
���
�Q��Q�����C���min_idem
�PInfo����ATTR�����decl�	�min_singleton�������a�Q������V��Y���������	�min_insert
��PInfo����ATTR�����decl�	�min_of_mem�������s��a
h�C�
Yb���w�����������������
���C����*b�����w�������������!������H��<��_b���+��<��@�	�inf_le����������!����
�����PInfo����decl�	�min_of_nonempty�������s��h����\a�������
���������������_a���������}���������������p�h_1�����}�������������	�min_of_mem����PInfo����decl�	�min_eq_none�������s��������Qh�������������S����h����H���_a�
Y�����)����k����l���p�h_1��j����!t_1���ha��&H_1��,H_2��4����1����d�a���3��;��_a��-�D��A����f�d�a��G�����2���T��X��_����a��r��d��f��r������D��k��������q����� �����~��������������������"�D������a���������$�����������$��������	�min_of_nonempty�
h���	Z_x�������^���������	�min_empty
�PInfo����decl�	�mem_of_min�������s��a
��������t�������������_x����������^�)���S_x
H�������������^�t_1���������'��H_1���H_2�5�����q�E���|��
�������
�����5�������������������� ����"��b
s��_x�6iha�������h
��a�h�����q��7��Mp��;��O���a����Q����R����\��i����n�����x��
��������(���f�a�g�d���f�d����������^��\_x_1����_��a������Ymin_choice�a�����\q��_��t_1��-����H_1��H_2��������������m�h�������m�h�a����������f�m�g�q���u�q�����u_a����D���������q�m�������q�m�d������w����������t����w�����_a����D���������������v���m�h�d�a���(��,��2����4��5���d�a�������>��;��5�f�d�g�f���h�f��������-�D��J��K��U�������R���������4��������;�������-�D��J��E��R���������d�a��
����r��s����u�������t��x��K�f�f�g�h��p���������=�D������������h�f�������������������x��E����=�D�������h������������f�d�������������r�����������	�����f�h�g�m������������D��w��������
����
�������	�����D�������
������h�f�a����6��8���q��a��@�jp����4�����������PInfo����decl�	�min_le_of_mem�������s��a
bh₁�
�h₂����(��a������������
�����
�����g�k�������������������������^����w����������P��!����z�a_4�}������H�����������[����

�����
b'��q���a����������������{����������
��q���������hb��ab����t_1��-_x��H_1��H_2�5��'�����������t�f���������������(�����2���������2������������r��s���5��������������������
�����������r�������h�����������m�m����m�!��m��&�f���������d�������8���5��;��<�m��?��������E�����T�����a�������h�h����h���d���������I����d�a��������5���������
���
��������d�����������6����R����2����PInfo����decl�	�exists_min���������:����s�L[f���h�j��k�x����MH�Mx'�H��"�����������������5��
������:����5���L[���������7����������g���t������=�
_x����Y�k��������������������Ϫ��-��.��/��P�d�!��d���d��5��
�������Y��������
finsetnonemptyimage�����x
y�hy��X�����
������"�
���"�
��
a_5������k������Ϫ���Ϫ���a��������<��=��>��
�����d�1����^�����������.������E�����	�mem_of_min�����x�h_1���a�|���
�����5��7��������������T���a�����������f����7�d�и�й�к����������h��4��hx���rfl����9��5����f��������d��W�f�h��h��m��_�h��a�k�h���h����G����G���q�������H��I��y��J��K��L�u�s������@�5����a��W�d�f��f��h��S�f���k�f���f�������������m�������z��z��H��P�z�!��z���z�q����Q��jm��b����b���h����G��u��u��&��P�u�!��u���u�m�f��5
x'�fhx'����	�min_le_of_mem�q�h��W�m�q��q��u��
�q�d�f�d����	�mem_image_of_mem��m�q��7�d�f
���PInfo����decl�	�sort����r��
M_inst_1decidable_rel_inst_2is_trans
_inst_3is_antisymm
_inst_4���s���W��������a����d����g����j���k����sort���:�
�*�PInfo����VMR��VMC��	��������������doc��`sort s` constructs a sorted list from the unordered set `s`.
 (Uses merge sort algorithm.)decl��equations_eqn_1��������a����d����g����j���k������W�������
��{�������a����d����g����j���k����s�W����PInfo���ATTR����EqnL�SEqnL��decl�	�sort_sorted��������a����d����g����j���ks��listsorted�����:�
�������a����d����g����j���k����sort_sorted���`�
��z�PInfo���ATTR����decl�	�sort_eq��������a����d����g����j���ks���WY�H��W���V��W���V��W���V������z�������a����d����g����j���k����sort_eq���`�
��z�PInfo���ATTR����decl�	�sort_nodup��������a����d����g����j���ks���V�����������a����d����g����j���k��������������z���D�������]����_a��D��H��W����V��W����V��W����V���������
�������z�	�sort_eq���:�
����PInfo���ATTR����decl�	�sort_to_finset��������a����d����g����j���k_inst_5�5ts����V���Ѧ���������a����d����g����j���k��5t�������_x����������#�	�sort_nodup�����
��$listto_finset_eq��Ѧ��#��=�����>�������
�PInfo���ATTR����decl�	�mem_sort��������a����d����g����j���ks��a������W��V�����@(�������a����d����g����j���k�����multisetmem_sort�����
���PInfo���ATTR����decl�	�length_sort��������a����d����g����j���ks��Zlistlength�����+�������a����d����g����j���k���multisetlength_sort���`�
��z�PInfo���ATTR����decl�	�disjoint_left����_inst_1��s��t����disjoint���#$a��
��/'����%���&���'�����������?�
��?�)��
��#���������}to_order_bot���#�����D��������������������	��#�������������#�@����?���?���#�#�������������"���������#�������������#$������ i� ��"0���������������������!��!��}to_semilattice_inf���#$������disjointequations_eqn_1���#$�
���W���K�o�K��e_2���K���K�e_3������
�������
�������������	�inf_eq_inter��������'/����P� i� ��ni��������	�le_iff_subset�����P�������.������,�������������������������
������#��o����o���o�"�����;�����;�P��1�����
��F��;��������V���PInfo�$��decl�	�disjoint_val�����%��s��t�����disjoint�������%���4���5���	�disjoint_left��PInfo�3��decl�	�disjoint_iff_inter_eq_empty�����%��s��t������������%���9���:��disjoint_iff���#$�PInfo�8��decl�	�disjoint_right�����%��s��t����a��F�
�����%���=���>������}������|���D��}����	���_a�C�D�����o�"�
�?���s�3�$/�������}����P�����disjointcomm���#$���������|��|���D������	����_a�C�D�����
����������|�P�����|��e�V��|�PInfo�<��decl�	�disjoint_iff_ne�����%��s��t����aH�
�b�H���;�����%���E���F������������G�H�
��/'���D�����������P���##�
�����g�������,��G����G����G�/[�I��J�s�'�
�
����,����	��I�����@��I��?�
��3��a��H(���I�����I��?�Qz�3���I��P�?�s�3�
����H�s�Qz�P�K��?�Qz�K��3�)��forall_eq'����V���PInfo�D��decl�	�disjoint_of_subset_left�����%��s��t��u��h�d�����#
�����#�����%���N���O���P���Q��R��0����4�)���~�3�C��c����x�m₁�~�^����"���/���)���-,�3�W��c��/��
���PInfo�M��decl�	�disjoint_of_subset_right�����%��s��t��u��h�jd��.��4����%���V���W���X���Y�j�Z��d��<�?���)�3�]�	�disjoint_right����x�m₁�)�^��I���?���-,�1��p��/��
���PInfo�U��decl�	�disjoint_empty_left�����%��s�������"������%���_��disjoint_bot_left���"��PInfo�^��ATTR����^decl�	�disjoint_empty_right�����%��s���������%���b��disjoint_bot_right���"��PInfo�a��ATTR����adecl�	�singleton_disjoint�����%��s��a
�����	n�t����%���e���f
�������t�t���D���������t������	n�@�)�������E�
����)����c��
����P�������e�	n�,��)����)��l1�
��)�
�����
��l1�
��P����l1�	���
��P�E�?�l1�E������������t�t��t�V�t�PInfo�d��ATTR����ddecl�	�disjoint_singleton�����%��s��a
�����	n�t����%���h���i
�J������t���	n�	�singleton_disjoint��PInfo�g�ATTR����gdecl�	�disjoint_insert_left�����%��as��t���������1��������%���l�m���n�����������;��<�s�Gj���)������D����%������!������"�����1�=��>��?���G��;��>��<���G���!��0�@��)��1��1��6��:��0�)�����Gj��A�P��/��E��c������)���D�)��1�?���Gj���)�����D����Gj��T���,���,���,N�P��X��T���,�P�>��1��3��8��:���>���R�>������=���R���P�E��?���E��3���E��,
����
�� �� ��� ����$�������������#�P��-��#��K�V��!�PInfo�k�ATTR����kdecl�	�disjoint_insert_right�����%��as��t����������������%���p�q���r���J������������o�"�����������������������D������	���_a�C�D����.�
����.
�����������P�����	�disjoint_insert_left��
��������������D�������	���_a�C�D������0�����������������P�������V���PInfo�o�	ATTR����odecl�	�disjoint_union_left�����%��s��t��u����������1���������%���w���x���y������
���1�=��?���Gj�� �1�)�����#���D��
������������-���@��)��1�?���G���6�1�=��>���&��9��%�)��� �Gj��+�P��$��4��K�����)���3�)��1�����)�����3���Gj��@�
�� �,��,�5�,N�P��D��@�%,�,�P�>��1��.��8��1���>�����q��������
���P��-
����K
����#���V���PInfo�v�
ATTR����vdecl�	�disjoint_union_right�����%��s��t��u��������O�1�����
����%���{���|���}���������1�=����;��<�	����1���?������D��������{������f�O�@��?��1�?�����<�?k���1�=��>����;��>������?���J�����P������p��
�O���?����?��1�����?������������
��J������`����P�������s�	����P�>��1���������>����>�����~����������P��f������
����h�����V���PInfo�z�ATTR����zdecl�	�sdiff_disjoint�����%��s��t�����,p����%���������������)��,��
���e�,paha�,��
�)��
��^�	��+d�,��+�
�PInfo�~�decl�	�disjoint_sdiff�����%��s��t�����,p����%����������disjointsymm���#$�,p�	�sdiff_disjoint��PInfo���decl�	�disjoint_bind_left�u_2����%��ι�:�_inst_2�LYs�L[f�
��t������2finsetbind������
i�H�M��I��
����%�����:����LY���L[����+�����|c����L������������,����
������_������"��a����������2��/�L�������N��6�B����D��`�B�����\�
�����\��2�2��
�_inst_1�"���a�����e_2��b�
����e_3�����G����o�
��G���G�C����o�#��Z�2��	�bind_empty�������e�P��1�#�3�2��
�����%���_���V���	�disjoint_empty_left
�����_�
��P�	���N�	���P���
��	�forall_mem_empty_iff����	���C�V�
�i�s�L�his�3�M�ih����P��,��a���������k
����"��f�T�
���������
��"��d�8��,��d�8�de��L��L~��/
��������NR���������"��h�T������1����5��������NR�������	�����������D�������������������1�������}�5����	���
�����������������8�5���������"��
����������B^���w���B����Uf��K��C���K�����"�
��K����K��C����"���������	�bind_insert����d�8
��/���s�
���P��	�������}�5�������	�disjoint_union_left�d�8�5��������������������������P��a����������P�	���NR�������	�d��n�"��m��1���1�	�����2���	�������w�	�forall_mem_insert����/
��}�V���
�PInfo���decl�	�disjoint_bind_right�u_2����%��ι�:�_inst_2�LYs��t�Y	f�������2
��/i�H�����J%����%�����:����LY�������Y	��������������.�3
����������F��G�<%������
���������������%���������P����������������
�������q������������������
������B�����������������{�P����������������	�disjoint_bind_left�������
�PInfo���%decl�	�card_disjoint_union�����%��s��t��h��Z�����"�������%����������������������6�����������D�����	�TZ���_a,�DZ��/��6����2��������������������
����	������������D��	��)����_a�o�D��6����/�����/��7���	��^���������	�disjoint_iff_inter_eq_empty��
����)���������D��)��L�TZ��'_a,�D����/��/������/���)���a�����L���������D��L��c�TZ�T�����T�_a,�D����/������L�����h���f����PInfo���*ATTR�����decl�	�card_sdiff�����%��s��t��h�+SZ����+T�U,��has_sub�����m����%�������������+S
������������+V��m��Z��/�+d�����/�+f����������2���[��+�_a���DZ��*�/�������*�������E��������+��E����
�+���
�
�����������6�����m��m���D�������TZ������+T
_a,�D�������������������	�card_disjoint_union���+T
��!��
��������������D�������TZ���_a,�D������6�����������������natadd_sub_cancel�����mf���Annotsuffices�PInfo���.decl�	�disjoint_filter�����%��s��p�
Nq�
O_inst_2�?�_inst_3�<������2�?���=_
������x�H�~��
�C�����%���������
N���
O���?�����	�S�����������������
��G��
����D��"�
�����"��)��?�~���
��
���������*�
��������
���)�����@��3��B���������@��)��?����P��3��>��B��
���#�)���=�)���)�)�����=��Ju���Ey��)����6�3���>�������P�3���P���@c���P�@i�_h��P���;������7������a���������o�1�]���p�P��n��t�Cw���8����]�
��P�]�
��`andelim_left�]�
�����P��p��%���P��Q��)�J�����]_h��*���	������������3�1��@�����
��
��-?����� ����
��������@���
��
��������G���
���_h�������
��
��
����
��G��
��
���
�_h�
����G��;��
���7����P�7����)�d�?�H��,������7�
����
��V��c���1��
��V�1��c�<�P����
��J��
��P����
��J���Ӑ�Sq��P��+�
��J���*�Z�������C��5��X�
����D��
�
�����
����
��
����������
����_h���������5��X�@��)��
��
����)�����B���@`��3���z#���i���"�P����/��c�����5��X�-?�)���.�)��
��)�����.��1����
��
�����(�3����:��@�
��P����%������a�����@�Cw��@`�_h��@����-�;��
����,��������)���a���d����D
����c���
�D
�P��b��f�=��a���i������
��P���
��V��������
��
���|�����a����a������p�A������
���z�c���
��
��V�
�andelim_right���
��c�D�<�P��A�
��J���@����P���
��J����Z�PInfo���2decl�	�sort_sorted_lt����_inst_1��s����
�E
��
�
��P
�����
�
�
����
�has_leledecidable�has_leleis_trans
�����is_antisymm
�����is_total
decidable_linear_orderto_linear_order
�����������listpairwiseimp₂
���a
b�'����lt_of_le_of_ne
�������	�sort_sorted
�����������������6
����������������PInfo���8decl�	�has_repr����_inst_1has_repr��
���������has_reprmk��s��repr���has_repr
���PInfo���<	prt��VMR��VMC��'�<	�����}charof_natstringemptystringstr�	�stringdecidable_le� ��,����������intercalate{������stringappend��decl��equations_eqn_1�������������������������s����"�PInfo���<	ATTR�����EqnL��SEqnL��ATTR�����class������decl�	�attach_fin_proof_1s�N�n,hm,H�O
���
�nodupfin��,��1��,�h�a,ha�hfinmk�N�
���N��,���.multisetnodup_pmap,��1�,�h��=��?_x,_x�h_x,_x�ifinmkinj�
finsetnodup,
�PInfo���>decl�����N��,���.�N���1���N��,���.�N���1��5��I��=��?��
�PInfo���>VMR��_lambda_1VMR��VMC��?��,VMC��	�>��,���N����decl��equations_eqn_1���N��,���.Y��`��
��n���N��,���.e��`��v�PInfo��>ATTR����EqnL�SEqnL��decl�	�mem_attach_finn,s�N�hm,H������a��0
���N���0�N�����O�����t�Ofinval
�,��N����������S������h���_a�f���,���N��N��,�N�������Y��0���8�������,������N�������Y��0���8����"�f�����O������p,h_1����a����N�������Y��0���8�
�����#���������O������h_1_w���h_1_h�����_x��0�a�O����d�a�����������8�a��/��^�N���0��N������������4���a,��R�,���R����N�
���multisetmem_pmap,����������
h�����������������������jm�����������Y��0���8�����
��#
fineta�
���PInfo��AATTR����decl�	�card_attach_finn,s�N�h���Z��������s
����.,�/�N��0���multisetcard_pmap,����h��,��h���8��N��PInfo�-�FATTR����-decl�	�choose_x����p�<�_inst_1�<�l��hp�
7a�=�u��8��������4�<��5�<��6���7��Ymultisetchoose_x��<���PInfo�3�MVMR�3VMC�3�M�7�6�5�4�multisetchoose_xdecl�3equations_eqn_1�����4�<��5�<��6���7��Y����\�3��
��g����4�<��5�<��6���7��Y����\��s�PInfo�>�MATTR����>EqnL�>SEqnL�3decl�	�choose�����4�<��5�<��6��hp��Y�����4�<��5�<��6���@��Y�����\������\������\�������[��p�<�	�PInfo�?�PVMR�?VMC�?�P�@�6�5�4��3decl�?equations_eqn_1�����4�<��5�<��6���@��Y�	��?��
�������4�<��5�<��6���@��Y������PInfo�B�PATTR����BEqnL�BSEqnL�?decl�	�choose_spec�����4�<��5�<��6��hp��Y�1�r����<��������4�<��5�<��6���D��Y�v��[��p����>��PInfo�C�Rdecl�	�choose_mem�����4�<��5�<��6��hp��Y�������4�<��5�<��6���F��Y�
�������	�choose_spec��<��PInfo�E�Udecl�	�choose_property�����4�<��5�<��6��hp��Y�������4�<��5�<��6���I��Y�
����������PInfo�H�Wdecl�	�lt_wfu_1�well_founded�K���E����������u�L��
Hsubrelation�������inv_image����,�O���
subrelationwf���������,�O����E���������� ]inv_imagewf����,�O���natlt_wfAnnot�iAnnot�jx��y��hxy���	�card_lt_card��
�PInfo�J�[decl�	�min'_match_1����_inst_1��S��_a�q��
��coe_sort�pcoe_sort_booloptionis_some������]���^���_��������`�_�\��,��#��$���_�p�q��`����#��$���(����7�
����D��7�
���has_coe_to_sortS�����p��"��7��#�-�
�_inst_1�d�����p�W�p�W�pe_2Y�p���p��?
��!��"��6�-���p��6��5���-a��s�h���e_1��|�C!��"�p
��$���(��\����W��(�����(��\�P��n��q�Q����(optionis_some_some�boolcoe_sort_tt�Z�PInfo�\�edecl�\equations_eqn_1�����]���^��b
hb������1�\��
����*����1�
����D��1�
���A��1��C�
���W��0�-��Z��0��/���-�h���h��s�i����C!����p
��$���_������"��_�����_���P�������Q����_��}�����Z����]���^���p
�q������1�	��1����PInfo�o�eATTR����oEqnL�odecl�[_match_2�����]���^��_a�����'����]���^���s������u[�s�����1�p�q�
���8�������w���PInfo�r�edecl�requations_eqn_1�����]���^��k
hk�C����r��
����������w�
����]���^���v
�w�C����������PInfo�u�eATTR����uEqnL�udecl�	�min'�����]���^��H�������]���^���y���optionget�����
	�PInfo�x�eVMR�xVMC�x	�e�y�^�]����bget_maindecl�xequations_eqn_1�����]���^���y����	R�x�
������]���^���y����R��'�PInfo��eATTR����EqnL�SEqnL�xdecl�	�max'_match_1�����]��S��_a�q�6
�����#��%�������]����������4���6������\��;��#��/����p�q�������#��5��z����D�
����D��D�
���A��D��C�
���W��C�-��Z��C��]�-��k��z��\����X�����z��\�P��X��W��v��z������Z�PInfo���jdecl��equations_eqn_1�����]������b
hb�������?����
����|����?�
����D��?�
���A��?��C�
���W��>�-��Z��>����-������������"������������P�������������������Z����]��������
���������?�����?��x�PInfo���jATTR�����EqnL��decl��_match_2�����]������_a�����6����]���������������������?�p�q�
���E��q��������PInfo���jdecl��equations_eqn_1�����]������k
hk�C��p����
�����t����
����]��������
���C����������PInfo���jATTR�����EqnL��decl�	�max'�������]������H�����������
	�PInfo���jVMR��VMC��	�j�����]��
�}decl��equations_eqn_1�����]������������	R���
�������]������������R����PInfo���jATTR�����EqnL��SEqnL��decl�	�min'_mem�����]��S��H�������'����]��������������
��'���Qa��'���
����D���
������Qa�����
��1�Q��Q^�K��K�e_2�Q��K����K��"e_3��(���-�C��.�����
�Q��K��-�C�����Q`��'���
�����s�Q^���P��
�
��o�P�h��#��$�V�QQ��
�jget_mem
�����Z�PInfo���qdecl�	�min'_le�����]�����������xH2�
��҂�҃�҄��P���7��#��
����]����������������
���.����_��B���(�����
�PInfo���sdecl�	�le_min'�����]�����������xH2y�H����_
��[��_����]�������������������_�	�min'_mem��
�PInfo���udecl�	�max'_mem�����]��������������������]������������	�mem_of_max
������Qa�������
����D����
�������Qa�������
���(��������
��������3����P����
���J�������Z�PInfo���wdecl�	�le_max'�����]�����������xH2�
���������
����]����������������
��	�le_max_of_mem�������n��z�����
�PInfo���ydecl�	�max'_le�����]�����������xH2y�H����>
��[�������]����������������������	�max'_mem��
�PInfo���{decl�	�min'_lt_max'�����]�����������ij�H1�
�H2�$/H3���
������}��#���������������]�������������������
����$/�������������linear_orderto_partial_order����������B����a_6������#����������#�a�������a���lt_trichotomy����H4����l�a����,���1�	�min'_le�a����lt_of_lt_of_le�a������1�	�le_max'�a����
�:��#���
���������������a����a����:����[��e������/��^��_��`�a��#�d�a������d�a��H4��[�P���xfalse_of_true_eq_false���
��5�����������
�eq_true_intro����Q����
H4��e��l�d��l��r���w��@�d�a�����H�d��l����w��O�d�a�����PInfo���}decl�	�Icon,m,�N���,��,�N��;Ico�;Iconodup	�PInfo����VMR��VMC������,��,�;Icodoc��`Ico n m` is the set of natural numbers `n ≤ k < m`.decl��equations_eqn_1��,��,�N��������,��,�N�����PInfo����ATTR�����EqnL��SEqnL��nspace�	�Icodecl��valn,m,�N��N���������,��,�N�����PInfo����ATTR�����ATTR�����decl��to_finsetn,m,�N�multisetto_finset,�O,��������,��,���N�������multisetto_finset_eq,�O,�������PInfo����ATTR�����decl��image_addn,m,k,�N�finsetimage,,�O,�Oc���
����T8�fI��,��,��,������
����D����
�������N��������
��)�N��)�N�e_1�fk�K�N��K�N�e_2�fk�fm�N���N��
���N��fv���N����������N�������������������������f���map,,�Oc�N�������
�,,�O,�Oc����	:decidable_eq,�	;�N��	;�N�e_2�N��6}�N�
�	;�N����N��N��������:�N����
�O,��'���OB��'��%���
���
����
���e_1Y����
�N��
�N�e_2��5���N��N���$���$�
������
�N��N�����$�Oc�Oce����Oc��&��Q��
multisetIcomap_add
���������������N�����P���
��f��N�����Z�PInfo����decl��image_subn,m,k,h��R
�N����x,���
���
���������
��,��,��,�������������N�����O(��$������
����N�������������������D�������	��N����_a�N��D�N������$��,��������������
���
�N��������������multisetIcomap_sub
������N��N�������������������D�������	��N�������_a�N��D�N�����������������N������������������������������N�����PInfo����decl��zero_botn,�N������N���,�O?��N�multisetIcozero_bot�PInfo����decl��cardn,m,Z�����������,��,multisetIcocard�PInfo����ATTR�����decl��memn,m,l,���O����1�O{
�O
��,��,��,multisetIcomem
�PInfo����ATTR�����decl��eq_empty_of_len,m,h��R�N�����O�,�,��4�O?����OmultisetIcoeq_zero_of_le
�PInfo���decl��self_eq_emptyn,�N�����O�,��eq_empty_of_le��d�PInfo�
��ATTR����
decl��eq_empty_iffn,m,������O�4�,�,�J�O�����N��0,�4�N�Y�O�	�val_eq_zero,���multisetIcoeq_zero_iff�PInfo�
��ATTR����
decl��subset_iffm₁,n₁,m₂,n₂,hmn���
���Ot��������1�%��O{�,�,�,�,��i���t����,��1�O{��i�1��0����s���D�t�����m�����m��,��O������g�k�@,��,��1�O{���R�1�{�����P�m���	�subset_iff,�k�����Z��,����,����,�
����O����~�1�q�h�P���~��mem���P������
�s�s��s�S���sh���	��q���0
�
���O�
��	��{������d��le_of_pred_lt�
�
�q��y��O��
���	��{������le_pred_of_lt����pred_lt�ne_of_gt,�O���lt_of_le_of_lt,�O����natzero_le���sk,a_1���q�{������1���1��
���
hm�hn�O{���q�O{�a�����%�1� �"�1�O{������
hmk� hkn����a�	������le_trans,�O��a�f�lt_of_lt_of_le,�O���d�
�PInfo���decl��subsetm₁,n₁,m₂,n₂,hmm�O|hnn�r�Ot������-,�.,�/,�0,�1�U�2�r���W��,�����D�W�_���W��,��O������g���@,��,��1�����1������P�W�j���������Z��,�i����,�
��g�O�k���1��0�h��P�g�������P�������x,hx���	������5���
�����>���
�����
�PInfo�,��prt�,decl��union_consecutiven,m,l,hnm�%hml���N����N���,�O,�k����j
�6,�7,�8,�9���:�������N�����������������D��������k_a�N��D�N������k���N����k�������������k���������N��������������D����������_a�N��D�N������������k���N���������������������
�����N����3�N��	Q,�����������D��������_a�N��D�N����������������������multisetto_finset_add,�O,����������N�������
�����D��9����_a�N��D�N�������������N���������6multisetIcoadd_consecutive�
���9�N��������D�9�Y����7_a�N��D�N���������#��9����
�N����PInfo�5��decl��inter_consecutiven,m,l,�N��O�N��?,�O,�������O�F,�G,�H,�����N��~�����Q����O���D����������_a�N��D�N��~�������O�N��~����O����������������
�����N�������O���D����������_a�N��D�N��~������O�N����O�����������������������N�����y�N��S,�O,��Q����O���D���������_a�N��D�N������O����O������������multisetto_finset_inter,�O,��Q��������N�����X�O���D���������_a�N��D�N�����������Q�O�F�O����XmultisetIcointer_consecutive
�����
����D���
������N��O�O�
������O�	H,�O,�O�O�N��O�P��
�����O�Z�PInfo�E��ATTR����Edecl��disjoint_consecutiven,m,l,disjoint�N��W,�O,�������S,�T,�U,le_of_eq�N��O����N����N��+�N��2����������N����N��*�N��2��inter_consecutive
�PInfo�R��decl��succ_singletonn,�N��D�Od�O.�Z,�O?�V�XmultisetIcosucc_singleton�PInfo�Y��ATTR����Ydecl��succ_topn,m,h�O}�N�����fJ�O9����_,�`,�a�O}���e�N������P�fJ�d���D�e�m����a_a�N��D�N�����T9�O9
�������v��e�k����k�a���fJ���m�N�����OF��Q�d���D�m������j_a�N��D�N��������T9�v�F�v��m��multisetIcosucc_top
�����N��c���d���D���������_a�N��D�N�����OF
����v�y�����multisetto_finset_cons,�O,��Q�����N��d�d���D���������_a�N��D�N��u���v�N��u�v���������N��d�PInfo�^��decl��succ_top'n,m,h����5�O9���:������l,�m,�n�������N����6��:�����D����α�U��)�)e_2Y
�K�K�e_3Y�����C��$���$�
����I�����$�N����������������TZ_a,�N��������N����������natsub_add_cancel:natone_le_of_lt
�������N��������N��������N��������D���=�����_a�N��D�N����6���::�O9�C����C����J�������succ_top
����
�7�PInfo�k��decl��insert_succ_botn,m,h���N��u����T9����z,�{,�|�����g�5�e���D�g�l�	��g_a�C�D�N��O9����TH
�����g�l�P�g�leq_comm�N��e������l�N����e���D�l����_a�N��D��u����u��l���������N����������T9�e���D���������Q_a�N��D�N����u�F�u�����multisetIcoeq_cons
�����N��u������e���D���������_a�N��D�N�����OF����TH
�u���������
�������f�e���D���������_a�N��D�N��r������u�N��r�u����d����T9�N��e�PInfo�y��decl��pred_singletonm,h���N�������O.����,�����O?����multisetIcopred_singleton�PInfo����ATTR�����decl��not_mem_topn,m,�3�O�����,��,multisetIconot_mem_top�PInfo����ATTR�����decl��filter_lt_of_top_len,m,l,hml�O}�N���filter,x,�h��,��decidable_lt
��������,��,��,���O}�O?����multisetIcofilter_lt_of_top_le
�PInfo����decl��filter_lt_of_le_botn,m,l,hln�����O��,��,��,������!�OmultisetIcofilter_lt_of_le_bot
�PInfo����decl��filter_lt_of_gen,m,l,hlm�4������,��,��,���4�!�=multisetIcofilter_lt_of_ge
�PInfo����decl��filter_ltn,m,l,�N��x,�O
��,�������min,decidable_linear_ordered_semiringto_decidable_linear_order,��decidable_linear_ordered_semiring��,��,��,�O?�S�^multisetIcofilter_lt
�PInfo����ATTR�����decl��filter_le_of_le_botn,m,l,hln����N��x,�&��,��decidable_le
��������,��,��,������O?�t���multisetIcofilter_le_of_le_bot
�PInfo����decl��filter_le_of_top_len,m,l,hml�O}�u�O��,��,��,���O}�{�OmultisetIcofilter_le_of_top_le
�PInfo����decl��filter_le_of_len,m,l,hnl�&�u���
��,��,��,���&�{��multisetIcofilter_le_of_le
�PInfo���	decl��filter_len,m,l,�N��x,�O}��,�o������max,�Z
��,��,��,�O?����multisetIcofilter_le
�PInfo���	ATTR�����decl��diff_leftl,n,m,�N��)�N��P,�O,����������
��,��,��,�f:����k,�:��&�q���O���������O�����h�&�����g����������g������
�
����D���
�����������,���
����������g�����f�������1��,�����1�g����3�g����P���_,�O,����������,�������,��,��1�r��,��P�������r�
��P�r�
��V�r��,��,���,�P���,�%���,�
����
�3���Oy�
�to_has_le,�O�linear_orderto_partial_order,��linear_order���	�����	�������N����O�P�	�R����.��������P�O���%����P�3�O	�h�F��Jnot_lt,�D��P�������,����������1�O{����,���P��������
��������Oy�A�O��;,�U,�<,�Z���������1��������P����max_le_iff,�Z������
��-������P����%����,��,�1�P���
��,]���Z���3�&�������D	�
�������EN�
������������EN��,��� ���%�'���)�����r��,��,�1�P�����{��,�
�
��=�;��
��L���N�EN�����S���Y�������]�P�����{���<�P�����{�
������������������������EN��������������������P����{���,��,�1���D?�Z�PInfo���	ATTR�����decl��diff_rightl,n,m,�N����������[
��,��,��,
��k,���1�O
������K�h�
�f:���=����\k,�:����o���O�����O����[
�h�������g���k���g�j�[��
����D�l�
����l���1�������t�
����f�t���g���k���s�?�����t�~�1���3�g�����P�}����k����������������������������P����������
��P��
��V������������P������%������������?���3�������3�������������P�������P�����/U������
����3������r����P�3�j�H�r�P���t%�k�t���k���t�t��������i���P�k�����i�����t�P�O	�h���i�1�����lt_min_iff,�Z��P���t�%��t�P�v�
��,]�t�Z���3���n�q�r�D	�
��y���~�EN������ ���������EN��������&����������������������P�&���{���������P� ���{��k�����EN�t�����I���0���t��P�I���{�t�D?�ZAnnot�iAnnot�jk,�G��O
�L�h�hk�O
�������q
�����?�3���3�{
�����D�k�r�	��i_a�C�D����n��0������k�p���p�i�P�p�inot_imp_not����p���r�
����D�r�
����r���k���
����p�k���p�?�
��i
����
����c�
��m�3��
��k���3�H
�j
�
��P����not_le,�D
�P��,�
��V��,�P�3�J�k����P���
����
��i���������c�����]�P���k�
��,]�k�Z�PInfo���	ATTR�����decl�	�Ico_ℤ_proof_1lintn,m,hY��n,3��inthas_add�
�,���	���,���	���,��inthas_coe�	���������,��,���	������,���
�	
������	����
������	�����	�	�	�	�)���)��e_1���K���K��e_2�	 �����C������
�����K���C�����	�	�� ����add_comm_semigroup�	�	
�	�	<�	�P�����T���add_left_cancel_semigroupto_add_semigroup���
�to_add_left_cancel_semigroup���O���ordered_ringto_ordered_semiring��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�	�	^�	�	add_left_inj���	Z�	�	�P�	���intcoe_nat_inj'
�PInfo���	decl������u���N�����������f'���f*����,��
���N���to_nat�������has_sub
�PInfo���	VMR��_lambda_1VMR��VMC��	��,��_freshK�	�p��intof_natintaddVMC���	���������comm_ringcomm_ringto_ringringto_add_comm_groupadd_comm_groupto_add_groupalgebrasub��to_nat_main����	�doc��`Ico_ℤ l u` is the set of integers `l ≤ k < u`.decl��equations_eqn_1�������Y�	{���	��������e�	{�	��PInfo�+�	ATTR����+EqnL�+SEqnL��nspace�	�Ico_ℤdecl�,memn��m��l�����N����	{�O���	�
�1�Ox���has_le
�O���has_lt�.���/���0�����	������	��	~�	�	�	�
�N��	����	F�T���add_groupto_add_monoid���%���#����ringhas_negneg���3to_has_neg���	�
�	����f��	�,�1�	�����
�	����	���	����D�	��	����	��	����	��f��	�,���O�N��	��	��	��	����f��f����f����	��,������	��<,����,���to_fun�	��	�injective,���	���	��g	��,����,���	F��;���	;�����,�
�����,�	<���
�	��	��	��	~�	��,�	��	��	�
�	��
'�

��,�
��,�
����,�
�N��	����	��
$�1�fe���	{�K���K��e_2�	 �K�	{�K�	{e_3�	����	{�C�	����
H�
�	)�K�	{�C���
H�	�e���	��
>�	��	��	��	�e_1Y�	��	��N��	��N�e_2�fk�fl�	{�	~��	~�
���	��	��N��	{���	~�	��
8�9�	��9�	�e_1Y�	�inj�

�6}�	��9�	��?�
���
f�	�
�	�	���

e�	��	�	��
e�	�
�	�
'�
6�	��	��
=�N��
=�P�
?�
$�f����
8�
=�g�
#�	��g��,�
"��,�	��	�,���
"�1�	��	��	��
��	��	��	�������	
�
����
��	��C���
��g�N��	��	�	���Ce_1Y�
��g�N��	��
��	���C���
��g!�N��	��	��	���C�C
���
��
!�
��g1�	����	��C���	��
 ���	��
��	��	��	7�
�
��gq�<,���
�	��gw���	��


�
a
�P�	��	��	��
��
��Y��	��	����	��	����	��O�	��	��P�	���f��	��P��	��lt_to_nat�	��	��	���	��	��	���	��S�	��	���	�����	�,�1�	��
����
���
��f��B�1�	��
�	�
a,a_h�A�q�	��	�
����	��	�D�1�O�S�1�	����	���h�Orfl������	��	���������0���1�	���	���	��	���g�	��g�intleintro��g�N����g�^�	��h
���O����O����O���ordered_comm_groupto_ordered_cancel_comm_monoid��ordered_ringto_ordered_comm_group���	W�f�	�add_group_has_sub���	�ordered_comm_groupto_add_comm_group�����������	F�	��	�����f�lt_sub_iff_add_lt'������f����	��q�	��	�
��1�����f��	�,�1�	��
����	�h₁��h₂�I����	�,�1�	��
����`����	��	�����1�	������
����	����	����������
����D���
������	��~������	Y��
����	��	�	���has_neg��
��������)���)��e_2�	 �K���K��e_3�	 �	"�	������
�	-���	��������������	��	�
����U�V,���<,�<,e_2�fi�fu��
�������a���X��e_1�	 �	),
�	����sub_eq_add_neg���	���to_nat_sub_of_le����	���
��V�;�c�
��
��
a�
��P�����	F�	��g?���gA�������P������h6���	Y����P�	���
��V�b�Z�����
����D���
��������
��	7������	����)������/���/��e_2�	 �K���K��e_3�	 �	!��������
�	)�K������������
a���������	������#���-���3�Badd_add_neg_cancel'_right���	���
a�P�t�
��f����Z�PInfo�-�	ATTR����-declmultisetcount_sup���������:�_inst_1�LYs��f��YibZ�_count�����"�\s��latticesemilattice_sup_bot���
finsetsup,����
a�����
�������:��a�LY�b���c���d	_inst�5t��z�����b��Z�����
��"�\��������������j����������c�_count_zero���
�i�s��his��\ihZ����/���"�[��a����/����a����j�a���a����2���Z�
��"�[��d���a���7�
����d����
&�j�d���d�8��1�Z�
�J��[��L��[�����[��
$�5��
%
��
3���D�
4�
E����
(_a�[��DZ�
0��"�[��f���d�8�6�����f����
Q�j�f���f�T��1�Z�
0�
^��
4�
Bfinsetsup_insert��[��d�
$
��5����
EZ�
�_��[�����a���5��
A�
3���D�
E�
����
7�
9���[�multisetlatticelattice��a���5��
A_a�[��DZ�
0�
6�[��
8�[��
:�[��
N�C�
O��
^�
c��
E�
|�_sup_eq_union��a���5��
A���
Z���
�5��
�
A�
3���D�
�
��TZ�
}_a,�DZ�
0�_��[��
w�d�8�C�
��
^�he�
^��
�
��_count_union��a����5��
A���
��
���/,��1,��3,����
��
,
�
2���D�
��
��TZ�
3_a,�DZ���
0�C�
0�
��
^�
���
��
��s,�d���
�
2�5����
�Z�
��
��
����D�
��
��TZ�
�_a,�D�
��
��
��
W�
]Z�
����
��
�f�
��PInfo�`�	.decllistto_finset_card_of_nodup����_inst_1��l�V�h�V�Z���V���|���������V����V��C!��,�
��
��V��V���W����4�V��
��V��R��V��PInfo�~�	>decllatticesupr_eq_supr_finset�u_4���ι�1_inst_1��complete_lattice_inst_2decidable_eq��s����	��W����X�
i���W���plift���Nt�W�S��U��L�i�[�W�����U��b����b�L��H�ipliftdown���������1���F���H�����le_antisymm�����]��V�
�Q�w��supr_le���
�P�wb��le_supr_of_le����[�����S��b�l���b�`�����U���������L��������n����������[���5���[�����[��[��bpliftdecidable_eq����:�pliftup������[���[�a�h���b�d���b���b��b������������l�����q������le_supr_of_le�����[������[��������
�n����������
����D���
�������[�����
����������[�����1������[���K�b�K��e_2��U��K�U��K�U�ae_3��U�d�����U�f�C���������
��������K��C�����������[�����������[�����P���������[�����P���
��4���[���Z����҄�҅����������supr_le����W
�v�Qt�W�a��[�t�I���^���b�[��supr_le��i��r�I���l�����hb�i��le_supr������p�PInfo���	Fdecl��infi_eq_infi_finset���������1���F���Hs����	��������
�P������W��t�W����[���i�[����i�����r������1���F���H�������������le_infi����W
����t�W����[���������nb�[��le_infi��i��r�������yhb�i��infi_le�����i����p��le_infi���
�P��b��infi_le_of_le�������������b�����b������������������[���[��������������infi_le_of_le��������P�Y�n����PInfo���	LdeclsetUnion_eq_Union_finset�u_4���ι�1_inst_1�Gs���setUnion��
i
�������U
t����Vi�V�����H�$��������1������latticesupr_eq_supr_finset���
��lattice_set���PInfo���	Wdecl��Inter_eq_Inter_finset���������1���s����Inter��
������t��D��Vi�V����$�(������1������latticeinfi_eq_infi_finset���
�7���PInfo���	[nspacefinsetnatdecl��antidiagonaln,�N��r,,��,����a��a��a��,,�O,�O,multisetnatantidiagonal
�PInfo���	gVMR��VMC��
�	g��,�;natantidiagonalnatdecidable_eq����_main�	8doc��The antidiagonal of a natural number `n` is
   the finset of pairs `(i,j)` such that `i+j = n`.decl��equations_eqn_1��,Y�b���q��,e�b�u�PInfo���	gATTR�����EqnL��SEqnL��decl��mem_antidiagonaln,x�a���N��a�b�O�a�tZ6��fst,,��snd,,��,���a���������n�o�����D�����	��b��_a�b�D����t
Z6����
��������������������|�N��a����a�������D�����	���_a�C�D�����n�o
������������P����multisetmem_to_finset�a�m���������������D�����	���_a�C�D����������������P����multisetnatmem_antidiagonal�V���PInfo���	kdoc��A pair (i,j) is contained in the antidiagonal of `n` if and only if `i+j=n`.ATTR�����decl��card_antidiagonaln,Z����a�u�Od��,��Z�listto_finset�a��a��a�m�	�natantidiagonal��length�a���Od�gm��f���Od��length_antidiagonallistto_finset_card_of_nodup�a�m�listnatnodup_antidiagonal�PInfo���	pdoc��The cardinality of the antidiagonal of `n` is `n+1`.ATTR�����decl��antidiagonal_zero�s�t��O"�a�b�O�a�O&�a�m�o,,�����:�s�n�o��9���D�:�?���,_a�b�A�s�9��:�=������?�s�n�.���has_emptyc�a�has_insert�a�8�9���D�?�\�	����<_a���^�s�n�9��?�Ymultisetnatantidiagonal_zero�y�Z�PInfo���	tdoc��The antidiagonal of `0` is the list `[(0,0)]`ATTR�����declfinsetbUnion_singleton���������:�_inst_1��a
s��j��j�����x��������)������f��
H�~%�������:�������
���s�Osupr_singleton��j�����������PInfo���	�ATTR�����decl��supr_unionu_1u_2α��_inst_2�Eβ�:�_inst_3�LYf��s�Y	t�L\�	��W�����k�x����L��pe
���H�����d��e��f�U���������x��������H������x��������H������������:���LY�����Y	�	�L\�������x�������������������h������h������
congr_arg������x���������funext�������������x����
"�����
"������������x�������i������j�����E�����9t�����α��α'��e_0�9{�9~���ι�Cι'�Ce_1��_inst_1�Ohas_Sup���_inst_1'��e_2�9�����s���ds'���e_3�9����h��P�9��`�h��
�a�`�a����C��C����	�
��C� ��"���#���$���d�%���f�&�9����h���h�9���a�
�h���� ��"��#�9��'�'�]�
�"��$�*�%���f�&�.�,�9��2�
�h�2�$���a�%�*�&�9��I�I�]�,
�%�,�9��L�h�L�:�`�f��
�9t�,
�9t�
���:0��������D�����D�������D�����	���_a�C�D�D�M��p|
���������D��������P�����`���
�
��������:9�'�����s�'���������9��������������9���H����������D������_a�C�D�9�����a�(���A�����a����A��9���a�(�A�������������:���������.������z��z�ae_2�8��K�f�K�he_3�8X��q�q�!{�q�����
���q�������������� �'�$�����a�$�����de_2�������f�������h�f
�f����������s������������ �'�$�����a�$�����de_2�����4�f�������h�f
�f����������s��������Osupr_or������������Annot�:
�Osupr_sup_eq���������������Annot�:�PInfo��	�ATTR����decl��bUnion_union���������:�����s��t��u���j��j��j��t��x��w��
�_�
H�p%�_��j������lx��m��H��%�lx��m�?kH�?k%������:������1���2���3�i��supr_union��j��������4���
�PInfo�0�	�decl��bUnion_insert���������:�����a
s��t�i�j�lx��m�
�d`
H��%�z�(}��������:������<
�=���>�i�����j�l�?��m�
�_��e
�@��%�����D�����[�e�{
_a���D�j��|;�t���?��w�����y�@�����_��|;�x��5���x�����H���������?����@(�@�@(��������f�g���}�*���
�����j�������D�����)�j��)�|;e_1�j��|��K�|e�K�j��e_2�j��|���� �}�C�j��}���
�������}�K�}�C������������j��l�4��m�
�d���
�5�"�4����z�l�6��m�
���7�+�%�l�8����9�?k�%����bUnion_union������}���,�e"�j��K�|;�K�|�e_2�j��|e�K���K�|�e_3��������}j�}j�_��}j���K�
��}j�K�}j�}����K�y�l�6��,�7�+%�(}finsetbUnion_singleton�����
����������j��������s���z�PInfo�;�	�ATTR����;EndFile