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�:��initlogicrelator��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_assocdeclsetoidextu_1αssetoidtaabiffsetoidreq����setoidcases_on���
�	#
!s_ra�
s_iseqvequivalence
��!�"	�mk<=!"�"��<�		>O!
PN>N

t_r�"�<6t_iseqv9<��N�O	
>m"!noid_rhsOSQ
this��O�m6!
eqrec�m�6"p�_x9�eq��
	>�mO���>�ON��9m"�����	����eqrefl�>�N<AnnotcheckpointAnnothavefunextOxO�!aOfunextm�m6"bmpropext<
�PInfo~declquotinhabitedu_1αra��6_inst_1inhabited��quot
�����inhabitedmk
�quotmk
default
�PInfo�	prt�VMR�VMC�	���decl�equations_eqn_1�������������������PInfo�	ATTR_refl_lemma���EqnL�SEqnL�ATTRinstance���class����decl�hrec_on₂_proof_1�u_2u_3�β����6rb�(φ���quot�fa
b
�"
�!cba!b₁!b₂"�!heq
!�O<�5N"
�B�D�Ha"b₁"b₂<pb"�>"�mN�5O<!�Y�[�_���&��(��(��0��;��S�"�"�<��U�I�PInfo�decl�_proof_2������&��(��(��0qb�-��!�!�<!�5"
cab!a₁<a₂N���>"�W�[
"�W�����<�<�N���><��O�5mN�`�����ea₁Na₂OpaN_x�+mN�>N��mquothrec_on
�O_x�+�OO���
"������<"N�������O��"�������<!"���&��(��(��0��-����������N�O���quotinduction_onmN��"bmheqtrans
���5�O���������������H����������������������
eqmpr�>������trueideq6������heq_self_iff_true
���trivialAnnotcalc
!Annot�
��>����������9���8���%����+Annot��PInfo�decl�������&��(��(��0qa�
��+
��"�"
�N"�5<!��"�N�O����><������<���h����N�N�O����>�����`�����e!
���&��(��(��0��Y��[��e��t���quothrec_on

O<_x�O<�

�O��O<��+O<�m
�����mON<"����ON<"!�PInfo�prt�VMR�_lambda_1VMR�
VMC�
�_fresh����_fresh����_fresh���quothrec_onVMC�

������������decl�equations_eqn_1������&��(��(��0��Y��[��e��t���eq
������ON<"!
�����&��(��(��0��Y��[��e��t���eqrefl
�����PInfo�ATTR����EqnL�SEqnL�decl�map_proof_1�����&��(��(f�hrelatorlift_fun



x!y"h₁�=eq�+<!�a���a����&��(��(�������!�"��=quotsound<!����PInfo�(decl������&��(��(��������!�+!���&��(��(������quotlift
!�!�"�=�[x!�7���!
�PInfo�(prt�VMR�VMC�(�������doc� Map a function `f : α → β` such that `ra x y` implies `rb (f x) (f y)`
to a map `quot ra → quot rb`.decl�equations_eqn_1�����&��(��(�����������!
�/���&��(��(���������>�PInfo�
(ATTR����
EqnL�
SEqnL�decl�map_right����ra'�(ha₁a₂����)�Y�����(�
�Tquotmap

id
�PInfo�,prt�VMR�_lambda_1VMR�VMC�.	aVMC�,�
�����doc�If `ra` is a subrelation of `ra'`, then we have a natural map `quot ra → quot ra'`.decl�equations_eqn_1������(�
�T�
�V���c�����(�
�T�
�V�n�PInfo�,ATTR����EqnL�SEqnL�declquotientinhabited��sa_inst_1��quotient
�����
�~quotientmk
��PInfo�6	prt�VMR�VMC�6	���quotientmkdecl�equations_eqn_1�������������������PInfo�!6	ATTR����!EqnL�!SEqnL�ATTR����classinhabited���decl�hrec_on₂_proof_1��u_3���&�sbsetoidφ��|�quotient�.fa
b
��"
�!ca₁!b₁!a₂<b₂<�has_equivequiv
Osetoid_has_equiv
O<��3O�4O<�><���O!��mN
"!
<������_x!_x<_xNpP<�>"��mN��O<!"�����<���&��&���(���*���-���5!�6<�7N�8����setoidreflO<�PInfo�$8decl�#_proof_2���%���&��&���(���*���-��_x"_x"_x<psetoidrN"�>"�����`����e���&��&���(���*���-���<"�="�><�?��Isetoidrefl
mN�PInfo�;8decl�#���%���&��&���(��qa�|
qb��
�*�+"�,"
��N"��<!�-�.<�/<�0O�1O�������O�������O�>O����!���m
��O�S�W���I���&��&���(���D�9�E�;�*�E�-�g��N<	N"�<!
�$���%N<"!
�;���%N<"!
�PInfo�#8prt�#VMR�#_lambda_1VMR�#	VMC�F8��VMC�#	8	�-�*�E�D�(�&����F�F�decl�#equations_eqn_1���%���&��&���(���D�9�E�;�*�E�-�g���I�#���%N<"!
�����&��&���(���D�9�E�;�*�E�-�g���I���PInfo�H8ATTR����HEqnL�HSEqnL�#decl�map�����&��&��f��h����
��
������|!��!���&��&���J���K���:	!�
�PInfo�I@prt�IVMR�I_lambda_1VMR�IVMC�L@��VMC�I@�K�J�&����L�L�doc�I Map a function `f : α → β` that sends equivalent elements to equivalent elements
to a function `quotient sa → quotient sb`. Useful to define unary operations on quotients.decl�Iequations_eqn_1�����&��&���J���K���6���I��!
�����&��&���J���K���G�����PInfo�N@ATTR����NEqnL�NSEqnL�Idecl�map₂_proof_1��u_4���&��&��γ�Qscsetoid+f�!�!h��

++""������"��"
��++!!��!��!�3+�4+x₁<y₁<x₂Oy₂Oh₁�Kh₂�Q�+quot+O�A+ONquotmk+O���
�#<���&��&���R���S���U���V��W<�X<�YO�ZO�[�K�\�Qquotsound+O��$�(��
�PInfo�PHdecl�O���Q���&��&���R���S���U���V���|<!���<!quotient+!
���&��&���R���S���U���V�quotientlift₂
+<"�V!
x<y<�+!
�Q�P���Q<"!
�PInfo�OHprt�OVMR�O_lambda_1VMR�OVMC�g	J�f�e�_fresh
����_fresh
����VMC�OH�V�U�S�R�&����g�lift₂doc�O Map a function `f : α → β → γ` that sends equivalent elements to equivalent elements
to a function `f : quotient sa → quotient sb → quotient sc`.
Useful to define binary operations on quotients.decl�Oequations_eqn_1���Q���&��&���R���S���U���V�����Q�Z�O123<"!
�{���&��&���R���S���U���V��123�Z���PInfo�pHATTR����pEqnL�pSEqnL�Odecl�map₂'u_1u_2u_3αβ�&γ�.sasb��scsetoid�tf�!�!!h���r9�s8;""��������::88!!

�
��38
�48
��R
��T
quotient8<
�u�v�&�w�.�x���y���z���|���}��quotientmap₂9:8<"
!�PInfo�qMprt�qVMR�qVMC�q
M�}�|�z�y�x�w�v�u�Odoc�qA version of `quotient.map₂` using curly braces and unification.decl�qequations_eqn_1�r�s�t�u�v�&�w�.�x���y���z���|���}����r�s�t���q<=><"!
���u�v�&�w�.�x���y���z���|���}���<=>�����PInfo��MATTR�����EqnL��SEqnL�qdeclquotienteq��rxy�h�����������������intro��quotientexact
quotientsound
�PInfo��UATTRsimp����declforall_quotient_iffu_1�rsetoidDp�quotientD6a�.a�D���+���-���1��5�<h�5x�7
h�<a�.quotientinduction_onC
�PInfo��Xdeclquotientlift_beta�����&sf�hab
���!��!��!��Px
��
quotientlift
!
��!�$���&�����X���d��
rfl
�o�PInfo��\ATTR�����ATTR������declquotientlift_on_beta�����&sf�Xh�dx
�equotientlift_on
!
�n�$���&�����X���d��
�y���PInfo��_ATTR�����ATTR������ncompquotoutdecl����r�q���������classicalsome
x�h�U�quotexists_rep
�PInfo��ddoc��Choose an element of the equivalence class using the axiom of choice.
 Sound but noncomputable.decl��equations_eqn_1����������h��������������u���PInfo��dATTR�����EqnL��SEqnL��declquotunquot��r���������
��unchecked_cast
���PInfo��i	VMR��VMC��i	���unchecked_castdoc��Unwrap the VM representation of a quotient to obtain an element of the equivalence class.
 Computable but unsound.declquotout_eq��r�q���h������������classicalsome_spec
�����PInfo��kATTR������ncompquotientoutdecl����s��|�����	�PInfo��pdoc��Choose an element of the equivalence class using the axiom of choice.
 Sound but noncomputable.decl��equations_eqn_1�����h�����������u�����PInfo��pATTR�����EqnL��SEqnL��declquotientout_eq��sq���h�~������������]out_eq
	�PInfo��rATTR������declquotientmk_out��sa���������������quotientout_eq
��PInfo��tdeclpi_setoid_proof_1u_1u_2ια��&_inst_1i���4andreflexive����i�$a�b���i
�
��$�4�symmetricJ��&transitiveJ��&����������intro�'�0a�i����$�4�5�+�/a�b�h����
�����!�/��"���/�$�4i!setoidsymmI�/���$�4a�b�c�@h₁���A����"���<�<��$�4h₂���V����<�W��N�N�W�$�4i<setoidtransI�W��/���$�4�PInfo��w	decl��������������setoidJ����������J���������
��������$�4�������PInfo��w	prt��VMR��VMC��w	������decl��equations_eqn_1�������������J�������������������M�����PInfo��w	ATTR�����EqnL��SEqnL��ATTR�����class������ncompquotientchoicedecl��u_1u_2ι�+α���SisetoidQ�4fiquotientQ�$�4quotient��Q���SQi����$���+�����������T���i�outQ��$�4�PInfo��~decl��equations_eqn_1�������+�����������T�������������+�����������T�����PInfo�~ATTR����EqnL�SEqnL��declquotientchoice_equ_1u_2ι�+α��_inst_1��f���������i����$�4����+��������quotientsound�W��
���������
���������
�����$iquotientmk_outW�
�!�/���4�PInfo�
�declnonempty_quotient_iff��snonempty
��������_x�_a��~nonemptydcases_on
�����
val�~_x�8�!quotientinduction_on

�'nonemptyintro

_x�_a���(���%�!~�<�/�%��
�PInfo��decltruncuα�*�O�+�Oquot^_x_x��PInfo�)�VMR�)VMC�)�+doc�)`trunc α` is the quotient of `α` by the always-true relation. This
 is related to the propositional truncation in HoTT, and is similar
 in effect to `nonempty α`, but unlike `nonempty α`, `trunc α` is data,
 so the VM representation is the same as `α`, and so this can be used to
 maintain computability.decl�)equations_eqn_1�*�+�O��*�O�)_�U�+�O�_�O�Z�PInfo�0�ATTR����0EqnL�0SEqnL�)decltrue_equivalence��9�T��5��
�T���
�T��
�T_x�+�5�k�o_x_x_x_x_x��+_x_x_x_x�6�7
�_x�6
�7!��+�PInfo�1�nspacetruncdecl�=mk��atrunc
��?��-�.��PInfo�>�VMR�>VMC�>��?�doc�>Constructor for `trunc α`decl�>equations_eqn_1���?�h���>�����?�u�����PInfo�B�ATTR����BEqnL�BSEqnL�>decl�=inhabited��_inst_1������D���
������PInfo�C�	prt�CVMR�CVMC�C�	�D��>decl�Cequations_eqn_1���D�����C�����D��������PInfo�F�	ATTR����FEqnL�FSEqnL�CATTR����Cclassinhabited�C��decl�=lift_proof_1�����&f�cab����$ab
_x��_������&�J���K���N�O
�P���PInfo�I�decl�H�����&�J���K��������&�J���K�����I���PInfo�H�VMR�HVMC�H���K�J��doc�HAny constant function lifts to a function out of the truncationdecl�Hequations_eqn_1�����&�J���K���6���H�������&�J���K���G�����PInfo�R�ATTR����REqnL�RSEqnL�Hdecl�=ind����6�a��q���$��T��quotind
���PInfo�S�decl�=lift_beta�����&f��c��a����
��
�$���&�Z���[���\�x�	�PInfo�Y�prt�YATTR����Ydecl�=lift_on�����&q��f�Xcab
�e��$���&�^���_�X�`�	!�	
�PInfo�]�prt�]VMR�]VMC�]��`�_�^���Hdecl�]equations_eqn_1�����&�^���_�X�`�	!���]��
�	)���&�^���_�X�`�	!��	4�PInfo�d�ATTR����dEqnL�dSEqnL�]ATTRreducibility���]ATTRelab_strategy���]decl�=induction_on���q��ha�����h���i���j�	G�=ind
�PInfo�g�prt�gATTR�f���gdecl�=exists_rep��q��Exists
a�h������n�������PInfo�m�decl�=induction_on₂�����&C����trunc6q₁��q₂�	cha
b

��"�=mk!����&�r�	f�t���u�	g�v�	ptruncinduction_on
!_x��!�a₁!truncinduction_on!_x�	c!!��<�4�PInfo�q�prt�qATTR�f���qdecl�=eq��a��b���	W���������truncinduction_on₂

_x��_x���h��
xyquotsound

���+�PInfo���prt��decl�=subsingleton��subsingleton
���subsingletonintro
��trunceq
�PInfo���	prt��VMR��VMC���decl��equations_eqn_1����	�����	����	��	��PInfo���	ATTR�����EqnL��SEqnL��ATTR�����class������decl�=bind_proof_1�����&f��	dab���	c��$���&���	�����trunceq��$�PInfo���decl�������&q������	g�	g���&�������	��	/�	g�����PInfo���VMR��VMC����������Hdecl��equations_eqn_1�����&�������	����	g�����	����&�������	��	<�	g�	��PInfo���ATTR�����EqnL��SEqnL��decl�=map�����&f��q���	g���&���������	�functioncomp
�	g�	k�PInfo���VMR��_lambda_1VMR��VMC���@x�_fresh
�(p�>VMC�������������decl��equations_eqn_1�����&���������	������
���&���������	��
�PInfo���ATTR�����EqnL��SEqnL��decl�=monadu_1monad��qtruncqmonadmkqq�
applicativemkqq�
functormkqq�
α�+β�+f��x�
truncbindrrfunctioncomprrr�
#truncmkrα�+β�+�
(a���
�
#���
7���
�
$�
(�
�
,functionconstrrhas_puremkqq�
�
,has_seqmkqq�
α�+β�+f�
��x�
#�
$��
_x���
4
Annotinfix_fnhas_seq_leftmkqq�
α�+β�+a�
<b�
<�
g�
4a
�
Khas_seq_rightmkqq�
α�+β�+a�
<b�
<�
l�
n���
K�
�idrhas_bindmkqq�
�
$�PInfo���	prt��VMR��_lambda_1VMR��_lambda_2VMR��_lambda_3VMR��_lambda_4VMR��_lambda_5VMR��_lambda_6VMR��_lambda_7VMR��_lambda_8VMR��_lambda_9VMR��_lambda_10VMR��_lambda_11VMR��_lambda_12VMR��_lambda_13VMR��_lambda_14VMR��_lambda_15VMR��_lambda_16VMR��_lambda_17VMR��VMC���	�+VMC���	���_fresh
�+��>VMC���	������������VMC���	���_fresh
�+�functionconst�>VMC���	������������VMC���	���_fresh
�,�>VMC���	���_fresh
�,����VMC���	������������VMC���	�����>VMC���	���_fresh
�,�>VMC���	���_fresh
�,����VMC���	����������������VMC���	�VMC���	�������>VMC���	���_fresh
�,�>VMC���	���_fresh
�,
����VMC���	����������������VMC���	�����>��������decl��equations_eqn_1���q�
�����
��t�
�
��PInfo�	�	ATTR����	EqnL�	SEqnL��ATTR�����class������decl�=is_lawful_monadu_1is_lawful_monad�v�
�
�is_lawful_monadmkvv�
�
�is_lawful_applicativemkvv�
monadto_applicativevv�
�
�is_lawful_functormkvv�
applicativeto_functorvv�
�
�α�+β�+rflva���
<�
B�
Pα�+q�
9trunceqw�
4�
�α�+β�+γ�+g�Xh�Xx�

�eqw�
B�
4!�
(!
�
^�
�
����
��eqtrans6�
��
��
g!�
,a!
�
��
��a�
B�)�
�e_1�
��
!�(�
"�(�
<e_2�
��
Ncongrwx�
O6�
��
�!�
�
congr_argwwx�
��(�
�6!
�
��
��
��%symmw�
B�
��
���
��
��
��
$�
��
�
_x�
��
4"
Annot���
�����$eqrecw�
B�
�_a�
B��
��
��
g"
�
,�("!�
("!
��5�,�;eqreflx6��"��"�
��
��
B�"��$����$��
��$�
��
����"�
��J�� �
��
��4w�
B�
���V�eq_self_iff_truew�
B�
��+�
��
��'w�
B�
��
��
g���
��
4�(

�(���/�
��
,�y�
,���
��v�
g
��
�
�����v�
�����cfunctorvv�
α�+β�+�(���(�Xe_4�
����(�
��(�
�e_5�
��
��,ww�
��
�functormapvv�
N<"!��
�-ww�(<<�(�
��
�!
���
Q
�`�y�
�����
����
���,���
��,�
$��
��
�/���!Annot���
��������)�
����2�
���
��-!�
,�(""���
����D�����������
��
�������������
����,�
��
���)�
��)�
�e_1���(�
��(�
�e_2�
��
��
m6�
��!�

���(�6!
�
���
��������
��
��`�
��
�����g�
��
��+�������
������
��
$�y�
�/�y�
���Annot�������;�F�*���2�
B��,�����
����>�N�D�;�D��D���J�D��F����F��
��F�
��������D���J�?�B�����a����f��h���+��:��������
���
��?�/�y�
$��
��x���
$<!�@<�
,"�4�?�@�y��x�����
(<!�
��
,!��"!�������u���?
�/�y�@��!���/����"���
���Annot�����������/���
$"!�2�
�����chas_seqvv�
α�+β�+�(�
Y�(�
�Xe_4�
��
���(�
��(�
�e_5����has_seqseqvv�
N<"!��
���
����!
���
h
���`�
�y������t�
���������chas_bindvv�
α�+β�+�(�
<�(�
#e_4�
��(�(
�
��(�(!�
�e_5�
��("�
����(<�
��
�has_bindbindvv�
N<"!�

���
��(�
�
�!
�
�
���
�����`�
��������funextww��x���
��@�����@�����/����
������
��
���������J���
%�y���������
0�y�S�y�
��@�y���@�y���/�y�������A�����/���
$N<�
(N<�
��
,<�����
X�
$!
���
��
��
,
�
i���
s�����
s�
�
�
s�
i�
%��
�����`�
�����A�������
f���
0���S���
��
����A���t�
��
����A<���
`�����
�!�
��
��
%<!�`�
��
����
0<�S<�
��
����A<�t�
��
��
��4���
����
_�4�
��
��
�"�
��
�functioncomp_appwwwN<�
��
_�
��
��`�
�
��
��
��
��
�<"�
����4�����u���?�A�y�
$�/
�A���
$���(<"�
,��
�
(���
��
�
��
,�
����/�/�������
���=�
���A�y���/���
(���/�
�/�0�3�/�
���
�1
�
��
p�
��
���!��
��
�����!����t�
�
�����A�y�
$�(���
��/�
(���)�
�)�
,�)�3�/�)�
��
���(�
$�{�
��=�{��
(�y�{�
�{�
,�{�
��/�{��	�:�(�I
�/�{�
4���/��Annot���M�(�x�H���V�����
����H��C�H���
��C�H�����
,��&�V�Z�
��&�V�
%�{�
��H�H�`�C�H�U�L�
0�{�S�{��@�{�S�@�{�K�/�{���K�S�
���K�
��
��M�:�
J�
������9�
�
Q�S�y��9�@�y�7�
�A�y�t��8�+�0�
�7���
%�)�/�3���
����)�.�0�3�7�7�`�@�)�
��7�����`�
�����J��
%�
����`�&��!��
0�
��S�
��
��@�
���@�
���/�
���������
���
��
N�A�y�
���
����
S�����A�y�������A���
$�
�!�
����/�
��
Y"�
\"�
������
{����
�����
���@�������A���
������
������
�
%�
�!����
����
��
��
��������`�@�
��
����
;��������h���+�$�
��(�
4�{�
�g�{�E�
��
��@�
��(�x�B���C�_�B��
��C���B�M�H�B���O�R�)�C��_a�C��
��.�
4���)�3���0�4�Y�_�D�O�H�f��R����R��
��R�M�B�B��)�C�)�.�>�
��
�(���(N<�(�
�(�(NN�(ON�(�
�(�(OO�(mO�?�
��
�(�(mm�(�m�
��
�(�(���(��6�
���!��
����(��6!
���H�B�t�C�H�G�B�e�
��y�{�C�E�
��B�B�x�B��t��g�C�B�+�����`��+�
9������
��&�I�C���>�B�U�C�������)�&�I_a�&��
���
g���/�_���
4�)�/�V�)
�_�����D�����l���I�o������������
������>x�{�?�B�C��)�&�)��>�
��
��(�
�w�(�
�~�?�
��
���
��
��6�
��!�
���(�6!
�����'�����/�{�0�?��u�B�B���U�.�}�S�{���/���@�{�-�/�{α�+β�+g��x��
��
#�
n�
D�
-�4�=�
&�@�
/�C���D�I�)�
#�A�W�
#��
��
^�
p�
D��
��T�D�D�G��
#�G�A�
��
#�G��I����I��
��I�=�C�C��)�
#�)�
B�>�,�(�
��(�
��?�
��
��
��
�6�
�!�
�
��
��(�
�6!
�
��G�C�t�
#�G�
/�C�c�
��
#�
-�C�C�`�
#�C��o��g�
#�C�+���/�o���
(�{�
��&�
���C�C���C�����g�&��+����C�F�������@�F���������C�W�&������0���4�����D�����l���C�o������������
������F�F��)���F�'�����
��F���
��{�
��&�
��@�
��F�F���F�������F�+����
���h�
��+α�+β�+a�
<b�
<�J�
zα�+β�+a�
<b�
<�b�
�α�+β�+g��x�
#��=�
g�
,���?�=�
[�J�
b�N���O�T�N�L�2�
#��
����~�P�W�^�D�O�R�_�R�L�b�R��T����T��
��T�=�N�N����R�N�b�Q�
a�N�N���N��v����N�+��α�+β�+g�
Yx��=�H�@�
4���V���=�
\
�/���
_�QAnnot�����������N���X�
#��
����Q�z�V�y�W���D�����_�����b������������
����=���Y������������������
\�/���
D�����
%���`�������
0���S�����@�����@�����/����
�b�
\�
(���
#�
-���������������������+α�+β�+γ�+x�
#g��h����
������
��x�}������
���
��>�/�y���@����
����@�y��A���������#�u��
�/�y�@���/����
��Annot���#�/����/�������8�����
�?���
�;
�/����Annot���?���M�
���M�
'�
+�L�>�
3�@���J�@���=�/���
8�=�J�
;�=��8�@�J�8�
K�E�7�"�
S�@�y�5�@�y�!�/�y���5��A�����/���
Z!�
a�
f�!�x�
m�4�
r�������5�����
{�����
��
��A�����2�
f� �
���� �A���
�����
���
������
�

�
�
�
����
���)�u���A�y�
��A���
��
��/�/��
��)�����A�y���/�
���������
�/�
��Annot�������
������#����'����A�y�4�/�)���5�����>�?�G�/�{���J������
�/�{�RAnnot�������x�����^����a����d���W�l�����o���u�����x��������@�{���@�{���/�{�������������������E���������@�y���
�A�y���������"�������������&��������J�������������������@�
����@�
����/�
������������������q�A�y�
������(�
S�Y�(�A�y���X��A�����/�
���!���'�
{�X�d���c�&�
��c�@���a���A���
��b��a�m��a�a�!�a�
;�q��$�#��h�#�+α�+β�+f��x�
#�b�
0α�+β�+f�
Yx�
#�b�
cα�+β�+qf�(�
#�b�
&�
Dα�+β�+γ�+x�
#f�(�
Bg�����
$
�
m�
l�A!�
m�$�PInfo�
�	prt�
VMR�
VMC�
decl�
equations_eqn_1��	��
��
����	��
����PInfo���	ATTR�����EqnL��SEqnL�
ATTR����
class��
��decl�=rec_proof_1��ab�	W����������	������PInfo���decl��_proof_2������PInfo���decl��_proof_3�u_3�C����.f��h������_x�	���	eqrec��
�	��	
����	���
�$ab
_x�������"��	i�����	h�����	i��"�����������������PInfo���decl���������������������������
�$q��������������������quotrec
{
���������
�PInfo���prt��VMR��VMC�������������recdecl��equations_eqn_1���������������������������
���������������������(�PInfo���ATTR�����EqnL��SEqnL��ATTR�e����ATTR�f����decl�=rec_on_proof_1������PInfo���decl��_proof_2������PInfo���decl����������q��f�	Ghab
��_x�	y�/��!���	y�8�7��9���!�$�������������	G������
�;�A���!�$�$���PInfo���prt��VMR��VMC��������������decl��equations_eqn_1���������������	G���J��������
�\������������	G���J����h�PInfo���ATTR�����EqnL��SEqnL��ATTR�e����ATTR�f����decl�=rec_on_subsingleton_proof_1��������_inst_1asubsingleton{��f�	Gab
�;�A�!�$��������y���	G����
subsingletonelim{�:��}�$�PInfo���decl�������������yq����a�	�P��������y���������Y�����
�PInfo���prt��VMR��VMC��������������decl��equations_eqn_1�����������y�����������P�����
����������y�����������P���PInfo���ATTR�����EqnL��SEqnL��ATTR�e����ATTR�f����ncomp�=outdecl�����������T�PInfo���doc��Noncomputably extract a representative of `trunc α` (using the axiom of choice).decl��equations_eqn_1���h���������u�����PInfo���ATTR�����EqnL��SEqnL��decl�=out_eq��q��������������	����PInfo���ATTR������declnonempty_of_trunc��q��������_a�	[Existsdcases_on
�p�h���	E���	U���;wh��~�!�0truncexists_rep
�PInfo���declquotientmk'��s₁a�~������
���PInfo���prt��VMR��VMC��������decl��equations_eqn_1�������������������u�~���PInfo���ATTR�����EqnL��SEqnL��decl��lift_on'�u_4�φ����q�}f��ha
b!�*�"��P
�����������������quotientlift_on
��!
�PInfo���prt��VMR��VMC���������������lift_ondecl��equations_eqn_1���������������������
�����!
��������������������
�&�PInfo���ATTR�����EqnL��SEqnL��ATTR�f����ATTR�e����decl��lift_on₂'��u_3���&γ�.����s₂��q₁�8q₂�:f�"��ha₁<a₂<b₁Ob₂O�	�N���N�������"���&���.�����������8���9���:���Kquotientlift_on₂
��N<"!
�PInfo���prt��VMR��	VMC��	�	�����������������ndecl��equations_eqn_1�������&���.�����������8���9���:���K��"������N<"!
�^���&���.�����������8���9���:���K��"�r�PInfo���ATTR�����EqnL��SEqnL��ATTR�f����ATTR�e����decl��ind'����p���6ha��q��$��������������quotientind

_x�%��PInfo���prt��ATTR�f����decl��ind₂'�����&������p������6ha₁
a₂
��"
quotientmk'!q₁��q₂���Q���&����������������������quotientind₂
<"!
_x�S_x�U�=�PInfo���prt��ATTR�f����decl��induction_on'����p��q�~ha��
�����������~����,���PInfo����prt��ATTR�f����decl��induction_on₂'�����&������p��q₁�9q₂�;ha₁"a₂"
��N"��<!����&�����������9��;���quotientinduction_on₂
<"!
���PInfo��prt�ATTR�f���decl��induction_on₃'�������&���.��������s₃��p���������!6q₁�|"q₂��"q₃��"ha₁Oa₂Oa₃O"���O���Nquotientmk'�m<�r���&���.������������
�������	��quotientinduction_on₃
�mON<"!_x�|m<_x��m<_x��m<<�PInfo��prt�ATTR�f���decl��exact'����ab�������������PInfo��
decl��sound'����ab�	�h�%�������� �!�%�PInfo��decl��eq'����ab�J�Y����#�$quotienteq
�PInfo�"�prt�"ATTR�����"ncomp��out'decl�'���������a�����PInfo�'�decl�'equations_eqn_1�����(�����'�������(������PInfo�*�ATTR����*EqnL�*SEqnL�'decl��out_eq'����q�����������,����PInfo�+�ATTR�����+decl��mk_out'����a���~������.�������PInfo�-�EndFile