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����xinitdataoptiondefslogicbasictacticcache��'export_decloptionnonenonesomesomeexport_declboolffffttttexport_declhas_andthenandthenandthenexport_declhas_powpowpowexport_declhas_appendappendappendexport_decldecidableis_trueis_trueis_falseis_falseto_boolto_boolexport_declhas_purepurepureexport_declhas_bindbindbindexport_declhas_monad_lift_tmonad_lift!monad_liftexport_declmonad_functor_tmonad_map$monad_mapexport_declmonad_runrun'runexport_decllistmmap*mmapmmap'*mmap'mfilter*mfiltermfoldl*mfoldlexport_declnativenat_map3rb_mapmkexport_declname_mapnativerb_mapmkexport_declexpr_mapnativerb_mapmkexport_decltacticinteraction_monadfailedfailexport_decltactic_resultinteraction_monadresultexport_decltacticFtransparencyreducibleGreduciblesemireducibleGsemireducibleexport_decltacticmk_simp_attrLmk_simp_attrexport_declmonad_exceptthrowOthrowcatchOcatchexport_declmonad_except_adapteradapt_exceptTadapt_exceptexport_declmonad_state_adapteradapt_stateWadapt_stateexport_declmonad_readerreadZreadexport_declmonad_reader_adapteradapt_reader]adapt_readerexport_declis_lawful_functormap_const_eq`map_const_eqid_map`id_mapcomp_map`comp_mapexport_declis_lawful_applicativeseq_left_eqgseq_left_eqseq_right_eqgseq_right_eqpure_seq_eq_mapgpure_seq_eq_mapmap_puregmap_pureseq_puregseq_pureseq_assocgseq_assocexport_declis_lawful_monadbind_pure_comp_eq_maptbind_pure_comp_eq_mapbind_map_eq_seqtbind_map_eq_seqpure_bindtpure_bindbind_assoctbind_assocdecllistis_nil_main_aux_param_0α�alistbool��listcases_on�id_rhs
a_hda_tl�PInfoVMRVMC��listcases_ondeclequations_eqn_1_aux_param_0�eq�listnil�eqreflid_delta"�PInfo�ATTR_refl_lemma���EqnL�declequations_eqn_2_aux_param_0�hdtl
�cons����
')2�PInfo�ATTR����EqnL�decl}is_nilu_1�����=�PInfo�VMR�VMC��doc�Returns whether a list is []. Returns a boolean even if `l = []` is not decidable.decl�equations_eqn_1��=����=equations_eqn_1�PInfo�ATTR����EqnL�decl�equations_eqn_2��=��>E��=equations_eqn_2�PInfo�ATTR����EqnL�decl�_sunfold�A�=�?��P��>�PInfo�decl}has_sdiffuα�_inst_1decidable_eq
has_sdiff	list	�k�mhas_sdiffmk	plistdiff	ab	�PInfo�	prt�VMR�VMC�	��listdiff_maindecl�equations_eqn_1��k�m�	q��}�k�m�q��PInfo�	ATTR����EqnL�SEqnL�ATTRinstance���class����decl}split_at_match_1��kx_aprod		pp�o��k���prodcases_on			�����o�fst�snd��
�o�prodmk		��listcons	���PInfo�decl�equations_eqn_1��k�lpr�������������k��p�����
���PInfo�ATTR����EqnL�decl�_main_meta_aux��k�nat�p��k���pnatcases_on
���������	a_1��
	����������a_hd�a_tl���o���
�RecFn���PInfo�VMR�VMC�������decl����k���p�brec_on	�������_F�below����������o��
���o�o	������
���o
�o������
�����'�zero�������a_1���$�succ�����!���'������Da_hd�a_tl���o�J��Ipprodfst���o
�o�T��recn�punitn�ih�\pprod����o�o�f�_���b�Y�s�_�PInfo�VMR�VMC�������decl�equations_eqn_1��kao����has_zerozero�nathas_zero�pp��k����������PInfo�ATTR����EqnL�decl�equations_eqn_2��kn������;�������k���������PInfo�ATTR����EqnL�decl�equations_eqn_3��kn��xs������:�����k����������PInfo�ATTR����EqnL�decl}split_at���k���PInfo�VMR�VMC���doc�Split a list at an index.

    split_at 2 [a, b, c] = ([a, b], [c])decl�equations_eqn_1��k������������k�equations_eqn_1�PInfo�ATTR����EqnL�decl�equations_eqn_2��k�������;�����k�equations_eqn_2�PInfo�ATTR����EqnL�decl�equations_eqn_3��k������������������k�equations_eqn_3�PInfo�ATTR����EqnL�decl�_sunfold���k���p��������������PInfo�decl}split_on_p_aux_main_meta_aux�αkP�_inst_1decidable_pred	������o��k������������o���������a_hd�a_tl��o�ite	�������
�RecFn����id��*l����PInfo�!VMR�_lambda_1VMR�_lambda_2VMR�VMC�%�
_fresh
��@�
_fresh
��?VMC�$'aVMC�!!������	����decl����k��������listbrec_on		����������_F�below	������o�0o�J��K��J������H�������o��	�����H������J�Ro�Ro�J��H�������J�b�D��T������a_hd�a_tl���H�I��J���R�To�T��I��]��I��]��R���Q�P��R���T�do�d�rec	�Qn�R�\�_��Q��Tih�\�a�b��f��ooo���_�u�b�����_�+�R���
�R���S��PInfo�!VMR�VMC�!!������	����decl�equations_eqn_1��k����f����o�����������k����� �����������PInfo�!ATTR����EqnL�decl�equations_eqn_2��k����ht�f�����
�����������
�������+���
�����k�����#�$��%����
��
���PInfo�"!ATTR����"EqnL�"decl}split_on_p_aux���k�������PInfo�&!VMR�&VMC�&!����decl�&equations_eqn_1��k����� �����&������k�����equations_eqn_1�PInfo�(!ATTR����(EqnL�(decl�&equations_eqn_2��k�����#�$��%�����#����������8��<�	�k�����equations_eqn_2�PInfo�,!ATTR����,EqnL�,decl�&_sunfold���k���������������!�%�#����,�S�5�PInfo�/!decl}split_on_p�αkP�_inst_1�l����1k�2��3��4��%a��+��PInfo�0(VMR�0_lambda_1VMR�0VMC�6)�VMC�0(�4�3�2�1�6�doc�0Split a list at every element satisfying a predicate.decl�0equations_eqn_1��1k�2��3��4����0���k�1k�2��3��4����t�PInfo�8(ATTR����8EqnL�8SEqnL�0decl}split_on�αk_inst_1maas����:k�;m�<�=��q
_x���Annotinfix_fn�5���PInfo�9.VMR�9_lambda_1VMR�9VMC�@.�5�
_fresh
����
_fresh
���VMC�9.�=�<�;�:�@�0doc�9Split a list at every occurrence of an element.

   [1,1,2,3,2,4,4].split_on 2 = [[1,1],[3],[4,4]]decl�9equations_eqn_1��:k�;m�<�=����9�����:k�;m�<�=������PInfo�H.ATTR����HEqnL�HSEqnL�9decl}concat_main_meta_aux��k������k������������a_hda_tl����
��RecFn�K��PInfo�K4VMR�KVMC�K4�����Kdecl�J����k�����A�������_F�H�������������N�H�0��J����Y����N�R�������N�H�������������4a_hd�a_tl��N�g�����J�������P����I�R������\�_����J��\�a�b��T��c�f�_�u�b����_��PInfo�J4VMR�JVMC�J4�����Kdecl�Jequations_eqn_1��ka�p�J�������k�S�p�p�"�PInfo�R4ATTR����REqnL�Rdecl�Jequations_eqn_2��kblpa�������1�k�V�Wp�X�����3�PInfo�U4ATTR����UEqnL�Udecl}concat����k��PInfo�Y4VMR�YVMC�Y4��Jdoc�YConcatenate an element at the end of a list.

    concat [a, b] c = [a, b, c]decl�Yequations_eqn_1��k�S��Y����&�k�Jequations_eqn_1�PInfo�[4ATTR����[EqnL�[decl�Yequations_eqn_2��k�V�Wp�X�0�G����R�k�Jequations_eqn_2�PInfo�_4ATTR����_EqnL�_decl�Y_sunfold����k�������L�M������G��PInfo�b4ATTRsimp���Ydecl}head'_main��k���option	�k�����p�l��m	a_hda_tl���l�	��PInfo�e8VMR�eVMC�e8���decl�eequations_eqn_1��k��l�e���v�k���������PInfo�j8ATTR����jEqnL�jdecl�eequations_eqn_2��kalp��q�����|�k�m�np��q��q���PInfo�l8ATTR����lEqnL�ldecl}head'��o�k���PInfo�o8VMR�oVMC�o8��edecl�oequations_eqn_1��k���o������k�eequations_eqn_1 �PInfo�q8ATTR����qEqnL�qdecl�oequations_eqn_2��k�m�np���������k�eequations_eqn_2 �PInfo�u8ATTR����uEqnL�udecl�o_sunfold��o���PInfo�x8ATTR�c���odecl}to_array_proof_1��kl��vfinlistlength	has_ltlt�nathas_ltfinval�����k�{���|���}is_lt���PInfo�z=decl�y��k�{��array	���k�{��d_arraymk	��_x���|���~nth_le	���z��PInfo�y=VMR�y_lambda_1VMR�yVMC��>	�|�
_fresh���nth_le_mainVMC�y=�{����length_maind_arraymkdoc�yConvert a list into an array (whose length is the length of `l`).decl�yequations_eqn_1��k�{������y����k�{��������PInfo��=ATTR�����EqnL��SEqnL�ydecl}inth��khinhabited
lpn���k������p���optioniget	�}nth	��PInfo��BVMR��VMC��B���������nth_mainoptioniget_maindoc��"inhabited" `nth` function: returns `default` instead of `none` in the case
 that the index is out of bounds.decl��equations_eqn_1��k������p�����������k������p������
�PInfo��BATTR�����EqnL��SEqnL��ATTR�c����decl}modify_nth_tail_main_meta_aux��kf���p�����k��������������fa_1��������a_hd�a_tl����
�RecFn�����PInfo��HVMR��VMC��H�������
��decl�����k��������������_F�
���C������J���
�����������
���h����
���S�/���a_1����F�;�����J����oa_hd�a_tl�J��R��Q�P����natadd��/�`����\�a�b����f���_�a�u�b�b�n�_�PInfo��HVMR��VMC��H�������
��decl��equations_eqn_1��k���lp��������k�����p�������PInfo��HATTR�����EqnL��decl��equations_eqn_2��k���n�����has_addadd�nathas_addhas_oneone�nathas_one���k�������������PInfo��HATTR�����EqnL��decl��equations_eqn_3��k���n�al������������������k������������������PInfo��HATTR�����EqnL��decl}modify_nth_tail���k������PInfo��HVMR��VMC��H�����doc��Apply a function to the nth tail of `l`. Returns the input without
 using `f` if the index is larger than the length of the list.

    modify_nth_tail f 2 [a, b, c] = [a, b] ++ f [c]decl��equations_eqn_1��k�����p����������k�����equations_eqn_1%�PInfo��HATTR�����EqnL��decl��equations_eqn_2��k���������������k�����equations_eqn_2%�PInfo��HATTR�����EqnL��decl��equations_eqn_3��k��������������������������k�����equations_eqn_3%�PInfo��HATTR�����EqnL��decl��_sunfold���k��������#����(�������)�*�����PInfo��HATTR�c����decl}modify_head_main��kf��p��k����p�����a_hda_tl������PInfo��NVMR��VMC��N�����decl��equations_eqn_1��k������������k����*�+�(�PInfo��NATTR�����EqnL��decl��equations_eqn_2��k���al��0�%����x�k���������=�>�3�PInfo��NATTR�����EqnL��decl}modify_head���k����'�PInfo��NVMR��VMC��N�����doc��Apply `f` to the head of the list, if it exists.decl��equations_eqn_1��k������������k�����equations_eqn_1'�PInfo��NATTR�����EqnL��decl��equations_eqn_2��k���������0�D����6�k�����equations_eqn_2'�PInfo��NATTR�����EqnL��decl��_sunfold���$�PInfo��NATTR�c����decl}modify_nth��kf���k������F�PInfo��SVMR��VMC��S�������doc��Apply `f` to the nth element of the list, if it exists.decl��equations_eqn_1��k����	�����b�k����(��i�PInfo��SATTR�����EqnL��SEqnL��decl}insert_nth��kn�a���k����������PInfo��VVMR��_lambda_1VMR��VMC��V��
_fresh�!�VMC��V����������decl��equations_eqn_1��k������������w�k����������PInfo��VATTR�����EqnL��SEqnL��decl}take'_main_meta_aux��k_inst_1��n����k���������������!�������listhead	��
��RecFn������tail	��PInfo��[VMR��VMC��[��������head_main�tail_main��decl������k������������������_F�
����C�������J��
����A������
����h���
����S�/�O�D�������;����������P����\�_�/�`����\�a�b������_���u�b�����_�����PInfo��[VMR��VMC��[�����������decl��equations_eqn_1��k����lp���������k�����p�������PInfo�[ATTR����EqnL�decl��equations_eqn_2��k����n�l��0����������������k�����	��
��=�>��PInfo�[ATTR����EqnL�decl}take'����k�������PInfo�[VMR�VMC�[�����decl�equations_eqn_1��k�����p��������k������equations_eqn_1.�PInfo�
[ATTR����
EqnL�
decl�equations_eqn_2��k�����	��
��0����	�.��k������equations_eqn_2.�PInfo�[ATTR����EqnL�decl�_sunfold����k������������������������PInfo�[decl}take_while_main_meta_aux��kp�_inst_1����k������������a_hd�a_tl���������
�MRecFn�������PInfo�dVMR�VMC�d�����	
�decl���M�k�������A��N��_F�H��$����H����J�Y�0��J������������J���0����a_hd�0a_tl���R������O��P�����P���������\�_������\�a�b��R�T�_�u�b�����_�D�PInfo�dVMR�VMC�d�����	
�decl�equations_eqn_1��k�����������k�����������PInfo� dATTR���� EqnL� decl�equations_eqn_2��k����al�����������x�������k�����#�$��������PInfo�"dATTR����"EqnL�"decl}take_while��M�k�������PInfo�%dVMR�%VMC�%d����doc�%Get the longest initial segment of the list whose members all satisfy `p`.

    take_while (λ x, x < 3) [0, 2, 5, 1] = [0, 2]decl�%equations_eqn_1��k�������%����k�����equations_eqn_10�PInfo�'dATTR����'EqnL�'decl�%equations_eqn_2��k�����#�$�����������������k�����equations_eqn_20�PInfo�+dATTR����+EqnL�+decl�%_sunfold��M�k�������Q�����R�U�V��������PInfo�.ddecl}scanl_main_meta_aux�v�kβ�2f�����list1��k�3��4�����	1����������a_hd�a_tl���)�
�"RecFn�1������PInfo�1lVMR�1VMC�1l���4�3���1decl�0��2�"�k�3��4�����5brec_on
1���%�����%_F�5below
1���,���J����0���0�9�E�������
1�����9�E�������J�9�E���S���nil1�������oa_hd�a_tl�U�9�E������Q�T�1��[�\��P���I��S�d�41�I��s�\�_��I���Q��\�a�b���c������_�u�b�v���_���PInfo�0lVMR�0VMC�0l���4�3���1decl�0equations_eqn_1��2�k�3��4�a�0�0��2��`���k�3��4��@�=�>���PInfo�?lATTR����?EqnL�?decl�0equations_eqn_2��2�k�3��4�abl�%��������m��������k�3��4��C�D�E�%�������PInfo�BlATTR����BEqnL�Bdecl}scanl��2�"�k�3��4����PInfo�FlVMR�FVMC�Fl�4�3��0doc�FFold a function `f` over the list from the left, returning the list
 of partial results.

    scanl (+) 0 [1, 2, 3] = [0, 1, 3, 6]decl�Fequations_eqn_1��2�k�3��4��@�0�F��2������k�3��4��0equations_eqn_189�PInfo�HlATTR����HEqnL�Hdecl�Fequations_eqn_2��2�k�3��4��C�D�E�%����������������k�3��4��0equations_eqn_289�PInfo�LlATTR����LEqnL�Ldecl�F_sunfold��2�"�k�3��4�����+�6��7�,�)�������2�PInfo�Oldecl}scanr_aux_match_1�2��k�3�f��a_a�11��	!��%�k�3��R�	 �S�T�	#�111��%�T�	%�	!��,����,�:�	!����11��	5�2�m��PInfo�Qpdecl�Qequations_eqn_1��2�k�3��R�	 �Sb'l'�%�:�	/�Q�2�����	8��,�	Q�����k�3��R�	 �S�W�X�%�:�	/�:�	/�	T�PInfo�VpATTR����VEqnL�Vdecl�P_main_meta_aux��2�k�3��R�	 b���	%�k�3��R�	 �[���:	����	/�	3�	%�	8��%�`�a_hd�a_tl��	7�	K���
�	oRecFn�Z�����PInfo�ZpVMR�ZVMC�Zp��[�R�3���Zdecl�Y��2�	o�k�3��R�	 �[��listbrec_on1	��	r��_F�^below=	����	6���`�	��0��J�	!�0�K�=	����`�	�����	!��S�	��`�	�����	!��M���	3�	��	8��M��`�a_hd�a_tl��`�	�����	!��U���	3�	��	K����=>���	!��i�>	���>�>����J��	��>>�=>��T�	!�S��S�	��>>�	��	��	��	��PInfo�YpVMR�YVMC�Yp��[�R�3���Zdecl�Yequations_eqn_1��2�k�3��R�	 �[�	I�	#�Y��2���	8����k�3��R�	 �[�	_�	#�	a�	#�
�PInfo�epATTR����eEqnL�edecl�Yequations_eqn_2��2�k�3��R�	 �[�S�l��	J�	�����V�	N�
�k�3��R�	 �[�S��h��	`�	b�
�PInfo�gpATTR����gEqnL�gdecl}scanr_aux��2�	o�k�3��R�	 �[�
�PInfo�ipVMR�iVMC�ip�[�R�3��Ydecl�iequations_eqn_1��2�k�3��R�	 �[�	��i��2���
	�k�3��R�	 �[�Yequations_eqn_1BC��PInfo�kpATTR����kEqnL�kdecl�iequations_eqn_2��2�k�3��R�	 �[�S��h��	J�
4����
�
�
L�k�3��R�	 �[�Yequations_eqn_2BC��PInfo�opATTR����oEqnL�odecl�i_sunfold��2�	o�k�3��R�	 �[���	|�\��]��	7�	��
4�����PInfo�rpdecl}scanr_match_1�2�3�_a�	!���3��u�
r�	+�
s�u�	!�
s�����	3�%�m��PInfo�txdecl�tequations_eqn_1�2�3�b'l'�
s�	I��t�2�
�m�3��x�y�
s�	_��	a��
��PInfo�wxATTR����wEqnL�wdecl}scanr��2�k�3�f�	 bl��%�k�3��{�	 �|�}��
���
4���PInfo�zxVMR�zVMC�zx�}�|�{�3��Ydoc�zFold a function `f` over the list from the right, returning the list
 of partial results.

    scanr (+) 0 [1, 2, 3] = [6, 5, 3, 0]decl�zequations_eqn_1��2�k�3��{�	 �|�}��	I�%�z��2���
��k�3��{�	 �|�}��	_�%�
��PInfo�xATTR����EqnL�SEqnL�zdecl}prod��k_inst_1has_mul	_inst_2has_one	����k���
����
�}foldl		has_mulmul	��	�PInfo��~VMR��VMC��~������foldl_maindoc��Product of a list.

    prod [a, b, c] = ((1 * a) * b) * cdecl��equations_eqn_1��k���
����
���
�����
��k���
����
���
��
��PInfo��~ATTR�����EqnL��SEqnL��decl}sum��k_inst_1has_add	_inst_2has_zero	�
��k���
����
��
���	�	�PInfo���VMR��VMC����������doc��Sum of a list.

    sum [a, b, c] = ((0 + a) + b) + cdecl��equations_eqn_1��k���
����
��
�����
��k���
����
��
��
��PInfo���ATTR�����EqnL��SEqnL��decl}partition_map_match_1�2w�3��_f_1�1I�
slistI_f_2���	_asum1I���,�	��3�������������sumcases_on1I1I���������	5�	�val��M�!prodmap11II�	5�	5� � �	<idL� val��&�+idK�	5}consI���PInfo���decl��equations_eqn_1�2���3����������l��M����2����suminl1I���'�,�,�����.��3��������������M��M��P�PInfo���ATTR�����EqnL��decl��equations_eqn_2�2���3����������r�F�Ksuminr1I���U�5�,�8��3�������������b�d�p�PInfo���ATTR�����EqnL��decl��_main_meta_aux��2���k�3����f������%�	�k�3�����������M	�����%���1I�%���	y�Ia_hd�a_tl��&�G��
��RecFn����������PInfo���VMR��_lambda_1VMR��_lambda_2VMR��_lambda_3VMR��VMC�����
_fresh
��VMC����VMC�����
_fresh
��VMC��-�������3��	
������prodmap+��������decl����2�����k�3����������listbrec_on1I	�����_F��belowR	����!�������0��J��K�	��R	������������S�	������������M�	�0���%�����M���	����0a_hd�a_tl����������U�	����%���G���RS����i�	��S	���S�S����J����SS�RS��T��	��	�Q���SS�����������PInfo���VMR��VMC��-�������3��	
��������+��������decl��equations_eqn_1��2���k�3���������E�����2��������
�����k�3���������a��c��+�PInfo�ƇATTR�����EqnL��decl��equations_eqn_2��2���k�3��������x�xs��F�&����
�I�B�Ex�k�3���������������b�d�C�PInfo�ȇATTR�����EqnL��decl}partition_map��2�����k�3���������*�PInfo�ˇVMR��VMC��������3���decl��equations_eqn_1��2���k�3���������%����2�����1�k�3����������equations_eqn_1XYZ��PInfo�͇ATTR�����EqnL��decl��equations_eqn_2��2���k�3���������������F�\����
�I�t�wx�k�3����������equations_eqn_2XYZ��PInfo�чATTR�����EqnL��decl��_sunfold��2�����k�3�������������������&���\��������PInfo�ԇdecl}find_main_meta_aux��kp�_inst_1����z�k������������l��{�v�a_hd�a_tl���l��T���|�
��RecFn������PInfo�בVMR��VMC����������	��decl������k���������g����_F�j���������m���l�0�q��J�������l���������J�l��{����v�a_hd�0a_tl����R���l�����������|��P���l���������\�a�b��R�l�S�_�u�b�����_�PInfo�֑VMR��VMC����������	��decl��equations_eqn_1��k�������������v�k�����������
�PInfo���ATTR�����EqnL��decl��equations_eqn_2��k������al�����
���������|��
�k������������������
�PInfo��ATTR�����EqnL��decl}find����k�������
�PInfo��VMR��VMC����������doc��`find p l` is the first element of `l` satisfying `p`, or `none` if no such
 element exists.decl��equations_eqn_1��k�������������

�k��������equations_eqn_1\�PInfo��ATTR�����EqnL��decl��equations_eqn_2��k������������
�
5�����
 �
H�k��������equations_eqn_2\�PInfo��ATTR�����EqnL��decl��_sunfold����k���������������������
5����PInfo��decl}find_indexes_aux_main_meta_aux��kp�_inst_1�����list��k�����������	����
h�
h��a_hd�a_tl��
s	t�
h
�
mRecFn��������]���
h����PInfo��VMR��VMC������������natsucc�����
h	decl����
m�k����������listbrec_on	����
i��_F��below	����
i����J�����
�����
i�
n������
�����
i�
h���
�����
i�D�
va_hd�a_tl����
��I��J�
i��
s	���
h���R�
i�	�Q��R���Q��T��
���
���f�
i�
��
��
��
��
��
��:��
~�Q��I��
h�
���PInfo��VMR��VMC�������������������
h	decl��equations_eqn_1��k������n��
h������
u�k��������&�
h(�
h�
��PInfo��ATTR����EqnL�decl��equations_eqn_2��k������al�n��
��
������	���
h��;�
~���1�
h�
��k���������������PInfo��ATTR����EqnL�decl}find_indexes_aux��
m�k�������
��PInfo��VMR�VMC���������decl�equations_eqn_1��k���������
������
u�k��������equations_eqn_1`�PInfo�
�ATTR����
EqnL�
decl�equations_eqn_2��k������������
��0�����	���
h�E�;��k��������equations_eqn_2`�PInfo��ATTR����EqnL�decl�_sunfold��
m�k�����������
w�������
s	���
h�0������
��PInfo��decl}find_indexes��kp�_inst_1�l��
h�k�������2�g���PInfo��VMR�VMC��������doc�`find_indexes p l` is the list of indexes of elements of `l` that satisfy `p`.decl�equations_eqn_1��k�������
�����o�k��������x�PInfo��ATTR����EqnL�SEqnL�decl}lookmap_match_1��kalp_f_1�_a�z��k��p����zoptioncases_on		��������val��R����PInfo��decl�equations_eqn_1��k��p���0�������k��p���=�>���PInfo�"�ATTR����"EqnL�"decl�equations_eqn_2��k��p��b��������
��k��p���%��������PInfo�$�ATTR����$EqnL�$decl�_main_meta_aux��kf��m��k�(���p�a_hda_tl�����
��RecFn�'����PInfo�'�VMR�'VMC�'���(��	�'decl�&����k�(���p������_F���N���+�I����Y����+�z��+�o�#��J�{a_hd�a_tl�J�+�s��������P��������\�_������\�a�b��J�R�_�u�b�����_���PInfo�&�VMR�&VMC�&���(��	�'decl�&equations_eqn_1��k�(����&������k�(���*�+��PInfo�/�ATTR����/EqnL�/decl�&equations_eqn_2��k�(������0�������%x�k�(������=�>�&�PInfo�1�ATTR����1EqnL�1decl}lookmap����k�(����PInfo�2�VMR�2VMC�2��(��&doc�2`lookmap` is a combination of `lookup` and `filter_map`.
 `lookmap f l` will apply `f : α → option α` to each element of the list,
 replacing `a → b` at the first value `a` in the list such that `f a = some b`.decl�2equations_eqn_1��k�(����2������k�(���&equations_eqn_1e�PInfo�4�ATTR����4EqnL�4decl�2equations_eqn_2��k�(������0�:����)�Hx�k�(���&equations_eqn_2e�PInfo�8�ATTR����8EqnL�8decl�2_sunfold����k�(���p��)�*������:����PInfo�;�decl}map_with_index_core_main_meta_aux��2�k�3�f��������%�k�3��?�e�����	q���,�
}�	ya_hd�a_tl��	3�	5�	<�2
�jRecFn�>���������PInfo�>�VMR�>VMC�>�����?�3��natadd�>decl�=��2�j�k�3��?�e����listbrec_on1	������	5��_F�Dbelowg	��������������F��������U�	�����F��������s�i�F��������i�D�	3�U�`�a_hd�a_tl��F���I��J���}��	3�s�m�I���	���R���	��	��Q��R�	��	���Q��T��	��	��	���f������	��	��	������	�������PInfo�=�VMR�=VMC�=�����?�3���C�>decl�=equations_eqn_1��2�k�3��?�ek��
��=��2�����k�3��?�e�L��
��
����PInfo�K�ATTR����KEqnL�Kdecl�=equations_eqn_2��2�k�3��?�ek�a�as��	I�,������
���������k�3��?�e�O��P��Q��	_�,�	a�,���PInfo�N�ATTR����NEqnL�Ndecl}map_with_index_core��2�j�k�3��?�e���PInfo�R�VMR�RVMC�R��?�3��=decl�Requations_eqn_1��2�k�3��?�e�L��
��R��2�����k�3��?�e�=equations_eqn_1jk�PInfo�T�ATTR����TEqnL�Tdecl�Requations_eqn_2��2�k�3��?�e�O��P��Q��������
��1���k�3��?�e�=equations_eqn_2jk�PInfo�X�ATTR����XEqnL�Xdecl�R_sunfold��2�j�k�3��?�e�����o�@��A��p�q�����w�PInfo�[�decl}map_with_index��2�k�3�f�eas���k�3��]�e�^�����PInfo�\�VMR�\VMC�\��^�]�3��=decl�\equations_eqn_1��2�k�3��]�e�^��
��\��2��Z�k�3��]�e�^��
��c�PInfo�`�ATTR����`EqnL�`SEqnL�\decl}indexes_of��k_inst_1ma���
h�k�bm�c�t��5y�PInfo�a�VMR�a_lambda_1VMR�aVMC�d�aVMC�a��c�b��d�doc�a`indexes_of a l` is the list of all indexes of `a` in `l`.

    indexes_of a [a, b, a, a] = [0, 2, 3]decl�aequations_eqn_1��k�bm�c���o�an�x�k�bm�c�n�o���PInfo�g�ATTR����gEqnL�gSEqnL�adecl}indexes_values_aux_main_meta_aux_aux_param_0αf��
����k���l�m���
���uu�������u�� ��a_hd�a_tl������	ns��
��RecFn�j�����ucoe_sortcoe_sort_bool�
�booldecidable_eq�
����.���u����PInfo�j�VMR�jVMC�j�����m�l��C�j�p�t_main	decl�i_aux_param_0���l�m���
��listbrec_on�vy�����������_F�wbelowyy���������������y�����������yy����y����������I����y���������� ����� ��a_hd�a_tl���y����������Q.�����	�p���yy��I�����S�yy�I��y�y��I��Q���yy���c��������
���)�����������
����
��.����Q���PInfo�i�VMR�iVMC�i�����m�l��C�j�p�u	decl�iequations_eqn_1_aux_param_0�l�m��n������i�  �Y�l�m��������Z���Z�a�PInfo�~�ATTR����~EqnL�~decl�iequations_eqn_2_aux_param_0�l�m��xxsn��X���\��.�	�p���s�������1���1��.�������l�m����������h���j���x�PInfo���ATTR�����EqnL��decl}indexes_values_auxu_1�l=�m���P��>������l=�m���i��PInfo���VMR��VMC����m�l�idoc��Auxilliary definition for `indexes_values`.decl��equations_eqn_1���l=�m��������>�����GG���l=�m���iequations_eqn_1��PInfo���ATTR�����EqnL��decl��equations_eqn_2���l=�m������e�����>�������R�	�p���������|�>���R��������l=�m���iequations_eqn_2��PInfo���ATTR�����EqnL��decl��_sunfold�����l=�m���P�������>�������G���n��o>�����	�p��������������>���R�������PInfo���decl}indexes_valuesu_1α=l?f�����=��?��������PInfo���VMR��VMC����������idoc��Returns `(l.find_indexes f).zip l`, i.e. pairs of `(n, x)` such that `f x = tt` and
 `l.nth = some x`, in increasing order of first arguments.decl��equations_eqn_1����=��?������������=��?����������PInfo���ATTR�����EqnL��SEqnL��decl}countp_main_meta_aux��kp�_inst_1�����k���������
n�������a_hd�a_tl��-�
~����:
�(RecFn������7�PInfo���VMR��VMC����������	������decl����(�k���������
���*��_F�
����������
������
n�0��J���
���������
��0��J��{�.a_hd�0a_tl����
�������-�
~�P����:�
�����
�����
��
�������
��
��
���R��
��
��
��d�t�
��{�PInfo���VMR��VMC����������	������decl��equations_eqn_1��k��������������k������&�(����PInfo���ATTR�����EqnL��decl��equations_eqn_2��k������xxs����������
~�x��:�����k������������������PInfo���ATTR�����EqnL��decl}countp��(�k���������PInfo���VMR��VMC����������doc��`countp p l` is the number of elements of `l` that satisfy `p`.decl��equations_eqn_1��k���������������k��������equations_eqn_1��PInfo���ATTR�����EqnL��decl��equations_eqn_2��k����������������������:�����k��������equations_eqn_2��PInfo���ATTR�����EqnL��decl��_sunfold��(�k���������/�������-�2�:��������PInfo���decl}count��k_inst_1ma�%�k��m�����u�w�PInfo���VMR��_lambda_1VMR��VMC����eVMC������������doc��`count a l` is the number of occurrences of `a` in `l`.decl��equations_eqn_1��k��m���|�%������k��m�����%��PInfo���ATTR�����EqnL��SEqnL��decl}is_prefix��kl₁��l₂p��k������pExists	�t��0has_appendappend	��has_append	��PInfo���VMR��VMC�������doc��`is_prefix l₁ l₂`, or `l₁ <+: l₂`, means that `l₁` is a prefix of `l₂`,
 that is, `l₂` has the form `l₁ ++ t` for some `t`.decl��equations_eqn_1��k������p������k������p&��"�PInfo���ATTR�����EqnL��SEqnL��decl}is_suffix��
�kl₁��l₂p�t��0��PInfo���VMR��VMC�������doc��`is_suffix l₁ l₂`, or `l₁ <:+ l₂`, means that `l₁` is a suffix of `l₂`,
 that is, `l₂` has the form `t ++ l₁` for some `t`.decl��equations_eqn_1��k������p�����2�k������p�(�9�PInfo���ATTR�����EqnL��SEqnL��decl}is_infix��
�kl₁��l₂p�s���t��������F��PInfo���VMR��VMC�������doc��`is_infix l₁ l₂`, or `l₁ <:+: l₂`, means that `l₁` is a contiguous
 substring of `l₂`, that is, `l₂` has the form `s ++ l₁ ++ t` for some `s, t`.decl��equations_eqn_1��k������p�����P�k������p�(�W�PInfo���ATTR�����EqnL��SEqnL��TK<+:2NOTA}is_prefix<+: <+: 2��TK<:+2NOTA}is_suffix<:+ <:+ 2��TK<:+:2NOTA}is_infix<:+: <:+: 2��decl}inits_main_meta_aux��k���op�k����p�po���j�p���pa_hda_tl�������}map		��t��
�lRecFn����PInfo���VMR��_lambda_1VMR��VMC������
_fresh�ESVMC�����������map_maindecl����l�k����A�n�p_F�H���������j��Y������m���L�L���I�������"�#��a_hd�a_tl�������Jo��1��������z���������P��o�������\�_������\�a�b���b�_�u�b�����_�PInfo���VMR��VMC������������decl��equations_eqn_1��k�o����������������k���������PInfo���ATTR�����EqnL��decl��equations_eqn_2��kalp��m��������z����������k����p��m��m���PInfo���ATTR�����EqnL��decl}inits��l�k���PInfo���VMR��VMC������doc��`inits l` is the list of initial segments of `l`.

    inits [1, 2, 3] = [[], [1], [1, 2], [1, 2, 3]]decl��equations_eqn_1��k����������k��equations_eqn_1��PInfo���ATTR�����EqnL��decl��equations_eqn_2��k����p���
��������k��equations_eqn_2��PInfo���ATTR�����EqnL��decl��_sunfold��l�k����w������x�y���
��PInfo���ATTR�c����decl}tails_main_meta_aux��l�k����wa_hda_tl��x����
�lRecFn����PInfo���VMR��VMC��������decl����l�k������p_F����������a_hd�a_tl��������������PInfo���VMR��VMC��������decl��equations_eqn_1��k����������k�����J�PInfo��ATTR����EqnL�decl��equations_eqn_2��kalp���H�������Q�k��p���R�PInfo��ATTR����EqnL�decl}tails��l�k�I�PInfo��VMR�VMC�����doc�`tails l` is the list of terminal segments of `l`.

    tails [1, 2, 3] = [[1, 2, 3], [2, 3], [3], []]decl�equations_eqn_1��k���������k��equations_eqn_1��PInfo�	�ATTR����	EqnL�	decl�equations_eqn_2��k��p���a���T�j�k��equations_eqn_2��PInfo�
�ATTR����
EqnL�
decl�_sunfold��l�k����w������x�*�a��PInfo��ATTR�c���decl}sublists'_aux_main_meta_aux��2�k�3��p���������%�k�3��p������	q����,�	3���m�%�a_hd�a_tl��	3��	5
��RecFn������functioncomp	�1���	5��*�PInfo��VMR�_lambda_1VMR�VMC��6x�
_fresh�H��
_fresh�H�VMC������3�����decl���2���k�3��p�����listbrec_on�1	�������	5��������_F� below�	�������������K������������S���S�"��������J�s���s��}���	�I��J�"���Q��R���T�	����	���~����"���I��J���R�}�������I�	3���m�s���a_hd�Ia_tl�R�"���S��T���d�~������e���	3�������d���f����������	�c��d�����c��f��������������o������������������ ���d�d�	����c���PInfo��VMR�VMC������3�����decl�equations_eqn_1��2�k�3�f�p�
sr��
s�	I�����2���m���k�3��(�F�)�G�	_���	a���N�PInfo�'�ATTR����'EqnL�'decl�equations_eqn_2��2�k�3�al�f�fr���	I���I������c�j�����,�d�k�3��,�-��.�f�/���	_���	a���h�PInfo�+�ATTR����+EqnL�+decl}sublists'_aux��2���k�3��I�PInfo�0�VMR�0VMC�0��3��decl�0equations_eqn_1��2�k�3��(�F�)�G�H�0��2���S�k�3��equations_eqn_1���PInfo�2�ATTR����2EqnL�2decl�0equations_eqn_2��2�k�3��,�-��.�f�/���a�����e�����p�k�3��equations_eqn_2���PInfo�6�ATTR����6EqnL�6decl�0_sunfold��2���k�3��p�����������������������PInfo�9�decl}sublists'��kl���j�k�;��}sublists'_aux		�+p�t�PInfo�:�VMR�:_lambda_1VMR�:VMC�=��VMC�:��;��=�doc�:`sublists' l` is the list of all (non-contiguous) sublists of `l`.
 It differs from `sublists` only in the order of appearance of the sublists;
 `sublists'` uses the first element of the list as the MSB,
 `sublists` uses the first element of the list as the LSB.

    sublists' [1, 2, 3] = [[], [3], [2], [2, 3], [1], [1, 3], [1, 2], [1, 2, 3]]decl�:equations_eqn_1��k�;����j�:����k�;����j���PInfo�?�ATTR����?EqnL�?SEqnL�:decl}sublists_aux_main_meta_aux��2�k�3��p������%��k�3��p����	p����%�	3���a_hd�a_tl��	3�,�V��
��RecFn�B��ys�r�	5���1��PInfo�B�VMR�B_lambda_1VMR�BVMC�G�%�F�E�
_fresh�ȃ�
_fresh�ȂVMC�B����3���G�Bdecl�A��2���k�3��p�������������,�	5�,��_F����������	5���	5�������J��K�M�N����������S�U�S������N����������i�s�i�U�N����������U�i�U�4�	3�S�aa_hd�a_tl��N�������J��s�}�s���	3�i��}������J���R��}�	��}���I��J�����I��R�������d���f�����������;�N��E�J�F�s������PInfo�A�VMR�AVMC�A����3���G�Bdecl�Aequations_eqn_1��2�k�3�f�p��
s��	I�
s�A��2��`�k�3��S�v�	_�
s�	a�
s�|�PInfo�R�ATTR����REqnL�Rdecl�Aequations_eqn_2��2�k�3�al�f����%�,�
��x���}�}����E��F�,x���k�3��V�W��X���
��	a�%���PInfo�U�ATTR����UEqnL�Udecl}sublists_aux��2���k�3��x�PInfo�Y�VMR�YVMC�Y��3��Adecl�Yequations_eqn_1��2�k�3��S�v�w�Y��2��~�k�3��Aequations_eqn_1���PInfo�[�ATTR����[EqnL�[decl�Yequations_eqn_2��2�k�3��V�W��X���
��������������k�3��Aequations_eqn_2���PInfo�_�ATTR����_EqnL�_decl�Y_sunfold��2���k�3��p������C��D������������PInfo�b�decl}sublists����kl���s}sublists_aux		p�r�PInfo�c�VMR�c_lambda_1VMR�cVMC�f���VMC�c��d��f�Adoc�c`sublists l` is the list of all (non-contiguous) sublists of `l`; cf. `sublists'`
 for a different ordering.

    sublists [1, 2, 3] = [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]decl�cequations_eqn_1��k�d�����c����k�d�������PInfo�h�ATTR����hEqnL�hSEqnL�cdecl}sublists_aux₁_main_meta_aux��2�k�3��p����k�3��p����a_hd�a_tl�����1�,��1���
��RecFn�k��ys����	5��������PInfo�k�VMR�k_lambda_1VMR�kVMC�o�(�n�
_fresh�K��
_fresh�K��append_mainVMC�k����3���o�k�wdecl�j��2���k�3��p����������,�,��_F�������	5��������J�K�x�
������S����x�������i�i�U�x� ������U�U�4�(a_hd�a_tl��x��������s�1�3���i����6����J����}�@��I��R�������d���������:�G��n�J���s���I���\��PInfo�j�VMR�jVMC�j����3���o�k�wdecl�jequations_eqn_1��2�k�3�f�F�w�j��2��~�k�3��}�F�����t�PInfo�|�ATTR����|EqnL�|decl�jequations_eqn_2��2�k�3�al�f�f�
��p�������%��������n������d�k�3���������f�
������PInfo��ATTR����EqnL�decl}sublists_aux₁��2���k�3��p�PInfo���VMR��VMC����3��jdecl��equations_eqn_1��2�k�3��}�F�w����2��~�k�3��jequations_eqn_1���PInfo���ATTR�����EqnL��decl��equations_eqn_2��2�k�3���������f�
��������������k�3��jequations_eqn_2���PInfo���ATTR�����EqnL��decl��_sunfold��2���k�3��p�����l��m�����������PInfo���PInfo}forall₂�
ind��2�k�3�R���C�����e_1����e_2a�b�l₁�l₂����������2���0ih�0�������m�������	5n���0���
�����2�k�3���������nil�k�3���������~��cons�k�3���������������,��1�������0������m�0��k�3������������������k�3��������������������������J���K���������������rec��2�����0���decl��drec��2�k�3�����������h�������������2�������������������������������������������	5�������k�3��������L���Q���d����	5�����.��0�����M���%��_����`�0�������������U�������Q�I���_h���S�Q�I��I��_���c�S�Q�&���m�S����0�����PInfo���
ATTRreducibility����auxrec��prt��decl��drec_on��2�k�3��������L����%�����������#�`��M��������0���0������S�������I������������m�Q���S�S�Q�I��������k�3��������L����%�������������y_�|������������U����������_����0���������PInfo���
ATTR������auxrec��prt��decl��dcases_on��2�k�3��������L����%�������������0���0������S��������r�����S�Q�I�������k�3��������L����%�����������"��������������U����������_�������PInfo���
ATTR������auxrec��prt��decl��rec_on��2�k�3�������������%�������������0���0������S���������������k�3�������������%�����������H�q����PInfo���
ATTR������auxrec��prt��decl��cases_on��2�k�3�������������%�������������0���0������S����������k�3�������������%�����������f�S������������U�����������0�������PInfo���
ATTR������auxrec��prt��gind������prt��recnspace��ATTR�c��}forall₂nildecl}transpose_aux_main_meta_aux��k�����j�m�k�����j������ma_hda_tl������
���)
��RecFn����a_hd_1�a_tl_1�
��"�����PInfo���VMR��VMC������������decl������k�����j����������_F�������
������������J������������R���o��T������������������a_hd�a_tl����g����T�b������T�b��m�n���o�P����b�]������J��\�a�b��T���o�f�_�u�b�����_�ra_hd_1�a_tl_1�b�����\��P��R��y�������Q��T��\�a�b��f�o�����_��u�b����_�PInfo���VMR��VMC������������decl��equations_eqn_1��kls����������k��������j�*�PInfo���ATTR�����EqnL��decl��equations_eqn_2��kaip���'����������4�6�k����p���7�PInfo���ATTR�����EqnL��decl��equations_eqn_3��kaipl�ls�����'������H�k����p������������M�PInfo���ATTR�����EqnL��decl}transpose_aux����k�'�PInfo���VMR��VMC������decl��equations_eqn_1��k������������k��equations_eqn_1��PInfo���ATTR�����EqnL��decl��equations_eqn_2��k����p���d���6�:�o�6�k��equations_eqn_2��PInfo���ATTR�����EqnL��decl��equations_eqn_3��k����p��������G�d��I�L�O�}�k��equations_eqn_3��PInfo���ATTR�����EqnL��decl��_sunfold����k�����j�������������}�������
����d��PInfo���decl}transpose_main_meta_aux��k����j�k����p��j�m�q�ta_hdpa_tl�m�x�d�
��RecFn����PInfo���VMR��VMC����������decl������k����Ap����j_F�H���m��������H����Y���
���H����L�L���H���
������a_hd�a_tl����H�J��L����J���d��P������������\�_�������\�a�b���_�u�b�����_�PInfo���VMR��VMC����������decl��equations_eqn_1��k����������k������PInfo���ATTR�����EqnL��decl��equations_eqn_2��kl��ls�j������o�	�k�������j����PInfo���ATTR�����EqnL��decl}transpose����k��PInfo���VMR��VMC������doc��transpose of a list of lists, treated as a matrix.

    transpose [[1, 2], [3, 4], [5, 6]] = [[1, 3, 5], [2, 4, 6]]decl��equations_eqn_1��k����������k��equations_eqn_1��PInfo���ATTR�����EqnL��decl��equations_eqn_2��k�������j������$�k��equations_eqn_2��PInfo���ATTR�����EqnL��decl��_sunfold����k�������p���m�x�����PInfo���decl}sections_main_meta_aux����k������va_hdpa_tl�m�x 		omonadto_has_bind		olistmonad	��
��RecFn���s��z��a����PInfo���VMR��_lambda_1VMR��_lambda_2VMR��VMC���*���
_fresh�PaVMC��� ���
_fresh�P_����VMC�������������join_maindecl������k�������j_F�����������������a_hd�a_tl��������@��������z���������PInfo���VMR��VMC��������������decl��equations_eqn_1��k����������k�����t�PInfo��ATTR����EqnL�decl��equations_eqn_2��kl��L�j���r��@���{����z��������k�����j���|�PInfo��ATTR����EqnL�decl}sections����k�s	�PInfo��VMR�VMC�����doc�List of all sections through a list of lists. A section
 of `[L₁, L₂, ..., Lₙ]` is a list whose first element comes from
 `L₁`, whose second element comes from `L₂`, and so on.decl�equations_eqn_1��k���������k��equations_eqn_1��PInfo�
�ATTR����
EqnL�
decl�equations_eqn_2��k�����j�����������k��equations_eqn_2��PInfo��ATTR����EqnL�decl�_sunfold����k����9��p���m�x�B����M
�PInfo��decl}permutations_aux2_match_1��2�k�3�tyf���_a�	1��%����,�k�3����������	1	1��,�������	5����	5�����J���	1�J���1��m���1����PInfo�� decl�equations_eqn_1��2�k�3������us�zs�,�������2��������	5�����	<�����k�3����������,�����������PInfo�� ATTR����EqnL�decl�_main_meta_aux��2�k�3��ts�r����������k�3������������	������������a_hd�a_tl�J������K����0�
�RecFn���0���x�����PInfo�� VMR�_lambda_1VMR�VMC�#�"5�"�
_fresh�R]�
_fresh�R\VMC� � ������3���#�		
decl���2��k�3������������������J�0���_F���0��J��������M��D�������*�������J�I���R�s�	2	�I��J�*����R���T�S���d�	����T�}�*����J���R�Q�]�����N���R�s��a_hd�Ia_tl�R�*����T���d�c���f�~�����W���c�S�Q�����d���f�e���������c��f��������������o�	����������"�d���e��PInfo�� VMR�VMC� � ������3���#�		
decl�equations_eqn_1��2�k�3������f����������2���������,�k�3�������/������������PInfo�.� ATTR����.EqnL�.decl�equations_eqn_2��2�k�3��������ys������������0�����2���0�����"�J����k�3���������2��������������PInfo�1� ATTR����1EqnL�1decl}permutations_aux2��2��k�3�����������PInfo�3� VMR�3VMC�3� ����3��decl�3equations_eqn_1��2�k�3�������/�����3��2��������k�3�������equations_eqn_1�����PInfo�5� ATTR����5EqnL�5decl�3equations_eqn_2��2�k�3���������2��������0���������.���k�3�������equations_eqn_2�����PInfo�9� ATTR����9EqnL�9decl�3_sunfold��2��k�3������������ ��!�J� �%���0����/�PInfo�<� prvmeas_main_private�P{�5meas_maindecl�B��k�psigma		��_x��p����k��_psigmacases_on��p�Dp���\p�g�ba_fstpa_snd��b���������r�s�PInfo�B�%VMR�BVMC�B�%�������C��prv�>equations_eqn_1�Bequations_eqn_1decl�L��kl��ip�b�B��Emk����D���q���������k�M���Np&�b(�b���PInfo�L�%ATTR����LEqnL�Lprv�=�Adecl�A��d�k���PInfo�A�%VMR�AVMC�A�%��Bdecl�Aequations_eqn_1��k�M���Np��A������k�Bequations_eqn_1��PInfo�Q�%ATTR����QEqnL�Qdecl�A_sunfold��d�~�PInfo�T�%decl}permutations_auxrec_aux_meta_1well_founded_tactics�Xmk_xexpr_x�
g��has_bindsequnit��tactic����interaction_monadmonadtactic_statetacticsave_infoposmkbit1�����bit0��������������������������dstep���dinteractiveexact
Quote
_��
_x�n��_y�n��inv_imageprodlexhas_ltlt���AAnnot�?
inv_imagewf�z�n��Annot@_���~���~��meas���n��prodlex_wf���n��lt_wf���n��lt_wf���n��Annotanonymous_constructortacticassumption	�PInfo�W�)VMR�W_lambda_1VMR�W_lambda_2VMR�W_lambda_3VMR�WVMC���)αVMC���)s��t₂t₁β�
�α�
�	VMC���5
�\���Z����tacticinteractiveexactFstep�5Fsave_info����has_bindseqVMC�W�)��Fassumptiondecl}permutations_auxrec_main_meta_aux��2�kC����p1H0isp�H1tts�is��������#����l₁�l₂���k������
����������1	�����R�1�����l₁_hd�l₁_tl��#���
h1�t	�\�J�D�J��b�v���������0���J�.���;��

h2�,�\��D���b�6�������D����L�6�
���
�RecFn�����0�����X��4AnnotcheckpointAnnothaveprodlexleft�������������h���i���h�6�i�olt_add_of_pos_left�ordered_semiringto_ordered_cancel_comm_monoid�natordered_semiring�l�onatsucc_pos�hAnnot��Annot��
this�6�q�:�����0�����q���:��������eqmpr��������id�����eqrec���_a���6�q�:���~�i�~�q���:�~�i�o���q�o�(����natsucc_add����prodlexright��������������lt_succ_self��Annotshow
�PInfo���)VMR��VMC��!�)����������������decl��_pack��2�k������
���_x�\��������\������psigmafst	������psigmasnd������k������
�������well_foundedfix	1����has_well_foundedr���has_well_foundedmk���
�p���r�\����,�\��D��J�b�6���Annot�?inv_imagewf	���D���b�4natlt����prodlex_wf����natlt_wf�has_well_foundedwf����_x���F�11���������_F_y������J����-���J����(
�p�(�r�C�����,�\��D���b�6���Annot�?��/�b��8��0����+����+����J�'���J�'fst�snd���	�0���J�����,����-�������]
�p�]�r�\������,�\��D��J�b�6���Annot�?��/�b��3�����\�����a����a�����\�|����\�|�������(����,���,
�p�,�r�]�,�`�D���b�6���Annot�?��E�b��I��K�+��������0�������Vfst_hd�0fst_tl��������]����b���b
�p�b�r�c����J�,�\�J�D�J�R�b�6���IAnnot�?����b��������a����������������������
����������������

���j����d��o���c�
�������J���J�R��}��� ���Annot��Annot���g������� �o� ��� ��� � �z� � �}� Annot��Annot��
���6�q�:������ '�� (�q���:� (� *� '����� 6� /� -� 4���� 6� :��� 2�����6�q�:��� � � �q���:� � � � E��� �(� 6� ,��� (� *��� ,� (� 4��� (Annot��
�PInfo���)VMR��_lambda_1VMR��VMC��$�)�����
_fresh
���
_fresh
���"VMC��
�)�����������well_foundedfixdecl��equations_eqn_1��2�k������
���is��1������������2��� w�f�k������
������well_foundedfix_eq�������� � k� w�PInfo���)EqnL��decl��equations_eqn_2��2�k������
���t�ts�is�� s���&��O�S����%�� z����� �

��� �� ��� �� ��#Annot��Annot���k������
������������� ��&� ����&���&
�p�&�r�(�JAnnot�?����b������&� ����&�"�J�'���(�����,��x�������J����Z���������b���������
�p���r��� �,�\�R�D�R�T�b�6���QAnnot�?��e�b��i���������J� ���J� ���� ���� ��������]������D����D���!
������������������� ���� �
�p� ��r� ����R�T�,�\�T�D�T�d�b�6���SAnnot�?����b����� �4��I���R�!���R�!��!-����!:
���������4��!?�!-�

��� ����R� �����!H�T�
�������T���T�d��W��!U���SAnnot��Annot���g�����Q��!e���!f���!e�!L�!f�!l�z�!i�!l�}�!eAnnot��Annot��
���6�q�:�����I�!{��!|�q���:�!|�!~�!{�!-���!��!��!��!�����!��!����!������6�q�:���!s�!f�!s�q���:�!s�!f�!l�!����!l�(�!��!����!|�!~���!��!|�!����!|Annot��� ��PInfo���)EqnL��decl����2��k������
���������� z���������PInfo���)VMR��VMC��!�)����������������decl��equations_eqn_1��2�k������
������� s������2����f�k������
�������������PInfo���)decl��equations_eqn_2��2�k������
������������� s�� ��!������ �

� ��!���!��#Annot��Annot���k������
����������������2�����PInfo���)decl}permutations_auxrec��2��k������
����!���PInfo���)nspace��VMR��VMC���)���������decl��equations_eqn_1��2�k������
�������!�����2����f�k������
�����equations_eqn_1����PInfo��)EqnL�decl��equations_eqn_2��2�k������
�������������!��"%����� �

� ��"?��"?�#Annot��Annot���k������
�����equations_eqn_2����PInfo��)EqnL�ATTRelab_strategy����decl}permutations_aux��k����p�m�k}permutations_auxrec		_x��_xp�mis���tttspis�IH1���
��
��IH2���
���}foldr		����
��L����y�r���
�J�������snd		�J�L}permutations_aux2		�0�J���+�J��
�PInfo�	�7VMR�	_lambda_1VMR�	_lambda_2VMR�	_lambda_3VMR�	_lambda_4VMR�	VMC��8/�VMC��9?�VMC�
�9���
_fresh
����
_fresh
�����
VMC��9�������foldr_mainVMC�	�7�����decl�	equations_eqn_1��k��"]�	��"��k��"]�"��PInfo�&�7ATTR����&EqnL�&SEqnL�	decl}permutations����kl���r�"����PInfo�'�@VMR�'VMC�'	�@�(��	doc�'List of all permutations of `l`.

    permutations [1, 2, 3] =
      [[1, 2, 3], [2, 1, 3], [3, 2, 1],
       [2, 3, 1], [3, 1, 2], [1, 3, 2]]decl�'equations_eqn_1��k�(�����'��"��k�(�����"��PInfo�*�@ATTR����*EqnL�*SEqnL�'decl}erasep_main_meta_aux��M�kp�_inst_1����Qa_hd�a_tl��R�U�V
�MRecFn�-����PInfo�-�EVMR�-VMC�-�E��/�.��	�-decl�,��M�k�.��/����i��_F�l���2�p��a_hd�0a_tl��2���O�����PInfo�,�EVMR�,VMC�,�E��/�.��	�-decl�,equations_eqn_1��k�.��/����,����k�.��/������"��PInfo�6�EATTR����6EqnL�6decl�,equations_eqn_2��k�.��/�al����"����������"��k�.��/��9�:������"��PInfo�8�EATTR����8EqnL�8decl}erasep��M�k�.��/��"��PInfo�;�EVMR�;VMC�;�E�/�.��,decl�;equations_eqn_1��k�.��/����;����k�.��/��,equations_eqn_1��PInfo�=�EATTR����=EqnL�=decl�;equations_eqn_2��k�.��/��9�:����"������"����#�k�.��/��,equations_eqn_2��PInfo�A�EATTR����AEqnL�Adecl�;_sunfold��M�k�.��/����Q�0��1��R�"��V�"�����PInfo�D�Edecl}extractp_match_1��ka_a��mp��q��k�G�H�#2��q��H�#4��z���q�������������PInfo�F�Idecl�Fequations_eqn_1��k�Ga'�ml'���#;�F����z��#T���k�G�K�m�L���#;��#;�#V�PInfo�J�IATTR����JEqnL�Jdecl�E_main_meta_aux��kp�_inst_1����#;�k�O��P�������#@��#;�#S���a_hd�a_tl�������T�#s�������#O�
�#iRecFn�N����PInfo�N�IVMR�NVMC�N�I��P�O��	
�Ndecl�M��#i�k�O��P����g�#j��_F�j���#s���S�m������J�q��J�S���������#��S����J�����{��#���������a_hd�0a_tl��S�R����������#����#��������#O��P��������������\�a�b��R����T�_�u�b�#��#��_�PInfo�M�IVMR�MVMC�M�I��P�O��	
�Ndecl�Mequations_eqn_1��k�O��P���#4�M����q��

��k�O��P���#4��#4�#��PInfo�W�IATTR����WEqnL�Wdecl�Mequations_eqn_2��k�O��P��Gl���#@�#��������#@�#C�
�#O��#��k�O��P��G�Z���#@��#@�$�PInfo�Y�IATTR����YEqnL�Ydecl}extractp��#i�k�O��P��#��PInfo�[�IVMR�[VMC�[�I�P�O��Mdecl�[equations_eqn_1��k�O��P��#��[���#��k�O��P��Mequations_eqn_1��PInfo�]�IATTR����]EqnL�]decl�[equations_eqn_2��k�O��P��G�Z��#��$�����$�$�$0�k�O��P��Mequations_eqn_2��PInfo�a�IATTR����aEqnL�adecl�[_sunfold��#i�k�O��P����#q�Q��R��#t�#z�#|�$����PInfo�d�Idecl}revzip��kl��o��k�f��}zip		listreverse	�PInfo�e�NVMR�eVMC�e
�N�f��reverse�zipdecl�eequations_eqn_1��k�f����$S�e��$]�k�f����$S�$c�PInfo�m�NATTR����mEqnL�mSEqnL�edecl}product��2�k�3�l₁pl₂�
slist	1����k�3��op�p�
slistbind	���$na�listmap1�����������PInfo�n�SVMR�n_lambda_1VMR�n_lambda_2VMR�nVMC�w�S��
_fresh
��VMC�x�T
�t�
_fresh
���w��VMC�n	�S�p�o�3��x����doc�n`product l₁ l₂` is the list of pairs `(a, b)` where `a ∈ l₁` and `b ∈ l₂`.

    product [1, 2] [5, 6] = [(1, 5), (1, 6), (2, 5), (2, 6)]decl�nequations_eqn_1��2�k�3��op�p�
s���2�$o�n����$��k�3��op�p�
s���$o�$��PInfo���SATTR�����EqnL��SEqnL�ndecl}sigma�u_1�kσ�=l₁pl₂a>�flist	��sigma	��a����k���$���p���$�listbind	���$�a�listmap�����$������sigmamk	������PInfo���Yprt��VMR��_lambda_1VMR��_lambda_2VMR��VMC���Ysnd�
_fresh
����
_fresh
���VMC��
�Z
���
_fresh
���������VMC��
�Y�������������doc��`sigma l₁ l₂` is the list of dependent pairs `(a, b)` where `a ∈ l₁` and `b ∈ l₂ a`.

    sigma [1, 2] (λ_, [(5 : ℕ), 6]) = [(1, 5), (1, 6), (2, 5), (2, 6)]decl��equations_eqn_1����k���$���p���$������$��������$��k���$���p���$����$��$��PInfo���YATTR�����EqnL��SEqnL��decl}of_fn_aux_main_meta_aux��kn�f���m��has_lele���has_le���k������$������$���������$���J��$��/��)�����$��;���
�$�RecFn���0��le_of_lt�partial_orderto_preorder�ordered_cancel_comm_monoidto_partial_order��y��1���mk�
�PInfo���\VMR��VMC���\�������������decl����$��k������$������$���������$���J����_F�
�����$���Q��$���������$�������
�����$��I��������$��Q���
�����$��c���f���$��I���
�����$��S�d�/��d������$��Q���%(�:��f�P�����$��e�����`����\�a�b�����$������o�_�u�b�%B�%R�_�$��c���S�$��c��
�PInfo���\VMR��VMC���\�������������decl��equations_eqn_1��k������$�h�$���l�����������k������$����%���������%��PInfo���\ATTR�����EqnL��decl��_proof_1���m�h�$��$�preorderto_has_le��$����������%��$��PInfo���\decl��equations_eqn_2��k������$�������$�l����%�������%��������$���k������$�������%���������%��PInfo���\ATTR�����EqnL��decl}of_fn_aux��$��k������$��%��PInfo���\VMR��VMC���\��������decl��equations_eqn_1��k������$����%��������������k������$���equations_eqn_1��PInfo���\ATTR�����EqnL��decl��equations_eqn_2��k������$�������%�������%�������%��%��%��k������$���equations_eqn_2��PInfo���\ATTR�����EqnL��decl��_sunfold��$��k������$������$����$������$����%��0���$��%�PInfo���\decl}of_fn_proof_1n��%����le_refl��$��PInfo���`decl����k���f�$���k������$��%�����PInfo���`VMR��VMC���`��������decl��equations_eqn_1��k������$�������&!�k������$����&(�PInfo���`ATTR�����EqnL��SEqnL��decl}of_fn_nth_val��kn�f�$�i��z�k������$����dite	����decidable_lt�zh�&8�
�$����not�&8�v��PInfo���cVMR��VMC���c���������natdecidable_lt	decl��equations_eqn_1��k������$������z�����&J�k������$������z�&T�PInfo���cATTR�����EqnL��SEqnL��decl}disjoint��
�kl₁��l₂pa�has_memmem		���has_mem	���&a���&d�false�PInfo���gVMR��VMC�������doc��`disjoint l₁ l₂` means that `l₁` and `l₂` have no elements in common.decl��equations_eqn_1��k������p�����&r�k������p�(�&y�PInfo���gATTR�����EqnL��SEqnL��PInfo}pairwise�s
ind��kR���C�p�e_1�e_2a�l��a'�H�&a���&d���������ih�
��������n�&��������k���&��&���nil�k���&��&�����cons�k���&�������������&l�2��&����&��e�k���&����&����&����&��k���&����&����&����&��������������&a�0�J�&d�0����&��0����rec���0����decl��drec��k���&����ph�&�����&��������������&���&����
��&������0�������&���k���&����&����&����&������&��&��������&��V_�&��#�������J�������&a���&d�����&�����_h�&�����_�&��������������PInfo���s
ATTR������auxrec��prt��decl��drec_on��k���&����&������&������&���������������0���&a���&d�����&���0���0������&�������k���&����&������'5���'9���'W�'_�'������J��'��'���'_�'�+����PInfo���s
ATTR������auxrec��prt��decl��dcases_on��k���&����&������'5���'9����������'C��'F�0���&������k���&����&������'5���'9���'�'`������J��'��'���'_�'�+��PInfo���s
ATTR������auxrec��prt��decl��rec_on��k���&����&������'5���'6����������'C��'F���'G�'K�1�k���&����&������'5���'6���'��&����PInfo���s
ATTR������auxrec��prt��decl��cases_on��k���&����&������'5���'6����������'C��'F�'t�1�k���&����&������'5���'6���'��'�������J��'��'��������PInfo���s
ATTR������auxrec��prt��gind������prt��recnspace��doc��`pairwise R l` means that all the elements with earlier indexes are
 `R`-related to all the elements with later indexes.

    pairwise R [1, 2, 3] ↔ R 1 2 ∧ R 1 3 ∧ R 2 3

 For example if `R = (≠)` then it asserts `l` has no duplicates,
 and if `R = (<)` then it asserts that `l` is (strictly) sorted.decl}pairwise_cons��k���&�al�iff�'4��and�&��'5�k���&�������intro�'��'�p�'���	��t_1���&�H_1�����H_2heq�&������&��'�a'�H�'����'E����������no_confusionu���'��&��&����&����'����	�&���r�&���e��a�l�n�&�p�&�����������'����'��'���0���'�����'v���'����	�&a���&d�����'�0�(�(hd_eq���0���
�����������&a�I�J�&d�I���tl_eq��J����'��&��Q�I�\����(J�\�0�&��Q�I�0��'���S�	�&a�c�d�&d�c�I�c�S�&��S�Q��������()��(,������(:�J��
�J��(J����S���(_�(b��'��&��c�S�&�Q�I��(|�(}�&��c�S�Q�'���e�	�&a�����&d���S���e�&��e�c�Q��&��I�����Q�	�&a�S�T�&d�S��S�Q��'��(g���I���(��&��S�Q�I�andintro��c�	�&a�e�f�&d�e�Q�e�c�(|�I��������heqrefl�&���_x�'�_a�'����	�&a���&d����&��dcases_on���	�&���(�&���'��(��(��&��'�left�(�right�(��'��&��0����PInfo���xATTR�c����decl}decidable_pairwise��k���&�_inst_1decidable_rel
l�decidable�'5�k���&���)��listrec	����)�&��'4��&��hd�tl�ih�)�&�decidable_of_iff'�&�� ��'����	�&��0��&�}pairwise_cons	��anddecidable�)4�&�listdecidable_ball	������5���PInfo��|	prt�VMR�_rec_1VMR�VMC�+�|	��
_fresh
��2�
_fresh
��1��*	
�+	decidable_of_decidable_of_iffVMC��|	������+decl�equations_eqn_1��k���&���)���)����)Q�k���&���)��&�)�)[�PInfo�4�|	ATTR����4EqnL�4SEqnL�ATTR����class����decl}pw_filter_main_meta_aux��kR�&�_inst_1�)���k�8�&��9�)���Qa_hd�a_tl��R	IH�
�)jRecFn�7����y�H�&��)2�)B�=��)C�)G���PInfo�7��VMR�7VMC�7����9�8���7�<�*	decl�6��)j�k�8�&��9�)���i��_F�l���?�p��a_hd�0a_tl��?���O	�<�����=��>�(A�I��)A��=��!P�5�����c�PInfo�6��VMR�6VMC�6����9�8���7�<�*	decl�6equations_eqn_1��k�8�&��9�)���6����k�8�&��9�)�����)��PInfo�C��ATTR����CEqnL�Cdecl�6equations_eqn_2��k�8�&��9�)xxs����)�����	�<��)���=��>�&����)A��=��)F�5��1���k�8�&��9�)�F�G������)��PInfo�E��ATTR����EEqnL�Edecl}pw_filter��)j�k�8�&��9�)�)�	�PInfo�H��VMR�HVMC�H���9�8��6doc�H`pw_filter R l` is a maximal sublist of `l` which is `pairwise R`.
 `pw_filter (≠)` is the erase duplicates function (cf. `erase_dup`), and `pw_filter (<)` finds
 a maximal increasing subsequence in `l`. For example,

    pw_filter (<) [0, 1, 5, 2, 6, 3, 4] = [0, 1, 2, 3, 4]decl�Hequations_eqn_1��k�8�&��9�)���H����k�8�&��9�)�6equations_eqn_1��PInfo�J��ATTR����JEqnL�Jdecl�Hequations_eqn_2��k�8�&��9�)�F�G����)�����	�<��)��)��k�8�&��9�)�6equations_eqn_2��PInfo�N��ATTR����NEqnL�Ndecl�H_sunfold��)j�k�8�&��9�)���Q�:��;��R	�<��)�����)z
�PInfo�Q��PInfo}chain��
ind��kR�&�C����e_1a���e_2a�b�l������R��0�ih���0��(����n�*�����R��k�S�&��*�Rnil�k�S�&��V�*��Rcons�k�S�&��X�Y�Z������*���*$���k�S�&��T�*�U�*�W�*"�V��f�k�S�&��T�*�U�*�W�*"�X��Y��Z���
��*��0�'��Rrec����0����decl�Rdrec��k�S�&��T���h�*���U�V�*�]���W�X��Y��Z������*�[���*�^�����������\�*&�e�k�S�&��T�*l�U�*r�W�*������\�*&�*R�0���0���a�*���u�V�0_�*N���V�X�0�Y��Z���P��*���[_h�*�I���!Q_�*�Q�I������������PInfo�`��
ATTR�����`auxrec�`prt�`decl�Rdrec_on��k�S�&��T�*l����\�*���U�V��$��#�*m���W�X��Y�0�Z���t��*���[����� ��*t�I�������k�S�&��T�*l����\�*��U�*��W�*��*��V�0_�*���X�0�Y��Z���*���*��[�*�_�*��v�����PInfo�e��
ATTR�����eauxrec�eprt�edecl�Rdcases_on��k�S�&��T�*l����\�*��U�*��W�X��Y�0�Z���t��*������*t�������k�S�&��T�*l����\�*��U�*��W�+�*��X�0�Y��Z���*���*��[�*�_�*��v���PInfo�h��
ATTR�����hauxrec�hprt�hdecl�Rrec_on��k�S�&��T�*����\�*��U�V��*��W�X��Y�0�Z���t��*��[���*����k�S�&��T�*����\�*��U�+.�W�+4�*�����PInfo�j��
ATTR�����jauxrec�jprt�jdecl�Rcases_on��k�S�&��T�*����\�*��U�+.�W�X��Y�0�Z���t��*��+���k�S�&��T�*����\�*��U�+.�W�+O�+=�V�0�f�X�0�Y��Z���*���*��[���,���PInfo�k��
ATTR�����kauxrec�kprt�kgind�R�]�^prt�Rrecnspace�Rdoc�R`chain R a l` means that `R` holds between adjacent elements of `a::l`.

    chain R a [b, c, d] ↔ R a b ∧ R b c ∧ R c ddecl}chain'_main��&��k�S�&��p�
n����truea_hda_tl��+p�*��PInfo�n��VMR�nVMC�n��S�decl�nequations_eqn_1��k�S�&���n����+q�k�S�&��((��+~�PInfo�s��ATTR����sEqnL�sdecl�nequations_eqn_2��k�S�&�al���+{����*i�k�S�&��v�w��(�+��+��PInfo�u��ATTR����uEqnL�udecl}chain'��&��k�S�&��+}�PInfo�x��VMR�xVMC�x��S�doc�x`chain' R l` means that `R` holds between adjacent elements of `l`.

    chain' R [a, b, c, d] ↔ R a b ∧ R b c ∧ R c ddecl�xequations_eqn_1��k�S�&���x����+q�k�S�&��nequations_eqn_1��PInfo�z��ATTR����zEqnL�zdecl�xequations_eqn_2��k�S�&��v�w���+�����*i�k�S�&��nequations_eqn_2��PInfo�~��ATTR����~EqnL�~decl�x_sunfold��&��+z�PInfo����decl}chain_cons��k�S�&�abl��'��*����'����*��k�S�&���������'��+��+�p�+��h	��t_1�t_2����*H_1���H_2������H_3�'��*�����0���*����'�����*���0���p_1�������(:�0����0���(�
������'��*��0�+���*��4�*m���'��'��0�*��0�����J��{�'�����'��*N��+���,���*m��0��'����*����+���a�b�l�Jn�'Gp�*��������(:�������������R�\���\�����'��*�S�Q�I������,3���0��*t�S�Q�0���'��(��I�*�c�S�I����+�����(F�}���}���'��Q���'��*���,-��,[�,0�*t�Q�I�����'��Q�I��,3���,-�,0���Q���(:�S����S���,J�0���(b�����Q����'��*�����e����c�S�Q�,��,����*t�����e���'������e�*����e�c���,l����,G���f�I��(:���Q�������,�c���'��,������e�c�S�,��,��*t������e��'�������*�	����e���*���e�S�Q���,��,��,��c�S�(��,��,����0����������(��*9���_x�+�_a�'���*;�(����*$����'����-�*�������*���)�,�*t��0����PInfo����ATTR�c����ATTR�c��}chainnildecl}decidable_chain_proof_1��k�S�&�a��
��)�*4�)�+q�k�S�&������-'p����e_1�congr_arg����
��)�*4�+qpropext�*4�+q�k�S�&��Viff_true_intro�*4�*m�PInfo����	decl��_proof_2��k�S�&�l_hdl_tl�����-#�)�*����)�'����+��k�S�&������������-W�-7�-P�-U�-:�-P�-U}chain_cons	���PInfo����	decl����k�S�&�_inst_1�)��l��)�*��k�S�&����)�����listrec
	��������)�*$������)�*9���-&�����decidabletrue������l_ih����)�*���0�-~�)�*��(�)�'��0��*N������0��)>�-��-�����PInfo����	prt��VMR��_rec_1VMR��VMC����	����
_fresh
��~�
_fresh
��}�	
��	VMC����	�������S���decl��equations_eqn_1��k�S�&����)������-p������-��k�S�&����)�����&�-p�-��PInfo����	ATTR�����EqnL��SEqnL��ATTR�����classdecidable����decl}decidable_chain'��k�S�&�_inst_1�)l��)�+��k�S�&����)����)����)�+���id��)�+���-�l_hd�l_tl��-��)�+����
�-���������PInfo����	prt��VMR��VMC����	�����S����decl��equations_eqn_1��k�S�&����)����-������-��k�S�&����)���&�-��-��PInfo����	ATTR�����EqnL��SEqnL��ATTR�����classdecidable����decl}nodup��k�����k�&�ne
�PInfo����VMR��VMC����doc��`nodup l` means that `l` has no duplicates, that is, any element appears at most
 once in the list. It is defined as `pairwise (≠)`.decl��equations_eqn_1��k�|�.����.�k���.�.�PInfo����ATTR�����EqnL��SEqnL��decl}nodup_decidable��k_inst_1mlp�)�.�k��m�)W�.	����decidable
������	�PInfo����	prt��VMR��_lambda_1VMR��_lambda_2VMR��VMC����	baVMC����	���
_fresh
���		
VMC����	��������decl��equations_eqn_1��k��m�|�.����.(�k��m���.�..�PInfo����	ATTR�����EqnL��SEqnL��ATTR�����classdecidable����decl}erase_dup��k_inst_1m��k��m�)��.�.'
�PInfo����VMR��_lambda_1VMR��_lambda_2VMR��VMC��������VMC�������
_fresh
��		
VMC������������6doc��`erase_dup l` removes duplicates from `l` (taking only the first occurrence).
 Defined as `pw_filter (≠)`.

    erase_dup [1, 0, 2, 2, 1] = [0, 2, 1]decl��equations_eqn_1��k��m������.;�k��m���.A�PInfo����ATTR�����EqnL��SEqnL��decl}range'_main_meta_aux���
i��������
h�
va_1��
s�
�
�.JRecFn�����PInfo����VMR��VMC��
�������C��decl���.J�����brec_on���
i��_F�below�.[���������.`�.K�����.`�
h���._�/�
va_1����._�;�
s�
���
��.[������
��
�����
��
��
��.[�
����
��
��.j�.x�
��2�PInfo����VMR��VMC��
�������C��decl��equations_eqn_1s��
������
u������.��PInfo����ATTR�����EqnL��decl��equations_eqn_2s�n��
��.�����.�����������.��PInfo����ATTR�����EqnL��decl}range'�.J�.��PInfo����VMR��VMC������doc��`range' s n` is the list of numbers `[s, s+1, ..., s+n-1]`.
 It is intended mainly for proving properties of `range` and `iota`.decl��equations_eqn_1����
������
u��equations_eqn_1�PInfo����ATTR�����EqnL��decl��equations_eqn_2�������
��.�����.����equations_eqn_2�PInfo����ATTR�����EqnL��decl��_sunfold�.J�����.O����
s�.P�.����PInfo����ATTR�c����decl}reduce_optionu_1α=�>option��P��=listfilter_map�!�!�.�id�!�.��PInfo����VMR��_lambda_1VMR��VMC�����VMC���������filter_map_maindecl��equations_eqn_1����=���.������.���=��.��.��PInfo����ATTR�����EqnL��SEqnL��decl}map_head_main_aux_param_0αf��
�����
��������_a_hda_tl�������t��PInfo����VMR��VMC���������decl��equations_eqn_1_aux_param_0�����X
��� �.������h
�j
�.��PInfo���ATTR����EqnL�decl��equations_eqn_2_aux_param_0����xxs�X���.��.��.�x�����	�
�h���j���/�PInfo���ATTR����EqnL�decl}map_headu_1��=���Pe��=������PInfo���VMR�VMC��������decl�equations_eqn_1���=����P��G�/��=����equations_eqn_1�&�PInfo���ATTR����EqnL�decl�equations_eqn_2���=���	�
e�����/�R��/-x��=����equations_eqn_2�&�PInfo���ATTR����EqnL�decl�_sunfold��/��=���P���e����e��������������PInfo���decl}map_last_main_meta_aux_aux_param_0�.�αf��
�.�a_hda_tl����������.��.� �a_tl_hd�a_tl_tl�/P����.��
�.�RecFn����/Y�PInfo���VMR�VMC���������decl�_aux_param_0�.�����
listbrec_on� �'�.��_F�!below�'�'����������#�/p���/P���������#�/p�0��0�����#�/p�����/{ ����/{ �0a_hd�a_tl�/{�#�/p������.����&���#�/p������.�����#�/p������.��������/��� �a_tl_hd�a_tl_tl���#�/p�����������.�I���'�'����/����I�������'�'���e��/��
�/��/��/���PInfo���VMR�VMC���������decl�equations_eqn_1_aux_param_0����.���+�.��.�����.��.��/��PInfo�*��ATTR����*EqnL�*decl�equations_eqn_2_aux_param_0���x�X�/�/�_/���_����/�h�j�/��PInfo�-��ATTR����-EqnL�-decl�equations_eqn_3_aux_param_0���x�����X���/����u�t�u�0�0
����3�����h���j���0�PInfo�1��ATTR����1EqnL�1decl}map_lastu_1�/�=����5�PInfo�4��VMR�4VMC�4�����decl�4equations_eqn_1�5�=���/�4�5�/�/�=���equations_eqn_1�2�PInfo�7��ATTR����7EqnL�7decl�4equations_eqn_2�5�=���/��e�0$S��S�����=���equations_eqn_2�2�PInfo�;��ATTR����;EqnL�;decl�4equations_eqn_3�5�=���3���������0$���������0E�0G�=���equations_eqn_3�2�PInfo�?��ATTR����?EqnL�?decl�4_sunfold�5�/�=���P�/D����������>��/E�/FG�����0Y��>�R���0$���0c�PInfo�B��decl}ilast'_main_meta_aux_aux_param_0�
�G��
�.�����a_hda_tl�����
�0wRecFn�E��PInfo�E��VMR�EVMC�E
�����G��Edecl�D_aux_param_0�0w�G��
�/m�����_F�/q��������������K�/z��/{����������K�/���������K�/������� �����a_hd�a_tl���K�/�������I�/�����/������I�Q���������������/���S��c�e��
�/��0��0���PInfo�D��VMR�DVMC�D
�����G��Edecl�Dequations_eqn_1_aux_param_0�Ga�X�D�P�.��G�Q�h�j�0��PInfo�O��ATTR����OEqnL�Odecl�Dequations_eqn_2_aux_param_0�Gabl�X��0���/�0��G�U�V�W�h��j��0��PInfo�S��ATTR����SEqnL�Sdecl}ilast'u_1�G=��P�G=�D�Y�PInfo�X��VMR�XVMC�X���G�Ddoc�X `ilast' x xs` returns the last element of `xs` if `xs` is non-empty;
it returns `x` otherwisedecl�Xequations_eqn_1�Y�G=�Q���X�Y�/�G=�Dequations_eqn_1�5�PInfo�[��ATTR����[EqnL�[decl�Xequations_eqn_2�Y�G=�U�V�We����1
��//�1�G=�Dequations_eqn_2�5�PInfo�_��ATTR����_EqnL�_decl�X_sunfold�Y�1�G=��P�/>�e����H�I������1
��PInfo�b��ATTR�c���Xdecl}last'_main_meta_aux_aux_param_0α�option�f�g����
�15���16�6a_hda_tl���j���15����15��6�a_tl_hd�a_tl_tl�����15�
�18RecFn�e�.��PInfo�e��VMR�eVMC�e����g��	�edecl�d_aux_param_0�18�g��/l�1;�
_F�/p��1G����n�/p�����1N�����/P�n�/�����15�0�1k�n�/u��/P�15� ����1s�1?�a_hd�a_tl���n�/z��/{�15�.�0�0��p���n�/�����15��/���1��n�/�����15��/��0����1��1I��a_tl_hd�a_tl_tl���n�/�����15��/���0�������15�I��/��1��0���������/���0��15�c��1��
�/��1��1���PInfo�d��VMR�dVMC�d����g��	�edecl�dequations_eqn_1_aux_param_0�g�X�15�d�u!�1?�g�h�1��j�1��1��PInfo�t��ATTR����tEqnL�tdecl�dequations_eqn_2_aux_param_0�ga�X�16�1�.�.��1I�g�y�h�16�j�16�1��PInfo�w��ATTR����wEqnL�wdecl�dequations_eqn_3_aux_param_0�gb���X�1G�1���.��/�1��/�g�}���h�1G�j�1G�1��PInfo�{��ATTR����{EqnL�{decl}last'u_1�g=�?�.��g=�d��PInfo�~��VMR�~VMC�~���g�ddoc�~ `last' xs` returns the last element of `xs` if `xs` is non-empty;
it returns `none` otherwisedecl�~equations_eqn_1��g=���.��~�H�9�g=�dequations_eqn_1�9�PInfo����ATTR�����EqnL��decl�~equations_eqn_2��g=�y���2�2	R�/�9�g=�dequations_eqn_2�9�PInfo����ATTR�����EqnL��decl�~equations_eqn_3��g=�}��e���.���2	��/-�//�2&�//�g=�dequations_eqn_3�9�PInfo����ATTR�����EqnL��decl�~_sunfold��2�g=�?���P�.����2�2
�i�je���j���.�����2$�2��k��l�����.���2	�R��PInfo����ATTR�c���~decl}tfael�
g�����2Vx�H����2V���y�H�2^��'���PInfo����VMR��VMC�����2Vdecl��equations_eqn_1���2V����2f���2V�(�2i�PInfo����ATTR�����EqnL��SEqnL��decl}rotate_match_1��k_a�����p�k���2p�pp�����p���!�-�PInfo����decl��equations_eqn_1��kl₁��l₂p����������k������p�����2��PInfo����ATTR�����EqnL��decl}rotate��kl��n���k��������2���has_modmod�nathas_mod���PInfo����VMR��VMC������������natmod���doc��`rotate l n` rotates the elements of `l` to the left by `n`

    rotate [0, 1, 2, 3, 4, 5] 2 = [2, 3, 4, 5, 0, 1]decl��equations_eqn_1��k�������������2��k����������2��PInfo����ATTR�����EqnL��SEqnL��decl}rotate'_main_meta_aux��k�������k��������a_hda_tl������������R
�2�RecFn������������PInfo����VMR��VMC���������
�w��decl����2��k�����������_F�
�;���������
���Q���r������M����C�/���4�����M�;��a_hd�a_tl�������
���\�J����F�/���������2��;��J�P���x���`����\�a�b����d�f�_���u�b�2��3�_��J��I�}����PInfo����VMR��VMC���������
�w��decl��equations_eqn_1��k���������/���k�������3+�PInfo����ATTR�����EqnL��decl��equations_eqn_2��k����3(���;���k���*�+�36�PInfo����ATTR�����EqnL��decl��equations_eqn_3��k��p���3(�������k��p�����3A�PInfo����ATTR�����EqnL��decl��equations_eqn_4��kalpn��0�3(�����3L����k����p����=�>�3N�PInfo����ATTR�����EqnL��decl}rotate'��2��k�3)�PInfo����VMR��VMC�������doc��rotate' is the same as `rotate`, but slower. Used for proofs about `rotate`decl��equations_eqn_1��k�3'������/���k��equations_eqn_1�=�PInfo����ATTR�����EqnL��decl��equations_eqn_2��k����3a���;���k��equations_eqn_2�=�PInfo����ATTR�����EqnL��decl��equations_eqn_3��k��p���3a�������k��equations_eqn_3�=�PInfo����ATTR�����EqnL��decl��equations_eqn_4��k����p����0�3a�����3��3R�k��equations_eqn_4�=�PInfo����ATTR�����EqnL��decl��_sunfold��2��k������2�������2����R�3a��2��PInfo����decl}choose_x_match_1��kp�lls�pl�&Fxb�_a�'��(��e�$��'��&����k�����������3�������3��(��3��'�����'��3���'��&���
��3���
�)�'��'=�����(��3���orresolve_left�+����mem	���e�3��eqsubst	�_x����0�PInfo����decl��equations_eqn_1��k�����������3����o�3�h₂���3�����0�����(��3��'��
�(��3��
�3���0��3��0����3���3���������k�����������3�������3������3���3��3��PInfo����ATTR�����EqnL��decl��_match_2��k��������_asubtype	�a��'��&����4�����3��k�����������4#subtypecases_on�@�@�����'��(��$����4$�40�4�����'��&��'��Rval�property�4/��A�3�����3��4�0���0�'��'>�(�-�property_left�3�property_right�
��A�4�����'��'�(�3���mk�@��4M��(��3��(��orinr�3��3��PInfo����decl��_proof_1��k��������a�a_mem_ls�&�pa��'��&��'��
��k��������������&�����(��4k�
��4W�+���3����PInfo����decl��equations_eqn_1��k��������������&�����e�4�����'��&��'��-���������4P�����'��(�-��(��4j��
��4��4���������k��������������&�����n�4���A�4��4��PInfo����ATTR�����EqnL��decl��_main_meta_aux��k���_inst_1�l�hp���4"�42�k������������4��Y��������a��'��&��R�4�����'��)0�-���������'��(����$��4H�43����'��&��#�Rfalseelim	�4�existselim�D��4��&oa�h�4�}not_mem_nil	�0�left�&��{�Vl_hd�l_tl���������'��&����-��4H�4?���0�'��'>�(�-����E�
�
��5���
�4Q����'��'�(�3���(��3��(��orinl�3���3�rfl�D�����&F�
�4���0�
�4�RecFn����0���imp�D�����'��'��3��5
���_x�5�3������PInfo����VMR��VMC��������������	��decl����4��k������������4�listbrec_on�D	��4����_F�	below�F	�������4�����'��&��-��4?���0�'��'>�-����4��4����J��������'��'�3��		�5Q������������'��()��4�����'��(A�,)�Z�����������'��)��,)�		�5Q�I���J����Q���Q�'��(��Q�4�S���S�'��(x�S�4�Q���Q�'��(���5����5g����'��()�o�5j�		�5Q��������I���I�'��&a�Q�R�&d�Q�I�5����Q�'��(��5��o�4H�4�I���I�'��5����5��4��5��4��I�5��&o���I���5��4��S�4��(��!]�Ql_hd�l_tl����5����I�'��5��(P�5��		�5Q�Q���R����S���S�'��(_�5��4�c���c�'��(��c�5��4H�5����S�'��(_�&���5��5�
��
��5����
��4P�c���c�'��(������5���(��(^��5��S��5��c���3��c���5�c����&F�
��4��c�S���u���d����e���e�'��(��e�4�������'��&a�����&d��������c��d�\�_��c��f��\�a�a������������'��&a�	���&d�	��4�	���	�'��&a�%E�%F�&d�%E�	�_��u�a�6-�6V�_�5+�c���c�'��(���5��5����c�	�5��3����e���PInfo����VMR��VMC��������������	��decl��_proof_1��k���hp����'��&a��&d����&o�k����	�6��4����'��&g��f�&o�����6��4���4��&m���PInfo�	
��decl��equations_eqn_1��k�������	��6��e�4����'��&����������4��6��	
���k�������	�6��n�6��4��6��6��PInfo�	��ATTR����	EqnL�	decl��_proof_2��k����������x�'��&l�����k����������x�(��6����5���3���5��PInfo�	��decl��_proof_3��k��������hp�4�����'��&��������&F���4�a��4��k���������	�6����6��5+�����'��(��R�47����	�46�3��PInfo�	��decl��equations_eqn_2��k������������	�4�����'��(����$��e�43����'��&��*=�R�6�������5�����7�����4�����'��&���-���	�������&F���4���6�����	�����k������������	�7�n�7�4��7�7�PInfo�	��ATTR����	EqnL�	decl}choose_x��4��k�������6��PInfo�	��VMR�	VMC�	���������decl�	equations_eqn_1��k�������	�6��6��	����6��k��������equations_eqn_1�K�PInfo�	��ATTR����	EqnL�	decl�	equations_eqn_2��k������������	�7�7�7[������71���72�74�7[����7?�k��������equations_eqn_2�K�PInfo�	��ATTR����	EqnL�	decl�	_sunfold��4��k������������4��4��	��	����4��5�5 ���5!�5%�7[��0��5=�PInfo�	 ��decl}choose��k������l�hp�4���k�������	"��	#�4�coe	
�42�coe_to_lift�M
�42�coe_base�M
�42�coe_subtype
��40�7[���5����PInfo�	!��VMR�	!VMC�	!���	#�	"�������decl�	!equations_eqn_1��k�������	"��	#�4����	!����7��k�������	"��	#�4����7��PInfo�	)��ATTR����	)EqnL�	)SEqnL�	!nspace}funcdecl�	*neg��k_inst_1has_neg	asp��k�	,�7��	.p�zahas_negneg	��PInfo�	+��VMR�	+VMC�	+���	.�	,���decl�	+equations_eqn_1��k�	,�7��	.p���	+��7��k�	,�7��	.p���7��PInfo�	3��ATTR����	3EqnL�	3SEqnL�	+decl�	*set_main_meta_aux��k_inst_1��a������k�	7���	8�����&�2�����a_1��R��default	��
�7�RecFn�	6�����a_hd�a_tl�����J�)��a_1����2�7��0���PInfo�	6��VMR�	6VMC�	6#������	8�	7���	6!�	6decl�	5��7��k�	7���	8������>��_F�
���K����J���	>�2��=���2��	>�2�������oa_1��	>�2��2��}�7��I��3��a_hd�a_tl�����	>�
�^�T��	>�
�2��/�[�(Ka_1��	>�85�;��T���P�2����`����\�a�b�����_���u�b�8C�8N�_�PInfo�	5��VMR�	5VMC�	5#������	8�	7���	6!�	6decl�	5equations_eqn_1��k�	7���	8���	5�������k�	7���	8�����8u�PInfo�	D��ATTR����	DEqnL�	Ddecl�	5equations_eqn_2��k�	7���	8k��0�8p������7���8��k�	7���	8�	G��=�>�8��PInfo�	F��ATTR����	FEqnL�	Fdecl�	5equations_eqn_3��k�	7���	8_xas����8p�������~�k�	7���	8�	J�	K������8��PInfo�	I��ATTR����	IEqnL�	Idecl�	5equations_eqn_4��k�	7���	8has�k����8p����������8��k�	7���	8�	N�	O��	P������8��PInfo�	M��ATTR����	MEqnL�	Mdecl�	*set��7��k�	7���	8�8s�PInfo�	Q��VMR�	QVMC�	Q���	8�	7��	5decl�	Qequations_eqn_1��k�	7���	8���	Q�������k�	7���	8�	5equations_eqn_1�R�PInfo�	S��ATTR����	SEqnL�	Sdecl�	Qequations_eqn_2��k�	7���	8�	G��0�8������8��8��k�	7���	8�	5equations_eqn_2�R�PInfo�	W��ATTR����	WEqnL�	Wdecl�	Qequations_eqn_3��k�	7���	8�	J�	K����8��������~�k�	7���	8�	5equations_eqn_3�R�PInfo�	[��ATTR����	[EqnL�	[decl�	Qequations_eqn_4��k�	7���	8�	N�	O��	P����8�����������8��k�	7���	8�	5equations_eqn_4�R�PInfo�	_��ATTR����	_EqnL�	_decl�	Q_sunfold��7��k�	7���	8�����&�7��	9��R�7��8����	;��	<��8�	=����2�8��0���PInfo�	b��ATTR�c���	Qdecl�	*get_main_meta_aux��k�	7�����
��k�	7�����������������8�a_hd�a_tl���a_1��������7���a_hd�a_tl���
�9.RecFn�	e���PInfo�	e�VMR�	eVMC�	e�����	7�	��
�	edecl�	d��9.�k�	7��������������_F�
�����������J�	k�
���������	k�
�����I��	k�
������/�=������7���a_hd�a_tl���Ia_1��	k�9d�;�U���I����7���a_hd�a_tl�J��Q�P����T�c�a�`����\�a�b����f���_�a�u�b�9��9��_�PInfo�	d�VMR�	dVMC�	d�����	7�	��
�	edecl�	dequations_eqn_1��k�	7����	d��/���7��k�	7�����9��PInfo�	r�ATTR����	rEqnL�	rdecl�	dequations_eqn_2��k�	7��aas���9�������k�	7���	u�	v�����9��PInfo�	t�ATTR����	tEqnL�	tdecl�	dequations_eqn_3��k�	7�����t�9��;��7��k�	7�������9��PInfo�	x�ATTR����	xEqnL�	xdecl�	dequations_eqn_4��k�	7��n�aas����9��������9��k�	7���	{��	|�	}��7����9��PInfo�	z�ATTR����	zEqnL�	zdecl�	*get��9.�k�	7���9��PInfo�	~�VMR�	~VMC�	~��	7��	ddecl�	~equations_eqn_1��k�	7���9��	~��/���9��k�	7���	dequations_eqn_1�T�PInfo�	��ATTR����	�EqnL�	�decl�	~equations_eqn_2��k�	7���	u�	v���:������k�	7���	dequations_eqn_2�T�PInfo�	��ATTR����	�EqnL�	�decl�	~equations_eqn_3��k�	7�����t�:�;��9��k�	7���	dequations_eqn_3�T�PInfo�	��ATTR����	�EqnL�	�decl�	~equations_eqn_4��k�	7���	{��	|�	}����:�������:-�k�	7���	dequations_eqn_4�T�PInfo�	��ATTR����	�EqnL�	�decl�	~_sunfold��9.�k�	7�������9=�	h��9E�	i��	j��9F�:���PInfo�	��ATTR�c���	~decl�	*equiv��k�	7��as1pas2���k�	7���	�p�	��m����:-�:P�PInfo�	��VMR�	�VMC�	��	��	��	7�decl�	�equations_eqn_1��k�	7���	�p�	����	����:U�k�	7���	�p�	���(�:^�PInfo�	��ATTR����	�EqnL�	�SEqnL�	�decl�	*pointwise_main_meta_aux��2���k�3�����	7��_inst_2inhabited2f���������	5�	��k�3�����	7�:j�	��:l�	��:n����	5�I	�0��J����V1��������V�:o���a_hd�a_tl�K�:���}map1I��0��7����m�a_hd�0a_tl��:}���M���:�}map	I��0x��Rdefault2����a_hd_1�a_tl_1�S�:����8��&�
�:wRecFn�	������0��PInfo�	��VMR�	�_lambda_1VMR�	�VMC�	���	��
_fresh
���
_fresh
��VMC�	�/����	��	��	7���3���	���	�	���-
	�	�decl�	���2���:w�k�3�����	7�:j�	��:l�	��:n����	5���0��J��K����J_F������M����M����U�	����I��J��s�	�I�1I�X	�Q��R�	����S��T��	��	�S���	����Q��R��}�����:}�Q��}���:��:����Ia_hd�Qa_tl�	��:��:��:��c�S��7��e�Q�m�ca_hd�Qa_tl�T�	����c��d��~�	�c�&�:}�c��~�:���:��:��e�S�	��e�5��:��e�Q��a_hd_1�ca_tl_1���:��	�e�8�e�Q�����������	����������������������������%F���%E�	�%E����	���;�;2���PInfo�	��VMR�	�VMC�	�/����	��	��	7���3���	���	�	���-
	�	�decl�	�equations_eqn_1��2���k�3�����	7�:j�	��:l�	��:n�I��	���2��������`�����k�3�����	7�:j�	��:l�	��:n��\���\��;c�PInfo�	��ATTR����	�EqnL�	�decl�	�equations_eqn_2��2���k�3�����	7�:j�	��:l�	��:nb�bs�	5�;X�:o�;Z�0�����{���:����7��0��;��k�3�����	7�:j�	��:l�	��:n�	���	��	5�;m�:o�;o�:o�;��PInfo�	��ATTR����	�EqnL�	�decl�	�equations_eqn_3��2���k�3�����	7�:j�	��:l�	��:na�as��;y�;���`��:��0��	��0���:��0����k�3�����	7�:j�	��:l�	��:n�	���	���;��;��;��PInfo�	��ATTR����	�EqnL�	�decl�	�equations_eqn_4��2���k�3�����	7�:j�	��:l�	��:na�as�b�bs�K�;X���;Z���0����'s�:��8�0�2�;��k�3�����	7�:j�	��:l�	��:n�	���	���	���	��K�;m���;o���;��PInfo�	��ATTR����	�EqnL�	�decl�	*pointwise��2���:w�k�3�����	7�:j�	��:l�	��:n�;`�PInfo�	��VMR�	�VMC�	���	��	��	7���3��	�decl�	�equations_eqn_1��2���k�3�����	7�:j�	��:l�	��:n�;Y�	���2��������;b�;e�k�3�����	7�:j�	��:l�	��:n�	�equations_eqn_1�`�a�b����PInfo�	��ATTR����	�EqnL�	�decl�	�equations_eqn_2��2���k�3�����	7�:j�	��:l�	��:n�	���	��	5�;y�;��0�����{�;��;��k�3�����	7�:j�	��:l�	��:n�	�equations_eqn_2�`�a�b����PInfo�	��ATTR����	�EqnL�	�decl�	�equations_eqn_3��2���k�3�����	7�:j�	��:l�	��:n�	���	���;y�<���;��;��k�3�����	7�:j�	��:l�	��:n�	�equations_eqn_3�`�a�b����PInfo�	��ATTR����	�EqnL�	�decl�	�equations_eqn_4��2���k�3�����	7�:j�	��:l�	��:n�	���	���	���	��K�;��;����0����'s�:��;��<I�k�3�����	7�:j�	��:l�	��:n�	�equations_eqn_4�`�a�b����PInfo�	��ATTR����	�EqnL�	�decl�	�_sunfold��2���:w�k�3�����	7�:j�	��:l�	��:n����	5�:��	��0�	���:��	���	��S�:��:��;������0��PInfo�	��ATTR�c���	�decl�	*add�αk_inst_3�
�_inst_4�
�����	�k�	��<��	��<��	*pointwise			inhabitedmk	�
��<��
��PInfo�	��VMR�	�VMC�	���	��	��	��	�decl�	�equations_eqn_1��	�k�	��<��	��<���<��	���<��	�k�	��<��	��<���<��<��PInfo�	��ATTR����	�EqnL�	�SEqnL�	�decl�	*sub�αk_inst_3�<�_inst_4has_sub	�<��	�k�	��<��	��<��<�has_subsub	�PInfo�	��VMR�	�VMC�	���	��	��	��	�decl�	�equations_eqn_1��	�k�	��<��	��<��<��	���<��	�k�	��<��	��<��<��<��PInfo�	��ATTR����	�EqnL�	�SEqnL�	�decl}mmap_filter_match_1β�
�t'�
g_aoption�
g�	��
��	��<��	��<���	��<��
g��<�� �<��
���PInfo�	��decl�	�equations_eqn_1�	��
��	��<��
g�	��	��
��	��<�&�<�(�<��<��PInfo�	��ATTR����	�EqnL�	�decl�	�equations_eqn_2�	��
��	��<�x�<��<��
��	��
��	��<��	�&�<�(�<��<��PInfo�	��ATTR����	�EqnL�	�decl�	�_main_meta_aux_aux_param_0�2m��
��_inst_1monad1α�	��
�f���<����<��	��=�	��=�	��	��
��	��=��1�	�������<��	3�=return1���<��
ta_hd�a_tl���	3�0�
g� 1�0��1�0��<���=�b�=$�=��= ��0�
g��=,
�=RecFn�	���0����	��=,�=���
g��<���PInfo�	��VMR�	�_lambda_1VMR�	�_lambda_2VMR�	�VMC�	��5�	��
_fresh����
_fresh���	

VMC�
��	��
_fresh����
_fresh����
�
_fresh����	��	�
VMC�	����	��	��
��	��	��	��


�

decl�	�_aux_param_0�2�=�	��=�	��=�	��	��
��	��=�listbrec_on�g�
��=���_F�
below�g�i�����=��/P�
�=Q������=9��g�i�0��/{�
�=Q������
g��=_�
�=Q�0��/{��
g�0�/��	3�=i�=���=h�
t�0a_hd�0a_tl���
�=Q�����I�
g��/��	3�=x�=�I�= �I��<���=w���	��=��=�Q�= �Q�I�
g��=��	�����S�
g���j�i�����	��	�������	��	��	���0����
g�S�	��	��	��=��=��	��	��=��=�S�Q�=��<���PInfo�	��VMR�	�VMC�	����	��	��
��	��	��	��


�

decl�	�equations_eqn_1_aux_param_0�2�	��=�	��=�	��	��
��	��=�	I��<��	��
�2���_�=���<��
t�	��=�	��=�	��	��
��	��=�	_�=��	a�=��=��PInfo�
�ATTR����
EqnL�
decl�	�equations_eqn_2_aux_param_0�2�	��=�	��=�	��	��
��	��=ht���	I�=�=������0
�=��= ���<���<�x�	��=��=#�=�=�=��0�����	��=�=��0�=,�<���	��=�	��=�	��	��
��	��=�
�
���	_�=�	a�=�=��PInfo�
�ATTR����
EqnL�
decl}mmap_filter�2u_1�	��=�	��=�	�=�	��
��	��=�e�=�	��=�	��=�	�=�	��
��	��=�	��
 �m���PInfo�
�VMR�
VMC�
��	��	��
��	��	��	��	�doc�
Filters and maps elements of a listdecl�
equations_eqn_1�2�
 �	��=�	��=�	�=�	��
��	��=�=��
�2�
 �����=��	��=�	��=�	�=�	��
��	��=�	�equations_eqn_1�p�o���PInfo�
"�ATTR����
"EqnL�
"decl�
equations_eqn_2�2�
 �	��=�	��=�	�=�	��
��	��=�
�
���=��>1�����0G�=��	��=��=��>1�0�����>	�	��=�	��=�	�=�	��
��	��=�	�equations_eqn_2�p�o���PInfo�
&�ATTR����
&EqnL�
&decl�
_sunfold�2�
 �>%�	��=�	��=�	�=�	��
��	��=�e��m�n�����=�=�	���	����=�='�	��=$�=.�>1��0����=?�PInfo�
)�decl}traverse_main_meta_aux_aux_param_0��2F�k�_inst_1applicative	1αβkf������
.�>��
/�>��
1�
2k�
3�>���=
������	3�>�	1�applicativeto_has_pure	1����a_hd�a_tl���	3�0�has_seqseq	1�0�
4to_has_seq	1�0���functormap	1�0�
4to_functor	1�0������
�>�RecFn�
,�0�����PInfo�
,� VMR�
,_lambda_1VMR�
,VMC�
>� ��VMC�
,'� ��
3�
2�
1�
/�
.�	
�
,�
>


decl�
+_aux_param_0��2�>��
.�>��
/�>��
1�
2k�
3�>���=N�>����_F�=R����>���/P�
@�=V������=\��/{�
@�=]������>��
@�=g��/{��J�/��	3�>��>���>����J�{a_hd�0a_tl���
@�=v����I��=|�	3�>��>��I�>��I����>��I�>��I���A�����	�����Q��=������	��	��������	��	��	����e�R�	��	��	��>��?�	��PInfo�
+� VMR�
+VMC�
+'� ��
3�
2�
1�
/�
.�	
�
,�
>


decl�
+equations_eqn_1_aux_param_0��2�
.�>��
/�>��
1�
2k�
3�>��	I�p�
+�
E��2���_�>���>���p���
.�>��
/�>��
1�
2k�
3�>��	_�?+�	a�?+�?3�PInfo�
D� ATTR����
DEqnL�
Ddecl�
+equations_eqn_2_aux_param_0��2�
.�>��
/�>��
1�
2k�
3�>�xxs���	I�>��?-�����0
�>���>������>���>������x�?O�
.�>��
/�>��
1�
2k�
3�>��
I�
J���	_�>��	a�>��?P�PInfo�
G� ATTR����
GEqnL�
Gdecl}traverse��2u_1�
.�>��
/�>��
1=�
2k�
3�>��e�>��
.�>��
/�>��
1=�
2k�
3�>��
+�
L�s�t���PInfo�
K� prt�
KVMR�
KVMC�
K� �
3�
2�
1�
/�
.�
+decl�
Kequations_eqn_1��2�
L�
.�>��
/�>��
1=�
2k�
3�>��?,�
K��2�
L�����?:�
.�>��
/�>��
1=�
2k�
3�>��
+equations_eqn_1�x�v�w���PInfo�
N� ATTR����
NEqnL�
Ndecl�
Kequations_eqn_2��2�
L�
.�>��
/�>��
1=�
2k�
3�>��
I�
J���?J�?������0G�?`�?��
.�>��
/�>��
1=�
2k�
3�>��
+equations_eqn_2�x�v�w���PInfo�
R� ATTR����
REqnL�
Rdecl�
K_sunfold��2�
L�?{�
.�>��
/�>��
1=�
2k�
3�>��e�>o����>��>��
6��
7���>��>��?��0�����PInfo�
U� decl}get_rest_main_meta_aux��k_inst_1m�p���l��k�
Ym�p������l��?���?��|��a_hd�a_tl���l��v�a_hd�a_tl������l��?��|��
a_hd_1�a_tl_1���l�J��3���&��?�
�?�RecFn�
X�0��v�J�PInfo�
X�'VMR�
XVMC�
X!�'���
Y��
��	�
Xdecl�
W��?��k�
Ym�p���g�����?���_F�j�����?�������J�
`�������l��Y����
`�g�����l�J�l��
`�R�����@�4�=���@��@�|��Da_hd�a_tl���@�v�Ja_hd�a_tl��
`�[����J�l�R�1��I��J�@7��@/�|�J�!-a_hd_1�Ia_tl_1�R��l�T���S��;�@D�P��T��d�l�f����S��T�\�_��S��d��\�a�b�������l��_��u�b�@O�@a�_�v�T�PInfo�
W�'VMR�
WVMC�
W!�'���
Y��
��	�
Xdecl�
Wequations_eqn_1��k�
Ym��lp�
W������|p���k�
Ym��@���@��@��PInfo�
h�'ATTR����
hEqnL�
hdecl�
Wequations_eqn_2��k�
Ym�����?��@������v��k�
Ym�����?���?��@��PInfo�
j�'ATTR����
jEqnL�
jdecl�
Wequations_eqn_3��k�
Ym����@��@�����?����k�
Ym����@��@��@��PInfo�
l�'ATTR����
lEqnL�
ldecl�
Wequations_eqn_4��k�
Ymxl�y�l₁���?��@����e�
�����2�?��@��?��k�
Ym�
o�
p��
q��
r���?���?��@��PInfo�
n�'ATTR����
nEqnL�
ndecl}get_rest��?��k�
Ym�@��PInfo�
s�'VMR�
sVMC�
s�'�
Y��
Wdoc�
s`get_rest l l₁` returns `some l₂` if `l = l₁ ++ l₂`.
 If `l₁` is not a prefix of `l`, returns `none`decl�
sequations_eqn_1��k�
Ym�@��
s������@��k�
Ym�
Wequations_eqn_1�z�PInfo�
u�'ATTR����
uEqnL�
udecl�
sequations_eqn_2��k�
Ym����@��@������@��k�
Ym�
Wequations_eqn_2�z�PInfo�
y�'ATTR����
yEqnL�
ydecl�
sequations_eqn_3��k�
Ym����@��@�����@��k�
Ym�
Wequations_eqn_3�z�PInfo�
}�'ATTR����
}EqnL�
}decl�
sequations_eqn_4��k�
Ym�
o�
p��
q��
r��@��@����e�
�@��A	�?��k�
Ym�
Wequations_eqn_4�z�PInfo�
��'ATTR����
�EqnL�
�decl�
s_sunfold��?��k�
Ym�p���?��
\��
]��?��
^��
_��?��?��@��0��?��PInfo�
��'EndFile