"`##d%Cring+setoid_ring#Coq@$List%Lists#Coq@,Ring_polynom+setoid_ring#Coq@.Ncring_polynom+setoid_ring#Coq@.Ncring_initial+setoid_ring#Coq@+Ring_theory+setoid_ring#Coq@)Ring_base+setoid_ring#Coq@+InitialRing+setoid_ring#Coq@+ListTactics%Lists#Coq@(Ring_tac+setoid_ring#Coq@$Ring+setoid_ring#Coq@*ZArithRing+setoid_ring#Coq@)Morphisms'Classes#Coq@$Init'Classes#Coq@/RelationClasses'Classes#Coq@4Relation_Definitions)Relations#Coq@-SetoidTactics'Classes#Coq@&Setoid'Setoids#Coq@$Bool#Coq@&BinNat&NArith#Coq@%Zeven&ZArith#Coq@'Zminmax&ZArith#Coq@$Zmin&ZArith#Coq@'BinNums'Numbers#Coq@)BinPosDef&PArith#Coq@&BinPos&PArith#Coq@$Pnat&PArith#Coq@&BinInt&ZArith#Coq@(Zcompare&ZArith#Coq@&Zorder&ZArith#Coq@$Zmax&ZArith#Coq@$Zabs&ZArith#Coq@$Znat&ZArith#Coq@(PeanoNat%Arith#Coq@"Gt%Arith#Coq@$Plus%Arith#Coq@%Minus%Arith#Coq@"Le%Arith#Coq@"Lt%Arith#Coq@$Mult%Arith#Coq@'Between%Arith#Coq@)Peano_dec%Arith#Coq@)Factorial%Arith#Coq@%EqNat%Arith#Coq@&Wf_nat%Arith#Coq@*Arith_base%Arith#Coq@+Compare_dec%Arith#Coq@)auxiliary&ZArith#Coq@*ZArith_dec&ZArith#Coq@%Zbool&ZArith#Coq@%Zmisc&ZArith#Coq@$Wf_Z&ZArith#Coq@&Zhints&ZArith#Coq@+ZArith_base&ZArith#Coq@)Notations$Init#Coq@%Logic$Init#Coq@*Logic_Type$Init#Coq@)Datatypes$Init#Coq@&Specif$Init#Coq@%Peano$Init#Coq@"Wf$Init#Coq@'Tactics$Init#Coq@%Tauto$Init#Coq@'Prelude$Init#Coq@.Algebra_syntax+setoid_ring#Coq@&Ncring+setoid_ring#Coq@*Ncring_tac+setoid_ring#Coq@l)Notations$Init#Coq@0&v!D]hwnv %Logic$Init#Coq@0\͉!Ig)Datatypes$Init#Coq@0.i bYN Z*Logic_Type$Init#Coq@0 1jc6&Specif$Init#Coq@0;RWMi\N'Decimal$Init#Coq@0C涳N*ua#Nat$Init#Coq@0eʤģPSR蠠%Peano$Init#Coq@0 jha|ؠ"Wf$Init#Coq@0q+W,J+'Tactics$Init#Coq@0/9m+ a%Tauto$Init#Coq@0̂"&/r'Prelude$Init#Coq@0JqTttֱ&Basics'Program#Coq@0!bs߯? :VU$Init'Classes#Coq@0](p{yOh.'Tactics'Program#Coq@03u%+Equivalence'Classes#Coq@07;ꮹ-SetoidTactics'Classes#Coq@0S_`nOU$&Setoid'Setoids#Coq@0D9AsWE!>$Bool#Coq@0j 2cZ`FW*Equalities*Structures#Coq@0όe얟)H.Ƞ2Relation_Operators)Relations#Coq@0%s鯰s4Operators_Properties)Relations#Coq@0U3y#h&)Relations#Coq@0r砠*NZMulOrder&NatInt'Numbers#Coq@0}\^ !"k}@R(NZParity&NatInt'Numbers#Coq@0H>ca'^^%NZPow&NatInt'Numbers#Coq@0)6*9 B:vȻ&NZSqrt&NatInt'Numbers#Coq@0` .%m%NZLog&NatInt'Numbers#Coq@0ꔉ .uV%NZDiv&NatInt'Numbers#Coq@0$ |J?d (w%NZGcd&NatInt'Numbers#Coq@0KgT7|&NZBits&NatInt'Numbers#Coq@0MlIpKt'NAxioms(Abstract'Natural'Numbers#Coq@0Zخb1Z3uuѠ,NZProperties&NatInt'Numbers#Coq@01D%E`|3x%NBase(Abstract'Natural'Numbers#Coq@0 Y?V vI$NAdd(Abstract'Natural'Numbers#Coq@05;ZW:㥜un$&NOrder(Abstract'Natural'Numbers#Coq@0]@7U#oY)NAddOrder(Abstract'Natural'Numbers#Coq@02'8zn7Hfɠ)NMulOrder(Abstract'Natural'Numbers#Coq@04> Aat/ j $NSub(Abstract'Natural'Numbers#Coq@0:DfJᠠ'NMaxMin(Abstract'Natural'Numbers#Coq@0]v|Qg̟ʠ'NParity(Abstract'Natural'Numbers#Coq@0̗SKz*!&4h$NPow(Abstract'Natural'Numbers#Coq@0҆mulf%NSqrt(Abstract'Natural'Numbers#Coq@0<ge$NLog(Abstract'Natural'Numbers#Coq@0KI'BinNums'Numbers#Coq@0dmk(5Ju<*EqdepFacts%Logic#Coq@0FI$ͼՋ`)Eqdep_dec%Logic#Coq@0u wWIϰ߼)BinPosDef&PArith#Coq@0}H d.%,b&BinPos&PArith#Coq@0vyػ0= u'BinList+setoid_ring#Coq@0Au)BinNatDef&NArith#Coq@03@1O,[{ &BinNat&NArith#Coq@0K11ڤs+Π$Pnat&PArith#Coq@0,?pr.gZ'ZAxioms(Abstract'Integer'Numbers#Coq@0\}zK=PK%ZBase(Abstract'Integer'Numbers#Coq@0 TL}2_} ؠ$ZAdd(Abstract'Integer'Numbers#Coq@0Y9Vgⲫ򐠠$ZMul(Abstract'Integer'Numbers#Coq@0Mtr\b"H#ZLt(Abstract'Integer'Numbers#Coq@0xK|j2[&=}۠)ZAddOrder(Abstract'Integer'Numbers#Coq@0w:}H#NK}{)ZMulOrder(Abstract'Integer'Numbers#Coq@0Dr~-~ECM'ZMaxMin(Abstract'Integer'Numbers#Coq@0bAX1'ZSgnAbs(Abstract'Integer'Numbers#Coq@02`ou{Z'ZParity(Abstract'Integer'Numbers#Coq@0S)*Dd$ZPow(Abstract'Integer'Numbers#Coq@0AşsאI)ZDivTrunc(Abstract'Integer'Numbers#Coq@0`]f5FԠ)ZDivFloor(Abstract'Integer'Numbers#Coq@0dj_TYQc|$ZGcd(Abstract'Integer'Numbers#Coq@0G0=$ZLcm(Abstract'Integer'Numbers#Coq@0(9g%MmN]%ZBits(Abstract'Integer'Numbers#Coq@0ܹCF5s+ZProperties(Abstract'Integer'Numbers#Coq@0Ve*ʞ_OV)BinIntDef&ZArith#Coq@0ådR4Tuy&BinInt&ZArith#Coq@0BpHޞun^$Mult%Arith#Coq@0햖Qyb0(Zcompare&ZArith#Coq@0'ҤjI=D'Between%Arith#Coq@06v*0ur`C0)Peano_dec%Arith#Coq@0Kݢ*k+Compare_dec%Arith#Coq@0jXF 8)Factorial%Arith#Coq@0@oehJd%EqNat%Arith#Coq@0AIgՋXRV &Wf_nat%Arith#Coq@0UJX AJhO*Arith_base%Arith#Coq@0Ĕ}CS&Zorder&ZArith#Coq@0fVk.BG)%Zeven&ZArith#Coq@0i?eK#aU堠#Min%Arith#Coq@0Ce-Fѕ(PreOmega%omega#Coq@0\|چBb~w4%Omega%omega#Coq@0t.J'6\ϨrK,Zcomplements&ZArith#Coq@0!xJ!yK.Algebra_syntaxS@(equality78zL)@+eq_notation($7@FLM@.multiplication+-7@,mul_notation%[Cae gc@vu@oAnB#add@C@ml#mul@D@rl#sub@E@rl#opp@Fq'ring_eq@G@nm"Ro&Ncring+setoid_ring#Coq@@p( @on&Ncring+setoid_ring#Coq@@$Ring,@tA P+k() +  T'  + T'   7 7   7 7  7 7#'Y4u8fLp$@@Reflexive_partial_app_morphism 2R,"@#Q#0@*respectful%WO?++**q-@.ring_plus_comp+K婚?@6reflexive_proper_proxy5:95@5Equivalence_Reflexive>>T[Cw :9C720׵'%$"©(&N(P(*)-1MV\bc߰,Rh/oK@-ring_opp_comp046*59=Ybhnoqvz  t8 i:bC@@CW\[@#zxuspsnlgeXP %+k()           + 4          +           + U;' ()m  7 7"   7  7 7!7"  7 7!7  7 7"7!  7 7"  7 7"      7   7 7"  7 7"   7  7 7!7"  7 7!7# '()t    7 7   7  7 7!7"  7 7!7     7 77!     7 7     7 7 uU   7  7 7!7"  7 7!7  7    7 7    7 7   7  7 7!7"  7 7!7   7 77!    7 7     7 7    U   7  7 7!7"  7 7!7   7  7 7" 8 7 7!  7 7!7  7 7!+T7     7 7     7 7   7  7 7!7"  7 7!7# ''()s   7 7   7  7 7!7"  7 7!7    7 77!    7 7    7 7 uU   7  7 7!7"  7 7!7  7   7 7   7 7   7  7 7!7"  7 7!7   7 77!    7 7    7 7    U   7  7 7!7"  7 7!7   7  7 7! 8 7 7!  7 7!7  7 7!+T7    7 7    7 7   7  7 7!7"  7 7!7# ''P%X̠#p!̠ H XLD0pt$ <  P  0``x%%<#H""h!   DDH\8  H<Ht"pc  Dt 0P40$x#!,Pl T) Ddc0<  T  h  Hxmx%%(#4""T!  004H$x  4(4`%L(X!0T ̠B0$d#!<XW4 \t0$ D0hhl   @@@vAviA@AyAۓό^"@}AE@ABAG@AϠH@AAˠL@AIN@ABCA݋X_A'@AYS@AA[[@A_k@AAaݠs@Ae͠C@A.0TQ@ABCDE@@8cring_almost_ring_theory @$  @2almost_ring_theory5-@AL䩚@$zero#*멚@-zero_notationS$%+,.@#one#ҍ@,one_notation:2Ơ@+subtraction )@,sub_notationgǀ!Ƞ$ '%lemma>9jj$(P*LE,@Rmmqmmk/oL@,ring_add_0_lҒ,+6:>Zciopr{h-7/.1(3>BFbkqwxzE?B5'AEk Gi Ik$I@$OCNRVr{ʰ(SGRVZvw@-ring_add_comm#Zc0bVaeid*jdgZ!ziOi 357 $s( {oz~A < DFH @.ring_add_assoc%;N4#ҩ%EA x}ߩ'$wu@,ring_mul_1_l)"dsr@,ring_mul_0_l)"c9zܩF$QqmSSqVVX@߀˷gΩgiikkmmd$ieckkjnnpprr#'!t@.ring_mul_assoc9p6̀_^ש9;=6?'$#}?'<C&GA"@,ring_distr_l0=~:ɰ`\$˩ϰa a԰\ae_@@.ring_opp_mul_l"ɩ[,T2,/"J@,ring_opp_add. mӷ:47*6:`4</b}?aA$=ک8 .i@,ring_sub_def9%U}@9}{3nq cqda^QN HP+k()           +           +           +           +           + +  + { + | + i + + 8 ' ()6  7 7"  7 7   7  7 7!7"  7 7!7 6  7 7"  7 77! 6  7 7"  7 7 6  7 7"  7 7   7 8  7 7"  7 7    7 7   7  7 7!7"  7 7!7# '()   7# '()7  7 7"  7 7   7  7 7!7"  7 7!7 7  7 7"  7 77! 7  7 7"  7 7 7  7 7"  7 7   7 9   7 7"  7 7     7 7  7 7"   7  7 7!7"  7 7!7# '()^    7 7     7 7  7 7   7  7 7!7"  7 7!7 ^    7 7     7 7  7 77! ^    7 7     7 7  7 7 ^    7 7     7 7  7 7      7 ^    7 7    7 7  7 7 ?   7 7  7 7   7  7 7!7"  7 7!7# '()@     7 7  7 7   7  7 7!7"  7 7!7 ?     7 7  7 77! ?     7 7  7 7 @     7 7  7 7      7 @     7 7  7 7 ?   7 7  7 7   7  7 7!7"  7 7!7# '()s  7 7   7  7 7!7"  7 7!7   7 77!   7 7   7 7    7    7 7     7 7   7  7 7!7"  7 7!7# '  7# 'T   7  7 7!7"  7 7!7 7!   7  7  7 7!  7 7   7  7 7!7"  7 7!7# '()>    7 7  7 7   7  7 7!7"  7 7!7 =    7 7  7 77! =    7 7  7 7 >    7 7  7 7      7 >    7 7  7 7 =  7 7  7 7   7  7 7!7"  7 7!7# '()r  7 7   7  7 7!7"  7 7!7   7 77!   7 7   7 7   7   7 7    7 7   7  7 7!7"  7 7!7# 'T   7  7 7!7"  7 7!7 7!   7  6  7 7!  7 7   7  7 7!7"  7 7!7# '|$H8D0>40x*0 ( (I. :Ġ&ܠl ̠$E?x61+"l䠒d3/.--,*((\''`&P%%H$$4#!!|| Dd H(GEE D C??h==78644`2(10h/,+* )#8"  X\  HԠې0ؠ6,x <H  3 TxFBBdAt@@h><<<<;;H:<99<880755|x H$34͐F$E@|8X2P,$`LϐFx ࠒ2HGLDCD?=6\31L/+,)D"\ <  <liA@@@A@A9@7@ABAA@AC@A;@9@ABC4@AMJ@A8@5@AB2@AV C@AAXK@6@ABC3@A]c@A3@2@A.@Aᾘ @/@ABCDEF@@K+cring_morph @PECB@?=8631.1,*%#@*ring_morphM @A`+&̩ Ω 'BinNums'Numbersk@!Z7@ AB@(positive*@C&BinInt&ZArith@z1P&)BinIntDef@ ̀@{1P] @| @z1P@{ p@y1P@z {%Zbool@(Zeq_bool0߀.Ncring_initial@(gen_phiZ4h jXCfm(osH\r \Cmt(vzL`y[v\\vnm!(p{J©Dt^'(v©)(xȩ$`-(|VʩP3(ɩ5(Π:@,gen_phiZ_add f0ީcaC$&$l(]X)7@>trans_sym_co_inv_impl_morphism'\|ک-@/Equivalence_PER/;_(t21/3t3u0DBp( Qx(  _$|( Q( #""$O0$ʩ@t$-O,@IDf?h5877@,gen_phiZ_opp {ũ,WC($-39:\Ca ( 09?EF$:(7@FL[U@,gen_phiZ_mul y(QC(  $'()-1MV\bce]߰+(-15QZ`fgir$$('26:V_eklZ)ys+C,9=A]flrsuz~k;&=((?CGclrxy{CF(C)㩛%Logic$Init@"eq @)Datatypes @$boolZ'@ ݜ AD^IU$K@=1"!M @$Zops2G[;8k@(EqualityKa @ @3 @8 &Basics'Program@$flip$ @$impl7o@0reflexive_properm+@+@(@/(&$(@:reflexive_eq_dom_reflexive=[6/+:+) <)"@.flip_Reflexive-$(@.impl_ReflexiveJ$fHh\(L^(N, RWM{WbIk 5@ bI%  / 1dTJ@,eq_ReflexiveaN3b   n"*Ncring_tac+@'Zeqb_ok5\$(XC\Z@;̶0.-+*(#!D O+k()           + g          + v          + *          + p           + ( 7  7! 7 7  7! 7" 7  7! 7 7  7! 7 7  7! 7" 7  7! 78' ()h 7   7  7 7!7"  7 7!7  7 7!  7  7    7"   77! 7 ^7 7 77 ,7 677 77777L77 77!77+7T 77 b,7 677 77777L77 77!77 77 +77T 77+ 7T7 7 ,7 677 77777L77 77!77 77 +7T 77   7   7  7 7 7!  7 7 I 6777"  6777777  677777 77 +T7 + 677777 777 +T7+T7 7 B+ 677777 777 +T77 7 +T7 7+7 T77 + 677777 777 +jT77 7 +\T7 7#'''+7T'''6'6'+T'6'6'+T'6'+T'+T'6'6'+T'6' 7  7 7"   7  7 7!7"  7 7!7  7  7 7"7!  7  7 7"  7  7 7"   7  7  7 7"  7  7   7  7 7!7"  7 7!7# '()I  7   7  7 7   7  7 7!7"  7 7!7 I 7  7  7 77! I  7   7  7 7 I  7   7  7 7   7 I  7   7  7 7   7! 7   7  7 7!7"  7 7!7# '()f[a 7  7 7"  7  7 7   7  7 7!7"  7 7!7 a 7  7 7"  7  7 77! a 7  7 7"  7  7 7 a 7  7 7"  7  7 7 s  7  7  7 7" 7  7 i 7   7  7 7!7"  7 7!7  7   7  7 7! 8 7 7!  7 7!7  7 7!+uT7 a 7  7 7"  7  7 7 K7  7  7  7 7   7  7 7!7"  7 7!7 a  7  7 7"   7  7 77! a  7  7 7"   7  7 7 a  7  7 7"   7  7 7  7    7 K7  7  7  7 7  7  7! 7   7  7 7!7"  7 7!7 B 7  7   7 a  7  7 7"   7  7 7 H  7   7  7 7 7! 7   7  7 7!7"  7 7!7# ''()H  7   7  7 7   7  7 7!7"  7 7!7 H 7  7  7 77! H  7   7  7 7 H  7   7  7 7   7 H  7   7  7 7   7! 7   7  7 7!7"  7 7!7# 'O@8', 8(iH D m4,N<?T   a2ؠDZ H1)0<`X%\#"!\蠑8 0  P 4 \OODHHpFLE@@\88844321*)'& 84 (0  ,LD}44$P\H   ̠   L<B<;9t5l/. ,*(PL0H^ 젒DNL|KTJGC|?=p;:H7t6@3@.-T+(䠒dH*, H䠒<B<;$950. ,*($ 0d`%%t#"!t D(Dp@(  |         T )$HAp$0,?OO0HH\F8E@@H88$4x3311*)'& $  $  4,Z/LHܠOT@l8H&DDMLhK@JGCh?=\;:47`6,3,.-@+(Р2 k`tp`h`XD P( |t<$젒h J0:\+!tD l*%   xE蠒PNMMLLKJJIIXGDFED<CCBTAAD?>>X==6l00,   hAHd8pD   `  l \ 4 A@  L=蠒MD   p Pl @@@AhAD@A @ @AB@@A @@ABC@@A@@AB@AUA@A@@ABC@@A@@AB@@@A1DHr@ABCDEF@@2cring_power_theory @  ܩ@,power_theory=X@A ~@!N7@!n #@%pow_NH!r  Vڰ04@CԶ865320+)&$!$ ,(" +k()           + 9' ();  7 7"  7 7!7   7  7 7!7"  7 7!7#'(%x젒PL <TD ()hԀ@@@S@A@@AB}@}@AF@v@ABn@k@A. ,dA@l@ABCDE@@0cring_div_theory @}|zuspnknigb`S+InitialRing@,Ztriv_div_th 1QC@+Equivalence~@[C&Setoid'Setoids@-Setoid_Theory2_   @GA|>@*div_theory@x\B3B@'quotrem\=@/ŀ |+k()          7           7          7 7! 7#' РTw@Cd1p܀@@@uAeLN@A@@A@@@ABCD@@$Zcri @q@(mul_comm9+؀C(xid_GEQ@"Zr2=Q@À ,6kD@@@@@@@@h@hA.Ncring_initial+setoid_ring#Coq@@A@Ap@pI @A@B[J @BDExA@}A@AvA@xA@rAǠP.Algebra_syntax+setoid_ring#Coq@@ABC{AUA&Ncring+setoid_ring#Coq@@Ae͠C @ADAp @A Q@AA@A @Aqˠ@ABCEFH@@"O@(PeanoNat%Arith#Coq@#Nat@&of_int"O#Nat$Init#Coq@@ 6@A@A\@&BinInt&ZArith#Coq@!Z@'quotrem\)BinIntDef&ZArith#Coq@!Z@ /@A@\@@+pred_double\@/S@@A@As2@3@&shiftls2*@vY@A@BCs8@8@&shiftrs8/@vY@A@ѓ@>@&squareѓ5@y@A@@D@&to_intϑ;@@A@z@5@&doublez,@/!@A@ABCD/@O@)log2_iter/F@wd@A@NH/@B@&moduloNH/9@1,@A@A\d@G@&of_int\d>@1?A @A@bz@M@&of_natbzD@1?G!@A@#@S@&shiftl#J@1dV@A@#@Y@&shiftr#P@1d\@A@ABCD/x@&BinPos&PArith#Coq@#Pos@)pred_mask/x)BinPosDef&PArith#Coq@#Pos@ )X@A@6@x@&square6o@19@A@AV+L@}@&to_intV+Lt@2@A@V1b@@&to_natV1bz@2 @A@V5=@@&to_posV5=@2@A@ABCl@@)sqrt_iterl@!$:@A@@@6@(sub_mask@-@)@A@ADEF c@@'testbit c@!ć@A@7 B@D@'of_uint7 B;@*`]?@A@AG@I@)mask_rectG@@+ED@A@F˱@O@)add_carryF˱F@+p@A@AB^Ҷ@@'to_uint^Ҷ@#m@A@gL7@@'sqrtremgL7@40@A@Aq@@'testbitq@5)@A@ݎO@@+succ_doubleݎO@6r@A@A p@l@0double_pred_mask pc@0-+m@A@BCD T@&BinNat&NArith#Coq@!N@!t T)BinNatDef&NArith#Coq@!N@ 2@A@ @@#add @3 @A@A l@@#div l@3@A@ Y@%@#eqb Y@3@A@AB #@*@#gcd #!@3n@A@ T@0@#leb T'@3@A@ACEG "@5@#lor ",@3m@A@ q@?@#ltb q6@3@A@A @D@#max ;@3@A@ @J@#min A@3`@A@AB @O@#mul F@3B@A@ ~@U@#odd ~L@3@A@AC =@Z@#one =Q@3@A@ @b@#pow ˑY@3@A@A c@g@#sub c^@3@A@ @m@#two d@3J@A@AB hx@r@$div2 hxi@>@A@ @x@$even o@>4@A@ACD @}@$ggcd Бt@>U@A@ @@$iter }@>:@A@A 3"@@$land 3"@>m@A@ F)@@$log2 F)@>t@A@AB S@@$lxor S@>@A@ @@$pred @?U@A@AC @@$size ܑ@?'@A@ !@@$sqrt !@?@A@A ! @@$succ ! @?\@A@ !7@@$zero !7@@P@A@ *@@%ldiff *@@A@AB g_@1@+pred_double g_(@25\@A@CD m@6@÷ m-@2j@A@S@=@&of_intS㫑4@4}5@A@AS@B@&of_natS9@4};@A@BEFGH\R@G@(mask_ind\R>@4@A@\^@Q@(mask_rec\^H@4@A@A!,@V@&pred_N!,M@4s)@A@B@[@&shiftlR@5X@A@@b@&shiftrY@5X@A@A&@g@&square&ّ^@5,x@A@BC"@l@&to_int"c@5L@A@"@t@&to_nat"k@5L @A@AnTq@y@+testbit_natnTqp@6n@A@B@@(succ_posB@@A@I@@'abs_natI@?n@A@AB.@@'of_uint.@MS@A@3~@@'sqrtrem3~@7]%{@A@ACD,@ @'bitwise,@/v@A@>4'@@'testbit>4'@8g$@A@A{U@@,sqrtrem_step{U@8R@A@u^@9@(div_euclu^0@ @A@Afz@@'to_uintfz@9w@A@Bl@'@'comparel@3R@A@CDEFs8@,@+of_uint_accs8#@5+@A@}@R@,pos_div_eucl}I@&`@A@3x@(@'compare3x@]=@A@A@^@&doubleU@'޺_@A@BCq@@+of_succ_natq@$@A@w@i@&modulowɑ`@)1@A@ADK@n@&of_intKe@)j,I@A@K@v@&of_natKm@)j2_@A@AI@{@&shiftlIr@*O@A@O@@&shiftrOx@*O@A@AB,@@&square,}@*ow@A@Z@@&to_intZ@*81@A@ACE`@@&to_nat`@*9G@A@e@@+testbit_nateđ@+@A@A+{@@'sqrtrem+{ё@,J@A@5z@@'testbit5z@-T|@A@A @@'to_uint ͑@.@A@ @@+succ_double @.^4@A@A#@'@'compare#ݑ@ )Q@A@BCD%t2@,@(size_nat%t2#@ @A@%9@3@+of_uint_acc%9*@ ΋@A@A%V@8@+double_mask%V/@ S@A@%%@>@'div2_up%%5@ "@A@ABEF'ş@C@'Ndouble'ş:@ @A@(b0@K@*shiftl_nat(b0B@9-@A@A(nՖ@P@*shiftr_nat(nՖG@'@A@(@V@0succ_double_mask(M@@A@*W$@\@,compare_cont*W$S@!@A@.0@b@.sub_mask_carry.0Y@΂@A@ABCD.@@!t.@ ;@A@.먩@@#add.먩@ `@A@A.U@@#div.U@ @A@.B@@#eqb.B@ @A@A. @@#gcd. @ @A@.=@@#leb.=@ @A@ABCEGHI. @@#lor. @ @A@.Z@ @#ltb.Z@ @A@A.p@@#max.p@ '@A@B.@@#min. @ @A@.@@#mul.@ @A@AC.g@@#odd.g@ @A@.&@&@#one.&@ @A@A.뾴@+@#pow.뾴"@ k@A@.L@1@#sub.L(@ @A@.@7@#two..@ @A@ABCD.,a@<@$div2.,a3@ @A@.Xz@D@$even.Xz;@ ?1@A@A.@I@$iter.ؑ@@ @A@B. @N@$land. E@ @A@. @T@$log2. K@ @A@ACE.@Y@$lxor.P@ R@A@.y@`@$pred.yW@ `<@A@A.Ʉ@e@$sqrt.Ʉ\@ ;@A@.@l@$succ.c@ @A@.t @r@$zero.t i@ Z@A@AB/@w@.to_little_uint/n@ @A@CDF/@|@%ldiff/s@ H@A@00@@'compare00@?H{@A@A1P%@w@!t1P%n@  @A@B1P@|@#abs1Ps@ @A@1P&@@#add1P&z@ @A@A1P@@#div1Pґ@ y@A@BC1P@@#eqb1P@ f@A@1P@@#gcd1P@ 0@A@A1P@@#geb1P@ T@A@B1P@@#gtb1Pʑ@ q@A@1Pĺ@@#leb1Pĺ@ a@A@A1Pň@@#lor1Pň@ /@A@BCD1P@@#ltb1Pב@ ~@A@1P@@#max1P@ @A@A1P{@@#min1P{@ "@A@B1P]@@#mul1P]@ @A@1P@@#odd1P@ @A@A1Pɣ@@#one1Pɣ@ J@A@BC1P@@#opp1Pԑ@ {@A@1P1@@#pow1P1@ @A@A1P;@@#rem1P;@ @A@B1P@@#sgn1Pˑ@ r@A@1P@@#sub1Pɑ@ p@A@A1Pe@@#two1Pe@  @A@BCDE1[8@@$div21[8ޑ@ @A@1[d@@$even1[d@ I@A@A1[6@@$ggcd1[6@ i@A@B1[U@ @$iter1[U@ @A@1\@@$land1\@ /@A@A1\@@$log21\ @ 6@A@BC1\$@@$lxor1\$@ @A@1\Y@$@$of_N1\YÑ@ >j@A@A1\@)@$pred1\ @ j@A@B1\@.@$quot1\֑%@ }@A@1\@5@$sqrt1\,@ @A@A1\w@:@$succ1\w1@ @A@BC1\k@?@$to_N1\k6@ @A@1]@G@$zero1]>@ eD@A@A2:@L@%abs_N2:C@ @A@21@R@%ldiff21I@ ߵ@A@2=*@X@%quot22=*O@ @A@ABC2kF@@(size_nat2kF@{@A@3@x@(tail_add3o@^q@A@ADEFGH3@}@(tail_mul3t@^@A@5Z@@*shiftl_nat5Z@y/@A@5f}@@*shiftr_nat5f}@4@A@AB5a@@'iter_op5a@ @A@C6w~@@'of_uint6w~@^5@A@8j@@'of_uint8j@'"h@A@9E@@(div_eucl9Eđ@(*k@A@AB:x@6@,Nsucc_double:x-@ ʭ@A@CD@[@&divmod>R@C@A@>@b@&double>Y@NĴ@A@?2@S@,pos_div_eucl?2J@-u@A@AB?;@m@&modulo?;d@"i@A@CEFGIJ@l0^CIۂ{$|%Arith#Coq@0I|кX*o4)ArithRing+setoid_ring#Coq@0ṔCgt?}*Arith_base%Arith#Coq@0Ĕ}CS&Basics'Program#Coq@0!bs߯? :VU'Between%Arith#Coq@06v*0ur`C0&BinInt&ZArith#Coq@0BpHޞun^)BinIntDef&ZArith#Coq@0ådR4Tuy'BinList+setoid_ring#Coq@0Au&BinNat&NArith#Coq@0K11ڤs+Π)BinNatDef&NArith#Coq@03@1O,[{ 'BinNums'Numbers#Coq@0dmk(5Ju<&BinPos&PArith#Coq@0vyػ0= u)BinPosDef&PArith#Coq@0}H d.%,b$Bool#Coq@0j 2cZ`FW*CMorphisms'Classes#Coq@0qیZBeϠ0CRelationClasses'Classes#Coq@0TL;0RUfw1+Compare_dec%Arith#Coq@0jXF 8@0.i bYN Z)Decidable%Logic#Coq@0ND걸풬/Oߠ'Decimal$Init#Coq@0C涳N*ua%EqNat%Arith#Coq@0AIgՋXRV *EqdepFacts%Logic#Coq@0FI$ͼՋ`)Eqdep_dec%Logic#Coq@0u wWIϰ߼*Equalities*Structures#Coq@0όe얟)H.Ƞ+Equivalence'Classes#Coq@07;ꮹ)Factorial%Arith#Coq@0@oehJd-GenericMinMax*Structures#Coq@0måj$"Gt%Arith#Coq@0䙛#c:D $Init'Classes#Coq@0](p{yOh.+InitialRing+setoid_ring#Coq@0k/T=cN"Le%Arith#Coq@0d}Omq+$List%Lists#Coq@0>I+ListTactics%Lists#Coq@0,Jcy{%Logic$Init#Coq@0\͉!Ig*Logic_Type$Init#Coq@0 1jc6"Lt%Arith#Coq@0KZ-eJkP܏#Max%Arith#Coq@04=;3$>aU堠#Min%Arith#Coq@0Ce-Fѕ%Minus%Arith#Coq@0LFtR")Morphisms'Classes#Coq@0Imӽ%\$PD.Morphisms_Prop'Classes#Coq@0% :B'.>u%$Mult%Arith#Coq@0햖Qyb0$NAdd(Abstract'Natural'Numbers#Coq@05;ZW:㥜un$)NAddOrder(Abstract'Natural'Numbers#Coq@02'8zn7Hfɠ'NAxioms(Abstract'Natural'Numbers#Coq@0Zخb1Z3uuѠ%NBase(Abstract'Natural'Numbers#Coq@0 Y?V vI%NBits(Abstract'Natural'Numbers#Coq@0qteo_hɅ $NDiv(Abstract'Natural'Numbers#Coq@0bz$?[p(5$NGcd(Abstract'Natural'Numbers#Coq@08E-S ;j_Ҡ$NLcm(Abstract'Natural'Numbers#Coq@0 ~xZ9L{:$NLog(Abstract'Natural'Numbers#Coq@0K Aat/ j &NOrder(Abstract'Natural'Numbers#Coq@0]@7U#oY'NParity(Abstract'Natural'Numbers#Coq@0̗SKz*!&4h$NPow(Abstract'Natural'Numbers#Coq@0҆mulf+NProperties(Abstract'Natural'Numbers#Coq@0unt"kwpYC%NSqrt(Abstract'Natural'Numbers#Coq@0<ge$NSub(Abstract'Natural'Numbers#Coq@0:DfJᠠ%NZAdd&NatInt'Numbers#Coq@00h`ZK4*NZAddOrder&NatInt'Numbers#Coq@0e~1>r砠(NZAxioms&NatInt'Numbers#Coq@0] ρ5r&NZBase&NatInt'Numbers#Coq@0^&8yUL&NZBits&NatInt'Numbers#Coq@0MlIpKt%NZDiv&NatInt'Numbers#Coq@0$ |J?d (w%NZGcd&NatInt'Numbers#Coq@0KgT7|%NZLog&NatInt'Numbers#Coq@0ꔉ .uV%NZMul&NatInt'Numbers#Coq@0ctR~6[Ƞ*NZMulOrder&NatInt'Numbers#Coq@0}\^ !"k}@R'NZOrder&NatInt'Numbers#Coq@0 q;Ve7R W,(NZParity&NatInt'Numbers#Coq@0H>ca'^^%NZPow&NatInt'Numbers#Coq@0)6*9 B:vȻ,NZProperties&NatInt'Numbers#Coq@01D%E`|3x&NZSqrt&NatInt'Numbers#Coq@0` .%m#Nat$Init#Coq@0eʤģPSR蠠@0A,~jC9*s;{bѠ B A @@0БAg2?5S0˻*L aS&*Ncring_tac+setoid_ring#Coq@0m-SetoidTactics'Classes#Coq@0S_`nOU$&Specif$Init#Coq@0;RWMi\N'Sumbool$Bool#Coq@0sB ,$11.]m'Tactics$Init#Coq@0/9m+ a'Tactics'Program#Coq@03i2 Q@@@@#_16!@A@@@@%@@@@#_172M접-@#_18'`o@4J*type_scope@@.function_scope @@@@@@AAAAA@2 Q@@D@#_19@ED@#_202M접 KK@@#_21'`o@MB@@ACEGI@@@@@@@@@AAAAA8,@@@#_22J@@AA@AA@AA}@AA{@AAy@AAw@AAv@AAs@AA@AA@@@#_23yM@&@AA@AA@AA@AA@AA@AA@AA@AA@AA @AA^@AA@@@@@#_24X@3typeclass_instances@@#_25/@w@,@@1( @@@@@@@@@@ɠڠ㠠ꠠ  @sJJJKJ6@{@@@@*reify_goalF@@@$lvar%lexpr%lterm@ B=./plugins/setoid_ring/Cring.v]r]rz]r]rz@@)Datatypes$Init#Coq@@$list]@A@"^^A!AA@@ @-^^@@A@@@@@)]@B@J__A(A@@ "e1Z__ @d__@@"e2q__@@@@z__@@3@;@BM-D@BVX B@@@"opaa֠"u1aaڠ"u2aa@aa@@@+bb,Ring_polynom+setoid_ring#Coq@@{"s @cc @@@@dd,-.Algebra_syntax+setoid_ring#Coq@@$zero#*@dd.2A!AA@@ B$ZeroA@@@ dd.2(@#one#ҍ@dd36 A!A@@ B#OneA@@@,dd36@R;53@9dd78 A@A@@ B(AdditionA@@@@+-@Udd;< A\A@@ B!BA@@C.MultiplicationA@@@@@ydd?@ AA@@ B+SubtractionA@@@@G@ddCE AA@@ B(OppositeA@@@'BinNums'Numbers#Coq@@!Z7@@ddFG.Ncring_initial+setoid_ring#Coq@@(gen_phiZ4@ddH_A!RA@@ B%ring0A@@#C%ring1A@@+D#addA@@#3E#mulA@@+;F#subA@@3CG#oppA@@;KH'ring_eqA@@CSI"RoA@@K@ddH_s@!N7@@#dd`aŐ@@.ddij4ddno7ddco+Ring_theory+setoid_ring#Coq@@%pow_NH@Leqeq@@@@Ueqeq@I#ҍ@beqeq AiA@@ BHA@@@@+-@}eqeq AA@@ B(A@@C'A@@@eqeq@eqeqeqeqMeqeq@ceq@ffӠ@@@@gg䠠@gg頠AA@@ BA@@@gg頠@ggӠAA@@ ڠBA@@@gg@gg@@@@ @ @gg󠠐@@@@ @@@@$gg@@@@ @ @6gg@@@@ @ @Egg@OggAA@@ BA@@CA@@DA@@EA@@&F~A@@-G}A@@4ǠH|A@@;ΠI{A@@B@ggz@ggŐ@@gg !#gg%&gg&u@h(h(9J@@@@h(h(KLj@h(h(MNg@@d@@ @ a@h(h(O]iAA@@ pBA@@wCA@@@h(h(O]@h(h(8]h(h(_ch(h(df@fh(f@ bh(g@@@@@R2 Q@@A@#_66@]g>@A@@@@@@AA@@W@ T@ Q@N@L@H@l@@@@#_672M접@g>@#_68'`o@@g>J@@@@@@@@AAAAA䠐@2 Q@@A@#_695@4y{@A@@@@@4@f+@i*@l@o@r@u@x@{@~@@@@@#_702M접d@=4y{@#_71'`o@l@E4y{K@@점@@@@@@@AAAAAMB\@C2 Q@@A@#_72@NE@A@@@@@@Ҡ@ՠ@ؠ(@۠%@ޠ"@᠐@䠐@砐@ꠐ=@@@@#_732M접@zE@#_74'`o@@EJV@@UWY[]@@@@@@AAAAA@2 Q@@A@#_75@&ЛC@A@@@@@@7@:@=@@@C@F@I@L~@O@R@@@#_762M접2@&ЛC@#_77'`o@:@!&ЛCJ@@ @@@@@@AAAAA@Р2 Q@@A@#_78k@ W@A@@@@@j@a@`@@@@@@@@@@@#_792M접@ W󐐐 <@,Ztriv_div_th 1#_80'`o@@ WJ&@@%')+-@@@@@@AAAAAz@)cring_genF@@@ B@@@!g&] ]   @ @40] ]   ⓠ5] ]   򠐠;] ]   *Ncring_tac+setoid_ring#Coq@@*lterm_goal'ǐ&K] ]   @@ BQ^ ^   ,@"@+list_reifyl;@b^ ^    A!RA@@ B%lexprA@@C$lvarA@@^ ^  % *+E%ring0A@@*3F%ring1A@@2;G#addA@@:CH#mulA@@BKI#subA@@JSJ#oppA@@R[K'ring_eqA@@ZcL"RoA@@bkM"RrA@@jsN&arg_14A@@r{O!HA@@z@^ ^   +@@@@$prodt@A@_ 2_ 2 > KAA@@ B!BA@@"fv_ 2_ 2 ? B_ 2_ 2 D J@#@+@A㛐%!c c   &c c   ,c c   @A;e-4c c   젒B;c c   򠒑FBc c   @ B@@@*Oee&(@/@@@,ring_correct<@fgGgGZs@@@@ogGgGtu@#*@|gGgGvw AA@@ BA@@@5@gGgGxy2@@/@@ @ p@gGgGz{m@@j@@ @ f@gGgG~c@@`@@ \@@@X@gGgGU@@R@@ @ N@gGgGK@@H@@ @ R@gGgG AA@@ BA@@@@8@hh A!TA@@ BA@@CA@@!DVA@@ (EWA@@'/FXA@@.6GYA@@5=H[A@@<DI[A@@CKJEA@@J@Xhh@g>@eii֠ AA@@ BA@@CA@@ DA@@'EA@@&.FA@@-5GA@@4#1#3p@2cring_simplify_auxF@@@ |s #hyp@ B !&  !&@@ R@ ,,4? L@@"t0 ,,47  ,,9?@@ l@B ~  B CCMR ɐ CCMR@@ @ XX`g @@!e XX`b"le XXdg@@ @B  @!t kkwx?LFI 7@*norm_subst7:d@ kk h@ @ @ $@@@ /@ 6@ = @ DȠ@ KѠ]@ R۠@ Yݠ N@ cᠠ VA AA@@ @ mᠠ t@ wk@@ @"te  @(Pphi_devRI@ #@@@@ $$01+@ $$23(@@%@@ @  W@ $$45 T@@ Q@@ @  @ $$67 @@ @@ @  @ $$:; @@ @@  ~@@@ z@ $$>? w@@ t@@ @  p@$$BD m@@ j@@ @  f@SS_`@SSab@"SSef@@@-SSiq v@7rr~ ~A kA@@  B jA@@ C iA@@ D hA@@ E gA@@& F fA@@- G eA@@4 H dA@@; I cA@@B@yrr~+InitialRing+setoid_ring#Coq@@)get_signZ#7@@ @@ @#eq1Ĕ$ring@@ @#nft瑡@Ð@@ @"t'!t@@@@&!!58@@AA@@@A@@;;KN"@"eq @@;;QW@@@@ ;;QRD;;UW@@ZZcZZcZZcs[@0vm_cast_no_check8M%Logic$Init#Coq@@A @A@4ZZu|A!AA@@ CZZ}@FZZu@@ @#eq2P$ring@@@@A@ay@kWArA@@ BbA@@@Π@@@@ڠ@ߠAA@@ BA@@@ߠ{@ᠠx@@u@@ @ q@堠n@@k@@ g@@@c@頠`@@]@@ @ Y@V@@S@@ @ O@𠠐C@KA8A@@ RB7A@@YC6A@@`D5A@@gE4A@@&nF3A@@-uG2A@@4|H1A@@;I0A@@B@F/@M  Ő@:@Xؐ^a *@k&7@@@@t89@~:;@@@@ @ @<JAA@@ %B;A@@,C:A@@@<J@%J LNݐOP@PDUW@[@ @#eq3ZZgj$ring@@@@@/ring_rw_correct)a2U@~~@@@@~~ @~~ @@ |@@ @ @ ~~@@@@ @ @~~@@@@ @ @1~~@@@@ @@@@G~~@@@@ @ @Y~~@@@@ @  y@k~~ x@@ u@@ @  r@}֠ zA oA@@  B(+A@@ C(.A@@ D'A@@ E'A@@& F'A@@- G'A@@4 H'A@@; I'A@@B J'A@@I@֠ n@ vA(A@@  }B(~A@@ C(A@@ D(A@@ E(A@@& F(A@@- G(A@@4 H(A@@; I(A@@B J'DA@@I@ k@# sA(A@@  zB(A@@ C(A@@ D(jA@@ E(kA@@& F(lA@@- G(mA@@4 H(oA@@; I(oA@@B J'A@@I K(A@@P@s@z!" h@#$ _@'( \@@ S@+0 =@16 7@7< 1@=B +@CK@LLXoAA@@  BA@@CA@@DA@@EA@@&&FA@@--GA@@44HA@@;;IA@@B@LLXo !@pp| )A)A@@  0B)A@@ 7C)A@@ >D)OA@@ EE)PA@@& LF)QA@@- SG)RA@@4 ZH)TA@@; aI)TA@@B hJ(|A@@I@Qpp|:@XŐ!@E@c!il5@vР@@@@Ҡ*@Ԡ'@@$@@ @ !@㠠)AA@@ 0BFA@@7CEA@@@@㠠 @ &A*sA@@  -B*nA@@ 4C*qA@@ ;D*A@@ BE*A@@& IF* A@@- PG* A@@4 WH* A@@; ^I* A@@B eJ)4A@@I@  @ @&6 A*A@@  $B*A@@ +C*A@@ 2D*aA@@ 9E*bA@@& @F*cA@@- GG*dA@@4 NH*fA@@; UI*fA@@B \J)A@@I@c&6@j77CL@,get_signZ_thW@u77MY $@|ZZfgq@ZZhkyAdA@@ @ZZhk ZZlnv@$Truey@A@ZZop@ZZqtAA@@ @ZZqt@ZZv}AA@@ @ZZ~ƠAA@@ @ZZ~@ZZv@~Z@@@  Y V$@@A@@.@@@@ I@ Bʒʠ@@%*%5+@@#nat@B@,㠠@A@ @ @@B@A@@AA@N@@@@@@@@*S\  @*X@@A @m@@@@*m@@@A@@@ @!P|88DE!P@@ BUUcf UUcf@@z@llxyp@@@@B@A@@At@@@@@@@@@F@Ơ@@@@Ԡm@֠j@@g@@ @ @ؠ@@@@ @ @ ڠ@@@@ @ @ޠ@@@@ @@@@2⠠@@@@ @ @D砠@@@@ @ @S A@Z 8@d  5@@ @o @y!8AA@@ ǠBA@@ΠCA@@ՠDA@@ܠEA@@&FA@@-GA@@4HA@@;IA@@B@!8B@99EN99OQ 99RT@9T@@@@ B@@@!pss ss@ss@ @@ss@@@A@@@@K@@@ ٠ @0clear_#_4C69D547<_@@@@@@@ @@c@*Pphi_avoidZy@@@@@AAAAAA@@@@@@z@'mkmult1h[@@@(mkmultm1֨@@@,mkmult_c_pos%@@@(mkmult_c@@@*mkadd_mult!j@@@@@*mkmult_pow/ I@@@@@%mkpow$@@@@@AAAAAA@@@@@@,@,@@Ae@ @@@@,@@@A@@@ ;@@@@@()b@*+_@@\@@ @ @,-@@@@ @ @./@@@@ @ @23@@@@ @@@@'67@@@@ @ @9:<@@@@ @ @HKKWX6@OKKYZ-@YKK]^*@@@dKKai@njjvAA@@ BA@@àCA@@ʠDA@@ѠEA@@&ؠFA@@-ߠGA@@4HA@@;IA@@B@jjv 7@ @@@@-@@@A BБ-Ԑ@@@ @@ @@#@@.@@@AA@@@@ U02@@@ 9I  f@ @ @@@@@ @@@@@.9@@@A@AAAAAA@@@.D@@@A@@ @@ @@@@@@@@@@@@@@@@@.}@@@A@AAAAAA@@@.@@@A@@@??ST@@@ ??[b/@@@@ccnccnccn0n@ J1Ðcccc cc Vcc@@@@ՠAA@@ @@@A@@@@@AA@@ @ @@A@@-set_variablesF@@@@ B#")@@"@7*AA@@ @A@1@A@@@@W  @@ jc dk@@,@B> ~r @!v$%!X@@@@  66FG@@@A@66O_66O_66O\1W@+66]_@@%desetF@@@).@ Bww)7ww@@@@@A@@@B@"n1@@@B B@!h̐@@@@ @@ @@@2/@@@ 5 C@@@BGM2@oU@@@2cring_simplify_genF@@@!a@ @mi Bp򒑠v@@@@  :@@@@@@  @@@@  @@[@Bmmm  K      &|@    %v@@j    @   " %ȠAA@@ @   " %@"@@@ B 2 2 < d@ 2 2 I TAA@@ BA@@CA@@  2 2 ] bEA@@&FA@@-ŠGA@@4̠HA@@;ӠIA@@BڠJA@@IKA@@PLA@@WMA@@^NA@@eOA@@l@] 2 2 I c@@@@k j j r {@@x@@ t{ j j s v j j x ~@@@AVV@@@@@@ @+    AAAAAA@@&length@    ͠ AA@@     @    @@+J@@ @"lt    𔠐"lt@@@@ !!!!@@@A@ @"lv!!!"!$"fv@@@@!4!4!D!F@@@A@ !!!"!!!"!!!"3@+!!""@ @<erm1%""""@Z/"""&"(@a6""",".@@ @#lv1?"2"2"<"?@YI"2"2"O"Q@`P"2"2"U"W@@7@@!@@a"|"|""f"|"|""l"|"|""4#@1Pt"|"|""={"|"|"""|"|"" "|"|""@ """"yw@@@@ " """񓠐 " """񠐠 " """4_@,* " """@@#_86(4l@9cring_simplify_#_553B594D!>@@.cring_simplify " "##*?LFI@@#-#-#.#L#-#-#.#L#-#-#.#@4@1#-#-#A#F@#-#-#G#H@@@@@#_87(4@>cring_simplify_#_in_#_553B594E:W@@.cring_simplify#O#O#p#}?LFI "in#O#O##E 3 @3@########%####N0,####3*3####@@@#_26:}9 @@F\+@AN^+@O^F+@AB@+i@3yA3@3{A3@ABC@~;p̡wG[^ @9KѲWI@s`V$?'=r@}īVd93PW,إߛγI_ Q Bj